From 927ce1f49594827a24983010e2d843c1fa1012d9 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Fri, 22 Dec 2023 11:48:55 +0100 Subject: [PATCH] Fix SmartPlaceListener --- .../smartplace/SmartPlaceListener.java | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/smartplace/SmartPlaceListener.java b/BauSystem_Main/src/de/steamwar/bausystem/features/smartplace/SmartPlaceListener.java index fc95224a..3bc35100 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/smartplace/SmartPlaceListener.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/smartplace/SmartPlaceListener.java @@ -40,6 +40,8 @@ import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.PlayerInteractEvent; +import java.io.OutputStream; +import java.io.PrintStream; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -106,29 +108,16 @@ public class SmartPlaceListener implements Plain, Listener { } } boolean sneaking = player.isSneaking(); - run(player, packet, true, sneaking, shouldSneak); - return null; + if (sneaking) SMART_PLACING.add(player); + player.setSneaking(shouldSneak || sneaking); + Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> { + SMART_PLACING.remove(player); + player.setSneaking(sneaking); + }, 0); + return packet; }); } - private void run(Player player, Object packet, boolean first, boolean sneaking, boolean shouldSneak) { - if (sneaking) SMART_PLACING.add(player); - player.setSneaking(shouldSneak || sneaking); - try { - packetExecutor.invoke(playerConnection.get(getHandle.invoke(player)), packet); - } catch (Exception e) { - return; - } finally { - SMART_PLACING.remove(player); - player.setSneaking(sneaking); - } - - if (!WAS_EXECUTED.contains(player) && first) { - run(player, packet, false, sneaking, shouldSneak); - } - WAS_EXECUTED.remove(player); - } - @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { if (!Config.getInstance().get(event.getPlayer()).getPlainValueOrDefault("smartPlace", false)) return;