Small code cleanup (#4213)

This commit is contained in:
RK_01 2024-10-29 12:50:36 +01:00 committed by GitHub
parent 82ff0bae49
commit 3858a83972
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 20 additions and 26 deletions

View File

@ -22,12 +22,12 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.protocols.v1_12_2to1_13.provider.BlockEntityProvider; import com.viaversion.viaversion.protocols.v1_12_2to1_13.provider.BlockEntityProvider;
import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.Key;
import com.viaversion.viaversion.util.Pair; import com.viaversion.viaversion.util.Pair;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class FlowerPotHandler implements BlockEntityProvider.BlockEntityHandler { public class FlowerPotHandler implements BlockEntityProvider.BlockEntityHandler {
// Object -> string (id without namespace) or byte (numeric id) // Object -> string (id without namespace) or byte (numeric id)
private static final Map<Pair<?, Byte>, Integer> flowers = new ConcurrentHashMap<>(); private static final Map<Pair<?, Byte>, Integer> flowers = new HashMap<>();
static { static {
register("air", (byte) 0, (byte) 0, 5265); register("air", (byte) 0, (byte) 0, 5265);

View File

@ -18,6 +18,7 @@
package com.viaversion.viaversion.protocols.v1_17_1to1_18.storage; package com.viaversion.viaversion.protocols.v1_17_1to1_18.storage;
import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
@ -30,27 +31,27 @@ public final class ChunkLightStorage implements StorableObject {
private final Set<Long> loadedChunks = new HashSet<>(); private final Set<Long> loadedChunks = new HashSet<>();
public void storeLight(final int x, final int z, final ChunkLight chunkLight) { public void storeLight(final int x, final int z, final ChunkLight chunkLight) {
lightPackets.put(getChunkSectionIndex(x, z), chunkLight); lightPackets.put(ChunkPosition.chunkKey(x, z), chunkLight);
} }
public @Nullable ChunkLight removeLight(final int x, final int z) { public @Nullable ChunkLight removeLight(final int x, final int z) {
return lightPackets.remove(getChunkSectionIndex(x, z)); return lightPackets.remove(ChunkPosition.chunkKey(x, z));
} }
public @Nullable ChunkLight getLight(final int x, final int z) { public @Nullable ChunkLight getLight(final int x, final int z) {
return lightPackets.get(getChunkSectionIndex(x, z)); return lightPackets.get(ChunkPosition.chunkKey(x, z));
} }
public boolean addLoadedChunk(final int x, final int z) { public boolean addLoadedChunk(final int x, final int z) {
return loadedChunks.add(getChunkSectionIndex(x, z)); return loadedChunks.add(ChunkPosition.chunkKey(x, z));
} }
public boolean isLoaded(final int x, final int z) { public boolean isLoaded(final int x, final int z) {
return loadedChunks.contains(getChunkSectionIndex(x, z)); return loadedChunks.contains(ChunkPosition.chunkKey(x, z));
} }
public void clear(final int x, final int z) { public void clear(final int x, final int z) {
final long index = getChunkSectionIndex(x, z); final long index = ChunkPosition.chunkKey(x, z);
lightPackets.remove(index); lightPackets.remove(index);
loadedChunks.remove(index); loadedChunks.remove(index);
} }
@ -60,10 +61,6 @@ public final class ChunkLightStorage implements StorableObject {
lightPackets.clear(); lightPackets.clear();
} }
private long getChunkSectionIndex(final int x, final int z) {
return ((x & 0x3FFFFFFL) << 38) | (z & 0x3FFFFFFL);
}
public record ChunkLight(boolean trustEdges, long[] skyLightMask, long[] blockLightMask, public record ChunkLight(boolean trustEdges, long[] skyLightMask, long[] blockLightMask,
long[] emptySkyLightMask, long[] emptyBlockLightMask, long[] emptySkyLightMask, long[] emptyBlockLightMask,
byte[][] skyLight, byte[][] blockLight) { byte[][] skyLight, byte[][] blockLight) {

View File

@ -21,8 +21,8 @@ import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.nbt.tag.StringTag; import com.viaversion.nbt.tag.StringTag;
import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.ClientWorld;
import com.viaversion.viaversion.api.minecraft.BlockPosition; import com.viaversion.viaversion.api.minecraft.BlockPosition;
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk; import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
@ -133,7 +133,7 @@ public class WorldPacketRewriter1_9 {
ClientWorld1_9 clientWorld = wrapper.user().getClientWorld(Protocol1_8To1_9.class); ClientWorld1_9 clientWorld = wrapper.user().getClientWorld(Protocol1_8To1_9.class);
Chunk chunk = wrapper.read(ChunkType1_8.forEnvironment(clientWorld.getEnvironment())); Chunk chunk = wrapper.read(ChunkType1_8.forEnvironment(clientWorld.getEnvironment()));
long chunkHash = ClientWorld1_9.toLong(chunk.getX(), chunk.getZ()); long chunkHash = ChunkPosition.chunkKey(chunk.getX(), chunk.getZ());
// Check if the chunk should be handled as an unload packet // Check if the chunk should be handled as an unload packet
if (chunk.isFullChunk() && chunk.getBitmask() == 0) { if (chunk.isFullChunk() && chunk.getBitmask() == 0) {
@ -152,7 +152,7 @@ public class WorldPacketRewriter1_9 {
for (BlockFace face : BlockFace.HORIZONTAL) { for (BlockFace face : BlockFace.HORIZONTAL) {
int chunkX = chunk.getX() + face.modX(); int chunkX = chunk.getX() + face.modX();
int chunkZ = chunk.getZ() + face.modZ(); int chunkZ = chunk.getZ() + face.modZ();
if (!clientWorld.getLoadedChunks().contains(ClientWorld1_9.toLong(chunkX, chunkZ))) { if (!clientWorld.getLoadedChunks().contains(ChunkPosition.chunkKey(chunkX, chunkZ))) {
PacketWrapper unloadChunk = wrapper.create(ClientboundPackets1_9.FORGET_LEVEL_CHUNK); PacketWrapper unloadChunk = wrapper.create(ClientboundPackets1_9.FORGET_LEVEL_CHUNK);
unloadChunk.write(Types.INT, chunkX); unloadChunk.write(Types.INT, chunkX);
unloadChunk.write(Types.INT, chunkZ); unloadChunk.write(Types.INT, chunkZ);
@ -171,7 +171,7 @@ public class WorldPacketRewriter1_9 {
for (BlockFace face : BlockFace.HORIZONTAL) { for (BlockFace face : BlockFace.HORIZONTAL) {
int chunkX = chunk.getX() + face.modX(); int chunkX = chunk.getX() + face.modX();
int chunkZ = chunk.getZ() + face.modZ(); int chunkZ = chunk.getZ() + face.modZ();
if (!clientWorld.getLoadedChunks().contains(ClientWorld1_9.toLong(chunkX, chunkZ))) { if (!clientWorld.getLoadedChunks().contains(ChunkPosition.chunkKey(chunkX, chunkZ))) {
PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.LEVEL_CHUNK); PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.LEVEL_CHUNK);
Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>()); Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>());
emptyChunk.write(chunkType, c); emptyChunk.write(chunkType, c);
@ -194,14 +194,14 @@ public class WorldPacketRewriter1_9 {
chunkData.write(chunkType, chunk); chunkData.write(chunkType, chunk);
chunkData.send(Protocol1_8To1_9.class); chunkData.send(Protocol1_8To1_9.class);
clientWorld.getLoadedChunks().add(ClientWorld1_9.toLong(chunk.getX(), chunk.getZ())); clientWorld.getLoadedChunks().add(ChunkPosition.chunkKey(chunk.getX(), chunk.getZ()));
// Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk
if (Via.getConfig().isChunkBorderFix()) { if (Via.getConfig().isChunkBorderFix()) {
for (BlockFace face : BlockFace.HORIZONTAL) { for (BlockFace face : BlockFace.HORIZONTAL) {
int chunkX = chunk.getX() + face.modX(); int chunkX = chunk.getX() + face.modX();
int chunkZ = chunk.getZ() + face.modZ(); int chunkZ = chunk.getZ() + face.modZ();
if (!clientWorld.getLoadedChunks().contains(ClientWorld1_9.toLong(chunkX, chunkZ))) { if (!clientWorld.getLoadedChunks().contains(ChunkPosition.chunkKey(chunkX, chunkZ))) {
PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.LEVEL_CHUNK); PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.LEVEL_CHUNK);
Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>()); Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>());
emptyChunk.write(chunkType, c); emptyChunk.write(chunkType, c);

View File

@ -17,16 +17,13 @@
*/ */
package com.viaversion.viaversion.protocols.v1_8to1_9.storage; package com.viaversion.viaversion.protocols.v1_8to1_9.storage;
import com.google.common.collect.Sets;
import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.ClientWorld;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
public class ClientWorld1_9 extends ClientWorld { public class ClientWorld1_9 extends ClientWorld {
private final Set<Long> loadedChunks = Sets.newConcurrentHashSet();
public static long toLong(int msw, int lsw) { private final Set<Long> loadedChunks = new HashSet<>();
return ((long) msw << 32) + lsw + 2147483648L;
}
public Set<Long> getLoadedChunks() { public Set<Long> getLoadedChunks() {
return loadedChunks; return loadedChunks;

View File

@ -22,12 +22,12 @@ import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.BlockPosition; import com.viaversion.viaversion.api.minecraft.BlockPosition;
import com.viaversion.viaversion.util.Pair; import com.viaversion.viaversion.util.Pair;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
public class CommandBlockStorage implements StorableObject { public class CommandBlockStorage implements StorableObject {
private final Map<Pair<Integer, Integer>, Map<BlockPosition, CompoundTag>> storedCommandBlocks = new ConcurrentHashMap<>(); private final Map<Pair<Integer, Integer>, Map<BlockPosition, CompoundTag>> storedCommandBlocks = new HashMap<>();
private boolean permissions; private boolean permissions;
public void unloadChunk(int x, int z) { public void unloadChunk(int x, int z) {
@ -39,7 +39,7 @@ public class CommandBlockStorage implements StorableObject {
Pair<Integer, Integer> chunkPos = getChunkCoords(position); Pair<Integer, Integer> chunkPos = getChunkCoords(position);
if (!storedCommandBlocks.containsKey(chunkPos)) { if (!storedCommandBlocks.containsKey(chunkPos)) {
storedCommandBlocks.put(chunkPos, new ConcurrentHashMap<>()); storedCommandBlocks.put(chunkPos, new HashMap<>());
} }
Map<BlockPosition, CompoundTag> blocks = storedCommandBlocks.get(chunkPos); Map<BlockPosition, CompoundTag> blocks = storedCommandBlocks.get(chunkPos);