remove long chunk mapping
This commit is contained in:
parent
8834e2bdcd
commit
e78878c8cc
5 changed files with 58 additions and 342 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue