石橋を叩いて壊すページ

bukkitで看板のテキストを更新した

看板のテキストを更新するにはSignインターフェイスのsetLine(int,String)メソッドを使えば簡単だろう。
…と思っていた時期が私にもありました。

結論を書くと、setLineしただけでは看板は書き換わらなかった。
SignはBlockStateの拡張なわけだが、
BlockStateは任意の時点のブロックの情報を取り出したもので、これを書き換えただけは現在のブロックの情報は書き換わらない。
どうやら、setLineしたあとupdateメソッドを叩くことで、情報を書き換えることができるようだ。

@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {

    //壁にかけた看板でも地面に立てた看板でもない場合は何もしない
    if(!e.getClickedBlock().getType().equals(Material.WALL_SIGN) && !e.getClickedBlock().getType().equals(Material.SIGN_POST)){
        return;
    }

    //看板ブロックを取得
    Sign sign=(Sign)e.getClickedBlock().getState();

    //1行目の最後に"a"を追加する
    sign.setLine(0,sign.getLine(0)+"a");

    //ブロックの状態を更新
    sign.update();
}

これでうまくいった。

この記事を評価

この記事にコメント

  1. ...

【この記事にコメント】
お名前:
コメント:

Menu