Implement PluginEvent API

This commit is contained in:
Frank van der Heijden 2021-01-30 16:40:43 +01:00
parent 7004a2cd80
commit c787bcfe3c
No known key found for this signature in database
GPG key ID: 26DA56488D314D11
17 changed files with 250 additions and 1 deletions

View file

@ -0,0 +1,23 @@
package net.frankheijden.serverutils.bukkit.events;
import net.frankheijden.serverutils.common.events.PluginDisableEvent;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.Plugin;
public class BukkitPluginDisableEvent extends BukkitPluginEvent implements PluginDisableEvent<Plugin> {
private static final HandlerList handlers = new HandlerList();
public BukkitPluginDisableEvent(Plugin plugin, Stage stage) {
super(plugin, stage);
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}

View file

@ -0,0 +1,23 @@
package net.frankheijden.serverutils.bukkit.events;
import net.frankheijden.serverutils.common.events.PluginEnableEvent;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.Plugin;
public class BukkitPluginEnableEvent extends BukkitPluginEvent implements PluginEnableEvent<Plugin> {
private static final HandlerList handlers = new HandlerList();
public BukkitPluginEnableEvent(Plugin plugin, Stage stage) {
super(plugin, stage);
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}

View file

@ -0,0 +1,26 @@
package net.frankheijden.serverutils.bukkit.events;
import net.frankheijden.serverutils.common.events.PluginEvent;
import org.bukkit.event.Event;
import org.bukkit.plugin.Plugin;
public abstract class BukkitPluginEvent extends Event implements PluginEvent<Plugin> {
private final Plugin plugin;
private final Stage stage;
protected BukkitPluginEvent(Plugin plugin, Stage stage) {
this.plugin = plugin;
this.stage = stage;
}
@Override
public Plugin getPlugin() {
return plugin;
}
@Override
public Stage getStage() {
return stage;
}
}

View file

@ -0,0 +1,23 @@
package net.frankheijden.serverutils.bukkit.events;
import net.frankheijden.serverutils.common.events.PluginLoadEvent;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.Plugin;
public class BukkitPluginLoadEvent extends BukkitPluginEvent implements PluginLoadEvent<Plugin> {
private static final HandlerList handlers = new HandlerList();
public BukkitPluginLoadEvent(Plugin plugin, Stage stage) {
super(plugin, stage);
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}

View file

@ -0,0 +1,23 @@
package net.frankheijden.serverutils.bukkit.events;
import net.frankheijden.serverutils.common.events.PluginUnloadEvent;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.Plugin;
public class BukkitPluginUnloadEvent extends BukkitPluginEvent implements PluginUnloadEvent<Plugin> {
private static final HandlerList handlers = new HandlerList();
public BukkitPluginUnloadEvent(Plugin plugin, Stage stage) {
super(plugin, stage);
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}

View file

@ -13,6 +13,10 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.frankheijden.serverutils.bukkit.entities.BukkitLoadResult;
import net.frankheijden.serverutils.bukkit.events.BukkitPluginDisableEvent;
import net.frankheijden.serverutils.bukkit.events.BukkitPluginEnableEvent;
import net.frankheijden.serverutils.bukkit.events.BukkitPluginLoadEvent;
import net.frankheijden.serverutils.bukkit.events.BukkitPluginUnloadEvent;
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
import net.frankheijden.serverutils.bukkit.reflection.RCraftingManager;
@ -22,6 +26,7 @@ import net.frankheijden.serverutils.bukkit.reflection.RPluginClassLoader;
import net.frankheijden.serverutils.bukkit.reflection.RSimplePluginManager;
import net.frankheijden.serverutils.common.entities.CloseableResult;
import net.frankheijden.serverutils.common.entities.Result;
import net.frankheijden.serverutils.common.events.PluginEvent;
import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
@ -87,7 +92,9 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
}
if (plugin == null) return new BukkitLoadResult(Result.INVALID_PLUGIN);
Bukkit.getPluginManager().callEvent(new BukkitPluginLoadEvent(plugin, PluginEvent.Stage.PRE));
plugin.onLoad();
Bukkit.getPluginManager().callEvent(new BukkitPluginLoadEvent(plugin, PluginEvent.Stage.POST));
return new BukkitLoadResult(plugin);
}
@ -109,6 +116,7 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
public Result disablePlugin(Plugin plugin) {
if (plugin == null) return Result.NOT_ENABLED;
if (!plugin.isEnabled()) return Result.ALREADY_DISABLED;
Bukkit.getPluginManager().callEvent(new BukkitPluginDisableEvent(plugin, PluginEvent.Stage.PRE));
try {
Bukkit.getPluginManager().disablePlugin(plugin);
RCraftingManager.removeRecipesFor(plugin);
@ -117,6 +125,7 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
return Result.ERROR;
}
unregisterCommands(plugin);
Bukkit.getPluginManager().callEvent(new BukkitPluginDisableEvent(plugin, PluginEvent.Stage.POST));
return Result.SUCCESS;
}
@ -138,6 +147,7 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
@Override
public CloseableResult unloadPlugin(Plugin plugin) {
if (plugin == null) return new CloseableResult(Result.NOT_EXISTS);
Bukkit.getPluginManager().callEvent(new BukkitPluginUnloadEvent(plugin, PluginEvent.Stage.PRE));
List<Closeable> closeables = new ArrayList<>();
try {
RSimplePluginManager.getPlugins(Bukkit.getPluginManager()).remove(plugin);
@ -155,6 +165,7 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
ex.printStackTrace();
return new CloseableResult(Result.ERROR);
}
Bukkit.getPluginManager().callEvent(new BukkitPluginUnloadEvent(plugin, PluginEvent.Stage.POST));
return new CloseableResult(closeables);
}
@ -183,10 +194,13 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
if (plugin == null) return Result.NOT_EXISTS;
if (Bukkit.getPluginManager().isPluginEnabled(plugin.getName())) return Result.ALREADY_ENABLED;
Bukkit.getPluginManager().callEvent(new BukkitPluginEnableEvent(plugin, PluginEvent.Stage.PRE));
Bukkit.getPluginManager().enablePlugin(plugin);
RCraftServer.syncCommands();
return Bukkit.getPluginManager().isPluginEnabled(plugin.getName()) ? Result.SUCCESS : Result.ERROR;
if (!Bukkit.getPluginManager().isPluginEnabled(plugin.getName())) return Result.ERROR;
Bukkit.getPluginManager().callEvent(new BukkitPluginEnableEvent(plugin, PluginEvent.Stage.POST));
return Result.SUCCESS;
}
/**