この記事は、ConoHa Advent Calendar 2020 18日目の記事です。
###はじめに
ConoHaではマインクラフトのマルチサーバーテンプレートがあり、マルチサーバーを自動構築できます。
MinecraftのチャットログをDiscordと連携できたら便利だなと思ってこの記事を書きました。
###サーバーの追加など
@waxsd100 さんの ConoHa Advent Calendar 2020 4日目ConoHa Minecraft Manager を使いこなしてみた に書かれていたのでそちらをご覧ください。
###spigotを導入する
sshでログインしてspigotへダウンロードします。
今回はバージョン1.16.4のものを入れています。
================================================
Welcome Minecraft Manager application!
URL : http://118.27.14.205:60000/
ManagerDir : /opt/minecraft-manager/
MinecraftDir : /opt/minecraft_server/
To delete this message: rm -f /etc/motd
================================================
cd /opt/minecraft_server/
wget https://cdn.getbukkit.org/spigot/spigot-1.16.4.jar
minecraft-server.serviceのあるディレクトリに移動してファイルを書き換えます。
cd /etc/systemd/system
vi minecraft-server.service
13行目にある(長いので先頭を省略しています。
-jar /opt/minecraft_server/minecraft_server.1.16.4.jar nogui'
を
-jar /opt/minecraft_server/spigot-1.14.jar nogui'
へ変更し保存し再起動します。
再起動して/opt/minecraft_server/
にplugins
フォルダができていれば成功です。
###DiscordSRVを入れる
DiscordSRVという便利な物を見つけたのでそちらを使います。
pluginフォルダーに移動してダウンロードします。
cd /opt/minecraft_server/plugins/
wget https://github.com/DiscordSRV/DiscordSRV/releases/download/v1.20.0/DiscordSRV-Build-1.20.0.jar
マインクラフトサーバをリロードします。私はOP権限を与えてるユーザーでチャットで\reload
をしています。(Minecraftを起動しているscreenにいくより個人的に楽なので)
リロードして、DiscordSRV
フォルダーができていれば成功です。
DiscordSRVの設定については他に書かれている方がいるのでこちらを参考に設定してください。
【DiscordSRV】DiscordとMinecraftでチャットができるプラグイン!| Spigot
###Botが送るメッセージをカスタマイズする
DiscordSRVのmessages.yml
を書き換えることにより、メッセージ内容を変更できます。
私はDiscord通知メッセージをこのように変えてみました。
MinecraftPlayerJoinMessage:
Enabled: true
Webhook:
Enable: false
AvatarUrl: "%botavatarurl%"
Name: "%botname%"
Content: ""
Embed:
Enabled: true
Color: "#00ff00"
Author:
ImageUrl: "%botavatarurl%"
Name: "%botname%からのお知らせ"
Url: ""
ThumbnailUrl: "%embedavatarurl%"
Title:
Text: "%username%さんがサーバーに参加したよ!"
Url: ""
Description: ""
Fields: []
ImageUrl: ""
Footer:
Text: "%date%"
IconUrl: ""
Timestamp: false
#
# PlayerFirstJoinで使用可能なプレースホルダー:
# %message%: ゲーム内で見られるメッセージに参加
#
MinecraftPlayerFirstJoinMessage:
Enabled: true
Webhook:
Enable: false
AvatarUrl: "%botavatarurl%"
Name: "%botname%"
Content: ""
Embed:
Enabled: true
Color: "#ffd700"
Author:
ImageUrl: "%botavatarurl%"
Name: "%botname% からのお知らせ"
Url: ""
ThumbnailUrl: "%embedavatarurl%"
Title:
Text: "%username%さんがサーバーに初参加!!よろしくね!"
Url: ""
Description: ""
Fields: []
ImageUrl: ""
Footer:
Text: ""
IconUrl: ""
Timestamp: false
#
# PlayerLeaveで使用可能なプレースホルダー:
# %message%: ゲーム内のメッセージを残す
#
MinecraftPlayerLeaveMessage:
Enabled: true
Webhook:
Enable: false
AvatarUrl: "%botavatarurl%"
Name: "%botname%"
Content: ""
Embed:
Enabled: true
Color: "#ff0000"
Author:
ImageUrl: "%botavatarurl%"
Name: "%botname%からのお知らせ"
Url: ""
ThumbnailUrl: "%embedavatarurl%"
Title:
Text: "%username%さんがサーバーから退出したよ!!おつかれ!"
Url: ""
Description: ""
Fields: []
ImageUrl: ""
Footer:
Text: "%date%"
IconUrl: ""
Timestamp: false
#
# PlayerDeathで使用可能なプレースホルダー:
# %deathmessage%: 死亡メッセージ
# %world%: プレイヤーが死亡したワールドの名前
#
MinecraftPlayerDeathMessage:
Enabled: true
Webhook:
Enable: false
AvatarUrl: "%botavatarurl%"
Name: "%botname%"
Content: ""
Embed:
Enabled: true
Color: "#000000"
Author:
ImageUrl: "%botavatarurl%"
Name: "%botname%からのお知らせ"
Url: ""
ThumbnailUrl: "%embedavatarurl%"
Title:
Text: "%deathmessage%"
Url: ""
Description: ""
Fields: []
ImageUrl: ""
Footer:
Text: "%date%"
IconUrl: ""
Timestamp: false
#
# PlayerAchievementメッセージで使用可能なプレースホルダー:
# %achievement%: メッセージ内容
# %world%: 実績を得たときにいたワールドの名前
#
MinecraftPlayerAchievementMessage:
Enabled: true
Webhook:
Enable: false
AvatarUrl: "%botavatarurl%"
Name: "%botname%"
Content: ""
Embed:
Enabled: true
Color: "#ffd700"
Author:
ImageUrl: "%botavatarurl%"
Name: "%botname%からのお知らせ"
Url: ""
ThumbnailUrl: "%embedavatarurl%"
Title:
Text: "%displayname% は進捗 %achievement% を達成したよ!"
Url: ""
Description: ""
Fields: []
ImageUrl: ""
Footer:
Text: "%date%"
IconUrl: ""
Timestamp: false