From 56ef3dd202f3da7792f4566705962ccaa1edd3bb Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Fri, 20 Mar 2020 21:09:36 +0100 Subject: [PATCH] Shift trigger logic to new sign categories --- .../erethon/dungeonsxl/api/sign/Button.java | 23 ------------------ .../dungeonsxl/api/sign/Deactivatable.java | 24 ------------------- .../dungeonsxl/api/sign/DungeonSign.java | 18 ++++++++++++-- .../erethon/dungeonsxl/api/sign/Passive.java | 5 +++- .../erethon/dungeonsxl/trigger/Trigger.java | 2 +- 5 files changed, 21 insertions(+), 51 deletions(-) diff --git a/api/src/main/java/de/erethon/dungeonsxl/api/sign/Button.java b/api/src/main/java/de/erethon/dungeonsxl/api/sign/Button.java index 27284c12..6ba14005 100644 --- a/api/src/main/java/de/erethon/dungeonsxl/api/sign/Button.java +++ b/api/src/main/java/de/erethon/dungeonsxl/api/sign/Button.java @@ -64,29 +64,6 @@ public abstract class Button extends AbstractDSign { return true; } - @Override - public void update() { - if (isErroneous()) { - return; - } - - for (Trigger trigger : getTriggers()) { - if (!trigger.isTriggered()) { - return; - } - - if (trigger.getPlayer() == null) { - continue; - } - - if (push(trigger.getPlayer())) { - return; - } - } - - push(); - } - /** * This is the same as {@link #push(org.bukkit.entity.Player)}. * diff --git a/api/src/main/java/de/erethon/dungeonsxl/api/sign/Deactivatable.java b/api/src/main/java/de/erethon/dungeonsxl/api/sign/Deactivatable.java index 9c60ab20..9086a42b 100644 --- a/api/src/main/java/de/erethon/dungeonsxl/api/sign/Deactivatable.java +++ b/api/src/main/java/de/erethon/dungeonsxl/api/sign/Deactivatable.java @@ -119,28 +119,4 @@ public abstract class Deactivatable extends AbstractDSign { return isActive(); } - @Override - public void update() { - if (isErroneous()) { - return; - } - - for (Trigger trigger : getTriggers()) { - if (!trigger.isTriggered()) { - deactivate(); - return; - } - - if (trigger.getPlayer() == null) { - continue; - } - - if (activate(trigger.getPlayer())) { - return; - } - } - - activate(); - } - } diff --git a/api/src/main/java/de/erethon/dungeonsxl/api/sign/DungeonSign.java b/api/src/main/java/de/erethon/dungeonsxl/api/sign/DungeonSign.java index 81adbfe7..c69b1b7c 100644 --- a/api/src/main/java/de/erethon/dungeonsxl/api/sign/DungeonSign.java +++ b/api/src/main/java/de/erethon/dungeonsxl/api/sign/DungeonSign.java @@ -170,9 +170,23 @@ public interface DungeonSign { void trigger(Player player); /** - * Updates the sign. + * Checks if the triggers of the sign have been triggered. If they all are, the sign itself is triggered. + * + * @param lastFired the last trigger that has been triggered */ - void update(); + default void updateTriggers(Trigger lastFired) { + if (isErroneous()) { + return; + } + + for (Trigger trigger : getTriggers()) { + if (!trigger.isTriggered()) { + return; + } + } + + trigger(lastFired != null ? lastFired.getPlayer() : null); + } /** * Sets the sign to air if it is not erroneous and if its type requires this. diff --git a/api/src/main/java/de/erethon/dungeonsxl/api/sign/Passive.java b/api/src/main/java/de/erethon/dungeonsxl/api/sign/Passive.java index 89311e16..addb87b2 100644 --- a/api/src/main/java/de/erethon/dungeonsxl/api/sign/Passive.java +++ b/api/src/main/java/de/erethon/dungeonsxl/api/sign/Passive.java @@ -15,6 +15,7 @@ package de.erethon.dungeonsxl.api.sign; import de.erethon.dungeonsxl.api.DungeonsAPI; +import de.erethon.dungeonsxl.api.Trigger; import de.erethon.dungeonsxl.api.world.InstanceWorld; import org.bukkit.block.Sign; import org.bukkit.entity.Player; @@ -32,9 +33,11 @@ public abstract class Passive extends AbstractDSign { /** * Does nothing. + * + * @param lastFired unused */ @Override - public final void update() { + public final void updateTriggers(Trigger lastFired) { } /** diff --git a/core/src/main/java/de/erethon/dungeonsxl/trigger/Trigger.java b/core/src/main/java/de/erethon/dungeonsxl/trigger/Trigger.java index 8fb23bde..beda1857 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/trigger/Trigger.java +++ b/core/src/main/java/de/erethon/dungeonsxl/trigger/Trigger.java @@ -106,7 +106,7 @@ public abstract class Trigger implements de.erethon.dungeonsxl.api.Trigger { public void updateDSigns() { for (DungeonSign dSign : dSigns.toArray(new DungeonSign[dSigns.size()])) { - dSign.update(); + dSign.updateTriggers(this); } }