Optimize entity events adding/removing

This commit is contained in:
Felix Cravic 2020-08-09 17:15:02 +02:00
parent cbf06e6963
commit 1a6df8e035
2 changed files with 4 additions and 4 deletions

View File

@ -531,7 +531,6 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
Check.notNull(eventCallback, "Event callback cannot be null");
List<EventCallback> callbacks = getEventCallbacks(eventClass);
callbacks.add(eventCallback);
this.eventCallbacks.put(eventClass, callbacks);
}
@Override
@ -540,13 +539,12 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
Check.notNull(eventCallback, "Event callback cannot be null");
List<EventCallback> callbacks = getEventCallbacks(eventClass);
callbacks.remove(eventCallback);
this.eventCallbacks.put(eventClass, callbacks);
}
@Override
public <E extends Event> List<EventCallback> getEventCallbacks(Class<E> eventClass) {
Check.notNull(eventClass, "Event class cannot be null");
return eventCallbacks.getOrDefault(eventClass, new CopyOnWriteArrayList<>());
return eventCallbacks.computeIfAbsent(eventClass, clazz -> new CopyOnWriteArrayList<>());
}
/**

View File

@ -539,7 +539,9 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta
* @param chunkZ the chunk Z
*/
public void unloadChunk(int chunkX, int chunkZ) {
unloadChunk(getChunk(chunkX, chunkZ));
final Chunk chunk = getChunk(chunkX, chunkZ);
Check.notNull(chunk, "The chunk at " + chunkX + ":" + chunkZ + " is already unloaded");
unloadChunk(chunk);
}
/**