個人ブログをはじめました。
ゲーム、プログラミング、日常生活などの多種多様に渡って不定期に更新していこうと思いますのでよろしくおねがいします(語彙力ないね)
ツイッターとかフォローしてくれたら嬉しいかもです。
個人ブログをはじめました。
ゲーム、プログラミング、日常生活などの多種多様に渡って不定期に更新していこうと思いますのでよろしくおねがいします(語彙力ないね)
ツイッターとかフォローしてくれたら嬉しいかもです。
ミニゲームなどのゲームに追加で機能をつけれるようにする方法
/** * 本来ならGetter、Setterをつけるべき箇所につけていないのでご注意を。 */ //Extension class public class Extension{ // 拡張機能をまとめる public static HashMap<String, ExtensionItem> Items = new HashMap<>(); public static void reg(ExtensionItem item){ // 拡張機能を追加するメゾットです item.onEnable(); Items.put(item.getName(), item); } } // ExtensionItemInterFace // 拡張機能の基盤です public interface ExtensionItemInterFace{ public String getName(); public String getVersion(); public String getDescription(); public void onEnable(); public void onDisable(); public JavaPlugin getInstance(); } // ExtensionItem // 基盤を使いやすく(必要なものだけを設定するようにしたもの)です public class ExtensionItem implements ExtensionItemInterFace{ @Override public String getName(){ // 拡張機能の名前 return "Extension"; } @Override public String getVersion(){ // 拡張機能のバージョン return "1.0.0"; } @Override public String getDescription(){ // 拡張機能の説明 return "Extension"; } @Override public void onEnable(){ // 有効にしたとき } @Override public void onDisable(){ // 無効にしたとき } @Override public JavaPlugin getInstance(){ // メインクラスを取得する関数 return /* Main Class Static Instance */ null; } } // TestExtension // 拡張機能の例 public class TestExtension extends ExtensionItem{ // 名前の変更 @Override public String getName(){ return "Test"; } @Override public void onEnable(){ // 有効になったときに文字列を出力する System.out.printIn("This is a test xD Hello, World!"); } } // Main Class onEnable public void onEnable(){ // 拡張機能をなんらかの形で追加する Extension.reg(new TestExtension()); }
基盤中の基盤。
ここに改良を加えていくことで、一つのミニゲームが完成します。
これからミニゲーム作りをする人の参考になれば幸いです(。-ω-)zzz. . . (。゚ω゚) ハッ!
onEnableで以下を設定
// 新規Arena作成 // 複数Arenaにするなら改良が必要 Arena arena = new Arena(); // イベントリスナーを登録する Bukkit.getPluginManager().registerEvents(arena, this); // タイマーに登録する(一秒ごとに実行される) Bukkit.getScheduler().runTaskTimer(this, arena, 0L, 20L);
Arena Class
public class Arena implements Runnable, Listener{ // Arena にいるプレイヤーリスト // Join Quit リスナーと合わせて使う private ArrayList<UUID> Players = new ArrayList<>(); @Override public void run(){ // Arena での処理 // スコアボードの更新やタイマーなど // プレイヤーがいなければ、停止、いれば開始などの処理 } // 時間は コンフィグから取得したものをスタチックで宣言する // 読み込み時に別に宣言した時間に反映させる public static int INT_GAME_TIME = 300; public int CRT_GAME_TIME = 300; public Arena(){ CRT_GAME_TIME = INT_GAME_TIME; } @EventHandler public void onJoin(PlayerJoinEvent event){ Player p = event.getPlayer(); UUID key = p.getUniqueId(); Players.add(key); } @EventHandler public void onJoin(PlayerJoinEvent event){ Player p = event.getPlayer(); UUID key = p.getUniqueId(); if (Players.cotains(key)){ Players.remove(key); } } }