3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Minecraftサーバー開発のすゝめ【人生初AdoventCalendar参加】

3
Last updated at Posted at 2025-12-10

アドベントカレンダー?

学校の友人から聞いて、初参加
かと言って、そこまで技術系の知識がない...

というわけで、私が約3~5年くらい向き合ってきた「Minecraftのサーバー開発」について綴ろうと思案。

※この記事の対象はJava版です

Minecraftサーバー構築しよう!

この記事を開いた皆様であれば、自宅サーバーの1つや2つお持ちでしょう。
...持ってなかったとしても、普通のパソコンで容易にできるので悪しからず。

Minecraftサーバーは、そもそも公式からjarファイルが配布されています。
https://www.minecraft.net/ja-jp/download/server

古いバージョンが欲しい場合は、こちら。
https://mcversions.net/

そして、ダウンロードしたjarファイルを適当なディレクトリに配置して、
java -Xmx1024M -Xms1024M -jar {ファイル名}.jar nogui
なんて打てば、解放完了!おしまい!

躓きポイント : ポート開放

なんですか、これ。

無邪気にMinecraftサーバーでマルチプレイがしたい子供の前に立ちはだかる難関。
普通にネットワークの知識を要求してきます。

私はルーターからポート開放しており、ルーターが使えなくなっても私の別の記事の方法を使いました。

ただ今回、ポート開放の話までしていると無限に長くなってしまうので割愛。ごめんなさい。

Pluginサーバーを導入しよう!

Java版のMinecraftを少しかじったことがある人が、マルチプレイでなにか遊ぼうと思った時、先ず当然データパックが思いつきます。

現に、AdoventCalendar2025も「Minecraft Command」ならカレンダーがあるのに「Plugin」や「MOD」がないんですよ。
そして何より、公式から与えられし合法的なゲーム制作ができるのが、コマンドそしてデータパック

その中でPluginは、MODほどの拡張性も人気もなく、かと言ってコマンド程手軽に導入もできない...

不憫ですね

しかし、バニラのユーザーを一番楽しく遊ばせられることのできるのが、このPluginです。
MODのように全員への導入の矯正もしない、データパックのようにコマンドに縛られない
そして、そのPluginServerを提供してくれているのが、Spigot、ならびにPaperMCです。

先程、Minecraft公式のjarファイルを紹介しました。
このjarファイルを!今すぐ!Paperに置き換えましょう!
これだけで、快適性と拡張性がグッと上がります。

ちなみに、置き換えるだけで良いです。これでもう導入は終わりです。

Pluginを入れよう!

SpigotやPaperでサーバーを立てると、/pluginsのフォルダが入れられます。
この中に、Javaで書いたコードを入れることができます。
(一応、Kotlinでも書けるみたい...?)

便利なことに、有志の人達が作ってくれたPluginが沢山あるので、それを導入してみましょう。

Minecraft Plugin 配布何かで調べればごまんと出てくるでしょう。

ここ(Paper hangar)とか、ここ(Spigot)とか。
ここ(Github)にもソースコードとともに直で配布されてる方も居ますね。

そしてもちろん私も、Paper hungarGithubで書いたPluginを配布しています

そして、plugin.jar/pluginに入れたら後は同じ手順で起動するだけ。

なんと簡単!なんと感嘆!

Pluginを作ろう!

大抵、minecraft plugin 作り方で調べれば、「IntelliJ IDEA」を導入して「Minecraft Development」を入れればいいよ!と書いてあります。

正解です。私もそうしてます。

そこでプロジェクトを作ると、

public final class LoginBonusPlugin extends JavaPlugin{

    @Override
    public void onEnable() {
    }

    @Override
    public void onDisable() {
    }
}

...と、出てきます。

  • onEnable()が、Minecraftサーバー起動時に行われる処理
  • onDisable()が、Minecraftサーバー起動時に行われる処理

私はScratchをあまり触ったことがないのですが、onEnable()を例えるとするなら"旗が押された時"でしょう。

そして、サーバーでしたい大抵のことはこれを使うでしょう。

    @EventHandler

これを使って、例えば

public final class LoginBonusPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(new main(), this);
    }

    @Override
    public void onDisable() {
    }

    
    @EventHandler
    // イベント検知を設定(今回はスニーク)
    public void onToggleSneakEvent(PlayerToggleSneakEvent e){
        // そのイベントを行ったプレイヤーをpに代入
        Player p = e.getPlayer();
        //もし (プレイヤーがスニーク状態になる) && (プレイヤーが手にコンパスを持っていた場合)
        if(p.isSneaking() && p.getInventory().getItemInMainHand().equals(new ItemStack(Material.COMPASS))){
            //プレイヤーを現世の100,60,100の座標へ飛ばす
            p.teleport(new Location(Bukkit.getWorld("World"), 100, 60, 100, 0 ,0));
        }
    }
}

わかりやすいですね。

例えばサーバーにいるプレイヤーがコンパスを持ってしゃがむと、設定した座標に戻ることができる。というシチュエーションでしょうか。
Hypixelなどの有名なサーバーに一度入ったことがあれば、想像に易いかもしれません。

しかも、データパックと違って、右クリックや左クリック、インベントリ全般の操作をEventで取得して操作することができるので、とても楽しいです。

終わり

皆さんも、この記事を読んでMinecraftのサーバーを構築し、Pluginを入れて見てはいかがでしょうか。

これはゲームであって遊びでもある。勉強ではないし実りも少ない。
だが楽しいのでこれで良い

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?