Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -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
FROM mcr.microsoft.com/devcontainers/java:21
9 changes: 4 additions & 5 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "Minecraft Plugin Development",
"build": {
"dockerfile": "Dockerfile"
},
"dockerComposeFile": "../docker-compose.yml",
"service": "dev",
"workspaceFolder": "/workspace",
"customizations": {
"vscode": {
"extensions": [
Expand All @@ -11,6 +11,5 @@
]
}
},
"forwardPorts": [25565],
"postCreateCommand": "mvn dependency:go-offline"
}
}
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -30,4 +30,4 @@ jobs:
${{ runner.os }}-maven-

- name: Build & Format Check with Maven
run: mvn -B verify
run: mvn -B verify
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -35,4 +35,4 @@ jobs:
uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
files: target/*.jar
files: target/*.jar
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
build/
# Maven
target/
.DS_Store
3 changes: 0 additions & 3 deletions .vscode/settings.json

This file was deleted.

57 changes: 57 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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' でサーバーを起動できます。"
38 changes: 10 additions & 28 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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:
5 changes: 0 additions & 5 deletions docker/development/Dockerfile

This file was deleted.

22 changes: 0 additions & 22 deletions docker/paper/Dockerfile

This file was deleted.

20 changes: 20 additions & 0 deletions paper/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
1 change: 1 addition & 0 deletions paper/eula.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eula=true
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<packaging>jar</packaging>

<properties>
<java.version>17</java.version>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<kotlin.version>1.9.22</kotlin.version>
</properties>
Expand Down Expand Up @@ -81,4 +81,4 @@
</plugin>
</plugins>
</build>
</project>
</project>