forked from SteamWar/SteamWar
fixes
This commit is contained in:
@@ -57,6 +57,7 @@ tasks.register<FightServer>("WarGear21") {
|
||||
description = "Run a WarGear 1.21 Fight Server"
|
||||
dependsOn(":SpigotCore:shadowJar")
|
||||
dependsOn(":FightSystem:shadowJar")
|
||||
dependsOn(":KotlinCore:shadowJar")
|
||||
template = "WarGear21"
|
||||
worldName = "arenas/Pentraki"
|
||||
config = "WarGear20.yml"
|
||||
|
||||
@@ -57,7 +57,7 @@ public class TinyProtocol {
|
||||
|
||||
public static final TinyProtocol instance = new TinyProtocol(Core.getInstance());
|
||||
private final Map<Class<?>, List<BiFunction<Player, Object, Object>>> packetFilters = new HashMap<>();
|
||||
private final Set<BiFunction<Player, Object, Object>> globalFilters = new HashSet<>();
|
||||
private final Set<BiFunction<Player, Object, Object>> globalClientboundFilters = new HashSet<>();
|
||||
|
||||
public static void init() {
|
||||
// enforce init
|
||||
@@ -235,8 +235,8 @@ public class TinyProtocol {
|
||||
packetFilters.getOrDefault(packetType, Collections.emptyList()).remove(filter);
|
||||
}
|
||||
|
||||
public void addGlobalFilter(BiFunction<Player, Object, Object> filter) {
|
||||
globalFilters.add(filter);
|
||||
public void addGlobalClientboundFilter(BiFunction<Player, Object, Object> filter) {
|
||||
globalClientboundFilters.add(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -450,6 +450,13 @@ public class TinyProtocol {
|
||||
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
|
||||
try {
|
||||
msg = filterPacket(player, msg);
|
||||
|
||||
if(msg instanceof Packet<?>) {
|
||||
for (BiFunction<Player, Object, Object> filter : globalClientboundFilters) {
|
||||
msg = filter.apply(player, msg);
|
||||
if (msg == null) break;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
plugin.getLogger().log(Level.SEVERE, "Error in onPacketOutAsync().", e);
|
||||
}
|
||||
@@ -473,11 +480,6 @@ public class TinyProtocol {
|
||||
if (packet == null) break;
|
||||
}
|
||||
|
||||
for (BiFunction<Player, Object, Object> filter : globalFilters) {
|
||||
packet = filter.apply(player, packet);
|
||||
if (packet == null) break;
|
||||
}
|
||||
|
||||
return packet;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ public abstract class ChunkHider {
|
||||
|
||||
private final int SECTION_SPAN_SIZE = 16;
|
||||
private final byte BIT_PER_BLOCK_INDIRECTION_LIMIT = 8;
|
||||
private final byte BIT_PER_BIOME_INDIRECTION_LIMIT = 3;
|
||||
|
||||
private final int BLOCKS_PER_SECTION = 4096;
|
||||
private final int BIOMES_PER_SECTION = 64;
|
||||
@@ -108,6 +109,8 @@ public abstract class ChunkHider {
|
||||
int palletLength = ProtocolUtils.readVarInt(in);
|
||||
int[] pallet = ProtocolUtils.readVarIntArray(in, palletLength);
|
||||
|
||||
System.out.println(Arrays.toString(pallet));
|
||||
|
||||
long[] rawData = readSectionDataFromBuffer(in, bitsPerBlock, BLOCKS_PER_SECTION);
|
||||
SimpleBitStorage data = new SimpleBitStorage(bitsPerBlock, BLOCKS_PER_SECTION, rawData);
|
||||
|
||||
@@ -128,6 +131,7 @@ public abstract class ChunkHider {
|
||||
int worldZ = sectionZ * chunkZ;
|
||||
|
||||
int blockId = resolvedData[blockDataIndex];
|
||||
System.out.println("DEV - " + blockId);
|
||||
Block block = BuiltInRegistries.BLOCK.get(blockId).get().value();
|
||||
|
||||
if(isPlayerPrivilegedToAccessPosition(player, worldX, worldY, worldZ) && isPlayerPrivilegedToAccessBlock(player, worldX, worldY, worldZ, block)) {
|
||||
@@ -271,12 +275,12 @@ public abstract class ChunkHider {
|
||||
private void copyOverSectionBiomeData(ByteBuf oldData, ByteBuf newData){
|
||||
short bitsPerBiome = oldData.readShort();
|
||||
newData.writeShort(bitsPerBiome);
|
||||
|
||||
System.out.println(bitsPerBiome);
|
||||
if(bitsPerBiome == 0) {
|
||||
int sectionBiomeId = ProtocolUtils.readVarInt(oldData);
|
||||
ProtocolUtils.writeVarInt(newData, sectionBiomeId);
|
||||
}
|
||||
else if(bitsPerBiome <= BIT_PER_BLOCK_INDIRECTION_LIMIT) {
|
||||
else if(bitsPerBiome <= BIT_PER_BIOME_INDIRECTION_LIMIT) {
|
||||
int palletLength = ProtocolUtils.readVarInt(oldData);
|
||||
ProtocolUtils.writeVarInt(newData, palletLength);
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||
import it.unimi.dsi.fastutil.ints.IntList;
|
||||
import it.unimi.dsi.fastutil.shorts.ShortArraySet;
|
||||
import it.unimi.dsi.fastutil.shorts.ShortSets;
|
||||
import net.minecraft.network.UnconfiguredPipelineHandler;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
@@ -26,6 +27,7 @@ import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.SectionPos;
|
||||
import net.minecraft.network.PacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.handshake.ClientIntentionPacket;
|
||||
import net.minecraft.network.protocol.common.ClientboundClearDialogPacket;
|
||||
import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket;
|
||||
import net.minecraft.network.protocol.common.ClientboundCustomReportDetailsPacket;
|
||||
@@ -162,6 +164,7 @@ import net.minecraft.network.protocol.login.ClientboundHelloPacket;
|
||||
import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket;
|
||||
import net.minecraft.network.protocol.login.ClientboundLoginDisconnectPacket;
|
||||
import net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket;
|
||||
import net.minecraft.network.protocol.configuration.ClientboundSelectKnownPacks;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
@@ -171,7 +174,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
* way that is also compliant with the principle of default-deny.
|
||||
*/
|
||||
public abstract class TechHider {
|
||||
private final Set<Class<? extends Packet<? extends PacketListener>>> bypassingPackets;
|
||||
private final Set<Class<?>> bypassingPackets;
|
||||
private final Map<Class<? extends Packet<? extends PacketListener>>, BiFunction<Player, Packet<? extends PacketListener>, Packet<? extends PacketListener>>> packetProcessors;
|
||||
|
||||
private final Block blockUsedForObfuscation;
|
||||
@@ -210,6 +213,7 @@ public abstract class TechHider {
|
||||
ClientboundCookieRequestPacket.class, // 5.1.6 Cookie Request
|
||||
|
||||
// --- 6.1.x Configuration Protocol ---
|
||||
ClientboundSelectKnownPacks.class,
|
||||
ClientboundCustomPayloadPacket.class, // 6.1.2 Clientbound Plugin Message
|
||||
ClientboundFinishConfigurationPacket.class, // 6.1.4 Finish Configuration
|
||||
ClientboundKeepAlivePacket.class, // 6.1.5 Clientbound Keep Alive
|
||||
@@ -440,14 +444,19 @@ public abstract class TechHider {
|
||||
|
||||
this.packetProcessors = processors;
|
||||
|
||||
TinyProtocol.instance.addGlobalFilter((player, packet) -> {
|
||||
TinyProtocol.instance.addGlobalClientboundFilter((player, packet) -> {
|
||||
System.out.println(packet.getClass().toString());
|
||||
|
||||
if(bypassingPackets.contains(packet.getClass())) {
|
||||
System.out.println("bypassing");
|
||||
return packet;
|
||||
}
|
||||
else if(packetProcessors.containsKey(packet.getClass())) {
|
||||
System.out.println("processing");
|
||||
return packetProcessors.get(packet.getClass()).apply(player, (Packet<? extends PacketListener>) packet);
|
||||
}
|
||||
else {
|
||||
System.out.println("dropping");
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user