Fixed plugin synchronization
This commit is contained in:
@@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import mc.core.events.api.EventQueueOwner;
|
import mc.core.events.api.EventQueueOwner;
|
||||||
|
import mc.core.events.api.LockableResource;
|
||||||
import mc.core.events.lock.LockObserveList;
|
import mc.core.events.lock.LockObserveList;
|
||||||
import mc.core.events.runner.EventExecutorService;
|
import mc.core.events.runner.EventExecutorService;
|
||||||
import mc.core.events.runner.ResourceRunnable;
|
import mc.core.events.runner.ResourceRunnable;
|
||||||
@@ -75,6 +76,9 @@ public class EventPipelineTask {
|
|||||||
if (handler.isPluginSynchronize())
|
if (handler.isPluginSynchronize())
|
||||||
locks.add(manager.getResourceManager().getPluginLock(handler.getPlugin()));
|
locks.add(manager.getResourceManager().getPluginLock(handler.getPlugin()));
|
||||||
|
|
||||||
|
for (LockableResource resource : handler.getLock()) {
|
||||||
|
locks.addAll(manager.getResourceManager().getAnnotationLocks(resource, event));
|
||||||
|
}
|
||||||
|
|
||||||
return locks;
|
return locks;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package mc.core.events;
|
package mc.core.events;
|
||||||
|
|
||||||
|
import mc.core.events.api.LockableResource;
|
||||||
import mc.core.events.api.Plugin;
|
import mc.core.events.api.Plugin;
|
||||||
import mc.core.events.lock.PoorMansLock;
|
import mc.core.events.lock.PoorMansLock;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@@ -13,4 +16,9 @@ public class SharedResourceManager {
|
|||||||
return pluginLocks.computeIfAbsent(plugin, s -> new PoorMansLock());
|
return pluginLocks.computeIfAbsent(plugin, s -> new PoorMansLock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Collection<PoorMansLock> getAnnotationLocks(LockableResource resource, Event event) {
|
||||||
|
// TODO: Implement
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,9 @@ package mc.core.events.api;
|
|||||||
|
|
||||||
public enum LockableResource {
|
public enum LockableResource {
|
||||||
PLAYER,
|
PLAYER,
|
||||||
WORLD;
|
PLAYER_WORLD,
|
||||||
|
EVENT_LOCATION_WORLD,
|
||||||
|
EVENT_WORLD
|
||||||
|
|
||||||
|
// TODO: Add entity-related constants
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ public class LockObserveList implements Consumer<PoorMansLock> {
|
|||||||
lock.addCallback(this);
|
lock.addCallback(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addAll(Iterable<PoorMansLock> locks) {
|
||||||
|
for (PoorMansLock lock : locks)
|
||||||
|
add(lock);
|
||||||
|
}
|
||||||
|
|
||||||
public void release() {
|
public void release() {
|
||||||
for (PoorMansLock lock : locks) {
|
for (PoorMansLock lock : locks) {
|
||||||
lock.removeCallback(this);
|
lock.removeCallback(this);
|
||||||
|
|||||||
Reference in New Issue
Block a user