如何改变活塞方向?

How to change a piston direction?

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

我使用这种方法将我的块类型设置为活塞:

block.setType(Material.PISTON_BASE);

但是我找不到改变它的方向的方法,把它指向下方

您可以使用以下方法设置它:

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

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

方向值如下:

0: Down
1: Up
2: North
3: South
4: West
5: East

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

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);来power/unpower活塞。我们还可以通过调用方法 piston.isSticky() 轻松检查活塞是否为粘性活塞,而无需依赖其他已弃用的方法,因为我们不再使用 "magic id's"。