mirror of
https://github.com/PaperMC/Velocity.git
synced 2026-02-17 14:37:43 +01:00
Add a base interface for events
This commit is contained in:
@@ -27,6 +27,7 @@ import com.google.common.collect.Multimap;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
import com.velocitypowered.api.event.Event;
|
||||
import com.velocitypowered.api.event.EventHandler;
|
||||
import com.velocitypowered.api.event.EventManager;
|
||||
import com.velocitypowered.api.event.EventTask;
|
||||
@@ -107,7 +108,7 @@ public class VelocityEventManager implements EventManager {
|
||||
final PluginContainer plugin;
|
||||
final short order;
|
||||
final Class<?> eventType;
|
||||
final EventHandler<Object> handler;
|
||||
final EventHandler<Event> handler;
|
||||
final AsyncType asyncType;
|
||||
|
||||
/**
|
||||
@@ -117,7 +118,7 @@ public class VelocityEventManager implements EventManager {
|
||||
final Object instance;
|
||||
|
||||
public HandlerRegistration(final PluginContainer plugin, final short order,
|
||||
final Class<?> eventType, final Object instance, final EventHandler<Object> handler,
|
||||
final Class<?> eventType, final Object instance, final EventHandler<Event> handler,
|
||||
final AsyncType asyncType) {
|
||||
this.plugin = plugin;
|
||||
this.order = order;
|
||||
@@ -320,14 +321,14 @@ public class VelocityEventManager implements EventManager {
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <E> void register(final Object plugin, final Class<E> eventClass,
|
||||
public <E extends Event> void register(final Object plugin, final Class<E> eventClass,
|
||||
final short order, final EventHandler<E> handler) {
|
||||
final PluginContainer pluginContainer = pluginManager.ensurePluginContainer(plugin);
|
||||
requireNonNull(eventClass, "eventClass");
|
||||
requireNonNull(handler, "handler");
|
||||
|
||||
final HandlerRegistration registration = new HandlerRegistration(pluginContainer, order,
|
||||
eventClass, handler, (EventHandler<Object>) handler, AsyncType.SOMETIMES);
|
||||
eventClass, handler, (EventHandler<Event>) handler, AsyncType.SOMETIMES);
|
||||
register(Collections.singletonList(registration));
|
||||
}
|
||||
|
||||
@@ -349,7 +350,7 @@ public class VelocityEventManager implements EventManager {
|
||||
throw new VerifyException("Event type is not present and there are no errors");
|
||||
}
|
||||
|
||||
final EventHandler<Object> handler = event -> untargetedHandler.execute(listener, event);
|
||||
final EventHandler<Event> handler = event -> untargetedHandler.execute(listener, event);
|
||||
registrations.add(new HandlerRegistration(pluginContainer, info.order,
|
||||
info.eventType, listener, handler, info.asyncType));
|
||||
}
|
||||
@@ -372,7 +373,7 @@ public class VelocityEventManager implements EventManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E> void unregister(final Object plugin, final EventHandler<E> handler) {
|
||||
public <E extends Event> void unregister(final Object plugin, final EventHandler<E> handler) {
|
||||
unregisterListener(plugin, handler);
|
||||
}
|
||||
|
||||
@@ -400,7 +401,7 @@ public class VelocityEventManager implements EventManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fireAndForget(final Object event) {
|
||||
public void fireAndForget(final Event event) {
|
||||
requireNonNull(event, "event");
|
||||
final HandlersCache handlersCache = this.handlersCache.get(event.getClass());
|
||||
if (handlersCache == null) {
|
||||
@@ -411,7 +412,7 @@ public class VelocityEventManager implements EventManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E> CompletableFuture<E> fire(final E event) {
|
||||
public <E extends Event> CompletableFuture<E> fire(final E event) {
|
||||
requireNonNull(event, "event");
|
||||
final HandlersCache handlersCache = this.handlersCache.get(event.getClass());
|
||||
if (handlersCache == null) {
|
||||
@@ -423,7 +424,7 @@ public class VelocityEventManager implements EventManager {
|
||||
return future;
|
||||
}
|
||||
|
||||
private <E> void fire(final @Nullable CompletableFuture<E> future,
|
||||
private <E extends Event> void fire(final @Nullable CompletableFuture<E> future,
|
||||
final E event, final HandlersCache handlersCache) {
|
||||
if (handlersCache.asyncType == AsyncType.ALWAYS) {
|
||||
// We already know that the event needs to be handled async, so
|
||||
@@ -452,7 +453,7 @@ public class VelocityEventManager implements EventManager {
|
||||
}
|
||||
}
|
||||
|
||||
final class ContinuationTask<E> implements Continuation, Runnable {
|
||||
final class ContinuationTask<E extends Event> implements Continuation, Runnable {
|
||||
|
||||
private final EventTask.WithContinuation task;
|
||||
private final int index;
|
||||
@@ -545,7 +546,7 @@ public class VelocityEventManager implements EventManager {
|
||||
}
|
||||
}
|
||||
|
||||
private <E> void fire(final @Nullable CompletableFuture<E> future, final E event,
|
||||
private <E extends Event> void fire(final @Nullable CompletableFuture<E> future, final E event,
|
||||
final int offset, final boolean currentlyAsync, final HandlerRegistration[] registrations) {
|
||||
for (int i = offset; i < registrations.length; i++) {
|
||||
final HandlerRegistration registration = registrations[i];
|
||||
|
||||
Reference in New Issue
Block a user