From 6cd389c33e8d685bd0972cbd1cd7c5d7c2f510ea Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Tue, 14 Apr 2020 21:13:26 +0200 Subject: [PATCH] Fixed redstone trigger behavior --- .../dungeonsxl/trigger/RedstoneTrigger.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/de/erethon/dungeonsxl/trigger/RedstoneTrigger.java b/core/src/main/java/de/erethon/dungeonsxl/trigger/RedstoneTrigger.java index 852c4ab8..9e62163c 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/trigger/RedstoneTrigger.java +++ b/core/src/main/java/de/erethon/dungeonsxl/trigger/RedstoneTrigger.java @@ -16,7 +16,8 @@ */ package de.erethon.dungeonsxl.trigger; -import de.erethon.commons.misc.BlockUtil; +import de.erethon.dungeonsxl.api.sign.Deactivatable; +import de.erethon.dungeonsxl.api.sign.DungeonSign; import de.erethon.dungeonsxl.event.trigger.TriggerActionEvent; import de.erethon.dungeonsxl.world.DGameWorld; import org.bukkit.Bukkit; @@ -52,7 +53,21 @@ public class RedstoneTrigger extends Trigger { } else if (isTriggered()) { setTriggered(false); - updateDSigns(); + + for (DungeonSign dSign : getDSigns().toArray(new DungeonSign[getDSigns().size()])) { + if (!(dSign instanceof Deactivatable)) { + return; + } + if (dSign.isErroneous()) { + return; + } + for (de.erethon.dungeonsxl.api.Trigger trigger : dSign.getTriggers()) { + if (trigger.isTriggered()) { + return; + } + } + ((Deactivatable) dSign).deactivate(); + } } } @@ -63,7 +78,7 @@ public class RedstoneTrigger extends Trigger { /* Statics */ public static RedstoneTrigger getOrCreate(Sign sign, DGameWorld gameWorld) { - Block rtBlock = BlockUtil.getAttachedBlock(sign.getBlock()); + Block rtBlock = sign.getBlock(); if (rtBlock != null) { for (Trigger uncasted : gameWorld.getTriggers(TriggerTypeDefault.REDSTONE)) { RedstoneTrigger trigger = (RedstoneTrigger) uncasted;