Ensure parity with old techhider by suppressing select packets

This commit is contained in:
D4rkr34lm
2026-05-22 19:39:57 +02:00
parent e11f3f7cbc
commit 54fa47bd99
3 changed files with 11 additions and 0 deletions
@@ -37,6 +37,7 @@ import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import org.bukkit.GameMode;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -108,6 +109,11 @@ public class TechHiderWrapper extends StateDependent implements Listener {
Region hiddenRegion = getHiddenRegion(p); Region hiddenRegion = getHiddenRegion(p);
return !hiddenRegion.inRegion(blockX, blockY, blockZ) || !blockEntityTypeToObfuscate.contains(type); return !hiddenRegion.inRegion(blockX, blockY, blockZ) || !blockEntityTypeToObfuscate.contains(type);
} }
@Override
public boolean isPlayerPrivalegedToPerformAction(Player p) {
return !(p.getGameMode() == GameMode.SPECTATOR);
}
}; };
new StateDependentListener(ENABLED, FightState.All, this); new StateDependentListener(ENABLED, FightState.All, this);
@@ -28,4 +28,5 @@ public interface AccessPrivilegeProvider {
boolean isPlayerPrivilegedToAccessBlock(Player p, int blockX, int blockY, int blockZ, Block block); boolean isPlayerPrivilegedToAccessBlock(Player p, int blockX, int blockY, int blockZ, Block block);
boolean isPlayerPrivilegedToAccessEntity(Player p, int entityId); boolean isPlayerPrivilegedToAccessEntity(Player p, int entityId);
boolean isPlayerPrivilegedToAccessBlockEntity(Player p, int blockX, int blockY, int blockZ, BlockEntityType<?> type); boolean isPlayerPrivilegedToAccessBlockEntity(Player p, int blockX, int blockY, int blockZ, BlockEntityType<?> type);
boolean isPlayerPrivalegedToPerformAction(Player p);
} }
@@ -331,6 +331,9 @@ public abstract class TechHider implements AccessPrivilegeProvider {
return null; return null;
} }
}); });
TinyProtocol.instance.addFilter(ServerboundUseItemOnPacket.class, (p, packet) -> isPlayerPrivalegedToPerformAction(p) ? packet : null);
TinyProtocol.instance.addFilter(ServerboundInteractPacket.class, (p, packet) -> isPlayerPrivalegedToPerformAction(p) ? packet : null);
} }
private Packet<?> processPacket(Player player, Packet<?> packet) { private Packet<?> processPacket(Player player, Packet<?> packet) {
@@ -563,4 +566,5 @@ public abstract class TechHider implements AccessPrivilegeProvider {
public abstract boolean isPlayerPrivilegedToAccessBlock(Player p, int blockX, int blockY, int blockZ, Block block); public abstract boolean isPlayerPrivilegedToAccessBlock(Player p, int blockX, int blockY, int blockZ, Block block);
public abstract boolean isPlayerPrivilegedToAccessEntity(Player p, int entityId); public abstract boolean isPlayerPrivilegedToAccessEntity(Player p, int entityId);
public abstract boolean isPlayerPrivilegedToAccessBlockEntity(Player p, int blockX, int blockY, int blockZ, BlockEntityType<?> type); public abstract boolean isPlayerPrivilegedToAccessBlockEntity(Player p, int blockX, int blockY, int blockZ, BlockEntityType<?> type);
public abstract boolean isPlayerPrivalegedToPerformAction(Player p);
} }