石橋を叩いて壊すブログ

プレイヤーのデータを退避するPlayerStateをちょっと修正

以前の記事で、プレイヤーのデータを一時的に退避し、復元するPlayerStateクラスを作ったけど
久しぶりに動かしてみたら動かなかったので、動くように動作を修正。

修正版:PlayerState.java

主な変更点として、プレイヤーのデータを保存しているファイルのパスが変わったようなので対応。
以前の記事を書いたときは、プレイヤーデータは「基本ワールドのフォルダ/players/プレイヤー名.dat」だった。
しかしV1.7.9beta(git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks (MC: 1.7.9))では、
「基本ワールドのフォルダ/playerdata/プレイヤーのUUID.dat」になっている。

ちなみにUUIDというのは、まあ要するにすべてのエンティティについているID。
UUIDを得るには、EntityクラスのgetUniqueId()を叩けばいい。
このUUIDはマインクラフトのセーブデータに記録されるため、サーバーを再起動しても同じエンティティは同じUUIDをもち、村人やMOBを一意に識別するのに使える。

あと、これはマインクラフトの話ではないけど、OSによってパスの区切り文字が違う(Win系は\、Linux系は/)のを忘れていたので
この辺を妥当になるように、あわせて以下のように変更した。

    // データファイルを退避フォルダにコピー
前:fileName = "/" + player.getName() + ".dat";
後:fileName=File.separator + player.getUniqueId() + ".dat";

なおソースコード以外に、退避したデータを戻すためにバッチファイルに書いておくパスも、同様に修正が必要。

    ::退避したユーザーデータがあれば元の位置に戻す(Windowsの場合)
前:move /y plugins\プラグイン名\reserve\*.dat world\players
後:move /y plugins\プラグイン名\reserve\*.dat world\playerdata

この記事を評価

14 8

コメント

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

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]

記事を検索


管理人

石橋

コーヒー3杯で手が震える