2016-09-02 42 views
0

在块生成时,1.7.10中是否有事件,所以我可以在它上面放置一些东西。或者我必须在这一代中做到这一点?Minecraft forge:块生成时的事件

我已经在网上看了,但我无法找到一个

onBlockGenerated 

事件或类似的东西。

回答

1

您需要延长WorldGenerator

class Foo extends WorldGenerator { 
    protected Block[] GetValidSpawnBlocks() { 
     return new Block[] { Blocks.quartz }; 
    } 
    public boolean generate(final World world, final Random rand, final int x, final int y, final int z) { 
     world.setBlock(x,y+1,z,FooModBlocks.yourFancyBlock,0,2); 
    } 
} 

而在初始化阶段你commonproxy在iworldgenerator注册它

public class MagicCookieWorldGen implements IWorldGenerator { 
    private Foo myGenerator; 
    public MagicCookieWorldGen() { 
     super(); 
     myGenerator = new Foo(); 
    } 
    @Override 
    public void generate(Random random, int chunkX, int chunkZ, World world, 
      IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { 
      this.worldGeneration(random, chunkX, chunkZ, world, true); 
    } 

    public void worldGeneration(final Random random, final int chunkX, final int chunkZ, final World world, final boolean newGen) { 
     switch (world.provider.dimensionId) { 
      case -1: { 
       this.generateNether(world, random, chunkX, chunkZ, newGen); 
       break; 
      } 
      case 1: { 
       break; 
      } 
      default: { 
       break; 
      } 
     } 

    } 
    private void generateNether(final World world, final Random random, final int chunkX, final int chunkZ, final boolean newGen) { 
     int startX = chunkX * 16; 
     int startZ = chunkZ * 16; 
     int startY = 5; 
     int endX = startX + 16; 
     int endZ = startZ + 16; 
     int endY = 65; 

     for(int x=startX;x<endX;x++)for(int z=startZ;z<endZ;z++)for(int y = startY;y<endY;y++) { 
       Block block = world.getBlock(x,y,z); 
       for(Block match : Foo.GetValidSpawnBlocks()) { 
        if(match == block) { 
         Foo.generate(world, final Random random, x, y, z); 
         break; 
        } 
       } 
     } 
    } 

} 

然后

GameRegistry.registerWorldGenerator((IWorldGenerator)(StuffLoader.worldGenerator = new MagicCookieWorldGen()), 0); 
     MagicCookie.log.info("Registered worldgenerator" + StuffLoader.worldGenerator); 
相关问题