3
0
Files
KCauldronX/src/main/java/kcauldron/wrapper/VanillaChunkHashMap.java
Sergey Shatunov 5aaf6c5cbf ChunkManager implementation
ChunkManager optimize chunks handling in small and big worlds

Small worlds gets benefits with using int-object map instead long-object (in area -32768...32767 by x and z)

Large worlds gets benefits by using efficient map by Colt project, which a little (3-6%) slower in writing, but greatly faster
(400-500% from Java's HashMap and 150-180% from Trove's maps) on reading.
2016-02-10 19:17:47 +07:00

38 lines
893 B
Java

package kcauldron.wrapper;
import kcauldron.ChunkManager;
import net.minecraft.util.LongHashMap;
import net.minecraft.world.chunk.Chunk;
public class VanillaChunkHashMap extends LongHashMap {
private ChunkManager manager;
public VanillaChunkHashMap(ChunkManager manager) {
this.manager = manager;
}
@Override
public void add(long key, Object value) {
manager.putChunk((Chunk) value);
}
@Override
public boolean containsItem(long key) {
return getValueByKey(key) != null;
}
@Override
public Object getValueByKey(long key) {
final int x = (int) (key >>> 32);
final int z = (int) (key);
return manager.getChunk(x, z);
}
@Override
public Object remove(long key) {
final int x = (int) (key >>> 32);
final int z = (int) (key);
return manager.remove(x, z);
}
}