[Feature/3.x Regression]: Sync with vanilla whitelist
Azarattum opened this issue ยท 11 comments
๐ Description
2.x version of sdlink was using vanilla whitelist which meant a simple integration with other tools like MSH. Now there is no way to allow verified players to start a sleeping server.
A simple workaround would be to add verified players to vanilla whitelist.
Btw, I don't think this is possible to do with trigger commands, since we don't have access to player's UUID there. And as far as I know, there is no way to /whitelist add <uuid> only /whitelist add <playername>.
๐ก Use Case
For resource-limited servers hibernation is essential. And we don't want arbitrary people (or bots) to wake up our server. Tools like MSH rely in vanilla whitelist. This is why access control system isn't really usable in this setup unlike 2.x's simple whitelist system.
We determined the root cause to be access control desyncing with whitelist. I'll close this in favor of #175
I'm on 1.20.4 (Fabric Loader 0.16.10) using SimpleDiscordLink-Universal-3.3.0.jar.
Access control DOES integrate with the vanilla whitelist, if it's enabled on the server. It was added a while back.
However, it's only to add and remove players to and from the whitelist, when they are verified/unverified
It's not a synced system, because access control needs the discord id of the user, which the mc whitelist can't provide.
This is true for both full access control, and the optional verification system
How do you get verification code with native whitelist enabled then? You get the "you are not whitelisted message" instead of the "here is your code" message.
That.... Shouldn't be. It should always do the access control verification check first.
This sounds like a bug.
Can you share your versions so I can investigate this
Okay, I can't recreate this.
I tested with whitelisting, and access control enabled. To be sure, I started without any verified, or whitelisted accounts and it worked as expected. I attached a video to show the testing done
2025-05-13.00-09-56.mp4
Maybe I'm missing something? Here are my logs and configs. Any idea what am I doing wrong?
LOGS
[13:58:06] [main/INFO]: Loading Minecraft 1.20.4 with Fabric Loader 0.16.10
[13:58:07] [main/INFO]: Loading 117 mods:
- alternate-current 1.9.0
- cardinal-components 5.4.0
|-- cardinal-components-base 5.4.0
|-- cardinal-components-block 5.4.0
|-- cardinal-components-chunk 5.4.0
|-- cardinal-components-entity 5.4.0
|-- cardinal-components-item 5.4.0
|-- cardinal-components-level 5.4.0
|-- cardinal-components-scoreboard 5.4.0
\-- cardinal-components-world 5.4.0
- carpet 1.4.128+v231205
- carpet-extra 1.4.128
- carpet-fixes 1.20-1.17.0
\-- conditional-mixin 0.3.1
- craterlib 2.1.4
- easyauth 3.2.1
|-- at_favre_lib_bcrypt 0.10.2
|-- at_favre_lib_bytes 1.6.1
|-- com_mysql_mysql-connector-j 9.2.0
|-- com_typesafe_config 1.4.3
|-- de_mkammerer_argon2-jvm 2.12
|-- de_mkammerer_argon2-jvm-nolibs 2.12
|-- io_leangen_geantyref_geantyref 1.3.16
|-- net_java_dev_jna_jna 5.16.0
|-- net_kyori_option 1.1.0
|-- org_apache_commons_commons-text 1.13.0
|-- org_iq80_leveldb_leveldb 0.12
|-- org_iq80_leveldb_leveldb-api 0.12
|-- org_mongodb_bson 5.3.1
|-- org_mongodb_mongodb-driver-core 5.3.1
|-- org_mongodb_mongodb-driver-sync 5.3.1
|-- org_spongepowered_configurate-core 4.2.0
|-- org_spongepowered_configurate-hocon 4.2.0
|-- org_xerial_sqlite-jdbc 3.49.1.0
\-- server_translations_api 2.2.0+1.20.3-rc1
\-- packet_tweaker 0.5.0+1.20.2-rc1
- fabric-api 0.97.2+1.20.4
|-- fabric-api-base 0.4.37+78d798af4f
|-- fabric-api-lookup-api-v1 1.6.50+82b1bb3e4f
|-- fabric-biome-api-v1 13.0.17+78d798af4f
|-- fabric-block-api-v1 1.0.17+3e2216cb4f
|-- fabric-block-view-api-v2 1.0.5+78d798af4f
|-- fabric-blockrenderlayer-v1 1.1.47+78d798af4f
|-- fabric-client-tags-api-v1 1.1.8+78d798af4f
|-- fabric-command-api-v1 1.2.42+f71b366f4f
|-- fabric-command-api-v2 2.2.21+78d798af4f
|-- fabric-commands-v0 0.2.59+df3654b34f
|-- fabric-containers-v0 0.1.88+df3654b34f
|-- fabric-content-registries-v0 5.0.16+78d798af4f
|-- fabric-convention-tags-v1 1.5.11+78d798af4f
|-- fabric-crash-report-info-v1 0.2.24+78d798af4f
|-- fabric-data-attachment-api-v1 1.1.5+b90db5744f
|-- fabric-data-generation-api-v1 13.2.6+5c0133444f
|-- fabric-dimensions-v1 2.1.63+6605d1a84f
|-- fabric-entity-events-v1 1.6.2+09fc25014f
|-- fabric-events-interaction-v0 0.7.2+389931eb4f
|-- fabric-events-lifecycle-v0 0.2.75+df3654b34f
|-- fabric-game-rule-api-v1 1.0.47+78d798af4f
|-- fabric-item-api-v1 2.3.0+bcdd12964f
|-- fabric-item-group-api-v1 4.0.27+ee30b13a4f
|-- fabric-key-binding-api-v1 1.0.42+78d798af4f
|-- fabric-keybindings-v0 0.2.40+df3654b34f
|-- fabric-lifecycle-events-v1 2.3.1+a67ffb5d4f
|-- fabric-loot-api-v2 2.1.10+78d798af4f
|-- fabric-message-api-v1 6.0.6+78d798af4f
|-- fabric-mining-level-api-v1 2.1.66+78d798af4f
|-- fabric-model-loading-api-v1 1.0.9+78d798af4f
|-- fabric-models-v0 0.4.8+9386d8a74f
|-- fabric-networking-api-v1 3.1.9+6abb6a4b4f
|-- fabric-object-builder-api-v1 13.1.0+dba1195c4f
|-- fabric-particles-v1 1.1.8+78d798af4f
|-- fabric-recipe-api-v1 2.0.22+78d798af4f
|-- fabric-registry-sync-v0 4.0.21+ee30b13a4f
|-- fabric-renderer-api-v1 3.2.5+78d798af4f
|-- fabric-renderer-indigo 1.5.6+d331d3144f
|-- fabric-renderer-registries-v1 3.2.54+df3654b34f
|-- fabric-rendering-data-attachment-v1 0.3.43+73761d2e4f
|-- fabric-rendering-fluids-v1 3.1.2+e761c6694f
|-- fabric-rendering-v0 1.1.57+df3654b34f
|-- fabric-rendering-v1 3.2.1+6fd945a04f
|-- fabric-resource-conditions-api-v1 2.3.15+78d798af4f
|-- fabric-resource-loader-v0 0.11.21+ee30b13a4f
|-- fabric-screen-api-v1 2.0.18+78d798af4f
|-- fabric-screen-handler-api-v1 1.3.57+78d798af4f
|-- fabric-sound-api-v1 1.0.18+78d798af4f
|-- fabric-transfer-api-v1 4.0.12+90f2d7b14f
\-- fabric-transitive-access-wideners-v1 5.0.15+78d798af4f
- fabric-language-kotlin 1.13.2+kotlin.2.1.20
|-- org_jetbrains_kotlin_kotlin-reflect 2.1.20
|-- org_jetbrains_kotlin_kotlin-stdlib 2.1.20
|-- org_jetbrains_kotlin_kotlin-stdlib-jdk7 2.1.20
|-- org_jetbrains_kotlin_kotlin-stdlib-jdk8 2.1.20
|-- org_jetbrains_kotlinx_atomicfu-jvm 0.27.0
|-- org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm 1.10.1
|-- org_jetbrains_kotlinx_kotlinx-coroutines-jdk8 1.10.1
|-- org_jetbrains_kotlinx_kotlinx-datetime-jvm 0.6.2
|-- org_jetbrains_kotlinx_kotlinx-io-bytestring-jvm 0.7.0
|-- org_jetbrains_kotlinx_kotlinx-io-core-jvm 0.7.0
|-- org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm 1.8.0
|-- org_jetbrains_kotlinx_kotlinx-serialization-core-jvm 1.8.0
\-- org_jetbrains_kotlinx_kotlinx-serialization-json-jvm 1.8.0
- fabricloader 0.16.10
\-- mixinextras 0.4.1
- fabrictailor 2.3.1
\-- config2brigadier 1.2.3
- ferritecore 6.0.3
- itemswapper 0.7.8.1
\-- trender 1.0.1
- java 24
- krypton 0.2.6
\-- com_velocitypowered_velocity-native 3.2.0-SNAPSHOT
- lithium 0.12.1
- memoryleakfix 1.1.5
- minecraft 1.20.4
- modernfix 5.17.0+mc1.20.4
- nochatreports 1.20.4-v2.6.1
- noisium 2.3.0+mc1.20.2-1.20.4
- owo 0.12.6+1.20.3
\-- blue_endless_jankson 1.2.2
- sdlink 3.3.0
- servercore 1.5.0+1.20.4
|-- fabric-permissions-api-v0 0.3-SNAPSHOT
|-- org_yaml_snakeyaml 2.2
|-- placeholder-api 2.3.0+1.20.3
|-- space_arim_dazzleconf_dazzleconf-core 1.3.0-M2
\-- space_arim_dazzleconf_dazzleconf-ext-snakeyaml 1.3.0-M2
- servux 0.1.0
- tt20 0.7.1
\-- net_snackbag_shit_shit 1.2.3
- voicechat 1.20.4-2.5.22
\-- fabric-key-binding-api-v1 1.0.39+f4b7e42432
[13:58:07] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.7 Source=file:/home/epicness/libraries/net/fabricmc/sponge-mixin/0.15.4+mixin.0.8.7/sponge-mixin-0.15.4+mixin.0.8.7.jar Service=Knot/Fabric Env=SERVER
[13:58:07] [main/INFO]: Compatibility level set to JAVA_16
[13:58:07] [main/INFO]: Compatibility level set to JAVA_17
[13:58:08] [main/INFO]: Loaded configuration file for Lithium: 129 options available, 2 override(s) found
[13:58:08] [main/WARN]: Reference map 'memoryleakfix-fabric-1.17+-fabric-refmap.json' for memoryleakfix-fabric.mixins.json could not be read. If this is a development environment you can ignore this message
[13:58:09] [main/INFO]: Loaded configuration file for ModernFix 5.17.0+mc1.20.4: 54 options available, 0 override(s) found
[13:58:09] [main/INFO]: Applying Nashorn fix
[13:58:10] [main/WARN]: Force-disabling mixin 'alloc.blockstate.StateMixin' as rule 'mixin.alloc.blockstate' (added by mods [ferritecore]) disables it and children
[13:58:10] [main/WARN]: Force-disabling mixin 'alloc.chunk_ticking.ServerChunkManagerMixin' as rule 'mixin.alloc.chunk_ticking' (added by mods [servercore]) disables it and children
[13:58:10] [main/WARN]: Error loading class: net/minecraft/class_8673 (java.lang.ClassNotFoundException: net/minecraft/class_8673)
[13:58:10] [main/WARN]: @Mixin target net.minecraft.class_8673 was not found owo.mixins.json:ClientCommonNetworkHandlerAccessor from mod owo
[13:58:10] [main/INFO]: [MemoryLeakFix] Will be applying 1 memory leak fixes!
[13:58:10] [main/INFO]: [MemoryLeakFix] Currently enabled memory leak fixes: [biomeTemperatureLeak]
[13:58:11] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.4.1).
[13:58:15] [main/WARN]: Method overwrite conflict for method_5800 in carpet-fixes.mixins.json:itemFixes.ItemEntity_lightningKillsDropsMixin from mod carpet-fixes, previously written by carpet.mixins.ItemEntityMixin. Skipping method.
[13:58:17] [main/INFO]: Injecting BlockStateBase cache population hook into getNeighborPathNodeType from me.jellysquid.mods.lithium.mixin.ai.pathing.AbstractBlockStateMixin
[13:58:17] [main/INFO]: Injecting BlockStateBase cache population hook into getPathNodeType from me.jellysquid.mods.lithium.mixin.ai.pathing.AbstractBlockStateMixin
[13:58:17] [main/INFO]: Injecting BlockStateBase cache population hook into lithium$getAllFlags from me.jellysquid.mods.lithium.mixin.util.block_tracking.AbstractBlockStateMixin
[13:58:18] [main/WARN]: Method overwrite conflict for method_21740 in modernfix-common.mixins.json:perf.remove_biome_temperature_cache.BiomeMixin from mod modernfix, previously written by me.jellysquid.mods.lithium.mixin.world.temperature_cache.BiomeMixin. Skipping method.
[13:58:23] [main/INFO]: Vanilla bootstrap took 8959 milliseconds
[13:58:23] [main/INFO]: Loaded C2B lib.
[13:58:23] [main/INFO]: [EasyAuth]: EasyAuth mod by NikitaCartes
[13:58:24] [main/INFO]: Compression will use libdeflate (Linux x86_64), encryption will use OpenSSL 3.0.x (Linux x86_64)
[13:58:24] [main/INFO]: Loading Noisium.
[13:58:25] [main/INFO]: remember to update ubuntu, before it is too late
[13:58:25] [main/INFO]: [ServerCore] Loaded V1.5.0+1.20.4!
[13:58:25] [main/INFO]: Starting TT20...
[13:58:25] [Thread-3/INFO]: (TT20) Checking for updates...
[13:58:25] [main/INFO]: [voicechat] Compatibility version 18
[13:58:25] [main/INFO]: [voicechat] Loading plugins
[13:58:25] [main/INFO]: [voicechat] Loaded 0 plugin(s)
[13:58:25] [main/INFO]: [voicechat] Initializing plugins
[13:58:25] [main/INFO]: [voicechat] Initialized 0 plugin(s)
[13:58:26] [main/INFO]: Loading ItemSwapper server support.
[13:58:26] [main/INFO]: Krypton is now accelerating your Minecraft server's networking stack ๐
[13:58:26] [main/INFO]: Registered simple-discord-link.toml successfully!
[13:58:26] [main/INFO]: Registered simple-discord-compat.toml successfully!
[13:58:26] [main/INFO]: Using Webhook for Chat Messages
[13:58:26] [Thread-3/INFO]: (TT20) Running the latest version
[13:58:28] [main/INFO]: Login Successful!
[13:58:28] [main/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[13:58:28] [main/INFO]: Bypassed Mojang DFU
[13:58:28] [JDA MainWS-ReadThread/INFO]: Connected to WebSocket
[13:58:29] [JDA MainWS-ReadThread/INFO]: Finished Loading!
[13:58:29] [pool-4-thread-2/INFO]: Successfully connected to discord
[13:58:29] [pool-4-thread-2/INFO]: Discord Invite Link for Bot: https://discord.com/api/oauth2/authorize?client_id=1025005051787362304&permissions=277965401108&scope=bot%20applications.commands
[13:58:29] [pool-4-thread-2/WARN]: Channel ID for Events Channel is set to 0. Falling back to chatChannel
[13:58:29] [pool-4-thread-2/WARN]: Channel ID for Console Channel is set to 0. Falling back to chatChannel
[13:58:32] [main/ERROR]: Failed to add settings command for carpet-fixes. It is masking previous command.
[13:58:34] [main/INFO]: Loaded 7 recipes
[13:58:34] [main/INFO]: Loaded 1278 advancements
[13:58:34] [Thread-12/INFO]: Loaded 62 translation keys
[13:58:35] [main/INFO]: Applied 0 biome modifications to 0 of 64 new biomes in 3.504 ms
[13:58:35] [Server thread/INFO]: Starting minecraft server version 1.20.4
[13:58:35] [Server thread/INFO]: Loading properties
[13:58:35] [Server thread/INFO]: Default game type: SURVIVAL
[13:58:35] [Server thread/INFO]: Generating keypair
[13:58:35] [Server thread/INFO]: Starting Minecraft server on *:25555
[13:58:35] [Server thread/INFO]: Using epoll channel type
[13:58:35] [Server thread/INFO]: Preparing level "world"
[13:58:35] [Server thread/INFO]: [CM] Loaded 11 settings from carpet.conf
[13:58:35] [Server thread/INFO]: [CM] Loaded 12 settings from carpet-fixes.conf
[13:58:36] [Server thread/INFO]: skipping unknown option 'enabledtrueupdate-order' in Alternate Current config
[13:58:36] [Server thread/INFO]: Instantiating Mojang DFU
[13:58:37] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[13:58:37] [Server thread/WARN]: Method overwrite conflict for removeIf in modernfix-common.mixins.json:bugfix.paper_chunk_patches.SortedArraySetMixin from mod modernfix, previously written by me.jellysquid.mods.lithium.mixin.world.chunk_tickets.SortedArraySetMixin. Skipping method.
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:41] [Server thread/INFO]: Preparing spawn area: 0%
[13:58:42] [Worker-Main-1/INFO]: Preparing spawn area: 0%
[13:58:43] [Server thread/INFO]: Time elapsed: 5498 ms
[13:58:43] [Server thread/INFO]: Done (7.651s)! For help, type "help"
[13:58:43] [Server thread/WARN]: Dedicated server took 39.664 seconds to load
[13:58:43] [VoiceChatServerThread/INFO]: [voicechat] Voice chat server started at port 24454
[13:58:48] [Server thread/INFO]: Disconnecting Vreng4el512 (/127.0.0.1:58364): You are not white-listed on this server!
[13:58:48] [Server thread/INFO]: Vreng4el512 (/127.0.0.1:58364) lost connection: You are not white-listed on this server!
[13:58:48] [Server thread/WARN]: handleDisconnection() called twice
simple-discord-link.toml
#General Mod Config
[general]
#Should the mod be enabled or not
enabled = true
#Enable Additional Logging. Used for Fault Finding. WARNING: CAUSES LOG SPAM!
debugging = false
#The active language to use for built in messages. Defaults to en_us if a language is not found
language = "en_us"
#Internal version control. DO NOT TOUCH!
configVersion = 30
#Config specific to the discord bot
[botConfig]
#The token of the Discord Bot to use. This will be encrypted on first load. See https://sdlink.fdd-docs.com/installation/bot-creation/ to find this
botToken = ""
#Print the bot invite link to the console on startup
printInviteLink = true
#Use silent replies when Slash Commands are used
silentReplies = true
#How often the Bot Status will update on Discord (in Seconds). Set to 0 to disable
statusUpdateInterval = 30
#Define how the bot should handle channel topic updates on the chat channel
[botConfig.topicUpdates]
#Should the bot update the topic of your chat channel automatically every 6 Minutes
doTopicUpdates = true
#How often should the bot update the channel topic (IN MINUTES)? CANNOT BE LOWER THAN 6 MINUTES!
updateInterval = 6
#A topic for the Chat Relay channel. You can use %player%, %maxplayers%, %uptime% or just leave it empty.
channelTopic = "%players%/%maxplayers% people"
#Configure the in-game Discord Invite command
[botConfig.invite]
#If this is defined, it will enable the in-game Discord command
inviteLink = "https://discord.gg/UjCK5nVQTy"
#The message to show when someone uses /discord command. You can use %inviteurl%
inviteMessage = "Hey, check out our discord server here -> %inviteurl%"
#Control what the Discord Bot will display as it's status message
[[botConfig.botStatus]]
status = "Enjoying Minecraft with %players%/%maxplayers% players"
botStatusType = "CUSTOM_STATUS"
botStatusStreamingURL = "https://twitch.tv/twitch"
#Config relating to the discord channels and webhooks to use with the mod
[channelsAndWebhooks]
#A DIRECT link to an image to use as the avatar for server messages. Also used for embeds
serverAvatar = "https://cdn.discordapp.com/attachments/742896937774350339/1025079479074308257/icon.png"
#The name to display for Server messages when using Webhooks
serverName = "Epicness"
#Config relating to the discord channels to use with the mod
[channelsAndWebhooks.channels]
#REQUIRED! The ID of the channel to post in and relay messages from. This is still needed, even in webhook mode
chatChannelID = "1025005759177695252"
#If this ID is set, event messages will be posted in this channel instead of the chat channel
eventsChannelID = "0"
#If this ID is set, console messages sent after the bot started will be relayed here
consoleChannelID = "0"
#Config relating to the discord Webhooks to use with the mod
[channelsAndWebhooks.webhooks]
#Prefer Webhook Messages over Standard Bot Messages
enabled = true
#Change how the webhook name is displayed in discord. Available placeholders: %display_name%, %mc_name%
webhookNameFormat = "%display_name%"
#The URL of the channel webhook to use for Chat Messages. Will be encrypted on first run
chatWebhook = "<REDACTED>"
#The URL of the channel webhook to use for Server Messages. Will be encrypted on first run
eventsWebhook = ""
#The URL of the channel webhook to use for Console Messages. DOES NOT WORK FOR CONSOLE RELAY! Will be encrypted on first run
consoleWebhook = ""
#Configure which types of messages are delivered to Minecraft/Discord
[chat]
#Use linked account names in Discord/Minecraft messages, instead of the default ones
useLinkedNames = false
#Show the discord name, username and role of the user that sent a message in Minecraft when the message is hovered
showDiscordInfo = false
#Convert Discord to MC, and MC to Discord Formatting
formatting = true
#Should console messages be sent to the Console Channel
sendConsoleMessages = false
#Add your own Avatar service URL here. Use {uuid} to replace the player ID in the URL
customAvatarService = "https://crafatar.com/avatars/{uuid}"
#The type of image to use as the player icon in messages. Valid entries are: AVATAR, HEAD, BODY, COMBO, CUSTOM
playerAvatarType = "HEAD"
#Should messages sent with TellRaw be sent to discord as a chat? (Experimental)
relayTellRaw = true
#Should the entire command executed be relayed to discord, or only the name of the command
relayFullCommands = false
#Should messages from bots be relayed
ignoreBots = true
#Should SERVER STARTING messages be shown
serverStarting = false
#Should SERVER STARTED messages be shown
serverStarted = false
#Should SERVER STOPPING messages be shown
serverStopping = false
#Should SERVER STOPPED messages be shown
serverStopped = false
#Should the chat be relayed
playerMessages = true
#Should discord messages be relayed to Minecraft
discordMessages = true
#Should Player Join messages be posted
playerJoin = false
#Should Player Leave messages be posted
playerLeave = false
#Should Advancement messages be posted. Valid values are ALWAYS, NEVER or GAMERULE
advancementMessages = "ALWAYS"
#Should Death Announcements be posted. Valid values are ALWAYS, NEVER or GAMERULE
deathMessages = "ALWAYS"
#Should Messages from the /say command be posted
sendSayCommand = true
#Should commands be posted to discord
broadcastCommands = false
#Should whitelist changes be posted to discord
whitelistChanged = false
#Commands that should not be broadcast to discord
ignoredCommands = ["particle", "login", "execute"]
#Allow mentioning discord roles and users from Minecraft Chat
allowMentionsFromChat = false
#Change the format in which messages are displayed
[messageFormatting]
#Prefix to add to Minecraft when a message is relayed from Discord. Supports MC formatting. Use %user% for the Discord Username
mcPrefix = "<ยง9%user%ยงr> "
#Server Starting Message
serverStarting = "Server is starting..."
#Server Started Message
serverStarted = "Server has started. Enjoy!"
#Server Stopping Message
serverStopping = "Server is stopping..."
#Server Stopped Message
serverStopped = "Server has stopped..."
#Player Joined Message. Use %player% to display the player name
playerJoined = "%player% has joined the server!"
#Player Left Message. Use %player% to display the player name
playerLeft = "%player% has left the server!"
#Advancement Messages. Available variables: %player%, %title%, %description%
advancements = "%player% has made the advancement [%title%]: %description%"
#Chat Messages. THIS DOES NOT APPLY TO EMBED OR WEBHOOK MESSAGES. Available variables: %player%, %message%, %mcname%
chat = "%message%"
#Death Messages. Available variables: %player%, %message%
death = "%player% %message%"
#Message to be sent when a player is added to the whitelist
whitelistAdded = "%player% has been whitelisted!"
#Message to be sent when a player is removed from the whitelist
whitelistRemoved = "%player% has been removed from the whitelist!"
#Command Messages. Available variables: %player%, %command%
commands = "%player% executed command: %command%"
#Change in which channel messages appear
[messageDestinations]
#Control where CHAT messages are delivered
[messageDestinations.chat]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "CHAT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where START messages are delivered
[messageDestinations.start]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where STOP messages are delivered
[messageDestinations.stop]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where JOIN messages are delivered
[messageDestinations.join]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where LEAVE messages are delivered
[messageDestinations.leave]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where ADVANCEMENT messages are delivered
[messageDestinations.advancements]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where DEATH messages are delivered
[messageDestinations.death]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where COMMAND messages are delivered
[messageDestinations.commands]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where WHITELIST change messages are delivered
[messageDestinations.whitelist]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "CONSOLE"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Control where messages that match none of the above are delivered
[messageDestinations.custom]
#The Channel the message will be delivered to. Valid entries are CHAT, EVENT, CONSOLE, OVERRIDE
channel = "EVENT"
#Should the message be sent using EMBED style messages
useEmbed = false
#Embed Layout to use
embedLayout = "default"
#Override the destination with a custom channel/webhook url. Make sure to change `channel` above to OVERRIDE
override = ""
#Manage access to your server, similar to whitelisting
[accessControl]
#Enable Access Control
enabled = true
#Allow users to verify their accounts without access control. This setting is ignored if the above setting is set to true
optionalVerification = false
#Does the player need to be a member of your discord to join
requireDiscordMembership = true
#Can players verify multiple Minecraft Accounts
allowMultipleAccounts = true
#Change the discord user nickname to their Minecraft name when their accounts are linked
changeDiscordNickname = false
#Optional: The player requires any of these roles to be able to join your server
requiredRoles = []
#Optional: Players with these roles will never be allowed access to your server
deniedRoles = []
#Optional: Role name or ID to assign to verified player accounts
verifiedRole = []
#Should players with verified accounts, be banned from Minecraft if they get banned on discord
banPlayerOnDiscordBan = false
#Should members with verified accounts, be banned from discord when they are banned on Minecraft
banMemberOnMinecraftBan = false
#Configure messages shown to players when they don't meet verification requirements
[accessControl.verificationMessages]
#This message is shown to users when they use the in-game verification command
optionalVerificationMessage = "Your verification code is: {code}. Please DM our bot, or use the /verify command in our discord to verify your account"
#The message shown to players that are not verified
accountVerification = "This server requires account verification. Your verification code is: {code}. Please visit our discord server for instructions on how to verify your account."
#Message to show to players that are not a member of your discord
nonMember = "Sorry, you need to be a member of our discord server to join this server"
#Message to show when player doesn't have one of the required roles. Use {roles} to display the names of configured roles
requireRoles = "Sorry, but you require any of the following roles: {roles}"
#Message to show when player has a role from the deniedRoles list
roleDenied = "Sorry, but you are not allowed to access this server."
#Execute Minecraft commands in Discord
[minecraftCommands]
#Allow executing Minecraft commands from Discord
enabled = false
#Command Prefix. For example ?weather clear
prefix = "?"
#Should command replies be deleted automatically or not
keepReplies = false
#Should the original message that was sent to trigger the command be deleted automatically or not
keepOriginal = false
#You can leave this empty, or enter the channel ID's (surrounded by "") of channels where linked commands can be used
allowedChannels = []
#List of command permissions
permissions = []
#Configure message/username filtering for discord messages
[filtering]
#Enable the filter system
enabled = true
#List of entries to process
entries = []
#Ignore messages sent from certain threads. Enable debug logging to see what thread the message is from
ignoredThreads = []
#Run Minecraft commands when discord roles changes. Requires Access Control to be enabled
[triggerCommands]
#Should any of the below commands be executed when a role changes
enabled = false
#Commands to run when roles are added
roleAdded = []
#Commands to run when roles are removed
roleRemoved = []
server.properties
#Minecraft server properties
#Tue May 13 13:58:28 GMT+07:00 2025
allow-flight=true
allow-nether=true
broadcast-console-to-ops=true
broadcast-rcon-to-ops=true
difficulty=normal
enable-command-block=false
enable-jmx-monitoring=false
enable-query=false
enable-rcon=false
enable-status=true
enforce-secure-profile=false
enforce-whitelist=true
entity-broadcast-range-percentage=100
force-gamemode=false
function-permission-level=2
gamemode=survival
generate-structures=true
generator-settings={}
hardcore=false
hide-online-players=false
initial-disabled-packs=
initial-enabled-packs=vanilla,fabric
level-name=world
level-seed=11231222913561
level-type=minecraft\:normal
log-ips=true
max-chained-neighbor-updates=1000000
max-players=20
max-tick-time=-1
max-world-size=29999984
motd=Minecraft Server
network-compression-threshold=256
online-mode=true
op-permission-level=4
player-idle-timeout=0
prevent-proxy-connections=false
previews-chat=false
pvp=true
query.port=25575
rate-limit=0
rcon.password=
rcon.port=25575
require-resource-pack=false
resource-pack=
resource-pack-id=
resource-pack-prompt=
resource-pack-sha1=
server-ip=
server-port=25555
simulation-distance=10
spawn-animals=true
spawn-monsters=true
spawn-npcs=true
spawn-protection=0
sync-chunk-writes=true
text-filtering-config=
use-native-transport=true
view-distance=10
white-list=true
I tried disabling EasyAuth and tried using both online and offline accounts. The result is the same.
Only difference I see between my test setup and yours, is the enforce-whitelist setting being enabled. I did not test with that
I tested with enforce-whitelist disabled. The result is the same. Is there a way I can get some extra logs or debug info? debugging = true doesn't print anything extra for this use case. If you were to make a debug build with extra logs I could try running it.
Sure thing. I'd be more than happy to do that.
I see you are in our discord, is it fine with you if I communicate with you there? It's a bit easier to do it that way.
Will just be after work today, since I was called in on my day off ๐