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();
}
これでうまくいった。
この記事を評価
この記事にコメント
- ...