DiscordIO
0.9.0Whitelist with discord, ban with discord. Get notified when the server starts/stops. Get minecraft messages in discord. Fabric/Velocity
- Tested MC versions
- 1.21, 26.1, 26.2, 26.3
| This project is still under development. There may still be bugs/crashes! (please report them on github.com) If you are upgrading to a newer version, you will need to upgrade your language.yml and config.yml yourself (data.yml is done automatically). |
Features
- Works on both Velocity proxies and Fabric servers
- Whitelisting feature to people make whitelist requests via discord
- (Un)Banning feature to punish those that are annoying (kick them multiple times, ban them permanently/for a certain duration)
- Highly configurable (see config.yaml and language.yml for all the things you can mess with)
- Maintenance mode, disallows everyone from joining the server except those specified in the config + disables all event messaging
- Custom discord messages on server start and stop
- Custom discord messages when players connect and disconnect
- Custom discord message when players message in minecraft
- Custom minecraft messages when user messages on discord
Configs:
config.yml version 0.8.0
See github.com for an up to date version
# !This file must be setup before using this plugin!
# Once a feature is enabled, disabling it again may result in undefined behavior
# If you really want to disable a feature, but this wrecks your whitelist/install, you should delete the data.yml file
# See https://modrinth.com/plugin/discordio on how to get a token
botToken: "Insert your token here, see the https://modrinth.com/plugin/discordio on how to get a token"
# Guild ID is needed for adding commands
guildId: "Insert your guild id here (the ID of your discord server)"
# Discord messages for in game events
events:
# On server start message
onStart:
enabled: false
channel: "id..."
# On server stop message
onStop:
enabled: false
channel: "id..."
# On player join message
onJoin:
enabled: false
channel: "id..."
# On player leave message
onLeave:
enabled: false
channel: "id..."
# On discord/minecraft message forward it
onMessage:
enabled: false
minecraftToDiscord: true
discordToMinecraft: true
# Uncomment the one that applies to your server type:
# For fabric:
# channels:
# fabric: "id..."
# For velocity
# (The server names are the ones specified in the velocity.toml file you configured)
# Do not share discord channels if you have discordToMinecraft enabled
# channels:
# server1: "id..."
# server2: "id..."
# If enabled, will use the UUID registered at mojang for verification
# !The server must be in online mode to use this!
# You currently cannot change this setting after you have someone whitelisted, so choose carefully
# If you really want to change this, delete the data.yml file (this will remove all whitelisted players, they will need to be whitelisted again)
useUUID: true
# If enabled only one minecraft account is allowed per discord user
# You currently cannot change this setting after you have someone whitelisted, so choose carefully
# If you really want to change this, delete the data.yml file (this will remove all whitelisted players, they will need to be whitelisted again)
connectAccounts: true
# If set to false, this plugin will delete all the interactable messages on shutdown, to then resend them on startup
# If set to true, this plugin will disable all the interactable messages on shutdown, to then enable them again on startup (so no annoying ping when the server starts up)
disableOnShutdown: true
# Combine the whitelist, ban and unban request message in one single request message
squashedRequest:
enabled: false
channel: "id..."
# Whitelisting via discord
whitelist:
enabled: false
# Should this plugin give someone that is whitelisted a special role
giveRoleOnWhitelist: false
# The role to give a player when he is whitelisted (only if giveRoleOnWhitelist=true)
# Enable developer options to get the role ID easily from the discord server settings:
whitelistedRoleID: ""
onAccept:
enabled: true
channel: "id..."
onDeny:
enabled: true
channel: "id..."
request:
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
voting:
# If disabled, a request will imply immediate whitelist
enabled: true
channel: "id.."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
# Banning via discord
banning:
enabled: false
# Should this plugin give someone that is banned a special role
giveRoleOnBan: false
# The role to give a player when he is banned (only if giveRoleOnBan=true)
# Enable developer options to get the role ID easily from the discord server settings:
bannedRoleID: ""
onAccept:
enabled: true
channel: "id..."
onDeny:
enabled: true
channel: "id..."
request:
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
# Choose one of the following ways a user can choose who he wants to ban:
# - "discord" select the discord username they want banned (cannot be used if connectAccounts=false)
# - "minecraft" select the minecraft username they want banned
identifier: "discord"
punishment:
# If disabled, a request will proceed as a perm ban request to reason picking
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
punishments:
# If you do not keep the none punishment, the admins cannot deny a ban request
"None":
type: None
"Permanent ban":
type: PermBan
"5m ban":
type: Ban
duration: 300
"1h ban":
type: Ban
duration: 3600
"2h ban":
type: Ban
duration: 7200
"1d ban":
type: Ban
duration: 86400
"kick 1x":
type: Kick
duration: 1
"kick 3x":
type: Kick
duration: 3
"No unban 2h":
type: NoUnban
duration: 7200
reason:
# If disabled, a request will keep the reason of the request
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
# Unbanning via discord
unban:
enabled: false
onAccept:
enabled: true
channel: "id..."
onDeny:
enabled: true
channel: "id..."
request:
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
voting:
# If disabled, a request will imply immediate unban
enabled: true
channel: "id.."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
maintenance:
# Disables events and rejects everyone not on the crew list
enabled: false
# Enable maintenance mode from the config:
inMaintenance: false
# Players allowed to join during maintenance
# Use UUID's if useUUID=true, else use player names
# This does not override the whitelist and banning features, you still need to be whitelisted to enter
# A UUID should be without dashes so: 123456789abcdefghijklmni12345678
crew: ["player1", "player2"]
# Command to enable maintenance mode via discord
command:
enabled: false
checkChannel: false
allowedChannels: ["id..."]
checkRoles: false
allowedRoles: []
# On start messages
onStart:
enabled: false
channel: "id..."
# On end message
onStop:
enabled: false
channel: "id..."
# A discord command to see if someone is whitelisted or not (and if the person has punishments)
infoCommand:
enabled: false
checkChannel: false
allowedChannels: ["id..."]
checkRoles: false
allowedRoles: []
language.yml version 0.8.0
See github.com for an up to date version
embeds:
#
# *************************************************************************
# Events *
# *************************************************************************
#
events:
embeds:
onStart:
title: "-------------[Online]-------------"
description: ":green_circle: **Proxy** is online!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
onStop:
title: "-------------[Offline]-------------"
description: ":no_entry: **Proxy** is offline!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
onJoin:
title: "-------------[Connected]-------------"
description: "**${PLAYER_NAME}** joined the server!"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/240.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
onLeave:
title: "-------------[Disconnected]-------------"
description: "**${PLAYER_NAME}** left the server!"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/240.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
onMessage:
description: "[${PLAYER_NAME}] ${MESSAGE}"
#
# *************************************************************************
# Squashed request *
# *************************************************************************
#
squashedRequest:
embeds:
request:
title: "Do you want to request something?"
description: "Click the buttons below to get **whitelisted**, request a **ban** or request an **unban**"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
whitelist:
label: "Request whitelist"
emoji: "U+2705"
ban:
label: "Request ban"
emoji: "U+2705"
unban:
label: "Request unban"
emoji: "U+2705"
color: "blue"
#
# *************************************************************************
# Whitelisting *
# *************************************************************************
#
whitelist:
embeds:
alreadyWhitelisted:
title: "Sorry, you already made a whitelist request."
description: "You are either already whitelisted, or you made a request previously that is being approved. Please wait patiently"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
request:
title: "Request access"
description: "Do you also want to be whitelisted?\nClick the button below to request access to the minecraft server!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
button:
label: "Request whitelist"
emoji: "U+2705"
color: "BLUE"
notAllowed:
title: "You are not allowed to request to be whitelisted (you do not have the correct discord role)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestConfirm:
title: "Is this you?"
description: "Check if the skin below is from your account **${PLAYER_NAME}**"
imageUrl: "https://minotar.net/body/${PLAYER_NAME}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
confirm:
label: "This is me"
emoji: "U+2705"
cancel:
label: "Cancel"
emoji: "U+26D4"
color: "BLUE"
notFound:
title: "Your player was not found"
description: "Your player was not found at the Mojang servers"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestCanceled:
title: "Request was canceled"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestConfirmed:
title: "Your request will be reviewed by the admins"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
voting:
title: "Whitelist request"
description: "The discord user <@${DISCORD_UUID}> would like to have his minecraft account **${PLAYER_NAME}** to be whitelisted.\n**${ACCEPT_VOTES}** votes are in favor, **${DENY_VOTES}** votes are against. (${MIN_ACCEPT_VOTES} votes are needed to accept and ${MIN_DENY_VOTES} votes are needed to deny the request)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Accept"
emoji: "U+2705"
deny:
label: "Deny"
emoji: "U+26D4"
color: "GREEN"
votingDenied:
title: "Whitelist request - Denied"
description: "The request from the user <@${DISCORD_UUID}> to have **${PLAYER_NAME}** be whitelisted was denied"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
votingAccepted:
title: "Whitelist request - Accepted"
description: "The request from the user <@${DISCORD_UUID}> to have **${PLAYER_NAME}** be whitelisted was accepted"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
votingNotAllowed:
title: "You are not allowed to vote (you do not have the correct discord role)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicDenied:
title: "Whitelisted denied"
description: "**${PLAYER_NAME}** did not get whitelisted\n(Requested by <@${DISCORD_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicAccepted:
title: "Whitelist accepted"
description: "**${PLAYER_NAME}** got whitelisted\n(Requested by <@${DISCORD_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
#
# *************************************************************************
# Banning *
# *************************************************************************
#
banning:
embeds:
request:
title: "Request punishment"
description: "Is someone being annoying?\nClick the button below to request a ban"
actions:
button:
label: "Request ban"
emoji: "U+2705"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
alreadyRequested:
title: "Sorry, you already made a ban request."
description: "You made a ban request previously that is being approved. Please wait patiently"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
playerNotFound:
title: "That discord user is not registered"
description: "The discord user does not have a minecraft account linked. The request is ignored"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
requestNotAllowed:
title: "You are not allowed to request a ban (you do not have the correct discord role)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestConfirm:
title: "Do you want to ban this user?"
description: "1. Do you want to request a ban of **${PLAYER_NAME}** with the following reason: '*${REASON}*'.\n2. Check if the skin below is from the account **${PLAYER_NAME}**"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
actions:
confirm:
label: "This is him"
emoji: "U+2705"
cancel:
label: "Cancel"
emoji: "U+26D4"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestNotFound:
title: "The user was not found"
description: "There was no account found associated with the discord user"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestCanceled:
title: "Request was canceled"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestConfirmed:
title: "Your request will be reviewed by the admins"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
punishmentPicker:
title: "Ban request - Punishment"
description: "The discord user <@${REQUESTER_UUID}> would like to have the minecraft account **${PLAYER_NAME}** to be banned because:\n\"${REASON}\""
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
punishment:
label: "Punishment"
color: "ORANGE"
punishmentVoting:
title: "Ban request - Punishment"
description: "The discord user <@${REQUESTER_UUID}> would like to have the minecraft account **${PLAYER_NAME}** to be banned because:\n\"${REASON}\".\n <@${ADMIN_UUID}> suggests **${PUNISHMENT}** \n**${ACCEPT_VOTES}** votes are in favor, **${DENY_VOTES}** votes are against. (${MIN_ACCEPT_VOTES} votes are needed to accept and ${MIN_DENY_VOTES} votes are needed to deny the request)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Accept"
emoji: "U+2705"
deny:
label: "Deny"
emoji: "U+26D4"
color: "ORANGE"
punishmentDecided:
title: "Ban request - Punishment"
description: "**${PLAYER_NAME}** will get the following punishment: **${PUNISHMENT}**"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
punishmentVotingNotAllowed:
title: "You are not allowed to vote (you do not have the correct discord role)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
reasonPicker:
title: "Ban Request - Reason"
description: "The discord user <@${REQUESTER_UUID}> would like to have the minecraft account **${PLAYER_NAME}** to receive a ${PUNISHMENT} because:\n\"${ORIGINAL_REASON}\". This reason was denied, what should the reason be?"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
change:
label: "Change reason"
color: "ORANGE"
reasonFirstVote:
title: "Ban request - Reason"
description: "The discord user <@${REQUESTER_UUID}> would like to have the minecraft account **${PLAYER_NAME}** to receive a ${PUNISHMENT} because:\n\"${REASON}\".\n Is this a good **reason**? \n**${ACCEPT_VOTES}** votes are in favor, **${DENY_VOTES}** votes are against. (${MIN_ACCEPT_VOTES} votes are needed to accept and ${MIN_DENY_VOTES} votes are needed to deny the request)"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURREN
Similar projects
Plugin →Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Plasmo Voice
A proximity voice chat mod with audio positioning and lots of features
4.1MSueta
Customizable Player Models
Customize your minecraft avatar!
3.2MSueta
PatPat [Mod & Plugin]
Allows you to pat ANY loved and unloved living mobs in Minecraft!
2.8MSueta