不同的情况是否会相互挤压?我的世界

时间:2016-02-28 18:57:42

标签: java minecraft minecraft-forge

我正在尝试在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());
         }

    }
}

1 个答案:

答案 0 :(得分:0)

你是第一个设置块播出...然后你希望块仍然在那里为你做的东西。它没有那种方式。

将你的setBlockToAir作为最后一次或在重写中运行(例如菱形块)

另外,!world.isRemote()是你的朋友

否则你会在客户端上获得一个spawn事件(不可收集)和服务器上的另一个事件(可以收集)