From b516d1d569b7bfc2f0605c24c9cec0814303c514 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 16 Feb 2025 17:14:55 +0100 Subject: [PATCH] Configurable techhider interaction suppression --- .../fightsystem/utils/TechHiderWrapper.java | 6 ++++++ .../src/de/steamwar/techhider/TechHider.java | 15 ++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHiderWrapper.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHiderWrapper.java index a01e61b4..c45d7ab6 100644 --- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHiderWrapper.java +++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHiderWrapper.java @@ -32,6 +32,7 @@ import de.steamwar.fightsystem.states.StateDependent; import de.steamwar.fightsystem.states.StateDependentListener; import de.steamwar.sql.SteamwarUser; import de.steamwar.techhider.TechHider; +import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -114,6 +115,11 @@ public class TechHiderWrapper extends StateDependent implements TechHider.Locati }); } + @Override + public boolean suppressInteractions(Player player) { + return player.getGameMode() == GameMode.SPECTATOR; + } + @Override public boolean skipChunk(Player player, int chunkX, int chunkZ) { return getHiddenRegion(player).chunkOutside(chunkX, chunkZ); diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java index bae5b7be..03063eb8 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java @@ -19,15 +19,16 @@ package de.steamwar.techhider; -import de.steamwar.Reflection; import com.comphenix.tinyprotocol.TinyProtocol; +import de.steamwar.Reflection; import de.steamwar.core.Core; import lombok.Getter; -import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.UnaryOperator; @@ -91,9 +92,9 @@ public class TechHider { } if(Core.getVersion() > 8){ - techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundUseItemOnPacket"), (p, packet) -> p.getGameMode() == GameMode.SPECTATOR ? null : packet); + techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundUseItemOnPacket"), (p, packet) -> locationEvaluator.suppressInteractions(p) ? null : packet); } - techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundInteractPacket"), (p, packet) -> p.getGameMode() == GameMode.SPECTATOR ? null : packet); + techhiders.put(Reflection.getClass("net.minecraft.network.protocol.game.ServerboundInteractPacket"), (p, packet) -> locationEvaluator.suppressInteractions(p) ? null : packet); } @@ -161,6 +162,10 @@ public class TechHider { } public interface LocationEvaluator { + default boolean suppressInteractions(Player player) { + return false; + } + boolean skipChunk(Player player, int x, int z); default boolean skipChunkSection(Player player, int x, int y, int z) { return skipChunk(player, x, z);