機能を追加できるようにする

ミニゲームなどのゲームに追加で機能をつけれるようにする方法

 

/**
 * 本来なら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);
    }
  }
}

マイクラサーバーのプラグイン開発講座#2

前回ダウンロードしたeclipseを解凍し、「eclipse.exe」を起動します。

起動できたら、メニューから「ファイル」→「新規」→「Java プロジェクト」を順にクリックします。

プロジェクト名はなんでもいいです。

完了をクリックして作成します。

パッケージエクスプローラーという場所に、さきほど入力したプロジェクト名でプロジェクトがあるはずです。

 

そのプロジェクトを右クリックし、プロパティをクリックします。

「Java のビルド・パス」という場所を開き、外部JARの追加をクリック。

前回ダウンロードしたspigotを選択。

適用して閉じます。

プロジェクトの中にある、「src」というフォルダを右クリック、新規、パッケージを作成します。

名前は、自分のドメインの逆、またはメールアドレスです。

例えば、「devras.info」であれば

info.devras

です。

メールアドレスが「[email protected]」なら

hogehoge.com.test

です。

ですが、これはかぶらなければいいので適当でも大丈夫です。

例:)ohaigagagao

など

作成できたら、そのパッケージを右クリック、新規、クラスをクリックします。

名前は、わかりやすければいいです。

スーパークラスというところの参照をクリック

「JavaPlugin」と入力して、一番上に出てきたのをダブルクリック。

完了をクリックして作成します。

これで開発の準備ができました。