我正在尝试在Minecraft中创建一个使用带TileEntity
的幸运块的mod。我让TileEntity
调用一个类,其中包含幸运块可能发生的不同情况。但是,类中的不同情况似乎相互覆盖或产生两种情况,但只有一种是可收集的。谷歌没有帮助,我不希望这个幸运块像其他块一样。
代码:
不同的情况:
public void startPickingMinimal(World w, BlockPos pos){
switch(w.rand.nextInt(3)){
case 0:
for(int y = 0; y < 4; y++){
BlockPos upPos = new BlockPos(pos.getX(), pos.getY() + y, pos.getZ());
w.setBlockState(upPos, Blocks.diamond_block.getDefaultState());
}
break;
case 1:
EntityLightningBolt bolt = new EntityLightningBolt(w, pos.getX(), pos.getY(), pos.getZ());
w.spawnEntityInWorld(bolt);
break;
case 2:
for(int fy = 0; fy < 5; fy++){
ItemStack n_gapple = new ItemStack(Items.golden_apple);
ItemStack gapple = new ItemStack(Items.golden_apple, 1, 1);
EntityItem enNGapple = new EntityItem(w, pos.getX(), pos.getY() + fy, pos.getZ(), n_gapple);
EntityItem enGapple = new EntityItem(w, pos.getX(), pos.getY() + fy + 1, pos.getZ(), gapple);
w.spawnEntityInWorld(enNGapple);
w.spawnEntityInWorld(enGapple);
}
break;
}
TileEntity代码(调用情境的代码):
@Override
public void update() {
if(enabled){
counter--;
if(counter == 0){
worldObj.setBlockToAir(getPos());
new LuckyBlockItems().startPickingMinimal(worldObj, getPos());
}
}
}
答案 0 :(得分:0)
你是第一个设置块播出...然后你希望块仍然在那里为你做的东西。它没有那种方式。
将你的setBlockToAir作为最后一次或在重写中运行(例如菱形块)
另外,!world.isRemote()
是你的朋友
否则你会在客户端上获得一个spawn事件(不可收集)和服务器上的另一个事件(可以收集)