Вопрос Менеджмент пакетных энтити

Lavamen

Пользователь
Сообщения
21
Хочу сделать систему моделек на рамках, моделек планируется много, планирую пакетами через протоколлиб делать

Вопрос: как энтити айди подбирать чтобы с дефолтными мобами не пересекаться? Можно ли просто к количеству рамок добавлять условно миллиард? Клиент не будет ругаться что ~миллиард энтити айди скипнули?
И по спавну рамок: пакет спавна должен отправляться всем игрокам на сервере? Надо ли отправлять пакет спавна/деспавна рамки в зависимости от расстояния от игрока?

Версия 1.16.5
 
Решение
Хочу сделать систему моделек на рамках, моделек планируется много, планирую пакетами через протоколлиб делать

Вопрос: как энтити айди подбирать чтобы с дефолтными мобами не пересекаться? Можно ли просто к количеству рамок добавлять условно миллиард? Клиент не будет ругаться что ~миллиард энтити айди скипнули?
И по спавну рамок: пакет спавна должен отправляться всем игрокам на сервере? Надо ли отправлять пакет спавна/деспавна рамки в зависимости от расстояния от игрока?

Версия 1.16.5
Java:
import java.lang.reflect.Field;
import java.util.concurrent.atomic.AtomicInteger;

import com.comphenix.protocol.utility.MinecraftReflection;

public class EntityIdGenerator {

        private final AtomicInteger entityCounter;

        public...
как энтити айди подбирать чтобы с дефолтными мобами не пересекаться?
Клиент не будет ругаться что ~миллиард энтити айди скипнули?
Миллиард конечно не стоит
Надо ли отправлять пакет спавна/деспавна рамки в зависимости от расстояния от игрока?
Да
 
Есть такое способ
Можно и костыль написать. Закинуть все entity id в лист, при спавне entity добавлять его в лист, при деспавне убирать. Отсортировывать постоянно, и доставать максимальное значение и прибавлять 1.
Объединено

Попробуй заспавнить моба с entity id 1 и посмотреть че будет
Объединено

Еще такой вариант есть
Объединено

Там он пилил со своими entity, но можно и захерачить и для обычных
 
Последнее редактирование:
Хочу сделать систему моделек на рамках, моделек планируется много, планирую пакетами через протоколлиб делать

Вопрос: как энтити айди подбирать чтобы с дефолтными мобами не пересекаться? Можно ли просто к количеству рамок добавлять условно миллиард? Клиент не будет ругаться что ~миллиард энтити айди скипнули?
И по спавну рамок: пакет спавна должен отправляться всем игрокам на сервере? Надо ли отправлять пакет спавна/деспавна рамки в зависимости от расстояния от игрока?

Версия 1.16.5
Java:
import java.lang.reflect.Field;
import java.util.concurrent.atomic.AtomicInteger;

import com.comphenix.protocol.utility.MinecraftReflection;

public class EntityIdGenerator {

        private final AtomicInteger entityCounter;

        public EntityIdGenerator() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
            Field field = MinecraftReflection.getEntityClass().getDeclaredField("b");
            field.setAccessible(true);
            entityCounter = (AtomicInteger) field.get(null);
        }

        public int nextId() {
            return entityCounter.incrementAndGet();
        }
    }
}
Вот таким образом можно получать entityId. На последних версиях, возможно, что-то изменилось, я не проверял.

На счет пакета спавна / деспавна - безусловно. Нужно учитывать респавн игрока, смену им мира, телепорт игрока и отгрузку / загрузку чанков и отгружать / загружать голограммы в зависимости от условий.
 
Последнее редактирование:
Назад
Сверху Снизу