From 343a86b44cfc3b0328b7ec60cebcfcf584731232 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Sun, 4 Oct 2020 16:51:50 +0300 Subject: [PATCH] Support multiple triggers in one block --- .../ee/lunasqu/interaqqt/IConnection.java | 7 ------ .../ee/lunasqu/interaqqt/MQTTConnection.java | 5 +--- src/main/java/ee/lunasqu/interaqqt/Main.java | 4 +-- .../events/listeners/RightClickAdder.java | 1 + .../interaqqt/triggers/BlockTriggers.java | 25 +++++++++++++------ 5 files changed, 22 insertions(+), 20 deletions(-) delete mode 100644 src/main/java/ee/lunasqu/interaqqt/IConnection.java diff --git a/src/main/java/ee/lunasqu/interaqqt/IConnection.java b/src/main/java/ee/lunasqu/interaqqt/IConnection.java deleted file mode 100644 index 2a65115..0000000 --- a/src/main/java/ee/lunasqu/interaqqt/IConnection.java +++ /dev/null @@ -1,7 +0,0 @@ -package ee.lunasqu.interaqqt; - -public interface IConnection { - public boolean sendStateChange(String key, String value); - public boolean isAlive(); - public void die(); -} diff --git a/src/main/java/ee/lunasqu/interaqqt/MQTTConnection.java b/src/main/java/ee/lunasqu/interaqqt/MQTTConnection.java index 707633e..3aacea4 100644 --- a/src/main/java/ee/lunasqu/interaqqt/MQTTConnection.java +++ b/src/main/java/ee/lunasqu/interaqqt/MQTTConnection.java @@ -5,7 +5,7 @@ import ee.lunasqu.interaqqt.events.DisconnectedEvent; import org.bukkit.Bukkit; import org.eclipse.paho.client.mqttv3.*; -public class MQTTConnection implements IConnection { +public class MQTTConnection { IMqttClient publisher; public MQTTConnection (String host, String id) { @@ -24,7 +24,6 @@ public class MQTTConnection implements IConnection { Bukkit.getPluginManager().callEvent(new ConnectionEstablishedEvent()); } - @Override public boolean sendStateChange(String key, String value) { if (!this.isAlive()) return false; MqttMessage msg = new MqttMessage(value.getBytes()); @@ -39,12 +38,10 @@ public class MQTTConnection implements IConnection { return true; } - @Override public boolean isAlive() { return this.publisher.isConnected(); } - @Override public void die() { if (this.publisher != null && this.publisher.isConnected()) { try { diff --git a/src/main/java/ee/lunasqu/interaqqt/Main.java b/src/main/java/ee/lunasqu/interaqqt/Main.java index d096a76..683cbd9 100644 --- a/src/main/java/ee/lunasqu/interaqqt/Main.java +++ b/src/main/java/ee/lunasqu/interaqqt/Main.java @@ -15,7 +15,7 @@ public class Main extends JavaPlugin { public static Main plugin; private FileConfiguration config; - private IConnection service; + private MQTTConnection service; private BlockTriggers triggers; private RightClickAdder adder; @@ -27,7 +27,7 @@ public class Main extends JavaPlugin { return triggers; } - public IConnection getConnection() { + public MQTTConnection getConnection() { if (service == null || !service.isAlive()) return null; return service; } diff --git a/src/main/java/ee/lunasqu/interaqqt/events/listeners/RightClickAdder.java b/src/main/java/ee/lunasqu/interaqqt/events/listeners/RightClickAdder.java index b6ec36b..94afa18 100644 --- a/src/main/java/ee/lunasqu/interaqqt/events/listeners/RightClickAdder.java +++ b/src/main/java/ee/lunasqu/interaqqt/events/listeners/RightClickAdder.java @@ -34,6 +34,7 @@ public class RightClickAdder implements Listener { } } + @EventHandler public void onPlayerLeave(PlayerQuitEvent event) { if (triggerHashMap.containsKey(event.getPlayer().getUniqueId())) { triggerHashMap.remove(event.getPlayer().getUniqueId()); diff --git a/src/main/java/ee/lunasqu/interaqqt/triggers/BlockTriggers.java b/src/main/java/ee/lunasqu/interaqqt/triggers/BlockTriggers.java index 7f2aa33..ad0152a 100644 --- a/src/main/java/ee/lunasqu/interaqqt/triggers/BlockTriggers.java +++ b/src/main/java/ee/lunasqu/interaqqt/triggers/BlockTriggers.java @@ -46,11 +46,12 @@ public class BlockTriggers { return null; } - public BlockTrigger getTriggerByLocation (Location block) { + public List getTriggersByLocation (Location block) { + List newList = new ArrayList(); for (BlockTrigger t : triggers) { - if (t.getBlock().equals(block)) return t; + if (t.getBlock().equals(block)) newList.add(t); } - return null; + return newList; } public List getTriggerList () { @@ -79,6 +80,8 @@ public class BlockTriggers { public void saveConfiguration () { if (triggerConfig == null) this.loadConfiguration(); + triggerConfig = new YamlConfiguration(); + Map triggerMap = new HashMap(); for (BlockTrigger trigger : triggers) { triggerConfig.set(trigger.getName(), trigger); @@ -91,10 +94,7 @@ public class BlockTriggers { } } - public boolean triggerLocation (Location block, int power) { - BlockTrigger triggerData = getTriggerByLocation(block); - if (triggerData == null) return false; - + private boolean trigger (BlockTrigger triggerData, int power) { String send = null; String data = triggerData.getData(); int type = triggerData.getType(); @@ -124,4 +124,15 @@ public class BlockTriggers { Main.plugin.getConnection().sendStateChange(triggerData.getMqttTrigger(), send); return true; } + + public boolean triggerLocation (Location block, int power) { + List blockTriggerList = getTriggersByLocation(block); + if (blockTriggerList.isEmpty()) return false; + + for (BlockTrigger blockTrigger : blockTriggerList) { + trigger(blockTrigger, power); + } + + return true; + } }