From 3d19e3028761ccb76cb789e2dd8897a4050036c2 Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Wed, 18 Mar 2020 19:37:12 +0100 Subject: [PATCH] Readd trigger parser --- .../dungeonsxl/world/DInstanceWorld.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/core/src/main/java/de/erethon/dungeonsxl/world/DInstanceWorld.java b/core/src/main/java/de/erethon/dungeonsxl/world/DInstanceWorld.java index 8caf993f..77bb2ce4 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/world/DInstanceWorld.java +++ b/core/src/main/java/de/erethon/dungeonsxl/world/DInstanceWorld.java @@ -27,6 +27,7 @@ import de.erethon.dungeonsxl.api.player.InstancePlayer; import de.erethon.dungeonsxl.api.player.PlayerCache; import de.erethon.dungeonsxl.api.sign.DungeonSign; import de.erethon.dungeonsxl.api.world.InstanceWorld; +import de.erethon.dungeonsxl.trigger.Trigger; import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -117,6 +118,26 @@ public abstract class DInstanceWorld implements InstanceWorld { Constructor constructor = clss.getConstructor(DungeonsAPI.class, Sign.class, String[].class, InstanceWorld.class); DungeonSign dSign = (DungeonSign) constructor.newInstance(plugin, sign, lines, this); signs.put(sign.getBlock(), dSign); + + String[] triggerTypes = lines[3].replaceAll("\\s", "").split(","); + for (String triggerString : triggerTypes) { + if (triggerString.isEmpty()) { + continue; + } + + String id = triggerString.substring(0, 1); + String value = null; + if (triggerString.length() > 1) { + value = triggerString.substring(1); + } + + Trigger trigger = Trigger.getOrCreate(plugin, id, value, dSign); + if (trigger != null) { + trigger.addListener(dSign); + dSign.addTrigger(trigger); + } + } + return dSign; } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException