我目前正在制作一个Minecraft forge mod。 有谁知道如何首先删除特定坐标上的块,然后 在同一个地方放置一个新区块?就像用新块替换旧块一样。
我将在此代码中间使用它:
if(player.getCurrentEquippedItem() != null)
{
if(hand.getItem() == Items.dirt)
{
}
}
Item.dirt只是一个测试
因此,如果玩家持有特定物品(我现在使用污垢)并右键点击该块,则会发生一些事情。顺便说一句,我有更多的代码代码,当玩家右键单击该块时会发生这种情况。
我用Google搜索并没有找到任何内容。
答案 0 :(得分:2)
如果特定项目是自定义项目,则更简单。
在自定义项目中,设置onItemUse
(用于右键单击)或onItemClick
(用于左键单击)功能:
public boolean onItemUse(ItemStack item, EntityPlayer player, World world,
// which block was in the target when clicked
int posx, int posy, int posz,
// where on the target block was clicked (0.0-1.0)
int side, float blockx, float blocky, float blockz)
{
if(world.isRemote) {
// can't do anything here as we don't own the world (client side)
return false;
}
// server side - here we can change the block
此函数传递被单击的块的坐标和世界对象。然后,您可以测试被单击的块,并对其执行任何操作(此示例将其设置为污垢):
rv = world.setBlock(posx,posy,posz,Blocks.dirt);
当然,如果你将它放在自定义项目自己的onItemUse函数中,那么你不需要进行测试以确保该项目具备,因为它必须是为了调用该函数。