- Intellij IDEA などの統合開発環境
- AdoptOpenJDK 1.8
- Scala 2.13
- sbt 1.6
- Spigot 1.12.2
- CoreProtect-2.14.4
- item-nbt-api-plugin-1.8.2-SNAPSHOT
- Multiverse-Core-2.5.0
- Multiverse-Portals-2.5.0
- ParticleAPI_v2.1.1
- WorldBorder1.8.7
- worldedit-bukkit-6.1.9
- worldguard-bukkit-6.2.2
最初に、Java Development Kit (JDK) 8をインストールする必要があります。 AdoptOpenJDK 1.8 のインストールを推奨します。
sbtの公式ページ に従ってsbtのインストールをします。
sbtがコマンドラインで使える状態でsbt assembly
を実行すると、target/build
フォルダにjarが出力されます。
IntelliJ IDEAを開発に使用している場合、プロジェクトをsbtプロジェクトとして読み込み、
sbtタブからSeichiAssist -> SeichiAssist -> sbt tasks -> assemblyを実行すればtarget/build
フォルダにjarが出力されます。
docker
、docker-compose
及びsbt
が実行可能であるとします。
Linux環境では、./prepare-docker.sh
、Windowsではprepare-docker.bat
を実行することで
デバッグ用のBungeecord + Spigot環境を構築することができます。
初回起動時にはSpigotのビルドに時間がかかります。
さらに、Minecraft EULA に同意する必要があるため実行が中断されます。
EULAに同意しデバッグを続行する場合、./docker/spigot/serverfiles/eula.txt
を参照し、
eula=false
を eula=true
に書き換えてください。
サーバーやDB等を停止する場合、 docker-compose down
を実行してください。
なお、SeichiAssistがJava 8以外でコンパイルされた場合は、実行時にエラーとなります。必ず揃えるようにしてください。
DockerマシンのIPアドレス(Linux等ならlocalhost
)をDOCKER_IP
とします。
docker
により各サービスが起動したら、DOCKER_IP
へとMinecraftを接続することができます。
また、DOCKER_IP:8080
へとWebブラウザでアクセスすることで、phpMyAdminを介してデータベースを操作することができます。
op
やコマンド実行等などでSpigotのコンソールにアクセスする必要がある場合、
spigota
またはspigotb
へのコンテナ名とともに docker attach [CONTAINER_NAME]
を実行してください。
コンテナ名は docker ps
を実行すると seichiassist_spigotb_1
のような形式で表示されます。
コンソールからは Ctrl+C
で抜けることができます(サーバーは停止されません)。
初回起動後、DBが作成されますが、ガチャ景品およびMineStackに格納可能なガチャ景品のデータがありません。その為、以下SQLdumpをインポートしてください。
- gachadata.sql -> import to "gachadata" table.
- msgachadata.sql -> import to "msgachadata" table.
VSCode + WSLで開発している場合や、純粋にビルドして立ち上げたいだけの場合はランタイムの導入のコストが高いので、以下の方法を使うと便利です。
$ rm -rf target/build # 再ビルドしたいなら既存のターゲットは削除
$ docker run --rm -it -v `pwd`:/app ghcr.io/giganticminecraft/seichiassist-builder:1a64049 sh -c "cd /app && sbt assembly"
$ sudo chown -R `whoami` target/build # docker上でsbtを実行するとrootになってしまうため権限を変える
$ cp -n docker/spigot/eula.txt docker/spigot/serverfiles/eula.txt || true
$ docker-compose up --build -d
protocol以下のファイルはgit clone
では入手することができません。以下のどちらかのコマンドを実行してください:
git clone --recursive
git submodule update --init --recursive
publicなメソッドについては、ドキュメンテーションを記載するよう心がけてください。 その他は各自が必要だと判断した場合のみ記載してください。
1コミットあたりの情報は最小限としてください。 コミットメッセージは変更の方向性を表す英語の動詞(add, remove, clean等)から始めることを推奨しています。
Git-flow を簡略化したものを使用します。 新規に機能を開発する際は develop ブランチから <任意の文字列> ブランチを作り、そこで作業してください。 開発が終了したらdevelopブランチにマージします。 masterブランチは本番環境に反映されます。 本番環境を更新するタイミングでdevelopブランチをmasterブランチにマージします。
フォーマットにはscalafmt、lintにはscalafixを利用しています。
コード品質を最低限保つため、PRが受け入れられるにはscalafmtとscalafixの両方のチェックが通る必要があります。そのため、
- IntelliJ IDEAの設定でフォーマットに
scalafix
を使うEditor
>Code Style
>Scala
でFormatter
をScalafmt
に変更Reformat on file save
にチェックを付ける
- PRを送った後は
sbt
コンソールでscalafixAll
とscalafmtAll
を実行する
ようにお願いします。
- developブランチが更新されると、そのコードを基に実行用jarがビルドされ、デバッグ環境に配布されます。デバッグ環境はjarの配布を検知すると自動で再起動し、最新のjarを使用して稼働します。
- デバッグ環境へは、Minecraft Java Editionで
play-debug.seichi.click
に接続し、T
キーでチャットを開き、/server deb112
と入力してEnter
を押すとアクセスできます。
- デバッグ環境へは、Minecraft Java Editionで
- masterブランチが更新されると、そのコードを基に実行用jarがビルドされ、本番環境に配布されます。本番環境は翌再起動時に自動で最新のjarを取り込んで稼働します。
- masterブランチの更新は必ず
develop
またはhotfix-*
からのPull Requestによって行ってください。 また、develop
からのリリース用 Pull Request はcreate_new_release
ワークフローを実行することで作成してください(build.sbt
の自動更新などが行われます)。
- masterブランチの更新は必ず
- jar以外の自動リリースは未対応です(config.ymlなど)。運営チームへ更新を依頼する必要があります。
- 各サーバーや環境で共通で構わないパラメータはconfig.ymlを読まず、コードへの直接実装を推奨します。
- GPLv3ライセンス での公開です。ソースコードの使用規約等はGPLv3ライセンスに従います。
- 当リポジトリのコードの著作権はunchamaが所有しています。
- 独自機能の追加やバグの修正等、ギガンティック☆整地鯖(以下、当サーバー)の発展への寄与を目的としたコードの修正・改変を歓迎しています。その場合、当サーバーのDiscordコミュニティに参加して、当コードに関する詳細なサポートを受けることが出来ます。