diff --git a/src/main/java/ch/njol/skript/ScriptLoader.java b/src/main/java/ch/njol/skript/ScriptLoader.java index 9cbcacb4f23..31231fc4d64 100644 --- a/src/main/java/ch/njol/skript/ScriptLoader.java +++ b/src/main/java/ch/njol/skript/ScriptLoader.java @@ -148,6 +148,22 @@ public static void deleteCurrentEvent() { hasDelayBefore = Kleenean.FALSE; } + @Nullable + private static SkriptEvent currentSkriptEvent; + + public static void setCurrentSkriptEvent(SkriptEvent skriptEvent) { + currentSkriptEvent = skriptEvent; + } + + @Nullable + public static SkriptEvent getCurrentSkriptEvent() { + return currentSkriptEvent; + } + + public static void deleteCurrentSkriptEvent() { + currentSkriptEvent = null; + } + public static List currentSections = new ArrayList<>(); public static List currentLoops = new ArrayList<>(); final static HashMap currentOptions = new HashMap<>(); @@ -675,9 +691,11 @@ public String run(final Matcher m) { try { setCurrentEvent("" + parsedEvent.getFirst().getName().toLowerCase(Locale.ENGLISH), parsedEvent.getFirst().events); + setCurrentSkriptEvent(parsedEvent.getSecond()); events.add(new ParsedEventData(parsedEvent, event, node, loadItems(node))); } finally { deleteCurrentEvent(); + deleteCurrentSkriptEvent(); } if (parsedEvent.getSecond() instanceof SelfRegisteringSkriptEvent) { @@ -723,6 +741,7 @@ public String run(final Matcher m) { for (ParsedEventData event : events) { setCurrentEvent("" + event.info.getFirst().getName().toLowerCase(Locale.ENGLISH), event.info.getFirst().events); + setCurrentSkriptEvent(event.info.getSecond()); final Trigger trigger; try { @@ -741,6 +760,7 @@ public String run(final Matcher m) { } deleteCurrentEvent(); + deleteCurrentSkriptEvent(); } // Remove the script from the disabled scripts list