diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/utils/TechHider.java b/FightSystem_Main/src/de/steamwar/fightsystem/utils/TechHider.java index 3b9df81..b06df30 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/utils/TechHider.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/utils/TechHider.java @@ -88,6 +88,9 @@ public class TechHider { blockHider(); multiBlockHider(); updateBlockEntity(); + if(Core.getVersion() > 12){ + blockBreakHider(); + } VersionedRunnable.call(new VersionedRunnable(TechHider_12::start, 12), new VersionedRunnable(TechHider_14::start, 14), new VersionedRunnable(TechHider_15::start, 15)); @@ -132,6 +135,37 @@ public class TechHider { }); } + private static void blockBreakHider(){ + ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(IFightSystem.getPlugin(), PacketType.Play.Server.BLOCK_BREAK) { + @Override + public void onPacketSending(PacketEvent e) { + PacketContainer packet = e.getPacket(); + BlockPosition pos = packet.getBlockPositionModifier().read(0); + + Player p = e.getPlayer(); + if(bypass(p, ITechHider.posToChunk(pos.getX()), ITechHider.posToChunk(pos.getZ()))) + return; + + + PacketContainer cached = ITechHider.packetCache.get(packet); + if(cached != null){ + e.setPacket(cached); + return; + } + + cached = packet.deepClone(); + ITechHider.packetCache.put(packet, cached); + e.setPacket(cached); + StructureModifier blockStructure = cached.getBlockData(); + WrappedBlockData block = blockStructure.read(0); + if(Config.HiddenBlockTags.contains(block.getType().name())){ + block.setType(ITechHider.obfuscateMaterial); + blockStructure.write(0, block); + } + } + }); + } + private static void blockHider(){ ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(IFightSystem.getPlugin(), PacketType.Play.Server.BLOCK_CHANGE) { @Override