Генерация структуры через схематику

212
0
Учусь генерации структур по TragicMC2, Появился маленький вопрос - как заставить это чудо работать(появлятся в мире)
вод код схематика:
Код:
public abstract class Schematic 
{
    public int width;
    public int height;
    public int structureHeight;
    
    public Schematic(int structureHeight, int w, int h)
    {
        this.width = w;
        this.height = h;
        this.structureHeight = structureHeight;
    }

    public abstract boolean generateStructure(int variant, World world, Random rand, int x, int y, int z);
    
    public boolean generateStructure(World world, Random rand, int x, int y, int z)
    {
        return this.generateStructure(0, world, rand, x, y, z);
    }
    
    public boolean applyChestContents(World world, Random rand, int x, int y, int z, ChestGenHooks hook)
    {
        if (y <= 0 || y >= 256) return false;

        TileEntityChest tileentity = (TileEntityChest)world.getTileEntity(x, y, z);
        if (tileentity != null)
        {
            WeightedRandomChestContent.generateChestContents(rand, hook.getItems(rand), tileentity, hook.getCount(rand));
            return true;
        }
        else
        {
            System.out.println("Chest generation failed. The tile entity was null.");
            return false;
        }
    }
    public boolean addSignContents(World world, int x, int y, int z, int line, String text) {
        TileEntitySign sign = (TileEntitySign) world.getTileEntity(x, y, z);
        if (sign == null || line > 4)
        {
            System.out.println("Sign text setup failed. The tile entity was null or an improper text line was chosen.");
            return false;
        }
        sign.signText[line] = text;
        return true;
    }
    public boolean setSpawnerMob(World world, int x, int y, int z, String mobName)
    {
        TileEntityMobSpawner spawner = (TileEntityMobSpawner) world.getTileEntity(x, y, z);
        if (spawner == null || mobName == null)
        {
            System.out.println("Spawner setup failed. The tile entity was null or mobName was null.");
            return false;
        }
        spawner.func_145881_a().setEntityName(mobName);
        return true;
    }
}
Вот схема данжа:
Код:
public class DesertTempleSchematic extends Schematic
{
    protected Block[] getValidSpawnBlocks() {
        return new Block[] {
            Blocks.sand,
            Blocks.sandstone,
            Blocks.grass,
            Blocks.stone
        };
    }
    public DesertTempleSchematic() 
    {
        super(30, 18, 33);
    }

    public boolean locationIsValidSpawn(World world, int i, int j, int k){
        int distanceToAir = 0;
        Block check = world.getBlock(i, j, k);

        while (check != Blocks.air){
            if (distanceToAir > 0){
                return false;
            }

            distanceToAir++;
            check = world.getBlock(i, j + distanceToAir, k);
        }

        j += distanceToAir - 1;

        Block block = world.getBlock(i, j, k);
        Block blockAbove = world.getBlock(i, j+1, k);
        Block blockBelow = world.getBlock(i, j-1, k);
        
        for (Block x : getValidSpawnBlocks()){
            if (blockAbove != Blocks.air){
                return false;
            }
            if (block == x){
                return true;
            }else if (block == Blocks.snow && blockBelow == x){
                return true;
            }
        }
        
        return false;
    }

    public void setBlock(World world, int x, int y, int z, Block block, int metadata)
    {
        Block b1 = world.getBlock(x, y, z);

        if(b1.isAir(world, x, y, z) || b1.isLeaves(world, x, y, z))
        {
            world.setBlock(x, y, z, block, metadata, 2);
        }
    }
    @Override
    public boolean generateStructure(int variant, World world, Random rand, int i, int j, int k)
    {
        //check that each corner is one of the valid spawn blocks
        if(!locationIsValidSpawn(world, i, j, k) || !locationIsValidSpawn(world, i + 30, j, k) || !locationIsValidSpawn(world, i + 30, j, k + 33) || !locationIsValidSpawn(world, i, j, k + 33))
        {
            return false;
        }

        k = k - 10;
        i = i - 10;

        this.setBlock(world, i + 0, j + 0, k + 0, Blocks.sandstone, 0);
        this.setBlock(world, i + 0, j + 0, k + 1, Blocks.leaves, 15);
        this.setBlock(world, i + 0, j + 0, k + 2, Blocks.leaves, 7);
        this.setBlock(world, i + 0, j + 0, k + 3, Blocks.leaves, 7);
        this.setBlock(world, i + 0, j + 0, k + 4, Blocks.leaves, 15);
        this.setBlock(world, i + 0, j 
А дальше over90000 строк setBlock'а
Собственно а в какой эвент или генератор нужно generate использовать, чтобы данж появлялся?​
 
Некита плохого не посоветует:
8aIHqVN.png

s7bRoq4.png

ведь со всем этим он уже сам работал
 
Как бы меня не разорвало от злости - я самого начала делал почти все как в туторе (прога другая была и саму генерацию не написал) лишь потом дернулся в сторону чужих исходников, тогда все и пошло не в ту сторону.За тутор - спасибо, очень выручил.
 
Ну блин сижу весь тутор и думаю ЧТО Я НЕ ТАК ЗДЕЛАЛ?!А ответ ток в конце узнал)
 
Сделал генерацию, вот беда - по моему слишком часто генерируется
вылетает при создании мира с такой ошибкой 
Код:
at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1176)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1147)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:739)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1149)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1273)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1356)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1396)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1545)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1487)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1264)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1464)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1557)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1454)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1182)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1178)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1482)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221)
    at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482)
    at net.minecraft.world.World.getBlock(World.java:387)
    at net.minecraft.world.World.notifyBlockOfNeighborChange(World.java:783)
    at net.minecraft.world.World.notifyBlocksOfNeighborChange(World.java:740)
    at net.minecraft.world.World.notifyBlockChange(World.java:697)
    at net.minecraft.world.World.markAndNotifyBlock(World.java:556)
    at net.minecraft.world.World.setBlock(World.java:534)
    at ru.cipher.gmp.DesertTempleGEN.generate_r0(DesertTempleGEN.java:1482)
    at ru.cipher.gmp.DesertTempleGEN.generate(DesertTempleGEN.java:71)
    at ru.cipher.gmp.GMPGEN.generateOverworld(GMPGEN.java:42)
    at ru.cipher.gmp.GMPGEN.generate(GMPGEN.java:19)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (26512,0,24208), Chunk: (at 0,0,0 in 1657,1513; contains blocks 26512,0,24208 to 26527,255,24223), Region: (51,47; contains chunks 1632,1504 to 1663,1535, blocks 26112,0,24064 to 26623,255,24575)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (26400,0,24112), Chunk: (at 0,0,0 in 1650,1507; contains blocks 26400,0,24112 to 26415,255,24127), Region: (51,47; contains chunks 1632,1504 to 1663,1535, blocks 26112,0,24064 to 26623,255,24575)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (26336,0,24048), Chunk: (at 0,0,0 in 1646,1503; contains blocks 26336,0,24048 to 26351,255,24063), Region: (51,46; contains chunks 1632,1472 to 1663,1503, blocks 26112,0,23552 to 26623,255,24063)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (26144,0,24016), Chunk: (at 0,0,0 in 1634,1501; contains blocks 26144,0,24016 to 26159,255,24031), Region: (51,46; contains chunks 1632,1472 to 1663,1503, blocks 26112,0,23552 to 26623,255,24063)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (26096,0,23872), Chunk: (at 0,0,0 in 1631,1492; contains blocks 26096,0,23872 to 26111,255,23887), Region: (50,46; contains chunks 1600,1472 to 1631,1503, blocks 25600,0,23552 to 26111,255,24063)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (26000,0,23664), Chunk: (at 0,0,0 in 1625,1479; contains blocks 26000,0,23664 to 26015,255,23679), Region: (50,46; contains chunks 1600,1472 to 1631,1503, blocks 25600,0,23552 to 26111,255,24063)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (25952,0,23648), Chunk: (at 0,0,0 in 1622,1478; contains blocks 25952,0,23648 to 25967,255,23663), Region: (50,46; contains chunks 1600,1472 to 1631,1503, blocks 25600,0,23552 to 26111,255,24063)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (25840,0,23408), Chunk: (at 0,0,0 in 1615,1463; contains blocks 25840,0,23408 to 25855,255,23423), Region: (50,45; contains chunks 1600,1440 to 1631,1471, blocks 25600,0,23040 to 26111,255,23551)

-- Requested block coordinates --
Details:
    Found chunk: true
    Location: World: (25728,0,23360), Chunk: (at 0,0,0 in 1608,1460; contains blocks 25728,0,23360 to 25743,255,23375), Region: (50,45; contains chunks 1600,1440 to 1631,1471, blocks 25600,0,23040 to 26111,255,23551)
 
Скинь классы(Генерируемого объекта и генератор).
 
Объект:
Код:
public class DesertTempleGEN extends WorldGenerator
{
    protected Block[] GetValidSpawnBlocks()
    {
        return new Block[]
        {
            Blocks.sand,
            Blocks.sandstone,
        };
    }

    public boolean LocationIsValidSpawn(World world, int x, int y, int z)
    {
        int distanceToAir = 0;
        Block checkBlock = world.getBlock(x, y, z);

        while (checkBlock != Blocks.air)
        {
            distanceToAir++;
            checkBlock = world.getBlock(x, y + distanceToAir, z);
        }

        if (distanceToAir > 1)
        {
            return false;
        }

        y += distanceToAir - 1;

        Block block = world.getBlock(x, y, z);
        Block blockAbove = world.getBlock(x, y + 1, z);
        Block blockBelow = world.getBlock(x, y - 1, z);

        for (Block i : GetValidSpawnBlocks())
        {
            if (blockAbove != Blocks.air)
            {
                return false;
            }
            if (block == i)
            {
                return true;
            }
            else if (block == Blocks.snow_layer && blockBelow == i)
            {
                return true;
            }
            else if (block.getMaterial() == Material.plants && blockBelow == i)
            {
                return true;
            }
        }
        return false;
    }

    public boolean generate(World world, Random rand, int x, int y, int z)
    {
        int i = rand.nextInt(1);

        if(i == 0)
        {
            generate_r0(world, rand, x, y, z);
        }

       return true;

    }

    public boolean generate_r0(World world, Random rand, int x, int y, int z)
    {
        if
        (
            !LocationIsValidSpawn(world, x + 0, y, z +0) ||
            !LocationIsValidSpawn(world, x + 1, y, z +0) ||
            !LocationIsValidSpawn(world, x + 2, y, z +0) ||
            !LocationIsValidSpawn(world, x + 3, y, z +0) ||
Генератор:
Код:
public class GMPGEN implements IWorldGenerator
{
    
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator,
            IChunkProvider chunkProvider)
    {
            switch(world.provider.dimensionId)
            {
                    case -1:// generateNether(world, random, chunkX * 16, chunkZ * 16); break;
                    case 0: generateOverworld(world, random, chunkX * 16, chunkZ * 16); break;
                    case 1: //generateEnd(world, random, chunkX * 16, chunkZ * 16); break;
            }
    } 
            /*    private void generateEnd(World world, Random random, int x, int z) 
            {
                
            }
            private void generateNether(World world, Random random, int x, int z)
            {
                
            }
            */
            private void generateOverworld(World world, Random random, int x, int z) 
            {
                BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z);
                if((biome == BiomeGenBase.desert))
                {
                    for(int a = 0; a < 1; ++a)
                    {
                        int i = x + random.nextInt(256);
                        int j = z + random.nextInt(256);
                        int k = world.getHeightValue(i, j);
                        new DesertTempleGEN().generate(world, random, i, k, j);
                    }
                }
            }    
}
 
Зачем ты всё закоментировал?
 


Код:
 public boolean generate_r0(World world, Random rand, int x, int y, int z)
    {
        if
        (
            !LocationIsValidSpawn(world, x + 0, y, z +0) ||
            !LocationIsValidSpawn(world, x + 1, y, z +0) ||
            !LocationIsValidSpawn(world, x + 2, y, z +0) ||
            !LocationIsValidSpawn(world, x + 3, y, z +0) ||

Обрывается.
Ты использовал ту прогу в видео ?С шематика в джаву.
 
nickita45 написал(а):
Зачем ты всё закоментировал?
 


Код:
 public boolean generate_r0(World world, Random rand, int x, int y, int z)
    {
        if
        (
            !LocationIsValidSpawn(world, x + 0, y, z +0) ||
            !LocationIsValidSpawn(world, x + 1, y, z +0) ||
            !LocationIsValidSpawn(world, x + 2, y, z +0) ||
            !LocationIsValidSpawn(world, x + 3, y, z +0) ||

Обрывается.
Ты использовал ту прогу в видео ?С шематика в джаву.
Неененененене не обрывается!Я не все скопировал, там же 20к строк!
 
И что? Почему то в других модах на большие структуры (Больше твоей) меньше (намного) 20к строк.
 
FanKar написал(а):
И что? Почему то в других модах на большие структуры (Больше твоей) меньше (намного) 20к строк.
Ну если так даже посчитать 30 на 30 на 18 это уже около 16к и еще к тому сверху проверки
В тех модах полюбому циклы юзаются или воздух игнорится
 
Храни ID блоков в массиве, и строй с помощью трёх циклов.
 
Назад
Сверху