如何在Minecraft Forge中使用java在块上放置杠杆?

如何在Minecraft Forge中使用java在块上放置杠杆?,java,minecraft,minecraft-forge,Java,Minecraft,Minecraft Forge,在我的minecraft mod中,我试图编写一段代码,在给定位置放置一个块,在放置块后,在该块上放置一个杠杆 我怎样才能做到这一点 这是我的代码,我把我的方块放在上面,杠杆必须放在上面 BlockPos blockpos = new BlockPos(player.posX + x*2 + xOffset, player.posY /*+ player.getEyeHeight() + y*2 */+ counter,

在我的minecraft mod中,我试图编写一段代码,在给定位置放置一个块,在放置块后,在该块上放置一个杠杆

我怎样才能做到这一点

这是我的代码,我把我的方块放在上面,杠杆必须放在上面

BlockPos blockpos = new BlockPos(player.posX  + x*2 + xOffset,  
                                 player.posY /*+  player.getEyeHeight() + y*2 */+ counter, 
                                 player.posZ + z* 2);

world.setBlockState(blockpos, 
                    Blocks.cobblestone.getDefaultState());
所以基本上,我想知道,在放置一个杠杆之后,它的作用是什么


或者,如果有一些特殊类型的块,默认情况下有一个杠杆,我想使用它。我希望在您单击控制杆时发生事件。

您拥有blockpos对象。您可以使用以下功能获得相对于此blockpos的新blockpos:

//Assuming we are using your blockpos object
BlockPos leverPosition = blockpos.offset(EnumFacing.EAST);
这里你有你的杠杆位置,在你放置鹅卵石块的地方

使用您想要的任何代码都可以识别玩家所面对的方向

然后,对该位置上的操纵杆执行一个简单的setBlockState,然后应自行解决问题:-)

从评论中:

 IBlockState leverState = Blocks
                         .lever
                         .getDefaultState()
                         .withProperty(BlockLever.FACING,                  
                                       BlockLever.EnumOrientation.SOUTH
                                       );
  world.setBlockState(startPosition.offset(EnumFacing.SOUTH), leverState);

我尝试了你的建议,杠杆出现了,但它就在街区旁边的东边,这意味着它没有放在街区本身上。。有没有办法把杠杆放在木块上使其可用?我真的很感谢你的帮助,谢谢你的回答!:)您需要设置一个特定的blockstate。打开BlockLever定义,查看它接受哪些属性,并将其设置为该状态。最好的学习方法是始终查看块的来源。它可能需要与您正在使用的enumfacing相反的面。是的,我实际尝试过:IBlockState leverState=Blocks.lever.getDefaultState().withProperty(BlockLever.facing,BlockLever.EnumOrientation.SOUTH);世界.setBlockState(起始位置.offset(EnumFacing.SOUTH),leverState);成功了!非常感谢迈克尔:)嘿,你知道当玩家右击这个杠杆时如何添加事件处理吗?我想这样做,但我以前从未尝试过事件处理。我找到了一些使用其他事件的教程,但找不到我想要的。是的,你说得对:)我为此发布了另一个问题。非常感谢你的帮助!我真的很感激它,指引了我很多!