diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 1b16436..147541c 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -1,6 +1 @@
-FROM mcr.microsoft.com/devcontainers/java:17
-
-USER root
-RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
- && apt-get -y install --no-install-recommends maven
-USER vscode
\ No newline at end of file
+FROM mcr.microsoft.com/devcontainers/java:21
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index c8f872d..98b9f44 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,8 +1,8 @@
{
"name": "Minecraft Plugin Development",
- "build": {
- "dockerfile": "Dockerfile"
- },
+ "dockerComposeFile": "../docker-compose.yml",
+ "service": "dev",
+ "workspaceFolder": "/workspace",
"customizations": {
"vscode": {
"extensions": [
@@ -11,6 +11,5 @@
]
}
},
- "forwardPorts": [25565],
"postCreateCommand": "mvn dependency:go-offline"
-}
\ No newline at end of file
+}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 302e245..11f7a3e 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,10 +10,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 17
+ - name: Set up JDK 21
uses: actions/setup-java@v4
with:
- java-version: "17"
+ java-version: "21"
distribution: "temurin"
- name: Set up Maven
@@ -30,4 +30,4 @@ jobs:
${{ runner.os }}-maven-
- name: Build & Format Check with Maven
- run: mvn -B verify
\ No newline at end of file
+ run: mvn -B verify
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 331a91b..7d167ff 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,10 +14,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 17
+ - name: Set up JDK 21
uses: actions/setup-java@v4
with:
- java-version: "17"
+ java-version: "21"
distribution: "temurin"
- name: Cache Maven packages
@@ -35,4 +35,4 @@ jobs:
uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
- files: target/*.jar
\ No newline at end of file
+ files: target/*.jar
diff --git a/.gitignore b/.gitignore
index 87f3c62..b8c3a52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,2 @@
-build/
+# Maven
target/
-.DS_Store
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 7b016a8..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "java.compile.nullAnalysis.mode": "automatic"
-}
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d85c78f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,57 @@
+# Minecraft LogTime Plugin - 開発用Makefile
+
+.PHONY: help build start stop clean logs test reload
+
+# デフォルトターゲット
+help:
+ @echo "利用可能なコマンド:"
+ @echo " make build - プラグインをビルド"
+ @echo " make start - Paper サーバーを起動"
+ @echo " make stop - すべてのコンテナを停止"
+ @echo " make clean - ビルド成果物とコンテナを削除"
+ @echo " make logs - Paper サーバーのログを表示"
+ @echo " make test - テストを実行"
+ @echo " make reload - プラグインをリビルドしてサーバー再起動"
+
+# プラグインをビルド
+build:
+ @echo "プラグインをビルド中..."
+ mvn clean package
+
+# Paper サーバーを起動
+start:
+ @echo "Paper サーバーを起動中..."
+ docker-compose up -d paper
+
+# すべてのコンテナを停止
+stop:
+ @echo "コンテナを停止中..."
+ docker-compose down
+
+# ビルド成果物とコンテナを削除
+clean:
+ @echo "クリーンアップ中..."
+ docker-compose down -v
+ docker-compose build --no-cache
+ rm -rf target/
+
+# Paper サーバーのログを表示
+logs:
+ docker-compose logs -f paper
+
+# テストを実行
+test:
+ mvn test
+
+# プラグインをリビルドしてサーバー再起動(開発時に便利)
+reload:
+ @echo "プラグインをリビルドしてサーバー再起動中..."
+ make build
+ docker-compose restart paper
+
+# 開発環境を初期化(初回セットアップ用)
+init:
+ @echo "開発環境を初期化中..."
+ docker-compose build
+ make build
+ @echo "初期化完了!'make start' でサーバーを起動できます。"
diff --git a/docker-compose.yml b/docker-compose.yml
index 33af68b..c4f53df 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,44 +1,26 @@
services:
- # 開発用コンテナ
- # プラグインのビルド(コンパイル)はこのコンテナ内で行います。
- development:
+ dev:
build:
context: .
- dockerfile: ./docker/development/Dockerfile
- container_name: mc-plugin-dev
- working_dir: /app
+ dockerfile: ./.devcontainer/Dockerfile
volumes:
- # ローカルのプロジェクトフォルダをコンテナの/appに同期します。
- # これにより、ローカルでコードを編集すると即座にコンテナ内に反映されます。
- - .:/app
- # Gradleのキャッシュを永続化し、2回目以降のビルドを高速化します。
- - gradle_cache:/root/.gradle
- # コンテナを起動し続け、`docker-compose exec`で中に入れるようにします。
- tty: true
- stdin_open: true
+ - .:/workspace:cached
+ - m2_cache:/home/vscode/.m2
+ command: sleep infinity
- # Paperサーバーコンテナ
- # 開発したプラグインをテストするためのマイクラサーバーです。
paper:
build:
context: .
- dockerfile: ./docker/paper/Dockerfile
+ dockerfile: ./paper/Dockerfile
container_name: mc-plugin-paper
ports:
- - "25565:25565" # Minecraftサーバーのポート
+ - "25565:25565"
volumes:
- # developmentコンテナでビルドしたjarファイルを、サーバーのpluginsフォルダに配置します。
- - ./build/libs:/server/plugins
- # ワールドデータなどを永続化します。
+ - ./target:/server/plugins
- paper_data:/server
- # サーバーの起動にはEULAへの同意が必要です。
- environment:
- EULA: "TRUE"
- # developmentコンテナが起動してからpaperが起動するように設定
depends_on:
- - development
+ - dev
-# Dockerが管理するデータ領域(ボリューム)の定義
volumes:
- gradle_cache:
paper_data:
+ m2_cache:
diff --git a/docker/development/Dockerfile b/docker/development/Dockerfile
deleted file mode 100644
index dfb965e..0000000
--- a/docker/development/Dockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-# JAVAのプログラムを作る為の全部入りセットをインストール
-FROM eclipse-temurin:21-jdk-jammy
-
-# 作業ディレクトリを作成
-WORKDIR /app
\ No newline at end of file
diff --git a/docker/paper/Dockerfile b/docker/paper/Dockerfile
deleted file mode 100644
index d2a5bd3..0000000
--- a/docker/paper/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# -----------------------------------------------------------------
-# docker/paper/Dockerfile
-# -----------------------------------------------------------------
-# プラグインをテストするためのPaperサーバー環境を定義します。(1.21.0対応版)
-# -----------------------------------------------------------------
-
-# Minecraft 1.21 は Java 21 が必須のため、ベースイメージを更新
-FROM eclipse-temurin:21-jre-jammy
-
-# 必要なツールをインストール
-RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*
-
-# サーバーの作業ディレクトリを作成
-WORKDIR /server
-
-# Paperサーバーの最新ビルドを自動で取得するように修正
-ARG MC_VERSION=1.21
-RUN wget -O paper.jar https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION}/builds/$(wget -qO- https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION} | grep -o '"builds":\[[^]]*' | grep -o '[0-9]*' | tail -1)/downloads/paper-${MC_VERSION}-$(wget -qO- https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION} | grep -o '"builds":\[[^]]*' | grep -o '[0-9]*' | tail -1).jar
-
-# サーバーを起動するコマンド
-# メモリ割り当てはPCのスペックに合わせて調整してください (例: -Xms2G -Xmx2G)
-CMD ["java", "-Xms1G", "-Xmx1G", "-jar", "paper.jar", "--nogui"]
diff --git a/paper/Dockerfile b/paper/Dockerfile
new file mode 100644
index 0000000..d9894eb
--- /dev/null
+++ b/paper/Dockerfile
@@ -0,0 +1,20 @@
+# === ビルド用ステージ ===
+FROM debian:stable-slim AS builder
+
+ARG MC_VERSION="1.21"
+ARG BUILD_NUMBER="130"
+
+RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*
+RUN wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION}/builds/${BUILD_NUMBER}/downloads/paper-${MC_VERSION}-${BUILD_NUMBER}.jar"
+
+# === 起動用ステージ ===
+FROM eclipse-temurin:21-jre-jammy
+
+WORKDIR /server
+
+COPY --from=builder /paper.jar .
+COPY paper/eula.txt .
+
+EXPOSE 25565
+
+CMD ["java", "-Xms1G", "-Xmx1G", "-jar", "paper.jar", "--nogui"]
diff --git a/paper/eula.txt b/paper/eula.txt
new file mode 100644
index 0000000..02dccd9
--- /dev/null
+++ b/paper/eula.txt
@@ -0,0 +1 @@
+eula=true
diff --git a/pom.xml b/pom.xml
index 1340aec..ef04699 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
jar
- 17
+ 21
UTF-8
1.9.22
@@ -81,4 +81,4 @@
-
\ No newline at end of file
+