Skip to content

Commit

Permalink
Fix some eventlistener memory leaks
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Jul 2, 2015
1 parent 22fbac3 commit e7cc291
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 21 deletions.
20 changes: 11 additions & 9 deletions src/main/java/net/citizensnpcs/api/ai/SimpleGoalController.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@
import java.util.Iterator;
import java.util.List;

import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.ai.tree.Behavior;
import net.citizensnpcs.api.ai.tree.BehaviorGoalAdapter;
import net.citizensnpcs.api.ai.tree.ForwardingBehaviorGoalAdapter;

import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList;

import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;

import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.ai.tree.Behavior;
import net.citizensnpcs.api.ai.tree.BehaviorGoalAdapter;
import net.citizensnpcs.api.ai.tree.ForwardingBehaviorGoalAdapter;

public class SimpleGoalController implements GoalController {
private final List<Goal> executingGoals = Lists.newArrayList();
private int executingPriority = -1;
Expand Down Expand Up @@ -45,8 +45,9 @@ public void addGoal(Goal goal, int priority) {
}

private void addGoalToExecution(Goal goal) {
if (CitizensAPI.hasImplementation())
if (CitizensAPI.hasImplementation()) {
Bukkit.getPluginManager().registerEvents(goal, CitizensAPI.getPlugin());
}
executingGoals.add(goal);
goal.run(selector);
}
Expand All @@ -64,8 +65,8 @@ public int compareTo(GoalEntry o) {
@Override
public Behavior getBehavior() {
return goal instanceof Behavior ? (Behavior) goal
: goal instanceof ForwardingBehaviorGoalAdapter ? ((ForwardingBehaviorGoalAdapter) goal)
.getWrapped() : null;
: goal instanceof ForwardingBehaviorGoalAdapter
? ((ForwardingBehaviorGoalAdapter) goal).getWrapped() : null;
}

@Override
Expand Down Expand Up @@ -255,8 +256,9 @@ public void finish() {
public void finishAndRemove() {
Goal toRemove = executingRootGoal;
finish();
if (toRemove != null)
if (toRemove != null) {
removeGoal(toRemove);
}
}

@Override
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/net/citizensnpcs/api/ai/goals/WanderGoal.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

import java.util.Random;

import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;

import net.citizensnpcs.api.ai.event.NavigationCompleteEvent;
import net.citizensnpcs.api.ai.tree.BehaviorGoalAdapter;
import net.citizensnpcs.api.ai.tree.BehaviorStatus;
import net.citizensnpcs.api.astar.pathfinder.MinecraftBlockExaminer;
import net.citizensnpcs.api.npc.NPC;

import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;

public class WanderGoal extends BehaviorGoalAdapter {
private boolean forceFinish;
private final NPC npc;
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/net/citizensnpcs/api/ai/tree/Composite.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,6 @@ public void addBehavior(Behavior behavior) {
behaviors.add(behavior);
}

private void tryAddParallel(Behavior behavior) {
if (behavior.shouldExecute() && !parallelExecuting.contains(behavior)) {
parallelExecuting.add(behavior);
prepareForExecution(behavior);
}
}

public List<Behavior> getBehaviors() {
return behaviors;
}
Expand All @@ -66,7 +59,7 @@ public void removeBehavior(Behavior behavior) {
public void reset() {
if (parallelExecuting.size() > 0) {
for (Behavior behavior : parallelExecuting) {
behavior.reset();
stopExecution(behavior);
}
parallelExecuting.clear();
}
Expand Down Expand Up @@ -105,4 +98,11 @@ protected void tickParallel() {
}
}
}

private void tryAddParallel(Behavior behavior) {
if (behavior.shouldExecute() && !parallelExecuting.contains(behavior)) {
parallelExecuting.add(behavior);
prepareForExecution(behavior);
}
}
}
1 change: 1 addition & 0 deletions src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ public void destroy() {
}
traits.clear();
registry.deregister(this);
goalController.clear();
}

@Override
Expand Down

0 comments on commit e7cc291

Please sign in to comment.