diff --git a/core/src/main/java/zone/themcgamer/core/account/AccountManager.java b/core/src/main/java/zone/themcgamer/core/account/AccountManager.java index fb5a2ef..caad4ce 100644 --- a/core/src/main/java/zone/themcgamer/core/account/AccountManager.java +++ b/core/src/main/java/zone/themcgamer/core/account/AccountManager.java @@ -305,7 +305,7 @@ public class AccountManager extends Module { if (reference.get() != null) consumer.accept(reference.get()); else { - CompletableFuture.runAsync(() -> { + Runnable fetchAccount = () -> { try { reference.set(repository.login(uuid, name, "")); if (reference.get() != null) @@ -314,7 +314,15 @@ public class AccountManager extends Module { ex.printStackTrace(); } consumer.accept(reference.get()); - }); + }; + // If the method is being executed on the primary thread, we wanna execute it asynchronously instead + if (Bukkit.isPrimaryThread()) + CompletableFuture.runAsync(fetchAccount); + else { + // If the method is being executed off of the primary thread, we wanna execute it normally to stay + // on that thread + fetchAccount.run(); + } } } diff --git a/core/src/main/java/zone/themcgamer/core/account/AccountRepository.java b/core/src/main/java/zone/themcgamer/core/account/AccountRepository.java index 5e46ef2..6fc4ad9 100644 --- a/core/src/main/java/zone/themcgamer/core/account/AccountRepository.java +++ b/core/src/main/java/zone/themcgamer/core/account/AccountRepository.java @@ -1,6 +1,7 @@ package zone.themcgamer.core.account; import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; import org.bukkit.Bukkit; import zone.themcgamer.common.HashUtils; import zone.themcgamer.core.account.event.AccountPreLoadEvent; @@ -27,6 +28,7 @@ import java.util.stream.Collectors; /** * @author Braydon */ +@Slf4j(topic = "Account Repository") public class AccountRepository extends MySQLRepository { private static final String SELECT_ACCOUNT = "SELECT * FROM `accounts` WHERE `uuid` = ? LIMIT 1"; private static final String INSERT_ACCOUNT = "INSERT INTO `accounts` " + @@ -49,6 +51,7 @@ public class AccountRepository extends MySQLRepository { if (uuid == null || (name == null || name.trim().isEmpty())) return null; boolean offlineLookup = ipAddress.trim().isEmpty(); + log.info("Logging in client " + name + " (" + uuid.toString() + ")" + (offlineLookup ? " - OFFLINE LOOKUP" : "")); String encryptedIpAddress = offlineLookup ? "" : HashUtils.encryptSha256(ipAddress); int accountId = -1; boolean loadedFromCache = false; @@ -62,6 +65,7 @@ public class AccountRepository extends MySQLRepository { } accountId = cache.getAccountId(); loadedFromCache = true; + log.info("Account id for " + name + " loaded from cache: " + accountId); } } Account account = null; @@ -77,8 +81,11 @@ public class AccountRepository extends MySQLRepository { String query = ""; if (resultSet.next()) { // If the account exists in the database, we wanna load its values - if (accountId <= 0) // If the account id has not been loaded from the cache, we wanna fetch it from the database + // If the account id has not been loaded from the cache, we wanna fetch it from the database + if (accountId <= 0) { accountId = resultSet.getInt(1); + log.info("Account id for " + name + " loaded from MySQL: " + accountId); + } account = constructAccount(accountId, uuid, name, resultSet, ipAddress, encryptedIpAddress, offlineLookup ? -1L : now); // If the account exists in the database and we're not doing an offline account lookup, we wanna update @@ -106,11 +113,14 @@ public class AccountRepository extends MySQLRepository { } }); accountId = idArray[0]; + log.info("Successfully inserted a new account for " + name + ", their account id is " + accountId); } Bukkit.getPluginManager().callEvent(new AccountPreLoadEvent(uuid, name, ipAddress)); int finalAccountId = accountId; query+= AccountManager.MINI_ACCOUNTS.parallelStream().map(miniAccount -> miniAccount.getQuery(finalAccountId, uuid, name, ipAddress, encryptedIpAddress)).collect(Collectors.joining()); if (!query.trim().isEmpty()) { + log.info("Executing mini account tasks (" + AccountManager.MINI_ACCOUNTS.size() + ") for " + name); + statement.execute(query); statement.getUpdateCount(); statement.getMoreResults(); @@ -145,8 +155,10 @@ public class AccountRepository extends MySQLRepository { now ); } - if (!loadedFromCache && cacheRepository != null) + if (!loadedFromCache && cacheRepository != null) { cacheRepository.post(new PlayerCache(uuid, name, accountId)); + log.info("Stored new cache object for " + name + " in Redis"); + } return account; } diff --git a/core/src/main/java/zone/themcgamer/core/chat/ChatManager.java b/core/src/main/java/zone/themcgamer/core/chat/ChatManager.java index 63d9479..ada042b 100644 --- a/core/src/main/java/zone/themcgamer/core/chat/ChatManager.java +++ b/core/src/main/java/zone/themcgamer/core/chat/ChatManager.java @@ -1,5 +1,6 @@ package zone.themcgamer.core.chat; +import lombok.Getter; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ComponentBuilder; @@ -16,6 +17,7 @@ import zone.themcgamer.core.badSportSystem.BadSportSystem; import zone.themcgamer.core.badSportSystem.Punishment; import zone.themcgamer.core.badSportSystem.PunishmentCategory; import zone.themcgamer.core.chat.command.ClearChatCommand; +import zone.themcgamer.core.chat.command.EmotesCommand; import zone.themcgamer.core.chat.command.message.MessageCommand; import zone.themcgamer.core.chat.command.message.ReplyCommand; import zone.themcgamer.core.chat.component.IChatComponent; @@ -35,12 +37,22 @@ import java.util.concurrent.TimeUnit; public class ChatManager extends Module { private final BadSportSystem badSportSystem; private final IChatComponent[] chatComponents; - private final Map emotes = new HashMap<>(); + @Getter private final Map emotes = new HashMap<>(); { - emotes.put("shrug", "¯\\_(ツ)_/¯"); - emotes.put("tableflip", "(╯°□°)╯︵ ┻━┻"); - emotes.put("unflip", "┬─┬ ノ( ゜-゜ノ)"); + emotes.put("¯\\_(ツ)_/¯", ":shrug:"); + emotes.put("⊂(´・◡・⊂ )∘˚˳°", ":happyghost:"); + emotes.put("ヽ༼ຈل͜ຈ༽ノ", ":donger:"); + emotes.put("ಠ_ಠ", ":disapproval:"); + emotes.put("(≖_≖)", ":squint:"); + emotes.put("(౮⦦ʖ౮)", ":lenny:"); + emotes.put("┬─┬ ノ( ゜-゜ノ)", ":unflip:"); + emotes.put("(☞゚ヮ゚)☞", ":same:"); + emotes.put("ლ(ಥ Д ಥ )ლ", ":why:"); + emotes.put("(╯°□°)╯︵ ┻━┻", ":tableflip:"); + emotes.put("⊂(•̀_•́⊂ )∘˚˳°", ":angryghost:"); + emotes.put("( ˘ ³˘)♥", ":kiss:"); + emotes.put("༼ つ ◕_◕ ༽つ", ":ameno:"); } public ChatManager(JavaPlugin plugin, AccountManager accountManager, BadSportSystem badSportSystem, IChatComponent[] chatComponents) { @@ -50,15 +62,7 @@ public class ChatManager extends Module { registerCommand(new ClearChatCommand()); registerCommand(new MessageCommand(accountManager, badSportSystem)); registerCommand(new ReplyCommand(accountManager, badSportSystem)); - - /* TODO - /chatmanager blackwords add - /chatmanager blackwords remove - /chatmanager emote add - /chatmanager emote remove - /chatmanager urls add - /chatmanager remove - */ + registerCommand(new EmotesCommand(this)); } @EventHandler @@ -91,13 +95,13 @@ public class ChatManager extends Module { return; } if (!CooldownHandler.canUse(player, "Chat", TimeUnit.SECONDS.toMillis(3L), false) - && !optionalAccount.get().hasRank(Rank.GAMER)) { - player.sendMessage(Style.error("Chat", "You are chatting too quickly! To bypass this cooldown," + - " please consider purchasing a donator rank over at §bstore.mcgamerzone.net§7.")); - return; + && !optionalAccount.get().hasRank(Rank.GAMER) && !optionalAccount.get().hasRank(Rank.HELPER)) { + player.sendMessage(Style.error("Chat", "You are chatting too quickly! To bypass this cooldown," + + " please consider purchasing a donator rank over at §bstore.mcgamerzone.net§7.")); + return; } for (Map.Entry emote : emotes.entrySet()) - message = message.replace(":" + emote.getKey() + ":", emote.getValue()); + message = message.replace(emote.getValue(), emote.getKey()); List components = new ArrayList<>(); for (IChatComponent chatComponent : chatComponents) { BaseComponent component = chatComponent.getComponent(player); diff --git a/core/src/main/java/zone/themcgamer/core/chat/command/ClearChatCommand.java b/core/src/main/java/zone/themcgamer/core/chat/command/ClearChatCommand.java index c6fda49..11f90f5 100644 --- a/core/src/main/java/zone/themcgamer/core/chat/command/ClearChatCommand.java +++ b/core/src/main/java/zone/themcgamer/core/chat/command/ClearChatCommand.java @@ -11,9 +11,10 @@ public class ClearChatCommand { @Command(name = "clearchat", aliases = { "cc" }, description = "Clear the chat", ranks = { Rank.HELPER }, playersOnly = true) public void onCommand(CommandProvider command) { for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { - for (int i = 0; i < 150; i++) + for (int i = 0; i < 150; i++) { onlinePlayer.sendMessage(" "); - onlinePlayer.sendMessage(Style.main("Chat", "The chat has been cleared by &6" + command.getPlayer().getName())); + } } + Bukkit.broadcastMessage(Style.main("Chat", "The chat has been cleared by &6" + command.getPlayer().getName())); } } diff --git a/core/src/main/java/zone/themcgamer/core/chat/command/EmotesCommand.java b/core/src/main/java/zone/themcgamer/core/chat/command/EmotesCommand.java new file mode 100644 index 0000000..0809ae8 --- /dev/null +++ b/core/src/main/java/zone/themcgamer/core/chat/command/EmotesCommand.java @@ -0,0 +1,26 @@ +package zone.themcgamer.core.chat.command; + +import lombok.AllArgsConstructor; +import org.bukkit.entity.Player; +import zone.themcgamer.core.chat.ChatManager; +import zone.themcgamer.core.command.Command; +import zone.themcgamer.core.command.CommandProvider; +import zone.themcgamer.core.common.Style; + +import java.util.Map; + +/** + * @author Braydon + */ +@AllArgsConstructor +public class EmotesCommand { + private final ChatManager chatManager; + + @Command(name = "emotes", aliases = { "emote" }, description = "View chat emotes", playersOnly = true) + public void onCommand(CommandProvider command) { + Player player = command.getPlayer(); + player.sendMessage(Style.main("Chat", "Chat Emotes:")); + for (Map.Entry entry : chatManager.getEmotes().entrySet()) + player.sendMessage(" §6" + entry.getValue() + " §7-> §b" + entry.getKey()); + } +} \ No newline at end of file diff --git a/core/src/main/java/zone/themcgamer/core/game/kit/KitManager.java b/core/src/main/java/zone/themcgamer/core/game/kit/KitManager.java index 4d021d8..a096d0a 100644 --- a/core/src/main/java/zone/themcgamer/core/game/kit/KitManager.java +++ b/core/src/main/java/zone/themcgamer/core/game/kit/KitManager.java @@ -36,12 +36,15 @@ public class KitManager extends MiniAccount { if (client.isEmpty()) return; while (resultSet.next()) { - MGZGame game = EnumUtils.fromString(MGZGame.class, resultSet.getString("game")); + int gameColumnIndex = resultSet.findColumn("game"); + if (gameColumnIndex == -1) + continue; + MGZGame game = EnumUtils.fromString(MGZGame.class, resultSet.getString(gameColumnIndex)); if (game == null) - return; + continue; KitDisplay kitDisplay = game.getKitDisplay(resultSet.getString("kit")); if (kitDisplay == null) - return; + continue; client.get().getSelectedKit().put(game, kitDisplay); } } diff --git a/core/src/main/java/zone/themcgamer/core/server/command/ServerCommand.java b/core/src/main/java/zone/themcgamer/core/server/command/ServerCommand.java index 9bd8254..4aa6315 100644 --- a/core/src/main/java/zone/themcgamer/core/server/command/ServerCommand.java +++ b/core/src/main/java/zone/themcgamer/core/server/command/ServerCommand.java @@ -24,7 +24,7 @@ public class ServerCommand { private final ServerTraveler traveler; private final MinecraftServerRepository minecraftServerRepository; - @Command(name = "server", aliases = { "join", "play" }, description = "Join a server", playersOnly = true) + @Command(name = "server", aliases = { "sv", "join", "play" }, description = "Join a server", playersOnly = true) public void onCommand(CommandProvider command) { Player player = command.getPlayer(); String[] args = command.getArgs(); diff --git a/hub/src/main/java/zone/themcgamer/hub/Hub.java b/hub/src/main/java/zone/themcgamer/hub/Hub.java index 73e14e6..2f42593 100644 --- a/hub/src/main/java/zone/themcgamer/hub/Hub.java +++ b/hub/src/main/java/zone/themcgamer/hub/Hub.java @@ -11,7 +11,6 @@ import zone.themcgamer.core.chat.component.impl.BasicRankComponent; import zone.themcgamer.core.common.MathUtils; import zone.themcgamer.core.common.scoreboard.ScoreboardHandler; import zone.themcgamer.core.deliveryMan.DeliveryManManager; -import zone.themcgamer.core.game.kit.KitManager; import zone.themcgamer.core.kingdom.KingdomManager; import zone.themcgamer.core.plugin.MGZPlugin; import zone.themcgamer.core.plugin.Startup; @@ -44,7 +43,7 @@ public class Hub extends MGZPlugin { spawn.setYaw(MathUtils.getFacingYaw(spawn, world.getDataPoints("LOOK_AT"))); else spawn = new Location(world.getWorld(), 0, 150, 0); - AccountManager.addMiniAccount(new KitManager(this)); + //AccountManager.addMiniAccount(new KitManager(this)); new PlayerListener(this); new WorldListener(this);