Hi everybody, I begin modding days ago, and try to create a structure. It works fine, but when i break a block of the structure, the block created again a little later. I think, the game generates again the entire structure (I use fix coordinates for test), but Í don't know how to fix this. I use the latest Forge for Minecraft 1.8. Here is my codes:
WorldGen.java:
package com.harcos.bunkerstrukture.common;
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.fml.common.IWorldGenerator;
public class WorldGen implements IWorldGenerator
{
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
{
switch (world.provider.getDimensionId())
{
case 0: generateSurface(world, random, chunkX*16, chunkZ*16);
}
}
private void generateSurface(World world, Random random, int blockX, int blockZ)
{
int Xcoord1 = blockX + random.nextInt(16);
int Ycoord1 = random.nextInt(80);
int Zcoord1 = blockZ + random.nextInt(16);
(new StructureGenerator()).generate(world, 1, 500, 100, 500);
}
}
StructureGenerator:
package com.harcos.bunkerstrukture.common;
import java.util.Random;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
public class StructureGenerator extends WorldGenerator
{
public boolean generate(World par1World, int par2, int par3, int par4, int par5)
{
/*
while (par1World.isAirBlock(new BlockPos(par3, par4, par5)) && par4 > 2)
{
--par4;
}
*/
IBlockState checkBlock = par1World.getBlockState(new BlockPos(par3, par4, par5));
par1World.setBlockState(new BlockPos(par3, par4, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-1, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-1, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-1, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-1, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-1, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-1, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-1, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-1, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-1, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-2, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-2, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-2, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-2, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-2, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-2, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-2, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-2, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-2, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-3, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-3, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-3, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-3, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-3, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-3, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-3, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-3, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-3, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-4, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-4, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-4, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-4, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-4, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-4, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-4, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-4, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-4, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-4, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-4, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-4, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-4, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-4, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-4, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-4, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-4, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-4, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-4, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-4, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-4, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-4, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-4, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-4, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-4, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-5, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-5, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-5, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-5, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-5, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-5, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-5, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-5, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-5, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-5, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-5, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-5, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-5, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-5, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-5, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-5, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-5, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-5, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-5, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-5, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-5, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-5, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-5, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-5, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-6, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-6, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-6, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-6, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-6, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-6, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-6, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-6, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-6, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-6, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-6, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-6, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-6, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-6, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-6, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-6, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-6, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-6, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-6, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-6, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-6, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-6, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-6, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-6, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-7, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-7, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-7, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-7, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-7, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-7, par5-1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-7, par5), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-7, par5+1), Blocks.air.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-7, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-7, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-7, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-7, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-7, par5-2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-7, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-7, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-7, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-7, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-7, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-7, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-2, par4-7, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-7, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-7, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-7, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+2, par4-7, par5+2), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-8, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-8, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3, par4-8, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-8, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-8, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3-1, par4-8, par5+1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-8, par5-1), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-8, par5), Blocks.brick_block.getDefaultState());
par1World.setBlockState(new BlockPos(par3+1, par4-8, par5+1), Blocks.brick_block.getDefaultState());
return true;
}
@Override
public boolean generate(World arg0, Random arg1, BlockPos arg2) {
// TODO Auto-generated method stub
return false;
}
}
CommonProxy.java:
package com.harcos.bunkerstrukture;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import com.harcos.bunkerstrukture.common.WorldGen;
public class CommonProxy {
public void preInit(FMLPreInitializationEvent e) {
}
public void init(FMLInitializationEvent e) {
GameRegistry.registerWorldGenerator(new WorldGen(), 0);
}
public void postInit(FMLPostInitializationEvent e) {
}
}
Thanks for any help!