From 49e53fb01c1e34f2f6f2aee78b7fad26d5dfdce1 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 17 Sep 2021 15:59:01 +0200 Subject: [PATCH] Allow linking for unlinked players while the server is whitelisted --- .../com/alttd/proxydiscordlink/DiscordLink.java | 4 +++- .../alttd/proxydiscordlink/config/Config.java | 2 ++ .../minecraft/listeners/PlayerLeave.java | 2 ++ .../minecraft/listeners/WhitelistKick.java | 16 +++++++++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alttd/proxydiscordlink/DiscordLink.java b/src/main/java/com/alttd/proxydiscordlink/DiscordLink.java index d76cea3..789aa76 100644 --- a/src/main/java/com/alttd/proxydiscordlink/DiscordLink.java +++ b/src/main/java/com/alttd/proxydiscordlink/DiscordLink.java @@ -14,6 +14,7 @@ import com.alttd.proxydiscordlink.util.Cache; import com.google.inject.Inject; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; +import com.velocitypowered.api.plugin.Dependency; import com.velocitypowered.api.plugin.Plugin; import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.proxy.ProxyServer; @@ -25,7 +26,8 @@ import java.util.logging.Logger; @Plugin(id = "proxydiscordlink", name = "ProxyDiscordLink", version = "1.0.0", description = "A plugin that links Discord accounts with uuid's", - authors = {"Teri"} + authors = {"Teri"}, + dependencies = {@Dependency(id = "luckperms"),@Dependency(id = "shutdowninfo")} ) public class DiscordLink { diff --git a/src/main/java/com/alttd/proxydiscordlink/config/Config.java b/src/main/java/com/alttd/proxydiscordlink/config/Config.java index 09228f2..76acc65 100644 --- a/src/main/java/com/alttd/proxydiscordlink/config/Config.java +++ b/src/main/java/com/alttd/proxydiscordlink/config/Config.java @@ -193,6 +193,7 @@ public final class Config { public static String ACCOUNTS_NOT_LINKED = "Your Minecraft and Discord accounts aren't linked"; public static String UNLINKED_ACCOUNTS = "You have successfully unlinked your accounts."; public static String IS_LINKED = " is ."; + public static String WHITELIST_LINK_MESSAGE = "You aren't linked yet! If you would like to link your account join our discord and use the following command in the link channel: &link ."; public static String INVALID_PLAYER = " is not online or is not a valid player."; public static String NO_PERMISSION = "You do not have permission to do that."; public static String NO_CONSOLE = "This command can not be executed from console."; @@ -212,6 +213,7 @@ public final class Config { ACCOUNTS_NOT_LINKED = getString("messages.accounts-not-linked", ACCOUNTS_NOT_LINKED); UNLINKED_ACCOUNTS = getString("messages.unlinked-accounts", UNLINKED_ACCOUNTS); IS_LINKED = getString("messages.is-linked", IS_LINKED); + WHITELIST_LINK_MESSAGE = getString("messages.whitelist-link-message", WHITELIST_LINK_MESSAGE); INVALID_PLAYER = getString("messages.invalid-player", INVALID_PLAYER); NO_PERMISSION = getString("messages.no-permission", NO_PERMISSION); NO_CONSOLE = getString("messages.no-console", NO_CONSOLE); diff --git a/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/PlayerLeave.java b/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/PlayerLeave.java index 08b9182..c6707ff 100644 --- a/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/PlayerLeave.java +++ b/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/PlayerLeave.java @@ -9,6 +9,8 @@ public class PlayerLeave { @Subscribe(order = PostOrder.LATE) public void playerDisconnect(DisconnectEvent event) { + if (event.getLoginStatus().equals(DisconnectEvent.LoginStatus.CANCELLED_BY_PROXY)) + return; DiscordLink.getPlugin().getCache().removeCachedPlayer(event.getPlayer().getUniqueId()); } diff --git a/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/WhitelistKick.java b/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/WhitelistKick.java index 40b7189..390c741 100644 --- a/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/WhitelistKick.java +++ b/src/main/java/com/alttd/proxydiscordlink/minecraft/listeners/WhitelistKick.java @@ -1,13 +1,27 @@ package com.alttd.proxydiscordlink.minecraft.listeners; +import com.alttd.proxydiscordlink.DiscordLink; +import com.alttd.proxydiscordlink.config.Config; +import com.alttd.proxydiscordlink.util.Utilities; import com.alttd.shutdowninfo.events.WhitelistKickEvent; import com.velocitypowered.api.event.Subscribe; +import com.velocitypowered.api.proxy.Player; +import net.kyori.adventure.text.minimessage.Template; public class WhitelistKick { @Subscribe public void onWhitelistKick(WhitelistKickEvent event) { + Player player = event.getPlayer(); + if (DiscordLink.getPlugin().getDatabase().playerIsLinked(player)) + return; + String authCode = Utilities.getAuthKey(); + DiscordLink.getPlugin().getCache().removeCachedPlayer(player.getUniqueId()); + DiscordLink.getPlugin().getCache() + .cacheCode(player.getUniqueId(), authCode); + + event.appendTemplates(Template.of("code", authCode)); + event.appendMessage("\n\n" + Config.WHITELIST_LINK_MESSAGE); } - } \ No newline at end of file