Шанс генерации структуры (снова)

LeyxorCheysen

Каменная лига
Сообщения
872
Лучшие ответы
16
Симпатии
64
#1
Версия Minecraft
1.12.2
Подтверждение
Я максимально подробно описал проблему, включая исходный код файлов, краш лог, изображения и другую информацию, которая может помочь пользователям форума решить мой вопрос!
Доброго времени суток. Решил я вернуть к жизни свой генератор структуры, но при добавлении шанса генерации она вообще перестаёт генерироватся. Как это дело исправить?
Shrine:
public class Shrine implements IWorldGenerator {
   
    public static final ResourceLocation SHRINE = new ResourceLocation("excaliburcraft:shrine");
   
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
       
        if (random.nextInt(100) < 10) {
           
            int x = 16;
            int z = 16;
            int y = random.nextInt(world.getActualHeight());
           
            BlockPos position = new BlockPos(x, y, z);
            WorldServer worldServer = (WorldServer) world;
            MinecraftServer minecraftServer = world.getMinecraftServer();
            TemplateManager templateManager = worldServer.getStructureTemplateManager();
            Template template = templateManager.getTemplate(minecraftServer, SHRINE);
            PlacementSettings settings = new PlacementSettings();
           
            template.addBlocksToWorld(world, position, settings);
           
        }
       
    }
   

}
 
Последнее редактирование:

Agravaine

Золотая лига
Сообщения
3,453
Лучшие ответы
84
Симпатии
247
#2
Потому шо ты ее генерируешь всегда на координатах Y и Z, то бишь 100 по иксу и 10 по зет в мире.
 

LeyxorCheysen

Каменная лига
Сообщения
872
Лучшие ответы
16
Симпатии
64
#3
UP!
 

Agravaine

Золотая лига
Сообщения
3,453
Лучшие ответы
84
Симпатии
247
#4
Эм?
 

Doc

Золотая лига
Сообщения
1,792
Лучшие ответы
87
Симпатии
188
#6
У тебя x и z всегда 16.
А должны быть chunkX * 16 и chunkZ * 16.
 

LeyxorCheysen

Каменная лига
Сообщения
872
Лучшие ответы
16
Симпатии
64
#7
Чёт всё равно не генерирует...
Shrine.java:
public class Shrine implements IWorldGenerator {
    
    public static final ResourceLocation SHRINE = new ResourceLocation("excaliburcraft:shrine");
    public static final int chunkCube = 16;
    public static final int maxChance = 100;
    public static final int currentChance = 10;
    
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
        
        if (random.nextInt(maxChance) < currentChance) {
            
            int x = chunkX * chunkCube;
            int z = chunkZ * chunkCube;
            int y = world.getActualHeight();
            
            BlockPos position = new BlockPos(x, y, z);
            WorldServer worldServer = (WorldServer) world;
            MinecraftServer minecraftServer = world.getMinecraftServer();
            TemplateManager templateManager = worldServer.getStructureTemplateManager();
            Template template = templateManager.getTemplate(minecraftServer, SHRINE);
            PlacementSettings settings = new PlacementSettings();
            
            template.addBlocksToWorld(world, position, settings);
            
        }
        
    }
    

}
 

LeyxorCheysen

Каменная лига
Сообщения
872
Лучшие ответы
16
Симпатии
64
#8
Попробовал так, но тоже не генерируется. Максик, ты должен знать, вылазь из норы и помоги тупенькому!
StructureGenerator.java:
public class StructureGenerator implements IWorldGenerator {

    public static final ResourceLocation SHRINE = new ResourceLocation("excaliburcraft:shrine");
    
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
        
        switch (world.provider.getDimension()) {
        
        case 0:
            runGenerator(SHRINE, 75, world, random);
            break;
        case -1:
            break;
        case 1:
            break;
        
        }
        
    }
    
    private void runGenerator (ResourceLocation location, int chunce, World world, Random random) {
        
        if (random.nextInt(100) < chunce) {
          
            int chunkX = 16;
            int chunkZ = 16;
            int chunkY = random.nextInt(world.getActualHeight());
          
            BlockPos position = new BlockPos(chunkX, chunkY, chunkZ);
            WorldServer worldServer = (WorldServer) world;
            MinecraftServer minecraftServer = world.getMinecraftServer();
            TemplateManager templateManager = worldServer.getStructureTemplateManager();
            Template template = templateManager.getTemplate(minecraftServer, location);
            PlacementSettings settings = new PlacementSettings();
          
            template.addBlocksToWorld(world, position, settings);
          
        }
    
    }

}
 

Liahim

Золотая лига
Сообщения
2,801
Лучшие ответы
30
Симпатии
136
#9
А смотрел на координатах 16,64,16? Вдруг найдёшь там много чего интересного? ;)
Ой, простите, тебе уже об этом говорили )
 

Liahim

Золотая лига
Сообщения
2,801
Лучшие ответы
30
Симпатии
136
#11
Это ответ на извечный вопрос всех времён и народов...
Хотя тот был 42 )
...
И как же ты на них проверял? Мир заново генерировал? Или новые чанки прогружал и возврашался....
И вообще, у тебя сам генератор зарегистрирован? Просто чтобы убедиться.
 

LeyxorCheysen

Каменная лига
Сообщения
872
Лучшие ответы
16
Симпатии
64
#12
И вообще, у тебя сам генератор зарегистрирован? Просто чтобы убедиться.
Сарказму тут не место. Конечно зарегистрирован.
И как же ты на них проверял?
/tp LeyxorCheysen 16 75 16
Это ответ на извечный вопрос всех времён и народов...
Ты о средней высоте по миру?
================================================================================================
Дело в том, что если убрать шанс генерации, то моя структура генерируется, но в каждом чанке. Если же добавить шанс генерации, то она вообще перестаёт генерироватся.
 

Liahim

Золотая лига
Сообщения
2,801
Лучшие ответы
30
Симпатии
136
#13
Ну, как бы... А пробовал выводить в консоль результат рандома... Может с ним что не то?
 
Сверху