Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-09-29 14:40:21 +02:00
Allow arbitrary post orders
Dieser Commit ist enthalten in:
Ursprung
3579532892
Commit
3852f27eb8
@ -46,7 +46,7 @@ public interface EventManager {
|
|||||||
* @param handler the handler to register
|
* @param handler the handler to register
|
||||||
* @param <E> the event type to handle
|
* @param <E> the event type to handle
|
||||||
*/
|
*/
|
||||||
<E> void register(Object plugin, Class<E> eventClass, PostOrder postOrder,
|
<E> void register(Object plugin, Class<E> eventClass, short postOrder,
|
||||||
EventHandler<E> handler);
|
EventHandler<E> handler);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,8 +10,12 @@ package com.velocitypowered.api.event;
|
|||||||
/**
|
/**
|
||||||
* Represents the order an event will be posted to a listener method, relative to other listeners.
|
* Represents the order an event will be posted to a listener method, relative to other listeners.
|
||||||
*/
|
*/
|
||||||
public enum PostOrder {
|
public class PostOrder {
|
||||||
|
|
||||||
FIRST, EARLY, NORMAL, LATE, LAST
|
public static final short FIRST = -32768;
|
||||||
|
public static final short EARLY = -16384;
|
||||||
|
public static final short NORMAL = 0;
|
||||||
|
public static final short LATE = 16834;
|
||||||
|
public static final short LAST = 32767;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ public @interface Subscribe {
|
|||||||
*
|
*
|
||||||
* @return the order
|
* @return the order
|
||||||
*/
|
*/
|
||||||
PostOrder order() default PostOrder.NORMAL;
|
short order() default PostOrder.NORMAL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the handler must be called asynchronously.
|
* Whether the handler must be called asynchronously.
|
||||||
|
@ -29,7 +29,6 @@ import com.velocitypowered.api.event.Continuation;
|
|||||||
import com.velocitypowered.api.event.EventHandler;
|
import com.velocitypowered.api.event.EventHandler;
|
||||||
import com.velocitypowered.api.event.EventManager;
|
import com.velocitypowered.api.event.EventManager;
|
||||||
import com.velocitypowered.api.event.EventTask;
|
import com.velocitypowered.api.event.EventTask;
|
||||||
import com.velocitypowered.api.event.PostOrder;
|
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
import com.velocitypowered.api.plugin.PluginContainer;
|
import com.velocitypowered.api.plugin.PluginContainer;
|
||||||
import com.velocitypowered.api.plugin.PluginManager;
|
import com.velocitypowered.api.plugin.PluginManager;
|
||||||
@ -330,7 +329,7 @@ public class VelocityEventManager implements EventManager {
|
|||||||
if (subscribe.async()) {
|
if (subscribe.async()) {
|
||||||
asyncType = AsyncType.ALWAYS;
|
asyncType = AsyncType.ALWAYS;
|
||||||
}
|
}
|
||||||
final short order = (short) subscribe.order().ordinal();
|
final short order = subscribe.order();
|
||||||
final String errorsJoined = errors.isEmpty() ? null : String.join(",", errors);
|
final String errorsJoined = errors.isEmpty() ? null : String.join(",", errors);
|
||||||
collected.put(key, new MethodHandlerInfo(method, asyncType, eventType, order, errorsJoined,
|
collected.put(key, new MethodHandlerInfo(method, asyncType, eventType, order, errorsJoined,
|
||||||
continuationType));
|
continuationType));
|
||||||
@ -370,13 +369,13 @@ public class VelocityEventManager implements EventManager {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <E> void register(final Object plugin, final Class<E> eventClass,
|
public <E> void register(final Object plugin, final Class<E> eventClass,
|
||||||
final PostOrder order, final EventHandler<E> handler) {
|
final short order, final EventHandler<E> handler) {
|
||||||
final PluginContainer pluginContainer = pluginManager.ensurePluginContainer(plugin);
|
final PluginContainer pluginContainer = pluginManager.ensurePluginContainer(plugin);
|
||||||
requireNonNull(eventClass, "eventClass");
|
requireNonNull(eventClass, "eventClass");
|
||||||
requireNonNull(handler, "handler");
|
requireNonNull(handler, "handler");
|
||||||
|
|
||||||
final HandlerRegistration registration = new HandlerRegistration(pluginContainer,
|
final HandlerRegistration registration = new HandlerRegistration(pluginContainer,
|
||||||
(short) order.ordinal(), eventClass, handler, (EventHandler<Object>) handler,
|
order, eventClass, handler, (EventHandler<Object>) handler,
|
||||||
AsyncType.SOMETIMES);
|
AsyncType.SOMETIMES);
|
||||||
register(Collections.singletonList(registration));
|
register(Collections.singletonList(registration));
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren