Awesome Open Source
Awesome Open Source

SeichiAssist

GitHub Actions

開発環境

前提プラグイン

前提プラグイン(整地鯖内製)

ビルド

最初に、Java Development Kit (JDK) 8をインストールする必要があります。 AdoptOpenJDK 1.8 のインストールを推奨します。

sbtの公式ページ に従ってsbtのインストールをします。 sbtがコマンドラインで使える状態でsbt assemblyを実行すると、target/buildフォルダにjarが出力されます。

IntelliJ IDEAの画面からビルドする

IntelliJ IDEAを開発に使用している場合、プロジェクトをsbtプロジェクトとして読み込み、 sbtタブからSeichiAssist -> SeichiAssist -> sbt tasks -> assemblyを実行すればtarget/buildフォルダにjarが出力されます。

デバッグ用docker環境

dockerdocker-compose及びsbtが実行可能であるとします。 Linux環境では、./prepare-docker.sh、Windowsではprepare-docker.batを実行することで デバッグ用のBungeecord + Spigot環境を構築することができます。

初回起動時にはSpigotのビルドに時間がかかります。 さらに、Minecraft EULA に同意する必要があるため実行が中断されます。 EULAに同意しデバッグを続行する場合、./docker/spigot/serverfiles/eula.txtを参照し、 eula=falseeula=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の準備

初回起動後、DBが作成されますが、ガチャ景品およびMineStackに格納可能なガチャ景品のデータがありません。その為、以下SQLdumpをインポートしてください。

どうしてもローカルにJavaとかsbtを入れたくない人のための救済策

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ディレクトリ以下のクローン

protocol以下のファイルはgit cloneでは入手することができません。以下のどちらかのコマンドを実行してください:

  • git clone --recursive
  • git submodule update --init --recursive

ドキュメンテーション

publicなメソッドについては、ドキュメンテーションを記載するよう心がけてください。 その他は各自が必要だと判断した場合のみ記載してください。

Commit Style

1コミットあたりの情報は最小限としてください。 コミットメッセージはコンベンショナルコミットを採用することを推奨しています。

Branch Model

Git-flow を簡略化したものを使用します。 新規に機能を開発する際は develop ブランチから <任意の文字列> ブランチを作り、そこで作業してください。 開発が終了したらdevelopブランチにマージします。 masterブランチは本番環境に反映されます。 本番環境を更新するタイミングでdevelopブランチをmasterブランチにマージします。

フォーマットおよびlintに関して

フォーマットにはscalafmt、lintにはscalafixを利用しています。

コード品質を最低限保つため、PRが受け入れられるにはscalafmtとscalafixの両方のチェックが通る必要があります。そのため、

  • IntelliJ IDEAの設定でフォーマットに scalafix を使う
    • Editor > Code Style > Scala
      • FormatterScalafmt に変更
      • Reformat on file save にチェックを付ける
  • PRを送った後は sbt コンソールで scalafixAllscalafmtAll を実行する

ようにお願いします。

AutoRelease

  • developブランチが更新されると、そのコードを基に実行用jarがビルドされ、デバッグ環境に配布されます。デバッグ環境はjarの配布を検知すると自動で再起動し、最新のjarを使用して稼働します。
    • デバッグ環境へは、Minecraft Java Editionでplay-debug.seichi.clickに接続し、Tキーでチャットを開き、/server deb112と入力してEnterを押すとアクセスできます。
  • masterブランチが更新されると、そのコードを基に実行用jarがビルドされ、本番環境に配布されます。本番環境は翌再起動時に自動で最新のjarを取り込んで稼働します。
    • masterブランチの更新は必ず develop または hotfix-* からのPull Requestによって行ってください。 また、 develop からのリリース用 Pull Request は create_new_release ワークフローを実行することで作成してください(build.sbt の自動更新などが行われます)。
  • jar以外の自動リリースは未対応です(config.ymlなど)。運営チームへ更新を依頼する必要があります。
    • 各サーバーや環境で共通で構わないパラメータはconfig.ymlを読まず、コードへの直接実装を推奨します。

利用条件

  • GPLv3ライセンス での公開です。ソースコードの使用規約等はGPLv3ライセンスに従います。
  • 当リポジトリのコードの著作権はunchamaが所有しています。
  • 独自機能の追加やバグの修正等、ギガンティック☆整地鯖(以下、当サーバー)の発展への寄与を目的としたコードの修正・改変を歓迎しています。その場合、当サーバーのDiscordコミュニティに参加して、当コードに関する詳細なサポートを受けることが出来ます。

ライセンス

このプラグインは、Apache 2.0ライセンスで配布されている以下の製作物が含まれています。

Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Scala (29,378
Minecraft (14,465
Intellij (5,415
Sbt (4,758
Spigot (2,639
Bukkit (2,634
Minecraft Server (1,276
Minecraft Plugin (1,017
Spigot Plugin (926