Вопрос Как создать класс в котором будут храниться все кастомные entity а потом их использовать

Версия Minecraft
1.20.X

geksxcx

Пользователь
Сообщения
24
Как создать класс в котором будут храниться все кастомные entity а потом их использовать
 
Решение
Наверное под конкретно твой запрос тебе нужен не класс, а список.
Лучше всего подойдет Set, а именно Set<Entity>
Вот тяпляп пример, в котором
1. Создается список существ
2. Существо создается и добавляется в список
3. Есть метод перебора твоих существ с последующей фильтрацией на живых существ (например шарик опыта это тоже существо, но не живое) и отхилом до макс хп.
Код:
public class EntityManager {

    private final Set<Entity> customEntities = new HashSet<>();

    public void spawnCustomZombie(Location location) {
        Entity entity = location.getWorld().spawnEntity(location, EntityType.ZOMBIE);
        customEntities.add(entity);
    }

    public Set<Entity> getCustomEntities() {
        return customEntities;
    }

    public...
Наверное под конкретно твой запрос тебе нужен не класс, а список.
Лучше всего подойдет Set, а именно Set<Entity>
Вот тяпляп пример, в котором
1. Создается список существ
2. Существо создается и добавляется в список
3. Есть метод перебора твоих существ с последующей фильтрацией на живых существ (например шарик опыта это тоже существо, но не живое) и отхилом до макс хп.
Код:
public class EntityManager {

    private final Set<Entity> customEntities = new HashSet<>();

    public void spawnCustomZombie(Location location) {
        Entity entity = location.getWorld().spawnEntity(location, EntityType.ZOMBIE);
        customEntities.add(entity);
    }

    public Set<Entity> getCustomEntities() {
        return customEntities;
    }

    public void healAllEntities() {
        getCustomEntities().forEach(ent -> {
            if (ent instanceof LivingEntity livingEnt) {
                livingEnt.setHealth(livingEnt.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue());
            }
        });
    }

}

Стоит учесть, что чаще всего при отгрузке чанка, ссылка на существо из списка customEntities, которое находилось в этом чанке, станет невалидной, и твоя работа (в нашем случае отхил) с ним не принесет результата. Тут тебе нужно изучить вопрос как пометить существо (PersistentDataContainer), как получить загруженное существо (ChunkLoadEvent)
 
Назад
Сверху Снизу