This commit is contained in:
2024-09-13 01:15:40 +02:00
commit 72c13e27d4
5 changed files with 406 additions and 0 deletions

3
.env.example Normal file
View File

@@ -0,0 +1,3 @@
DISCORD_BOT_TOKEN=""
DISCORD_GLOBAL_CHANNEL_ID="1283230743241166888"
DISCORD_CONSOLE_CHANNEL_ID="1283230428366503946"

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.env
data/*

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"editor.formatOnSave": false
}

View File

@@ -0,0 +1,354 @@
# DiscordSRV Configuration
# Need help? Join our Discord, https://discordsrv.com/discord
# Don't touch pls
ConfigVersion: 1.28.0
# Bot token; don't know what this is? Look at the video on the plugin page for instructions
# You must restart your server after changing this option
BotToken: ${CFG_DISCORD_BOT_TOKEN}
# The proxy to be used for Discord
# Leave this alone if you don't understand what it does
ProxyHost: "https://example.com"
ProxyPort: 1234
ProxyUser: "USERNAME"
ProxyPassword: "PASSWORD"
# Channel links from game to Discord
# syntax is Channels: {"in-game channel name from Minecraft": "numerical channel ID from Discord", "another in-game channel name from Minecraft": "another numerical channel ID from Discord"}
#
# All of DiscordSRV's messages will go to the first channel unless there's a channel for that type of messages defined:
# when using a compatible chat plugin, the channel name will be the one from that plugin (for chat messages)
# - If you're using TownyChat, the default channel is usually called "general" instead of "global"
# for player chat messages (when not using a chat plugin): global
# for server start/stop messages: status
# for achievement/advancement messages: awards
# for death messages: deaths
# for join messages: join
# for leave messages: leave
# for dynmap messages: dynmap
# for watchdog messages: watchdog
# for /discord broadcast: broadcasts (unless specified in the command)
# for account linking: link
#
# The first part of channel pairs is not the Discord channel name!
# Run "/discord reload" after changing this option to apply
Channels: {"global": ${CFG_DISCORD_GLOBAL_CHANNEL_ID}}
# Console channel numerical ID (NOT NAME), leave blank to disable the console channel all together
DiscordConsoleChannelId: ${CFG_DISCORD_CONSOLE_CHANNEL_ID}
# Invitation link shown to players when using /discord and on the message shown to unlinked players when linking is enforced
DiscordInviteLink: ""
# Debug information
# Don't enable these unless you're attempting to locate an issue
#
# Available Debug categories:
# MINECRAFT_TO_DISCORD - Messages coming from Minecraft
# DISCORD_TO_MINECRAFT - Messages coming from Discord
# GROUP_SYNC - Group synchronization
# PRESENCE - The bot's game status or presence
# VOICE - The voice module (see voice.yml)
# REQUIRE_LINK - The require link to join module (see linking.yml)
# NICKNAME_SYNC - Nickname synchronization
# ALERTS - Alerts (see alerts.yml)
# WATCHDOG - The watchdog
# BAN_SYNCHRONIZATION - Ban synchronization
# LP_CONTEXTS - LuckPerm's contexts
# ACCOUNT_LINKING - discord/minecraft account linking
#
# UNCATEGORIZED - Anything not in any of the above categories
# ALL - All the above categories (including UNCATEGORIZED)
#
# JDA - JDA's debug messages
# JDA_REST_ACTIONS - For debugging JDA's rest actions
# CALLSTACKS - Displays the stack trace for DiscordSRV debug calls
#
# Ex. "Debug: [GROUP_SYNC, PRESENCE]"
#
Debug: []
# Experiments
# These features are not fully optimized; use at your own risk
# JDBC (MySQL/MariaDB)
Experiment_JdbcAccountLinkBackend: "jdbc:mysql://HOST:PORT/DATABASE?autoReconnect=true&useSSL=false"
Experiment_JdbcTablePrefix: "discordsrv"
Experiment_JdbcUsername: "username"
Experiment_JdbcPassword: "password"
# Webhook Delivery
Experiment_WebhookChatMessageDelivery: true
Experiment_WebhookChatMessageUsernameFormat: "%displayname%"
Experiment_WebhookChatMessageFormat: "%message%"
Experiment_WebhookChatMessageUsernameFromDiscord: false
Experiment_WebhookChatMessageAvatarFromDiscord: false
Experiment_WebhookChatMessageUsernameFilters: {}
# Embed & webhook image/avatar url format
# Leave blank to use a default value
# Available placeholders: {texture} {username} {uuid} {uuid-nodashes} {size}
AvatarUrl: ""
# Reserializer
# Converts formatting (bold, italics, underline, strikethrough) between Minecraft and Discord
Experiment_MCDiscordReserializer_ToDiscord: true
Experiment_MCDiscordReserializer_ToMinecraft: true
Experiment_MCDiscordReserializer_InBroadcast: true
# Other
CancelConsoleCommandIfLoggingFailed: true
ForcedLanguage: none
ForceTLSv12: true
NoopHostnameVerifier: false
MaximumAttemptsForSystemDNSBeforeUsingFallbackDNS: 3
TimestampFormat: EEE, d. MMM yyyy HH:mm:ss z
DateFormat: dd-MM-yyy
# https://docs.discordsrv.com/config/#Timezone
Timezone: Europe/Berlin
# MinecraftMentionSound: Whether a sound should be sent to the player in Minecraft when they are mentioned from Discord
MinecraftMentionSound: true
# Plugin hooks
# You must restart your server after changing these options
#
# DisabledPluginHooks: plugin hooks that will not be used (usually just the name of the plugin).
# VentureChatBungee: enables the VentureChat hook's BungeeCord functionality (messages are received from every server, requires atleast 1 player to be online)
# EnablePresenceInformation: enabled presence information, which is required for some of our PlaceholderAPI placeholders. Keep in mind this requires the "Presence Intent" from the Discord developer portal
# UseModernPaperChatEvent: only use this if you have a chat plugins that SPECIFICALLY utilizes Paper's "AsyncChatEvent"
DisabledPluginHooks: []
VentureChatBungee: false
EnablePresenceInformation: false
UseModernPaperChatEvent: false
# Game Information
# Sets the user status for the bot
# Can be a single, static value, or cycle through multiple different options
# You can preface the status with "playing", "watching", "listening to", or "competing" to set the activity type
# You can set your own custom status by not including the prefixes
# %online%: number of online players
# PlaceholderAPI placeholders are supported
#
# DiscordGameStatus: Text to display. Can be a single value e.g. "Minecraft", or multiple values e.g. ["Minecraft", "yourip.changeme.com"]
# DiscordOnlineStatus: Activity status to display. This must be one of the following: ONLINE, DND, IDLE or INVISIBLE
# StatusUpdateRateInMinutes: How frequently to cycle the status
DiscordGameStatus: ["playing Minecraft"]
DiscordOnlineStatus: ONLINE
StatusUpdateRateInMinutes: 2
# Chat channel information
# The chat channel is the text channel that all messages in-game will be sent to and all messages sent
# to this channel on Discord will be sent in-game
#
# DiscordChatChannelDiscordToMinecraft: whether to send messages in the chat channel to the server chat
# DiscordChatChannelMinecraftToDiscord: whether to send messages in the server chat to the chat channel
# DiscordChatChannelTruncateLength: the maximum length of messages from Discord to be sent to Minecraft
# DiscordChatChannelTranslateMentions: whether to translate mentions like @Person for Minecraft to Discord messages
# DiscordChatChannelAllowedMentions: types of mentions allowed in Minecraft to Discord messages; types missing from the default value are "role", "here", & "everyone"
# DiscordChatChannelEmojiBehavior: how emojis should be sent to Minecraft. Can be "show", "name" or "hide"
# DiscordChatChannelEmoteBehavior: how emotes should be sent to Minecraft. Can be "name" or "hide"
# DiscordChatChannelPrefixRequiredToProcessMessage: the character(s) required to prefix a message for it to be sent from Minecraft to Discord (example "!")
# DiscordChatChannelPrefixActsAsBlacklist: Whether the prefix should act as a blacklist
# DiscordChatChannelRolesAllowedToUseColorCodesInChat: list of roles allowed to use color/format codes in Discord to Minecraft chat
# DiscordChatChannelBroadcastDiscordMessagesToConsole: whether to print processed discord messages to the console
# DiscordChatChannelRequireLinkedAccount: whether to require players have their Discord account linked to their Minecraft to have their Discord messages sent to Minecraft
# DiscordChatChannelBlockBots: whether bots should be blocked from Discord -> MC chat
# DiscordChatChannelBlockWebhooks: whether webhooks should be blocked from Discord -> MC chat
# DiscordChatChannelBlockedIds: ids of discord users (or bots) that should not have their messages processed & sent to MC
# DiscordChatChannelBlockedRolesAsWhitelist: if the following list should be treated as a whitelist (true) or a blacklist (false)
# DiscordChatChannelBlockedRolesIds: ids of discord roles that should not have their messages processed & sent to MC
# DiscordChatChannelRolesSelectionAsWhitelist: if the following list should be treated as a whitelist (true) or a blacklist (false)
# DiscordChatChannelRolesSelection: list of roles that should be filtered from all of a user's roles
# DiscordChatChannelRoleAliases: list of role aliases (alternate names for roles to use in Minecraft messages)
#
DiscordChatChannelDiscordToMinecraft: true
DiscordChatChannelMinecraftToDiscord: true
DiscordChatChannelTruncateLength: 256
DiscordChatChannelTranslateMentions: true
DiscordChatChannelAllowedMentions: [user, channel, emote]
DiscordChatChannelEmojiBehavior: "name"
DiscordChatChannelEmoteBehavior: "name"
DiscordChatChannelPrefixRequiredToProcessMessage: ""
DiscordChatChannelPrefixActsAsBlacklist: false
DiscordChatChannelRolesAllowedToUseColorCodesInChat: ["Developer", "Owner", "Admin", "Moderator"]
DiscordChatChannelBroadcastDiscordMessagesToConsole: true
DiscordChatChannelRequireLinkedAccount: false
DiscordChatChannelBlockBots: false
DiscordChatChannelBlockWebhooks: true
DiscordChatChannelBlockedIds: ["000000000000000000", "000000000000000000", "000000000000000000"]
DiscordChatChannelBlockedRolesAsWhitelist: false
DiscordChatChannelBlockedRolesIds: ["000000000000000000", "000000000000000000", "000000000000000000"]
DiscordChatChannelRolesSelectionAsWhitelist: false
DiscordChatChannelRolesSelection: ["Don't show me!", "Misc role"]
DiscordChatChannelRoleAliases: {"Developer": "Dev"}
# Console channel information
# The console channel is the text channel that receives messages which are then run as server commands
# by the console as well as having the server's console being streamed to line by line
#
# You can customize the message including removing timestamps in messages.yml
#
# DiscordConsoleChannelLogRefreshRateInSeconds: rate in seconds between sending lines from the console
# DiscordConsoleChannelUsageLog:
# %date%: current date
# example: 2017-01-01
# PlaceholderAPI placeholders are supported
# DiscordConsoleChannelBlacklistActsAsWhitelist: whether the blacklisted commands list acts as a whitelist instead of blacklist
# DiscordConsoleChannelBlacklistedCommands: phrases wrapped in quotation marks that users should not be able to send as commands to the console
# DiscordConsoleChannelFilters: regex filters to be applied to console lines being sent to Discord, if the result is empty the message won't be sent at all
# DiscordConsoleChannelLevels: levels to send to console channel via appender
# DiscordConsoleChannelUseCodeBlocks: if the console should be wrapped in code blocks and colored
# DiscordConsoleChannelBlockBots: whether bots should be allowed to send commands in the console channel
#
DiscordConsoleChannelLogRefreshRateInSeconds: 5
DiscordConsoleChannelUsageLog: "Console-%date%.log"
DiscordConsoleChannelBlacklistActsAsWhitelist: false
DiscordConsoleChannelBlacklistedCommands: ["?", "op", "deop", "execute"]
DiscordConsoleChannelFilters: {".*(?i)async chat thread.*": "", ".*There are \\d+ (?:of a max of|out of maximum) \\d+ players online.*": ""}
DiscordConsoleChannelLevels: [info, warn, error]
DiscordConsoleChannelUseCodeBlocks: true
DiscordConsoleChannelBlockBots: true
# Chat channel command execute command
# These options control the ability to say "!c kick Notch", or whatever the prefix is to run a command,
# as the console, from a registered chat channel.
#
# DiscordChatChannelConsoleCommandEnabled: whether to allow console commands from a chat channel.
# DiscordChatChannelConsoleCommandNotifyErrors: whether to send a user who tries to run a command without permission that they don't have permission
# DiscordChatChannelConsoleCommandPrefix: prefix to use for console commands. e.g. "!c tps"
# DiscordChatChannelConsoleCommandRolesAllowed: the user roles that are allowed to execute server commands from the chat channel
# DiscordChatChannelConsoleCommandWhitelist: list of commands that are able to be ran with DiscordChatChannelConsoleCommandPrefix
# DiscordChatChannelConsoleCommandWhitelistBypassRoles: list of roles that bypass the whitelist
# DiscordChatChannelConsoleCommandWhitelistActsAsBlacklist: should the command whitelist act as a blacklist instead
# DiscordChatChannelConsoleCommandExpiration: time in seconds until a sent command output is automatically removed by the bot. set to 0 to disable expiration.
# DiscordChatChannelConsoleCommandExpirationDeleteRequest: whether to delete the message of the person that originally issued the command
#
DiscordChatChannelConsoleCommandEnabled: true
DiscordChatChannelConsoleCommandNotifyErrors: true
DiscordChatChannelConsoleCommandPrefix: "!c"
DiscordChatChannelConsoleCommandRolesAllowed: ["Owner", "Developer", "Admin"]
DiscordChatChannelConsoleCommandWhitelist: ["say", "lag", "tps"]
DiscordChatChannelConsoleCommandWhitelistBypassRoles: ["Owner", "Developer"]
DiscordChatChannelConsoleCommandWhitelistActsAsBlacklist: false
DiscordChatChannelConsoleCommandExpiration: 0
DiscordChatChannelConsoleCommandExpirationDeleteRequest: true
# Chat channel player list command
# All the config stuff for the player list command
#
# DiscordChatChannelListCommandEnabled: whether the command is enabled
# DiscordChatChannelListCommandMessage: the command people can type to get the player list
# DiscordChatChannelListCommandExpiration: time in seconds until a sent player list message is automatically removed by the bot. set to 0 to disable expiration.
# DiscordChatChannelListCommandExpirationDeleteRequest: whether to delete the message of the person that originally requested for the player list
#
DiscordChatChannelListCommandEnabled: true
DiscordChatChannelListCommandMessage: "playerlist"
DiscordChatChannelListCommandExpiration: 10
DiscordChatChannelListCommandExpirationDeleteRequest: true
# Chat channel blacklisted phrases & regex
#
# DiscordChatChannelGameFilters: regex filters to be applied to chat messages being sent to Discord, if the result is empty the message won't be sent at all
# DiscordChatChannelDiscordFilters: regex filters to be applied to chat messages being sent to Minecraft, if the result is empty the message won't be sent at all
#
DiscordChatChannelGameFilters: {}
DiscordChatChannelDiscordFilters: {".*Online players \\(.*": "", ".*\\*\\*No online players\\*\\*.*": ""}
# Channel topic updater settings
#
# ChannelTopicUpdaterChannelTopicsAtShutdownEnabled: whether the channel topics should be changed at server shutdown at all
# ChannelTopicUpdaterRateInMinutes: amount of minutes between automatically updating the channel topics with fresh information
#
ChannelTopicUpdaterChannelTopicsAtShutdownEnabled: true
ChannelTopicUpdaterRateInMinutes: 10
# Channel Updater
# This feature changes the name of specified channels to comply with in-game placeholders
# Options:
# ChannelId: The ID of the channel to change (required)
# Format: The format for the channel (required). Available placeholders:
# %playercount%: current player count
# %playermax%: maximum player count
# %date%: current date and time
# %totalplayers%: total number of players to ever join the main world
# %uptimemins%: number of minutes since DiscordSRV has started
# %uptimehours%: number of hours since DiscordSRV has started
# %motd%: motd of the server
# %serverversion%: server version such as Spigot-1.9
# %freememory%: free memory of the JVM in MB
# %usedmemory%: used memory of the JVM in MB
# %totalmemory%: total memory of the JVM in MB
# %maxmemory%: max memory of the JVM in MB
# %freememorygb%: free memory of the JVM in GB
# %usedmemorygb%: used memory of the JVM in GB
# %totalmemorygb%: total memory of the JVM in GB
# %maxmemorygb%: max memory of the JVM in GB
# %tps%: average TPS of the server
# PlaceholderAPI placeholders are also supported
# ShutdownFormat: The format the channel should take when the server has shut down. Available placeholders:
# %time% or %date%: current date and time
# %serverversion%: server version
# %totalplayers%: total number of players to ever join the main world
# %timestamp%: current unix timestamp
# UpdateInterval: Time in minutes to wait between updating the channel's name (minimum is 10 due to rate limits)
ChannelUpdater:
- ChannelId: "0000000000000000"
Format: "%playercount% players online"
ShutdownFormat: "Server is offline"
UpdateInterval: 10
- ChannelId: "0000000000000000"
Format: "Current TPS: %tps%"
ShutdownFormat: "Server is offline"
UpdateInterval: 10
# Discord canned responses
# These are triggers (commands in a way) that will trigger a "canned response" to be sent as a reply to them
# You should probably change these from their defaults or add your own
#
# Syntax is {"TRIGGER": "RESPONSE", "TRIGGER": "RESPONSE", ...}
# If you do not want any canned responses, set this to just {}
# PlaceholderAPI placeholders are supported for the values
#
DiscordCannedResponses: {}
# Minecraft to Discord account linking
# These are the options pertaining to how linking a Minecraft account to a Discord account functions
#
# MinecraftDiscordAccountLinkedConsoleCommands: commands to run when an account is linked, see below for possible placeholders
# MinecraftDiscordAccountUnlinkedConsoleCommands: commands to run when an account is unlinked, see below for possible placeholders
# %minecraftplayername%: player's Minecraft username
# example: Notch
# %minecraftuuid%: player's uuid
# example: you know what a uuid looks like
# %discordid%: linked discord account's id
# example: 12345678901234567890
# %discordname%: linked discord account's username
# example: Notch
#
# MinecraftDiscordAccountLinkedRoleNameToAddUserTo: the name or id of a discord role to add a discord user to when they link their account
# MinecraftDiscordAccountLinkedAllowRelinkBySendingANewCode: allows sending a new code to the bot to unlink and relink with the new code
# MinecraftDiscordAccountLinkedUsePM: link accounts using PMs
# MinecraftDiscordAccountLinkedMessageDeleteSeconds: Time (in seconds) before deleting the message when linked in a text channel. Set to 0 if you do not want to delete the message.
#
MinecraftDiscordAccountLinkedConsoleCommands: ["", "", ""]
MinecraftDiscordAccountUnlinkedConsoleCommands: ["", "", ""]
MinecraftDiscordAccountLinkedRoleNameToAddUserTo: "Linked"
MinecraftDiscordAccountLinkedAllowRelinkBySendingANewCode: false
MinecraftDiscordAccountLinkedUsePM: true
MinecraftDiscordAccountLinkedMessageDeleteSeconds: 0
# Server watchdog
#
# The watchdog constantly monitors the last time your server performed a game tick
# If the time since the last tick goes above the set interval in seconds, Discord messages can be triggered
#
# ServerWatchdogEnabled: whether the watchdog is enabled at all
# ServerWatchdogTimeout: time in seconds that need to elapse before the watchdog takes action (Spigot's crash detection uses 60 for this)
# the minimum for this value is 10
# ServerWatchdogMessageCount: the amount of times ServerWatchdogMessage is sent. useful if you *really* want to make sure you know something's up
#
ServerWatchdogEnabled: true
ServerWatchdogTimeout: 30
ServerWatchdogMessageCount: 3

43
docker-compose.yml Normal file
View File

@@ -0,0 +1,43 @@
services:
mc:
image: itzg/minecraft-server
container_name: minecraft
tty: true
stdin_open: true
ports:
- "25565:25565"
- "24454:24454/udp"
entrypoint: sh -c "cp -r /configs/* /data/plugins/ && chown -R minecraft:minecraft /data/plugins/ && /start"
environment:
EULA: "TRUE"
TYPE: "PAPER"
MEMORY: "4g"
MODRINTH_PROJECTS: |
simple-voice-chat
coreprotect:llmrc4cl
discordsrv
discordsrv-commands-extension:xNANgK2O
interactivechat
interactivechat-discordsrv-addon
# selected latest coreprotect version manually because 1.21 doesn't exist yet
SPIGET_RESOURCES: "85811,82342,62325,106031"
SERVER_NAME: "vaporvee's Minecraft-Server"
ICON: "https://i.ytimg.com/vi/vpKc4X1m8Yo/hq720.jpg"
MOTD: "§1Yannik's crazy Minecraft-Server, der §1§ldefinitiv länger§1 als 2 Wochen hält! Jaaaa...."
MAX_PLAYERS: "420"
ENABLE_WHITELIST: "true"
WHITELIST: "f396e2b9-cbb1-46a0-bb72-96898a1ca44d"
DIFFICULTY: "NORMAL"
VIEW_DISTANCE: "128"
SPAWN_PROTECTION: "0"
ENABLE_COMMAND_BLOCK: "true"
REPLACE_ENV_VARIABLES: "TRUE"
ENV_VARIABLE_PREFIX: "CFG_"
CFG_DISCORD_BOT_TOKEN: ${DISCORD_BOT_TOKEN}
CFG_DISCORD_GLOBAL_CHANNEL_ID: ${DISCORD_GLOBAL_CHANNEL_ID}
CFG_DISCORD_CONSOLE_CHANNEL_ID: ${DISCORD_CONSOLE_CHANNEL_ID}
volumes:
- ./data:/data
- ./plugins:/plugins
# `docker exec -i minecraft rcon-cli` to access the console