forked from SteamWar/SteamWar
Update multiblock update packet filter
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user