diff --git a/plugin/src/main/java/com/denizenscript/denizen/Denizen.java b/plugin/src/main/java/com/denizenscript/denizen/Denizen.java index 74a2d6c1cd..98dc301b9a 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/Denizen.java +++ b/plugin/src/main/java/com/denizenscript/denizen/Denizen.java @@ -5,6 +5,7 @@ import com.denizenscript.denizen.events.core.*; import com.denizenscript.denizen.events.server.ServerPrestartScriptEvent; import com.denizenscript.denizen.events.server.ServerStartScriptEvent; +import com.denizenscript.denizen.events.server.ServerStopScriptEvent; import com.denizenscript.denizen.flags.FlagManager; import com.denizenscript.denizen.objects.EntityTag; import com.denizenscript.denizen.objects.InventoryTag; @@ -31,7 +32,6 @@ import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.utilities.depends.Depends; import com.denizenscript.denizen.utilities.entity.DenizenEntityType; -import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; import com.denizenscript.denizen.utilities.implementation.DenizenCoreImplementation; import com.denizenscript.denizen.utilities.maps.DenizenMapManager; import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler; @@ -44,7 +44,6 @@ import com.denizenscript.denizencore.DenizenCore; import com.denizenscript.denizencore.events.OldEventManager; import com.denizenscript.denizencore.objects.ObjectFetcher; -import com.denizenscript.denizencore.objects.ObjectTag; import com.denizenscript.denizencore.scripts.ScriptHelper; import com.denizenscript.denizencore.scripts.ScriptRegistry; import com.denizenscript.denizencore.scripts.commands.core.AdjustCommand; @@ -68,8 +67,6 @@ import java.io.*; import java.net.URLDecoder; -import java.util.Arrays; -import java.util.HashMap; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; @@ -81,11 +78,7 @@ public class Denizen extends JavaPlugin { public static boolean supportsPaper = false; - private CommandManager commandManager; - - public CommandManager getCommandManager() { - return commandManager; - } + public CommandManager commandManager; /* * Denizen Registries @@ -109,14 +102,10 @@ public TriggerRegistry getTriggerRegistry() { /* * Denizen Managers */ - private FlagManager flagManager = new FlagManager(this); - private TagManager tagManager = new TagManager(); - private NotableManager notableManager = new NotableManager(); - private OldEventManager eventManager; - - public OldEventManager eventManager() { - return eventManager; - } + public FlagManager flagManager = new FlagManager(this); + public TagManager tagManager = new TagManager(); + public NotableManager notableManager = new NotableManager(); + public OldEventManager eventManager; public FlagManager flagManager() { return flagManager; @@ -483,23 +472,7 @@ public void onDisable() { } hasDisabled = true; - // <--[event] - // @Events - // shutdown - // - // @Regex ^on shutdown$ - // - // @Warning not all plugins will be loaded and delayed scripts will be dropped. - // Also note that this event is not guaranteed to always run (eg if the server crashes). - // - // @Triggers when the server is shutting down. - // - // @Context - // None. - // - // --> - HashMap context = new HashMap<>(); - OldEventManager.doEvents(Arrays.asList("shutdown"), new BukkitScriptEntryData(null, null), context); + ServerStopScriptEvent.instance.fire(); // Disable the log interceptor... otherwise bad things on /reload /*if (logInterceptor != null) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java b/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java index 535527cb0d..12e551cf6d 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java @@ -187,6 +187,7 @@ public static void registerMainEvents() { } ScriptEvent.registerScriptEvent(new ServerPrestartScriptEvent()); ScriptEvent.registerScriptEvent(new ServerStartScriptEvent()); + ScriptEvent.registerScriptEvent(new ServerStopScriptEvent()); ScriptEvent.registerScriptEvent(new TabCompleteScriptEvent()); // Vehicle diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java index 03482a1fcb..562a72b76c 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java @@ -2,7 +2,6 @@ import com.denizenscript.denizen.events.BukkitScriptEvent; import com.denizenscript.denizencore.events.ScriptEvent; -import com.denizenscript.denizencore.objects.ObjectTag; import com.denizenscript.denizencore.scripts.containers.core.WorldScriptContainer; public class ServerPrestartScriptEvent extends BukkitScriptEvent { @@ -40,11 +39,6 @@ public String getName() { return "ServerPrestart"; } - @Override - public ObjectTag getContext(String name) { - return super.getContext(name); - } - public void specialHackRunEvent() { for (WorldScriptContainer container : ScriptEvent.worldContainers) { if (container.contains("events.on server prestart")) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStartScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStartScriptEvent.java index 78c745f607..a3869815a0 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStartScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStartScriptEvent.java @@ -1,7 +1,6 @@ package com.denizenscript.denizen.events.server; import com.denizenscript.denizen.events.BukkitScriptEvent; -import com.denizenscript.denizencore.objects.ObjectTag; public class ServerStartScriptEvent extends BukkitScriptEvent { @@ -35,9 +34,4 @@ public boolean couldMatch(ScriptPath path) { public String getName() { return "ServerStart"; } - - @Override - public ObjectTag getContext(String name) { - return super.getContext(name); - } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStopScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStopScriptEvent.java new file mode 100644 index 0000000000..5dd70108ab --- /dev/null +++ b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStopScriptEvent.java @@ -0,0 +1,41 @@ +package com.denizenscript.denizen.events.server; + +import com.denizenscript.denizen.events.BukkitScriptEvent; + +public class ServerStopScriptEvent extends BukkitScriptEvent { + + // <--[event] + // @Events + // shutdown + // + // @Regex ^on shutdown$ + // + // @Warning not all plugins will be loaded and delayed scripts will be dropped. + // Also note that this event is not guaranteed to always run (eg if the server crashes). + // + // @Triggers when the server is shutting down. + // + // @Context + // None. + // + // --> + + public ServerStopScriptEvent() { + instance = this; + } + + public static ServerStopScriptEvent instance; + + @Override + public boolean couldMatch(ScriptPath path) { + if (!path.eventLower.startsWith("shutdown")) { + return false; + } + return true; + } + + @Override + public String getName() { + return "ServerShutdown"; + } +} diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java index 4d35b784ff..3ddd7b20a1 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java @@ -5,10 +5,8 @@ import com.denizenscript.denizen.objects.NPCTag; import com.denizenscript.denizen.objects.PlayerTag; import com.denizenscript.denizen.scripts.containers.core.AssignmentScriptContainer; -import com.denizenscript.denizen.utilities.DenizenAPI; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.utilities.Settings; -import com.denizenscript.denizen.npc.DenizenNPCHelper; import com.denizenscript.denizencore.objects.core.ElementTag; import com.denizenscript.denizencore.objects.ObjectTag; import com.denizenscript.denizencore.scripts.ScriptRegistry; diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java index 4a47d5da91..4349677992 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java @@ -3,7 +3,6 @@ import com.denizenscript.denizen.events.bukkit.ScriptReloadEvent; import com.denizenscript.denizen.objects.NPCTag; import com.denizenscript.denizen.tags.BukkitTagContext; -import com.denizenscript.denizen.utilities.DenizenAPI; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizencore.scripts.ScriptRegistry; import com.denizenscript.denizencore.tags.TagManager; diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java index 085eabfe90..fb06a79a15 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java @@ -1,7 +1,6 @@ package com.denizenscript.denizen.npc.traits; import com.denizenscript.denizen.objects.NPCTag; -import com.denizenscript.denizen.utilities.DenizenAPI; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.nms.NMSHandler; import com.denizenscript.denizen.nms.interfaces.FishingHelper; diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/HungerTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/HungerTrait.java index 085409514f..8ce7c0db7a 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/HungerTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/HungerTrait.java @@ -2,7 +2,6 @@ import com.denizenscript.denizen.events.bukkit.ExhaustedNPCEvent; import com.denizenscript.denizen.objects.NPCTag; -import com.denizenscript.denizen.utilities.DenizenAPI; import net.citizensnpcs.api.ai.event.NavigationBeginEvent; import net.citizensnpcs.api.ai.event.NavigationCancelEvent; import net.citizensnpcs.api.ai.event.NavigationCompleteEvent; diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/NicknameTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/NicknameTrait.java index 60fb5c04d6..ddb0e1eeb0 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/NicknameTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/NicknameTrait.java @@ -2,7 +2,6 @@ import com.denizenscript.denizen.objects.NPCTag; import com.denizenscript.denizen.tags.BukkitTagContext; -import com.denizenscript.denizen.utilities.DenizenAPI; import com.denizenscript.denizencore.tags.TagManager; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.trait.Trait; diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/SneakingTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/SneakingTrait.java index 91703fb185..3f01cfbf7f 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/SneakingTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/SneakingTrait.java @@ -2,7 +2,6 @@ import com.denizenscript.denizen.nms.NMSHandler; import com.denizenscript.denizen.objects.NPCTag; -import com.denizenscript.denizen.utilities.DenizenAPI; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.trait.Trait; import org.bukkit.entity.EntityType; diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/TriggerTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/TriggerTrait.java index 5676d5211d..07d0e3b468 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/TriggerTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/TriggerTrait.java @@ -8,7 +8,6 @@ import com.denizenscript.denizen.utilities.DenizenAPI; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.utilities.Settings; -import com.denizenscript.denizen.npc.DenizenNPCHelper; import com.denizenscript.denizencore.objects.core.ElementTag; import com.denizenscript.denizencore.objects.ObjectTag; import net.citizensnpcs.api.command.exception.CommandException;