diff --git a/BauSystem_API/src/de/steamwar/bausystem/world/Detoloader.java b/BauSystem_API/src/de/steamwar/bausystem/world/Detoloader.java index 00c5363..d81ca0d 100644 --- a/BauSystem_API/src/de/steamwar/bausystem/world/Detoloader.java +++ b/BauSystem_API/src/de/steamwar/bausystem/world/Detoloader.java @@ -83,5 +83,5 @@ public class Detoloader { public static final int WOODEN_BUTTON = 30; public static final int PRESSURE_PLATE = 20; public static final int NOTE_BLOCK = 1; - public static final int TRIPWIRE = 10; + public static final int TRIPWIRE = 20; } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/world/AutoLoader.java b/BauSystem_Main/src/de/steamwar/bausystem/world/AutoLoader.java index 384dfe8..6763ac7 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/world/AutoLoader.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/world/AutoLoader.java @@ -21,6 +21,7 @@ package de.steamwar.bausystem.world; import de.steamwar.bausystem.BauSystem; import de.steamwar.core.Core; +import de.steamwar.core.VersionedCallable; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -64,6 +65,7 @@ public class AutoLoader extends IAutoLoader implements Listener { private int waitTicks; private ListIterator lastAction; private boolean setup; + private Location lastLocation; private AutoLoader(Player player){ this.player = player; @@ -163,28 +165,28 @@ public class AutoLoader extends IAutoLoader implements Listener { if (event.getPlayer().isSneaking()) return; - if(!setup || !event.getPlayer().equals(player)) + if (!setup || !event.getPlayer().equals(player)) return; - Detoloader detoloader = null; - switch(Core.getVersion()){ - case 15: - detoloader = AutoLoader_15.onPlayerInteractLoader(event); - break; - default: - detoloader = AutoLoader_12.onPlayerInteractLoader(event); + Detoloader detoloader = VersionedCallable.call( + new VersionedCallable<>(() -> AutoLoader_12.onPlayerInteractLoader(event), 12), + new VersionedCallable<>(() -> AutoLoader_15.onPlayerInteractLoader(event), 15)); - } - if(detoloader == null || detoloader.getActivation() < 0) return; - if(detoloader.useActive) + if (detoloader == null || detoloader.getActivation() < 0) return; + + if (lastLocation != null && lastLocation.distance(event.getClickedBlock().getLocation()) <= 1) return; + + if (detoloader.useActive) { new IAutoLoader.RedstoneActivation(this, event.getClickedBlock().getLocation() , detoloader.getActivation() == 0 ? getLastActivation() : detoloader.getActivation() , detoloader.isActive()); - else + } else { new IAutoLoader.TemporaryActivation(this, event.getClickedBlock().getLocation() , detoloader.getActivation()); + } print(detoloader.addBack ? "§e" + detoloader.getBlock() + " betätigt" : detoloader.getBlock(), detoloader.addBack); + lastLocation = event.getClickedBlock().getLocation(); } @EventHandler