石橋を叩いて壊すブログ

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

これでうまくいった。

この記事を評価

10 3

コメント

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

295,349

記事カテゴリー

最近の記事

  1. FF14を翻訳したら国によって結構特色が違った[12/11]
  2. ゼロから始めるFactorioの回路構築(実践例編)[7/24]
  3. ゼロから始めるFactorioの回路構築(条件回路・論理演算編)[7/24]
  4. ゼロから始めるFactorioの回路構築(定数回路・算術回路編)[7/24]
  5. ゼロから始めるFactorioの回路構築(入力・出力・混合編)[7/24]

RSS1.0 RSS2.0

最近のコメント

  1. おー、お役に立てたようでなによりです。再起…[9/11]
  2. この記事が非常の役立ちました。おかげさまで…[9/9]
  3. 1.14.2のAPIで試しましたが、MapInitializeEv…[9/9]
  4. 天晴れ!押したらポーションのモヤモヤでまし…[5/26]
  5. 習うより慣れろって感じで。この記事は記事冒…[4/7]

記事を検索


管理人

石橋

2014年から
神奈川県秦野市市民