Как разместить настенный знак и отредактировать его текст? - PullRequest
0 голосов
/ 07 февраля 2020

В настоящее время я пытаюсь разместить настенный знак на стороне блока (с настенным знаком, обращенным на запад) и после этого редактировать текст знака. До сих пор мне не удавалось ни правильно ориентировать знак, ни редактировать его текст; Как правильно это сделать? Спасибо.

@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();
}

1 Ответ

0 голосов
/ 07 февраля 2020

Я решил эту проблему в другом исполнении моего кода, с моим новым кодом это связано с тем фактом, что я не приводил блочное состояние моего знака, как следовало бы, а просто приводил сам знак. Я подумал, что мог бы также поделиться:

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();
}
...