package jp.jias.bukkit; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.plugin.java.JavaPlugin; public class TestPlugin extends JavaPlugin implements Listener{ /** 最近クリックした場所のリスト */ private List clickLocations=new ArrayList(); /** * プラグインが有効化されるとき呼び出される */ public void onEnable(){ // SerializableLocationオブジェクトをシリアライズ・デシリアライズするのに使うクラスをBukkitに登録する ConfigurationSerialization.registerClass(SerializableLocation.class); // 設定ファイルを読み込む FileConfiguration conf=getConfig(); // SerializableLocationが保存されているか調べる if(conf.contains("loc")){ // SerializableLocationクラスを読み込む List locations=getConfig().getList("loc"); // リストを順番に処理する int number=0; for(Object obj:locations){ // getListの戻り値はListなので、リストの要素をSerializableLocationにキャストする SerializableLocation sloc=(SerializableLocation) obj; // 座標を表示する Bukkit.broadcastMessage("保存されていた座標[" + number + "]:" + ChatColor.YELLOW + sloc.getLocation()); // 順番をインクリメント number++; } } else{ // 保存されていない旨を表示 Bukkit.broadcastMessage("座標は保存されていません"); } // イベントリスナーの登録 getServer().getPluginManager().registerEvents(this,this); } /** * プラグインが無効化されるとき呼び出される */ public void onDisable(){ // 最近クリックした場所のリストのデータを設定ファイルに保存する getConfig().set("loc",clickLocations); saveConfig(); } /** * プレイヤーがクリックしたときに呼ばれる * * @param e */ @EventHandler public void onPlayerInteractEvent(PlayerInteractEvent e){ // プレイヤーの座標を取得 Location loc=e.getPlayer().getLocation(); // 保存する前の座標を画面に表示する Bukkit.broadcastMessage("座標を保存しました[" + clickLocations.size() + "]:" + ChatColor.YELLOW + loc); // LocationをSerializableLocationクラスでラップし、最近クリックした場所のリストに積み込む clickLocations.add(new SerializableLocation(loc)); } }