From 41abffdb080db8501dcd2f054f5cfe9dc0c53618 Mon Sep 17 00:00:00 2001 From: games647 Date: Thu, 20 Oct 2016 14:05:55 +0200 Subject: [PATCH] Fix Spigot console command invocation sends result to ingame players --- CHANGELOG.md | 1 + .../fastlogin/bukkit/FastLoginBukkit.java | 7 ++-- .../listener/PluginMessageListener.java | 26 +++++++++------ .../bungee/tasks/AsyncToggleMessage.java | 33 +++++++++++++------ 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff49cbe7..d434f3a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * Finally set a value to the API column * No duplicate session login * Fix timestamp parsing in newer versions of SQLite +* Fix Spigot console command invocation sends result to ingame players ######1.9 diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java index 6d9dab61..de938b61 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java @@ -132,7 +132,7 @@ public class FastLoginBukkit extends JavaPlugin implements PlatformPlugin core = plugin.getCore(); + ByteArrayDataInput dataInput = ByteStreams.newDataInput(data); String subchannel = dataInput.readUTF(); - if ("ON".equals(subchannel)) { + if ("SUCCESS".equals(subchannel)) { + onSuccessMessage(forPlayer); + } else if ("ON".equals(subchannel)) { String playerName = dataInput.readUTF(); + boolean isPlayerSender = dataInput.readBoolean(); if (playerName.equals(forPlayer.getName()) && plugin.getConfig().getBoolean("premium-warning") - && !plugin.getCore().getPendingConfirms().contains(forPlayer.getUniqueId())) { - String message = plugin.getCore().getMessage("premium-warning"); + && !core.getPendingConfirms().contains(forPlayer.getUniqueId())) { + String message = core.getMessage("premium-warning"); forPlayer.sendMessage(TextComponent.fromLegacyText(message)); - plugin.getCore().getPendingConfirms().add(forPlayer.getUniqueId()); + core.getPendingConfirms().add(forPlayer.getUniqueId()); return; } - plugin.getCore().getPendingConfirms().remove(forPlayer.getUniqueId()); - AsyncToggleMessage task = new AsyncToggleMessage(plugin.getCore(), forPlayer, playerName, true); + core.getPendingConfirms().remove(forPlayer.getUniqueId()); + AsyncToggleMessage task = new AsyncToggleMessage(core, forPlayer, playerName, true, isPlayerSender); ProxyServer.getInstance().getScheduler().runAsync(plugin, task); } else if ("OFF".equals(subchannel)) { String playerName = dataInput.readUTF(); + boolean isPlayerSender = dataInput.readBoolean(); - AsyncToggleMessage task = new AsyncToggleMessage(plugin.getCore(), forPlayer, playerName, false); + AsyncToggleMessage task = new AsyncToggleMessage(core, forPlayer, playerName, false, isPlayerSender); ProxyServer.getInstance().getScheduler().runAsync(plugin, task); - } else if ("SUCCESS".equals(subchannel)) { - onSuccessMessage(forPlayer); - } + } } private void onSuccessMessage(ProxiedPlayer forPlayer) { diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/AsyncToggleMessage.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/AsyncToggleMessage.java index 27b46dc1..55b3435b 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/AsyncToggleMessage.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/AsyncToggleMessage.java @@ -3,24 +3,27 @@ package com.github.games647.fastlogin.bungee.tasks; import com.github.games647.fastlogin.bungee.FastLoginBungee; import com.github.games647.fastlogin.core.PlayerProfile; import com.github.games647.fastlogin.core.shared.FastLoginCore; -import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; public class AsyncToggleMessage implements Runnable { private final FastLoginCore core; - private final ProxiedPlayer fromPlayer; + private final ProxiedPlayer sender; private final String targetPlayer; private final boolean toPremium; + private final boolean isPlayerSender; - public AsyncToggleMessage(FastLoginCore core - , ProxiedPlayer fromPlayer, String targetPlayer, boolean toPremium) { + public AsyncToggleMessage(FastLoginCore core, + ProxiedPlayer sender, String playerName, boolean toPremium, boolean playerSender) { this.core = core; - this.fromPlayer = fromPlayer; - this.targetPlayer = targetPlayer; + this.sender = sender; + this.targetPlayer = playerName; this.toPremium = toPremium; + this.isPlayerSender = playerSender; } @Override @@ -36,25 +39,35 @@ public class AsyncToggleMessage implements Runnable { PlayerProfile playerProfile = core.getStorage().loadProfile(targetPlayer); //existing player is already cracked if (playerProfile.getUserId() != -1 && !playerProfile.isPremium()) { - fromPlayer.sendMessage(TextComponent.fromLegacyText(core.getMessage("not-premium"))); + sendMessage("not-premium"); return; } playerProfile.setPremium(false); playerProfile.setUuid(null); core.getStorage().save(playerProfile); - fromPlayer.sendMessage(TextComponent.fromLegacyText(core.getMessage("remove-premium"))); + sendMessage("remove-premium"); } private void activatePremium() { PlayerProfile playerProfile = core.getStorage().loadProfile(targetPlayer); if (playerProfile.isPremium()) { - fromPlayer.sendMessage(TextComponent.fromLegacyText(core.getMessage("already-exists"))); + sendMessage("already-exists"); return; } playerProfile.setPremium(true); core.getStorage().save(playerProfile); - fromPlayer.sendMessage(TextComponent.fromLegacyText(core.getMessage("add-premium"))); + sendMessage("add-premium"); + } + + private void sendMessage(String localeId) { + String message = core.getMessage(localeId); + if (isPlayerSender) { + sender.sendMessage(TextComponent.fromLegacyText(message)); + } else { + CommandSender console = ProxyServer.getInstance().getConsole(); + console.sendMessage(TextComponent.fromLegacyText(message)); + } } }