无法放置墙标或编辑其文本
Cannot place a wallsign or edit its text
我正在尝试放置和编辑一个朝西的墙牌。到目前为止,我在正确定位标志和编辑其文本方面都没有成功。我的代码根本没有做任何事情。
@SuppressWarnings("deprecation")
public void Generate(Location location)
{
location.getBlock().getState().setType(material);
Block signBlock = location.getBlock().getRelative(BlockFace.WEST);
signBlock.setType(Material.OAK_WALL_SIGN);
BlockState signState = signBlock.getState();
Sign sign = (Sign) signState;
org.bukkit.material.Sign matSign = new org.bukkit.material.Sign(Material.OAK_WALL_SIGN);
matSign.setFacingDirection(BlockFace.WEST);
sign.setData(matSign);
sign.setLine(0, name().replaceAll("_", " "));
sign.update();
}
以下代码解决了问题:
public void Generate(Location location)
{
location.getBlock().getState().setType(material);
Block block = location.getBlock().getLocation().add(-1, 0, 0).getBlock();
block.setType(Material.OAK_WALL_SIGN);
Sign sign = (Sign) block.getState();
Directional wallSignData = (Directional) sign.getBlockData();
wallSignData.setFacing(BlockFace.WEST);
sign.setBlockData(wallSignData);
sign.setLine(0, name().replaceAll("_", " "));
sign.update();
}
我正在尝试放置和编辑一个朝西的墙牌。到目前为止,我在正确定位标志和编辑其文本方面都没有成功。我的代码根本没有做任何事情。
@SuppressWarnings("deprecation")
public void Generate(Location location)
{
location.getBlock().getState().setType(material);
Block signBlock = location.getBlock().getRelative(BlockFace.WEST);
signBlock.setType(Material.OAK_WALL_SIGN);
BlockState signState = signBlock.getState();
Sign sign = (Sign) signState;
org.bukkit.material.Sign matSign = new org.bukkit.material.Sign(Material.OAK_WALL_SIGN);
matSign.setFacingDirection(BlockFace.WEST);
sign.setData(matSign);
sign.setLine(0, name().replaceAll("_", " "));
sign.update();
}
以下代码解决了问题:
public void Generate(Location location)
{
location.getBlock().getState().setType(material);
Block block = location.getBlock().getLocation().add(-1, 0, 0).getBlock();
block.setType(Material.OAK_WALL_SIGN);
Sign sign = (Sign) block.getState();
Directional wallSignData = (Directional) sign.getBlockData();
wallSignData.setFacing(BlockFace.WEST);
sign.setBlockData(wallSignData);
sign.setLine(0, name().replaceAll("_", " "));
sign.update();
}