From e3b660dcae3666250979a3771517d2bce0ee67a9 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 12 Jul 2018 13:49:20 +0100 Subject: [PATCH] Possible fix to memory leak --- Resources/plugin.yml | 2 +- pom.xml | 2 +- .../advancedportals/AdvancedPortalsCommand.java | 2 +- .../sekwah/advancedportals/listeners/Listeners.java | 13 ++++++++++--- .../advancedportals/portals/AdvancedPortal.java | 3 ++- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Resources/plugin.yml b/Resources/plugin.yml index 5001c4ab..a66e0bf7 100644 --- a/Resources/plugin.yml +++ b/Resources/plugin.yml @@ -1,6 +1,6 @@ main: com.sekwah.advancedportals.AdvancedPortalsPlugin name: AdvancedPortals -version: 0.0.40 +version: 0.0.41 author: sekwah41 description: An advanced portals plugin for bukkit. commands: diff --git a/pom.xml b/pom.xml index 0683303e..4fbea123 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - 0.0.40-snapshot + 0.0.41-snapshot UTF-8 1.7 diff --git a/src/com/sekwah/advancedportals/AdvancedPortalsCommand.java b/src/com/sekwah/advancedportals/AdvancedPortalsCommand.java index 0813e543..1095a42e 100644 --- a/src/com/sekwah/advancedportals/AdvancedPortalsCommand.java +++ b/src/com/sekwah/advancedportals/AdvancedPortalsCommand.java @@ -61,7 +61,7 @@ public class AdvancedPortalsCommand implements CommandExecutor, TabCompleter { for (AdvancedPortal portal: Portal.portals){ if (args[1].equalsIgnoreCase(portal.getName())){ - if (portal.inPortal.contains(player)) return true; + if (portal.inPortal.contains(player.getUniqueId())) return true; WarpEvent warpEvent = new WarpEvent(player, portal); plugin.getServer().getPluginManager().callEvent(warpEvent); diff --git a/src/com/sekwah/advancedportals/listeners/Listeners.java b/src/com/sekwah/advancedportals/listeners/Listeners.java index 6babbcb9..ebfd7679 100644 --- a/src/com/sekwah/advancedportals/listeners/Listeners.java +++ b/src/com/sekwah/advancedportals/listeners/Listeners.java @@ -23,6 +23,8 @@ import org.bukkit.event.player.*; import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; +import java.util.UUID; + public class Listeners implements Listener { // The needed config values will be stored so they are easier to access later // an example is in the interact event in this if statement if((!UseOnlyServerAxe || event.getItem().getItemMeta().getDisplayName().equals("\u00A7eP... @@ -95,6 +97,11 @@ public class Listeners implements Listener { @EventHandler public void onLeaveEvent(PlayerQuitEvent event) { Portal.cooldown.remove(event.getPlayer().getName()); + + UUID uuid = event.getPlayer().getUniqueId(); + for (AdvancedPortal portal : Portal.portals) { + portal.inPortal.remove(uuid); + } } @EventHandler(priority = EventPriority.HIGHEST) @@ -119,14 +126,14 @@ public class Listeners implements Listener { player.setMetadata("lavaWarped", new FixedMetadataValue(plugin, true)); Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new RemoveLavaData(player), 10); } - if (portal.inPortal.contains(player)) return; + if (portal.inPortal.contains(player.getUniqueId())) return; WarpEvent warpEvent = new WarpEvent(player, portal); plugin.getServer().getPluginManager().callEvent(warpEvent); if (!warpEvent.isCancelled()) Portal.activate(player, portal); - portal.inPortal.add(player); - } else portal.inPortal.remove(player); + portal.inPortal.add(player.getUniqueId()); + } else portal.inPortal.remove(player.getUniqueId()); } } diff --git a/src/com/sekwah/advancedportals/portals/AdvancedPortal.java b/src/com/sekwah/advancedportals/portals/AdvancedPortal.java index 92e1c04f..2898d860 100644 --- a/src/com/sekwah/advancedportals/portals/AdvancedPortal.java +++ b/src/com/sekwah/advancedportals/portals/AdvancedPortal.java @@ -6,6 +6,7 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import java.util.HashSet; +import java.util.UUID; public class AdvancedPortal { @@ -28,7 +29,7 @@ public class AdvancedPortal { private PortalArg[] portalArgs = null; - public HashSet inPortal = new HashSet(); + public HashSet inPortal = new HashSet(); // TODO think of relaying out the data input to a more logical format. public AdvancedPortal(String portalName, Material trigger, String destination, Location pos1, Location pos2, PortalArg... portalArgs) {