Виснет сервер при спавне сущности во время загрузки мира

Версия Minecraft
1.16.5
API
Forge
198
1
24
Хочу добавить в свой мод возможность замены всех скелетов на зомби. Для этого сделал вот такой обработчик событий:
Нерабочий код:
@SubscribeEvent
public static void onJoin(EntityJoinWorldEvent event) {
    if (ConfigHandler.GENERAL.noSkeletons.get()) {
        Zombienation.LOGGER.debug("Attempting to replace skeleton with zombie...");
        if (event.getEntity() instanceof SkeletonEntity || event.getEntity() instanceof StrayEntity) {
            if (event.getEntity().level.dimension().location().toString().equals("minecraft:overworld")) {
                ZombieEntity zombie = new ZombieEntity(EntityType.ZOMBIE, event.getEntity().level);
                zombie.setPos(event.getEntity().getX(), event.getEntity().getY(), event.getEntity().getZ());
                event.getEntity().level.addFreshEntity(zombie);
                event.getEntity().remove();
                Zombienation.LOGGER.debug("Done!");
            }
        }
    }
    /* Дальше идёт ещё куча кода, он весь там уже давно, работает, и я его сегодня не трогал */
} /* И ещё куча всего, тоже давно, работает и не трогал :D /*
Но при загрузке мира на сервере виснет где-то на 95-98%.
Виснет именно на event.getEntity().level.addFreshEntity(zombie);, насколько я понял, заставляя мод на каждом этапе писать в консоль, что он сейчас собирается делать.
Если в конфиге noSkeletons=false то грузится нормально.
 
Виснет именно на стадии вывода моба. А ивент используется дальше, но там всё работает. Что самое странное, в другом месте мода у меня есть случайный зомби (т.е. при спавне превращается наугад в любого другого), и с ним вроде проблем не было.
Там сделано вот так:

Случайный зомби:
/* Это если что в классе моба, в остальном это обычный зомби */
@Override
public void tick() {
    Random rand = new Random();
    int z_type = rand.nextInt(11);

    switch(z_type) {
        case 0:
            ZombieEntity zombie = new ZombieEntity(EntityType.ZOMBIE, this.level);
            zombie.setPos(this.getX(), this.getY(), this.getZ());
            this.level.addFreshEntity(zombie);
            this.remove();
            break;
           
        /* Там их много, все приводить нет смысла т.к. код одинаковый */
    }
}
 
Назад
Сверху