mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-06 21:13:37 -04:00
Fixed LD bug when characters log out, as well as player tags in general
This commit is contained in:
@@ -614,10 +614,7 @@ public abstract class SWGObject implements Serializable, Comparable<SWGObject> {
|
||||
}
|
||||
|
||||
public void clearAware() {
|
||||
SWGObject [] objects;
|
||||
synchronized (objectsAware) {
|
||||
objects = objectsAware.toArray(new SWGObject[objectsAware.size()]);
|
||||
}
|
||||
List<SWGObject> objects = new ArrayList<>(objectsAware);
|
||||
for (SWGObject o : objects) {
|
||||
o.awarenessOutOfRange(this);
|
||||
awarenessOutOfRange(o);
|
||||
@@ -639,21 +636,21 @@ public abstract class SWGObject implements Serializable, Comparable<SWGObject> {
|
||||
}
|
||||
|
||||
private Set<SWGObject> getObserversFromSet(Set<SWGObject> aware, SWGObject childObject) {
|
||||
Set<SWGObject> awareExtra = new HashSet<>(aware);
|
||||
awareExtra.addAll(objectsAware);
|
||||
if (getParent() == null) {
|
||||
Set<SWGObject> observers = new HashSet<>();
|
||||
synchronized (aware) {
|
||||
for (SWGObject obj : aware) {
|
||||
Player p = obj.getOwner();
|
||||
if (childObject.isValidPlayer(p))
|
||||
observers.add(obj);
|
||||
else
|
||||
childObject.getChildrenObservers(observers, obj);
|
||||
}
|
||||
for (SWGObject obj : awareExtra) {
|
||||
Player p = obj.getOwner();
|
||||
if (childObject.isValidPlayer(p))
|
||||
observers.add(obj);
|
||||
else
|
||||
getChildrenObservers(observers, obj);
|
||||
}
|
||||
childObject.getChildrenObservers(observers, this);
|
||||
getChildrenObservers(observers, this);
|
||||
return observers;
|
||||
} else {
|
||||
return getParent().getObserversFromSet(aware, childObject); // Search for top level parent
|
||||
return getParent().getObserversFromSet(awareExtra, childObject); // Search for top level parent
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user