Update multiblock update packet filter

This commit is contained in:
D4rkr34lm
2026-05-17 13:49:46 +02:00
parent 3bd1cf7167
commit 9f319128cc
@@ -15,6 +15,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.ints.IntList;
import it.unimi.dsi.fastutil.shorts.ShortArraySet; import it.unimi.dsi.fastutil.shorts.ShortArraySet;
import it.unimi.dsi.fastutil.shorts.ShortSets; import it.unimi.dsi.fastutil.shorts.ShortSets;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.repository.Pack; import net.minecraft.server.packs.repository.Pack;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
@@ -299,7 +300,7 @@ public abstract class TechHider {
ClientboundBlockChangedAckPacket.class, // 7.1.5 Acknowledge Block Change ClientboundBlockChangedAckPacket.class, // 7.1.5 Acknowledge Block Change
ClientboundChunkBatchFinishedPacket.class, // 7.1.12 Chunk Batch Finished (Delimiter) ClientboundChunkBatchFinishedPacket.class, // 7.1.12 Chunk Batch Finished (Delimiter)
ClientboundChunkBatchStartPacket.class, // 7.1.13 Chunk Batch Start (Delimiter) ClientboundChunkBatchStartPacket.class, // 7.1.13 Chunk Batch Start (Delimiter)
ClientboundChunksBiomesPacket.class, // 7.1.14 Chunk Biomes // ClientboundChunksBiomesPacket.class, // 7.1.14 Chunk Biomes
ClientboundContainerClosePacket.class, // 7.1.18 Close Container ClientboundContainerClosePacket.class, // 7.1.18 Close Container
ClientboundSetChunkCacheCenterPacket.class, // 7.1.93 Set Center Chunk ClientboundSetChunkCacheCenterPacket.class, // 7.1.93 Set Center Chunk
ClientboundForgetLevelChunkPacket.class, // 7.1.38 Unload Chunk ClientboundForgetLevelChunkPacket.class, // 7.1.38 Unload Chunk
@@ -571,26 +572,18 @@ public abstract class TechHider {
for (int i = 0; i < oldPos.length; i++) { for (int i = 0; i < oldPos.length; i++) {
short posShort = oldPos[i]; short posShort = oldPos[i];
BlockState state = oldStates[i]; BlockState state = oldStates[i];
Block block = state.getBlock();
int worldX = sectionPos.relativeToBlockX(posShort); int worldX = sectionPos.relativeToBlockX(posShort);
int worldY = sectionPos.relativeToBlockY(posShort); int worldY = sectionPos.relativeToBlockY(posShort);
int worldZ = sectionPos.relativeToBlockZ(posShort); int worldZ = sectionPos.relativeToBlockZ(posShort);
BlockPos pos = new BlockPos(worldX, worldY, worldZ); if (isPlayerPrivilegedToAccessPosition(p, worldX, worldY, worldZ) && isPlayerPrivilegedToAccessBlock(p, worldX, worldY, worldZ, block)) {
if (isPlayerPrivilegedToAccessBlockPos(p, pos.getX(), pos.getY(), pos.getZ())) {
filteredPos.add(posShort); filteredPos.add(posShort);
filteredStates.add(state); filteredStates.add(state);
} else { } else if(isPlayerPrivilegedToAccessPosition(p, worldX, worldY, worldZ)){
int id = Block.getId(state); filteredPos.add(posShort);
if (blockIdsToObfuscate.contains(id)) { filteredStates.add(blockStateUsedForObfuscation);
filteredPos.add(posShort);
filteredStates.add(blockToObfuscateTo);
modified = true;
} else {
filteredPos.add(posShort);
filteredStates.add(state);
}
} }
} }
@@ -672,4 +665,5 @@ public abstract class TechHider {
public abstract boolean isPlayerPrivilegedToAccessEntity(Player p, int entityId); public abstract boolean isPlayerPrivilegedToAccessEntity(Player p, int entityId);
public abstract boolean isPlayerPrivilegedToAccessBlocEntity(Player p, int blockX, int blockY, int blockZ, BlockEntityType<?> type); public abstract boolean isPlayerPrivilegedToAccessBlocEntity(Player p, int blockX, int blockY, int blockZ, BlockEntityType<?> type);
public abstract boolean isPlayerPrivilegedToAccessContainer(Player p, int containerId); public abstract boolean isPlayerPrivilegedToAccessContainer(Player p, int containerId);
public abstract boolean isPlayerPrivilegedToAccessSound(Player p, ResourceLocation soundId);
} }