diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index f16a06eb6..2e6a630a4 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -623,7 +623,10 @@ public abstract class SWGObject implements Serializable, Comparable { } public void clearAware() { - List objects = new ArrayList<>(objectsAware); + List objects; + synchronized (objectsAware) { + objects = new ArrayList<>(objectsAware); + } for (SWGObject o : objects) { o.awarenessOutOfRange(this); awarenessOutOfRange(o); @@ -645,8 +648,13 @@ public abstract class SWGObject implements Serializable, Comparable { } private Set getObserversFromSet(Set aware, SWGObject childObject) { - Set awareExtra = new HashSet<>(aware); - awareExtra.addAll(objectsAware); + Set awareExtra; + synchronized (aware) { + synchronized (objectsAware) { + awareExtra = new HashSet<>(aware); + awareExtra.addAll(objectsAware); + } + } if (getParent() == null) { Set observers = new HashSet<>(); for (SWGObject obj : awareExtra) {