如何改变活塞方向?

时间:2015-08-13 21:07:16

标签: java bukkit

在以编程方式放置时,我需要一些帮助来改变活塞方向。

我使用此方法将块类型设置为活塞:

block.setType(Material.PISTON_BASE);

但我无法找到改变方向的方法,并指出它。

2 个答案:

答案 0 :(得分:3)

您可以使用方法设置它:

block.setTypeIdAndData(33, (byte)direction, false);

如果您想放置粘性活塞,请使用29作为第一个参数。

方向值如下:

  

0:向下
  1:上升   2:北   3:南
  4:西
  5:东

对于最后一个参数,false表示禁用由块放置引起的不必要的块更新。

答案 1 :(得分:2)

Bukkit有使用MaterialData api改变活塞面的实用方法,这个api可以用如下:

Block block = ....;
BlockState state = block.getState();
PistonBaseMaterial piston = (PistonBaseMaterial)state.getData();

piston.setFacingDirection(BlockFace.NORTH);
piston.setFacingDirection(BlockFace.SOUTH);
piston.setFacingDirection(BlockFace.WEST);
piston.setFacingDirection(BlockFace.EAST);
piston.setFacingDirection(BlockFace.UP);
piston.setFacingDirection(BlockFace.DOWN);

state.setData(piston);
state.update();

在方向之外,我们还可以通过呼叫piston.setPowered(true/false);来为活塞供电/断电。我们也可以通过调用方法piston.isSticky()轻松检查活塞是否是粘性的,而不依赖于其他已弃用的方法,因为我们不再使用"魔术ID""了。