bukkitで看板のテキストを更新した
[マインクラフト] [2013/08/04 22:23]
看板のテキストを更新するには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(); }
これでうまくいった。
この記事を評価
この記事にコメント
- ...