remove long chunk mapping

This commit is contained in:
Sen 2025-05-19 18:03:59 +02:00
parent 8834e2bdcd
commit e78878c8cc
5 changed files with 58 additions and 342 deletions

View file

@ -1,6 +1,7 @@
package client.world;
import java.util.List;
import java.util.Map;
import java.util.Set;
import client.Client;
@ -9,6 +10,7 @@ import client.renderer.particle.EntityFirework;
import common.biome.Biome;
import common.block.Block;
import common.collect.Lists;
import common.collect.Maps;
import common.collect.Sets;
import common.dimension.Dimension;
import common.entity.Entity;
@ -30,7 +32,6 @@ import common.tileentity.TileEntity;
import common.util.BlockPos;
import common.util.ChunkPos;
import common.util.ExtMath;
import common.util.LongHashMap;
import common.util.Vec3;
import common.util.BlockPos.MutableBlockPos;
import common.world.Chunk;
@ -45,7 +46,7 @@ public class WorldClient extends AWorldClient
private final Set<Entity> entityList = Sets.<Entity>newHashSet();
private final Set<Entity> spawnQueue = Sets.<Entity>newHashSet();
private final Set<ChunkPos> previousActive = Sets.<ChunkPos>newHashSet();
private final LongHashMap<Chunk> chunkMapping = new LongHashMap();
private final Map<ChunkPos, Chunk> chunkMapping = Maps.newHashMap();
private final List<Chunk> chunkListing = Lists.<Chunk>newArrayList();
private final Chunk blankChunk = new EmptyChunk(this);
// public final Profiler profiler;
@ -127,12 +128,13 @@ public class WorldClient extends AWorldClient
public void doPreChunk(int x, int z, boolean load)
{
ChunkPos pos = new ChunkPos(x, z);
if (load)
{
if(this.chunkMapping.getValueByKey(LongHashMap.packInt(x, z)) != null)
if(this.chunkMapping.get(pos) != null)
this.doPreChunk(x, z, false);
Chunk chunk = new Chunk(this, x, z);
this.chunkMapping.add(LongHashMap.packInt(x, z), chunk);
this.chunkMapping.put(pos, chunk);
this.chunkListing.add(chunk);
chunk.setLoaded(true);
}
@ -143,7 +145,7 @@ public class WorldClient extends AWorldClient
{
chunk.onChunkUnload();
}
this.chunkMapping.remove(LongHashMap.packInt(x, z));
this.chunkMapping.remove(pos);
this.chunkListing.remove(chunk);
}
@ -353,13 +355,13 @@ public class WorldClient extends AWorldClient
public Chunk getChunk(int x, int z)
{
Chunk chunk = this.chunkMapping.getValueByKey(LongHashMap.packInt(x, z));
Chunk chunk = this.chunkMapping.get(new ChunkPos(x, z));
return chunk == null ? this.blankChunk : chunk;
}
public String getInfo()
{
return "Chunk-Cache: M " + this.chunkMapping.getNumHashElements() + ", L " + this.chunkListing.size();
return "Chunk-Cache: M " + this.chunkMapping.size() + ", L " + this.chunkListing.size();
}
public void playSound(SoundEvent sound, double x, double y, double z, float volume)