Java 类org.bukkit.event.EventException 实例源码
项目:EscapeLag
文件:EventExecutorInjector.java
@Override
// 计算调用次数和花费总时间以及花费最多的时间
public void execute(Listener listener, Event e) throws EventException {
if (e.isAsynchronous()) {
this.eventExecutor.execute(listener, e);
} else {
long startTime = System.nanoTime();
try {
try{
this.eventExecutor.execute(listener, e);
}catch(Throwable ex){
MonitorUtils.AExceptionCatcher(plugin, ex);
}
} finally {
long endTime = System.nanoTime();
long executeTime = endTime - startTime;
if(ConfigFunction.MonitorPluginLagWarningenable){
if(executeTime/1000000 > ConfigFunction.MonitorPluginLagWarningPeriod){
AzureAPI.log("警告!服务器主线程陷入停顿超过配置设定值!因为插件" + this.getPlugin().getName() + " 执行了一次耗时 " + executeTime/1000000 + " 毫秒的位于 " + listener.getClass().getName() + " 的监听器 " + e.getEventName() + " 的操作!");
}
}
this.record(e.getEventName(), executeTime);
}
}
}
项目:ProjectAres
文件:MatchTabManager.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerTeamChange(PlayerChangePartyEvent event) throws EventException {
event.yield();
invalidate(event.getPlayer());
if(event.getOldParty() instanceof Team) {
this.getTeamEntry((Team) event.getOldParty()).invalidate();
}
if(event.getNewParty() instanceof Team) {
this.getTeamEntry((Team) event.getNewParty()).invalidate();
}
if(event.getOldParty() instanceof Tribute || event.getNewParty() instanceof Tribute) {
this.getFreeForAllEntry(event.getMatch()).invalidate();
}
}
项目:ProjectAres
文件:BossBarMatchModule.java
@EventHandler(priority = EventPriority.MONITOR)
public void onJoinLeave(PlayerChangePartyEvent event) throws EventException {
final Player viewer = event.getPlayer().getBukkit();
if(event.isLeavingMatch()) {
Optional.ofNullable(views.rowMap().remove(viewer))
.ifPresent(row -> row.values().forEach(View::destroy));
}
event.yield();
if(event.isJoiningMatch()) {
for(BossBarSource source : globalSources) {
views.put(viewer, source, new View(source, viewer));
}
}
}
项目:NeverLag
文件:EventExecutorInjector.java
@Override
// 计算调用次数和花费总时间以及花费最多的时间
public void execute(Listener listener, Event e) throws EventException {
if (e.isAsynchronous()) {
this.eventExecutor.execute(listener, e);
} else {
long startTime = System.nanoTime();
try {
this.eventExecutor.execute(listener, e);
} finally {
long endTime = System.nanoTime();
long executeTime = endTime - startTime;
this.record(e.getEventName(), executeTime);
}
}
}
项目:Thermos-Bukkit
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
totalTime += System.nanoTime() - start;
}
项目:CauldronGit
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
totalTime += System.nanoTime() - start;
}
项目:NerdLag
文件:MaxTimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
long elapsed = System.nanoTime() - start;
if (elapsed > maxNanos) {
this.maxNanos = elapsed;
}
if (report && elapsed > reportThresholdNanos) {
handler.reportDuration(this, elapsed);
}
totalNanos += elapsed;
}
项目:Cauldron
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
totalTime += System.nanoTime() - start;
}
项目:Cauldron
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
totalTime += System.nanoTime() - start;
}
项目:Spigot-API
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
totalTime += System.nanoTime() - start;
}
项目:Bukkit-JavaDoc
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
totalTime += System.nanoTime() - start;
}
项目:ProjectAres
文件:SpawnMatchModule.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPartyChange(final PlayerChangePartyEvent event) throws EventException {
final MatchPlayer player = event.getPlayer();
if(event.getOldParty() == null) {
// Join match
event.yield();
if(event.getNewParty().isParticipating()) {
enterState(player, new Joining(player));
} else {
enterState(player, new Observing(player, true, true));
}
} else if(event.getNewParty() == null) {
// Leave match
leaveState(player);
} else {
// Party change during match
withState(player, state -> {
state.onEvent(event);
if(hasQueuedTransitions(player)) {
// If the party change caused a state transition, leave the old
// state before the change, and enter the new state afterward.
// The potential danger here is that the player has no spawn state
// during the party change, while other events are firing. The
// danger is minimized by listening at MONITOR priority.
leaveState(player);
event.yield();
processQueuedTransitions(player);
}
});
}
}
项目:ProjectAres
文件:CountdownContext.java
@EventHandler
void suspend(ServerSuspendEvent event) throws EventException {
try { event.yield(); }
finally {
runners().forEach(Runner::resume);
}
}
项目:ProjectAres
文件:FilterMatchModule.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPartyChange(PlayerChangePartyEvent event) throws EventException {
if(event.newParty().isPresent()) {
invalidate(event.getPlayer());
} else {
// Before a player leaves, force all filters false that are not already false.
// So, all dynamic player filters are effectively wrapped in "___ and online",
// and listeners don't need to do any cleanup as long as they don't hold on to
// players that don't match the filter.
listeners.columnMap().forEach((scope, column) -> {
if(scope.isInstance(event.getPlayer())) {
// For each filter in this scope
column.forEach((filter, filterListeners) -> {
// If player joined very recently, they may not have a cached response yet
final Boolean response = lastResponses.get(filter, event.getPlayer());
if(response != null && response) {
filterListeners.fall.forEach(listener -> dispatch((FilterListener<? super MatchPlayer>) listener, filter, event.getPlayer(), false));
}
});
}
});
event.yield();
// Wait until after the event to remove them, in case they get invalidated during the event.
dirtySet.remove(event.getPlayer());
lastResponses.columnKeySet().remove(event.getPlayer());
}
}
项目:ProjectAres
文件:SuspendListener.java
@Inject SuspendListener(Set<Suspendable> suspendables) {
ThrowingConsumer<ServerSuspendEvent, EventException> yielder = Event::yield;
for(Suspendable suspendable : suspendables) {
ThrowingConsumer<ServerSuspendEvent, EventException> next = yielder;
yielder = event -> suspendable.suspend(() -> next.acceptThrows(event));
}
this.yielder = yielder;
}
项目:ProjectAres
文件:TeamListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void addPlayersToRegisteredTeam(EntrantRegisterEvent event) throws EventException {
event.yield();
Match match = event.getTeam().getMatch();
TeamMatchModule tmm = match.needMatchModule(TeamMatchModule.class);
for(MatchPlayer player : match.getPlayers()) {
if(event.getEntrant().members().contains(player.getPlayerId())) {
tourney.getLogger().info("Adding player '" + player.getDisplayName() + "' to team '" + event.getTeam().getName() + "'");
tmm.forceJoin(player, event.getTeam());
}
}
}
项目:ProjectAres
文件:ReadyListener.java
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerLeave(PlayerChangePartyEvent event) throws EventException {
if(event.getNewParty() != null) return;
event.yield();
ReadyManager readyManager = readyManagerProvider.get().orElse(null);
if (readyManager == null) return;
Tournament tournament = tournamentProvider.get();
Party party = event.getOldParty();
if (party != null && party.isParticipatingType() && party.getPlayers().size() < tournament.min_players_per_match()) {
readyManager.markNotReady(party);
}
}
项目:ProjectAres
文件:JoinMessageAnnouncer.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onQuit(PlayerQuitEvent event) throws EventException {
event.setQuitMessage(null);
final User user = userStore.getUser(event.getPlayer());
final SessionChange change = pendingQuits.getIfPresent(user);
event.yield();
if(change != null) {
pendingQuits.invalidate(user);
announce(change);
}
}
项目:NeverLag
文件:ExplodeDisabler.java
@Override
public void execute(Listener listener, Event event) throws EventException {
if (cm.disableExplode) {
((Collection<?>) Reflection.getMethod(event.getClass(), "blockList")
.invoke(event)).clear();
}
}
项目:LagMonitor
文件:ListenerInjector.java
@Override
public void execute(Listener listener, Event event) throws EventException {
if (!event.isAsynchronous()) {
long start = System.nanoTime();
//todo add a more aggressive 10 ms cpu sample
originalExecutor.execute(listener, event);
long end = System.nanoTime();
totalTime += end - start;
count++;
}
}
项目:MyiuLib
文件:MGUtil.java
/**
* Calls an event, but sends it only to the appropriate plugin.
* <strong>Please do not call this from your pluginv unless you are aware of
* the implications.</strong>
*
* @param event the event to call
* @since 0.3.0
*/
public static void callEvent(MyiuLibEvent event) {
HandlerList hl = event.getHandlers();
for (RegisteredListener rl : hl.getRegisteredListeners()) {
if (rl.getPlugin().getName().equals(event.getPlugin()) || rl.getPlugin().getName().equals("MyiuLib")) {
try {
rl.callEvent(event);
}
catch (EventException ex) {
ex.printStackTrace();
}
}
}
}
项目:LagMonitor
文件:ListenerInjector.java
@Override
public void execute(Listener listener, Event event) throws EventException {
if (!event.isAsynchronous()) {
long start = System.nanoTime();
//todo add a more aggressive 10 ms cpu sample
originalExecutor.execute(listener, event);
long end = System.nanoTime();
totalTime += end - start;
count++;
}
}
项目:GameDispenser
文件:Events.java
@Override
public void execute(Listener listener, Event event) throws EventException {
if (event instanceof PlayerDamageEntityEvent)
if (!((PlayerDamageEntityEvent) event).isCancelled())
((PlayerDamageEntityEvent) event).getDamagee().damage(((PlayerDamageEntityEvent) event).getDamage());
else if (event instanceof EntityDamagePlayerEvent)
if (!((EntityDamagePlayerEvent) event).isCancelled())
((EntityDamagePlayerEvent) event).getDamagee().damage(((EntityDamagePlayerEvent) event).getDamage());
else if (event instanceof PlayerDamagePlayerEvent)
if (!((PlayerDamagePlayerEvent) event).isCancelled())
((PlayerDamagePlayerEvent) event).getDamagee().damage(((PlayerDamagePlayerEvent) event).getDamage());
}
项目:Cauldron
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
// Spigot start
if ( org.bukkit.Bukkit.getServer() != null && !org.bukkit.Bukkit.getServer().getPluginManager().useTimings() )
{
super.callEvent( event );
return;
}
// Spigot end
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
// Spigot start
long diff = System.nanoTime() - start;
curTickTotal += diff;
totalTime += diff;
// Spigot end
}
项目:Almura-API
文件:TimedRegisteredListener.java
@Override
public void callEvent(Event event) throws EventException {
// Spigot start
if ( org.bukkit.Bukkit.getServer() != null && !org.bukkit.Bukkit.getServer().getPluginManager().useTimings() )
{
super.callEvent( event );
return;
}
// Spigot end
if (event.isAsynchronous()) {
super.callEvent(event);
return;
}
count++;
Class<? extends Event> newEventClass = event.getClass();
if (this.eventClass == null) {
this.eventClass = newEventClass;
} else if (!this.eventClass.equals(newEventClass)) {
multiple = true;
this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class);
}
long start = System.nanoTime();
super.callEvent(event);
// Spigot start
long diff = System.nanoTime() - start;
curTickTotal += diff;
totalTime += diff;
// Spigot end
}
项目:NucleusFramework
文件:BukkitEventForwarder.java
@Override
public void execute(Listener listener, Event event) throws EventException {
for (Forwarder forwarder : FORWARDERS.keySet()) {
forwarder.on(event);
}
}
项目:MGLib
文件:MGUtil.java
/**
* Calls an event, but sends it only to the appropriate plugin.
* <strong>Please do not call this from your pluginv unless you are aware of
* the implications.</strong>
*
* @param event the event to call
* @since 0.3.0
*/
public static void callEvent(MGLibEvent event) {
HandlerList hl = event.getHandlers();
for (RegisteredListener rl : hl.getRegisteredListeners()) {
if (rl.getPlugin().getName().equals(event.getPlugin()) || rl.getPlugin().getName().equals("MGLib")) {
try {
rl.callEvent(event);
}
catch (EventException ex) {
ex.printStackTrace();
}
}
}
}
项目:CraftFX
文件:TriggerSpec.java
@Override
public void execute(Listener listener, Event event) throws EventException {
if (!clazz.isInstance(event)) return;
final TriggerContext context = function.apply((T) event);
if (context == null) return;
if (event.isAsynchronous()) {
Bukkit.getScheduler().runTask(CraftFX.plugin(), () -> spec.run(context, event));
return;
}
spec.run(context, event);
}
项目:Bukkit-EasyScript
文件:ScriptEventExecutor.java
@Override
public void execute(Listener l, Event event) throws EventException {
// Patch up buggy bukkit.
if (eventType.isInstance(event)) {
T t = eventType.cast(event);
try {
callback.callback(t);
} catch (RuntimeException ex) {
plugin.getLogger().log(Level.WARNING, null, ex);
}
}
}
项目:ProjectAres
文件:BlockTransformListener.java
@Override
public void enable() {
// Find all the @EventWrapper methods in this class and register them at EVERY priority level.
for(final Method method : Methods.annotatedMethods(getClass(), EventWrapper.class)) {
final Class<? extends Event> eventClass = method.getParameterTypes()[0].asSubclass(Event.class);
for(final EventPriority priority : EventPriority.values()) {
Event.register(eventRegistry.bindHandler(new EventHandlerMeta<>(eventClass, priority, false), this, (listener, event) -> {
// Ignore events from non-match worlds
if(matchFinder.getMatch(event) == null) return;
if(!BukkitEvents.isCancelled(event)) {
// At the first priority level, call the event handler method.
// If it decides to generate a BlockTransformEvent, it will be stored in currentEvents.
if(priority == EventPriority.LOWEST) {
if(eventClass.isInstance(event)) {
try {
method.invoke(listener, event);
} catch (InvocationTargetException ex) {
throw new EventException(ex.getCause(), event);
} catch (Throwable t) {
throw new EventException(t, event);
}
}
}
}
// Check for cached events and dispatch them at the current priority level only.
// The BTE needs to be dispatched even after it's cancelled, because we DO have
// listeners that depend on receiving cancelled events e.g. WoolMatchModule.
for(BlockTransformEvent bte : currentEvents.get(event)) {
eventBus.callEvent(bte, priority);
}
// After dispatching the last priority level, clean up the cached events and do post-event stuff.
// This needs to happen even if the event is cancelled.
if(priority == EventPriority.MONITOR) {
finishCauseEvent(event);
}
}));
}
}
}
项目:ProjectAres
文件:SuspendListener.java
@EventHandler
void onSuspend(ServerSuspendEvent event) throws EventException {
yielder.acceptThrows(event);
checkState(!event.canYield(), "Suspendable didn't yield");
}
项目:Skript
文件:EvtMoveOn.java
@SuppressWarnings("null")
@Override
public void execute(final @Nullable Listener l, final @Nullable Event event) throws EventException {
if (event == null)
return;
final PlayerMoveEvent e = (PlayerMoveEvent) event;
final Location from = e.getFrom(), to = e.getTo();
// if (!blockTriggers.isEmpty()) {
// final List<Trigger> ts = blockTriggers.get(new BlockLocation(to.getWorld(), to.getBlockX(), to.getBlockY(), to.getBlockZ()));
// if (ts != null) {
// for (final Trigger t : ts) {
// SkriptEventHandler.logTriggerStart(t);
// t.start(e);
// SkriptEventHandler.logTriggerEnd(t);
// }
// }
// }
if (!itemTypeTriggers.isEmpty()) {
final int id = getOnBlock(to);
if (id == 0)
return;
final List<Trigger> ts = itemTypeTriggers.get(id);
if (ts == null)
return;
final int y = getBlockY(to.getY(), id);
if (to.getWorld().equals(from.getWorld()) && to.getBlockX() == from.getBlockX() && to.getBlockZ() == from.getBlockZ() && y == getBlockY(from.getY(), getOnBlock(from)) && getOnBlock(from) == id)
return;
SkriptEventHandler.logEventStart(e);
final byte data = to.getWorld().getBlockAt(to.getBlockX(), y, to.getBlockZ()).getData();
triggersLoop: for (final Trigger t : ts) {
final EvtMoveOn se = (EvtMoveOn) t.getEvent();
for (final ItemType i : se.types) {
if (i.isOfType(id, data)) {
SkriptEventHandler.logTriggerStart(t);
t.execute(e);
SkriptEventHandler.logTriggerEnd(t);
continue triggersLoop;
}
}
}
SkriptEventHandler.logEventEnd();
}
}
项目:NucleusFramework
文件:BukkitEventForwarder.java
@Override
public void execute(Listener listener, Event event) throws EventException {
_forwarder.on(event);
}
项目:BedrockAPI
文件:RegisteredListener.java
public void callEvent(Event event) throws EventException {
}
项目:BedrockAPI
文件:TimedRegisteredListener.java
public void callEvent(Event event) throws EventException {
}
项目:SharpSK
文件:CondEventCancelled.java
public boolean checkEvent(Event e) throws EventException {
return false;
}
项目:SharpSK
文件:CondEventNotCancelled.java
public boolean checkEvent(Event e) throws EventException {
return false;
}
项目:Thermos-Bukkit
文件:EventExecutor.java
public void execute(Listener listener, Event event) throws EventException;
项目:CauldronGit
文件:EventExecutor.java
public void execute(Listener listener, Event event) throws EventException;
项目:Cauldron
文件:EventExecutor.java
public void execute(Listener listener, Event event) throws EventException;