Skip to content
This repository has been archived by the owner on Nov 2, 2021. It is now read-only.

Commit

Permalink
Improved fix to #136 to avoid memory leaks
Browse files Browse the repository at this point in the history
  • Loading branch information
PyvesB committed Jan 27, 2017
1 parent b410e67 commit 3d2927d
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions src/main/java/com/hm/achievement/listener/FireworkListener.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.hm.achievement.listener;

import java.util.HashSet;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Firework;
import org.bukkit.event.EventHandler;
Expand All @@ -25,7 +27,7 @@ public class FireworkListener extends AbstractListener implements Listener {
public FireworkListener(AdvancedAchievements plugin) {

super(plugin);
fireworksLaunchedByPlugin = new HashSet<>();
fireworksLaunchedByPlugin = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());
}

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
Expand All @@ -39,6 +41,16 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {

public void addFirework(Firework firework) {

fireworksLaunchedByPlugin.add(firework.getUniqueId().toString());
final String uuid = firework.getUniqueId().toString();
fireworksLaunchedByPlugin.add(uuid);

// Schedule for removal to avoid creating memory leaks if firework does not damage player.
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {

fireworksLaunchedByPlugin.remove(uuid);
}
}, 100);
}
}

0 comments on commit 3d2927d

Please sign in to comment.