From 8e99dddf79cb51ae82763bc62c4c37878a6eb257 Mon Sep 17 00:00:00 2001 From: PainOchoco Date: Fri, 23 Sep 2022 22:14:06 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Bug=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../townychat/listeners/DiscordHook.java | 3 +- .../townychat/listeners/TownyListener.java | 59 +++++++++---------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/src/main/java/net/laboulangerie/townychat/listeners/DiscordHook.java b/src/main/java/net/laboulangerie/townychat/listeners/DiscordHook.java index 2ed9483..e0efd24 100644 --- a/src/main/java/net/laboulangerie/townychat/listeners/DiscordHook.java +++ b/src/main/java/net/laboulangerie/townychat/listeners/DiscordHook.java @@ -56,12 +56,11 @@ public void onMessage(AsyncChatHookEvent event) { // From Discord to Minecraft @Override public void broadcastMessageToChannel(String channelId, Component message) { - System.out.println("aaaaa"); + // get the destination channel Channel destinationChannel = null; for (Channel channel : channelManager.getChannels().values()) { - System.out.println(channel.getId()); if (channel.getId().equals(channelId)) { destinationChannel = channel; break; diff --git a/src/main/java/net/laboulangerie/townychat/listeners/TownyListener.java b/src/main/java/net/laboulangerie/townychat/listeners/TownyListener.java index 534618f..5a24a45 100644 --- a/src/main/java/net/laboulangerie/townychat/listeners/TownyListener.java +++ b/src/main/java/net/laboulangerie/townychat/listeners/TownyListener.java @@ -11,10 +11,12 @@ import com.palmergames.bukkit.towny.object.Resident; import com.palmergames.bukkit.towny.object.Town; -import org.bukkit.entity.Player; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.jetbrains.annotations.Nullable; import net.laboulangerie.townychat.TownyChat; import net.laboulangerie.townychat.channels.Channel; @@ -34,13 +36,11 @@ public TownyListener() { @EventHandler(priority = EventPriority.MONITOR) public void onTownRemoveResident(TownRemoveResidentEvent event) { - Player player = event.getResident().getPlayer(); + ChatPlayer chatPlayer = residentToChatPlayer(event.getResident()); - if (!player.isOnline()) + if (chatPlayer == null) return; - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); - Channel currentChannel = chatPlayer.getCurrentChannel(); if (currentChannel.getType() == ChannelTypes.TOWN) { @@ -55,14 +55,11 @@ public void onTownLeaveNation(NationPreTownLeaveEvent event) { Town town = event.getTown(); for (Resident resident : town.getResidents()) { + ChatPlayer chatPlayer = residentToChatPlayer(resident); - Player player = resident.getPlayer(); - - if (!player.isOnline()) + if (chatPlayer == null) return; - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); - Channel currentChannel = chatPlayer.getCurrentChannel(); if (currentChannel.getType() == ChannelTypes.NATION) { @@ -78,14 +75,11 @@ public void onTownDelete(PreDeleteTownEvent event) { Town town = event.getTown(); for (Resident resident : town.getResidents()) { + ChatPlayer chatPlayer = residentToChatPlayer(resident); - Player player = resident.getPlayer(); - - if (!player.isOnline()) + if (chatPlayer == null) return; - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); - Channel currentChannel = chatPlayer.getCurrentChannel(); if (currentChannel.getType() == ChannelTypes.TOWN) { @@ -104,13 +98,11 @@ public void onNationDelete(PreDeleteNationEvent event) { for (Resident resident : nation.getResidents()) { - Player player = resident.getPlayer(); + ChatPlayer chatPlayer = residentToChatPlayer(resident); - if (!player.isOnline()) + if (chatPlayer == null) return; - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); - Channel currentChannel = chatPlayer.getCurrentChannel(); if (currentChannel.getType() == ChannelTypes.NATION) { @@ -130,14 +122,11 @@ public void onNewTown(NewTownEvent event) { channelManager.addChannel(town, newTownChannel); // The mayor is the only player in the town on town creation - Player player = town.getMayor().getPlayer(); + ChatPlayer chatPlayer = residentToChatPlayer(town.getMayor()); - // Should be online but just in case (admin commands) - if (!player.isOnline()) + if (chatPlayer == null) return; - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); - chatPlayer.addChannel(ChannelTypes.TOWN, newTownChannel); } @@ -149,25 +138,22 @@ public void onNewNation(NewNationEvent event) { channelManager.addChannel(nation, newNationChannel); for (Resident resident : nation.getResidents()) { - Player player = resident.getPlayer(); + ChatPlayer chatPlayer = residentToChatPlayer(resident); - if (!player.isOnline()) + if (chatPlayer == null) return; - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); - chatPlayer.addChannel(ChannelTypes.NATION, newNationChannel); } } @EventHandler(priority = EventPriority.MONITOR) public void onTownAddResident(TownAddResidentEvent event) { - Player player = event.getResident().getPlayer(); - if (!player.isOnline()) - return; + ChatPlayer chatPlayer = residentToChatPlayer(event.getResident()); - ChatPlayer chatPlayer = chatPlayerManager.getChatPlayer(player); + if (chatPlayer == null) + return; Town town = event.getTown(); Channel townChannel = channelManager.getChannel(town); @@ -181,4 +167,13 @@ public void onTownAddResident(TownAddResidentEvent event) { } } + + private @Nullable ChatPlayer residentToChatPlayer(Resident resident) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(resident.getUUID()); + + if (!offlinePlayer.isOnline()) + return null; + + return chatPlayerManager.getChatPlayer(offlinePlayer.getPlayer()); + } }