More 1.13 fixes, optimizations

This commit is contained in:
Mike Primm 2018-08-09 02:54:48 -05:00
parent 654cba2de4
commit 6a4554f44c

View File

@ -362,6 +362,7 @@ public class MapChunkCache113 extends MapChunkCache {
mult = ((raccum / 9) << 16) | ((gaccum / 9) << 8) | (baccum / 9); mult = ((raccum / 9) << 16) | ((gaccum / 9) << 8) | (baccum / 9);
} }
} catch (Exception x) { } catch (Exception x) {
Log.warning("Water colormult exception", x);
mult = 0xFFFFFF; mult = 0xFFFFFF;
} }
return mult; return mult;
@ -597,8 +598,6 @@ public class MapChunkCache113 extends MapChunkCache {
public int getBlockEmittedLight(int x, int y, int z); public int getBlockEmittedLight(int x, int y, int z);
public int getHighestBlockYAt(int x, int z); public int getHighestBlockYAt(int x, int z);
public Biome getBiome(int x, int z); public Biome getBiome(int x, int z);
public double getRawBiomeTemperature(int x, int z);
public double getRawBiomeRainfall(int x, int z);
public boolean isSectionEmpty(int sy); public boolean isSectionEmpty(int sy);
public Object[] getBiomeBaseFromSnapshot(); public Object[] getBiomeBaseFromSnapshot();
} }
@ -606,35 +605,44 @@ public class MapChunkCache113 extends MapChunkCache {
public static class WrappedSnapshot implements Snapshot { public static class WrappedSnapshot implements Snapshot {
private final ChunkSnapshot ss; private final ChunkSnapshot ss;
private final DataPaletteBlock[] blockids; private final DataPaletteBlock[] blockids;
private final int sectionmask;
public WrappedSnapshot(ChunkSnapshot ss) { public WrappedSnapshot(ChunkSnapshot ss) {
this.ss = ss; this.ss = ss;
blockids = (DataPaletteBlock[]) BukkitVersionHelper.helper.getBlockIDFieldFromSnapshot(ss); blockids = (DataPaletteBlock[]) BukkitVersionHelper.helper.getBlockIDFieldFromSnapshot(ss);
int mask = 0;
for (int i = 0; i < blockids.length; i++) {
if (ss.isSectionEmpty(i))
mask |= (1 << i);
} }
sectionmask = mask;
}
@Override
public final DynmapBlockState getBlockType(int x, int y, int z) { public final DynmapBlockState getBlockType(int x, int y, int z) {
if ((sectionmask & (1 << (y >> 4))) != 0)
return DynmapBlockState.AIR;
return BukkitVersionHelperSpigot113.dataToState.getOrDefault(blockids[y >> 4].a(x & 0xF, y & 0xF, z & 0xF), DynmapBlockState.AIR); return BukkitVersionHelperSpigot113.dataToState.getOrDefault(blockids[y >> 4].a(x & 0xF, y & 0xF, z & 0xF), DynmapBlockState.AIR);
} }
@Override
public final int getBlockSkyLight(int x, int y, int z) { public final int getBlockSkyLight(int x, int y, int z) {
return ss.getBlockSkyLight(x, y, z); return ss.getBlockSkyLight(x, y, z);
} }
@Override
public final int getBlockEmittedLight(int x, int y, int z) { public final int getBlockEmittedLight(int x, int y, int z) {
return ss.getBlockEmittedLight(x, y, z); return ss.getBlockEmittedLight(x, y, z);
} }
@Override
public final int getHighestBlockYAt(int x, int z) { public final int getHighestBlockYAt(int x, int z) {
return ss.getHighestBlockYAt(x, z); return ss.getHighestBlockYAt(x, z);
} }
@Override
public final Biome getBiome(int x, int z) { public final Biome getBiome(int x, int z) {
return ss.getBiome(x, z); return ss.getBiome(x, z);
} }
public final double getRawBiomeTemperature(int x, int z) { @Override
return ss.getRawBiomeTemperature(x, z);
}
public final double getRawBiomeRainfall(int x, int z) {
return 0.0;
}
public final boolean isSectionEmpty(int sy) { public final boolean isSectionEmpty(int sy) {
return ss.isSectionEmpty(sy); return (sectionmask & (1 << sy)) != 0;
} }
@Override
public final Object[] getBiomeBaseFromSnapshot() { public final Object[] getBiomeBaseFromSnapshot() {
return BukkitVersionHelper.helper.getBiomeBaseFromSnapshot(ss); return BukkitVersionHelper.helper.getBiomeBaseFromSnapshot(ss);
} }
@ -647,27 +655,27 @@ public class MapChunkCache113 extends MapChunkCache {
public final DynmapBlockState getBlockType(int x, int y, int z) { public final DynmapBlockState getBlockType(int x, int y, int z) {
return DynmapBlockState.AIR; return DynmapBlockState.AIR;
} }
@Override
public final int getBlockSkyLight(int x, int y, int z) { public final int getBlockSkyLight(int x, int y, int z) {
return 15; return 15;
} }
@Override
public final int getBlockEmittedLight(int x, int y, int z) { public final int getBlockEmittedLight(int x, int y, int z) {
return 0; return 0;
} }
@Override
public final int getHighestBlockYAt(int x, int z) { public final int getHighestBlockYAt(int x, int z) {
return 0; return 0;
} }
@Override
public Biome getBiome(int x, int z) { public Biome getBiome(int x, int z) {
return null; return null;
} }
public double getRawBiomeTemperature(int x, int z) { @Override
return 0.0;
}
public double getRawBiomeRainfall(int x, int z) {
return 0.0;
}
public boolean isSectionEmpty(int sy) { public boolean isSectionEmpty(int sy) {
return true; return true;
} }
@Override
public Object[] getBiomeBaseFromSnapshot() { public Object[] getBiomeBaseFromSnapshot() {
return new Object[256]; return new Object[256];
} }
@ -680,26 +688,31 @@ public class MapChunkCache113 extends MapChunkCache {
private DynmapBlockState fill; private DynmapBlockState fill;
PlainChunk(String blockname) { this.fill = DynmapBlockState.getBaseStateByName(blockname); } PlainChunk(String blockname) { this.fill = DynmapBlockState.getBaseStateByName(blockname); }
@Override
public final DynmapBlockState getBlockType(int x, int y, int z) { public final DynmapBlockState getBlockType(int x, int y, int z) {
return (y < 64) ? fill : DynmapBlockState.AIR; return (y < 64) ? fill : DynmapBlockState.AIR;
} }
@Override
public Biome getBiome(int x, int z) { return null; } public Biome getBiome(int x, int z) { return null; }
public double getRawBiomeTemperature(int x, int z) { return 0.0; } @Override
public double getRawBiomeRainfall(int x, int z) { return 0.0; }
public final int getBlockSkyLight(int x, int y, int z) { public final int getBlockSkyLight(int x, int y, int z) {
if(y < 64) if(y < 64)
return 0; return 0;
return 15; return 15;
} }
@Override
public final int getBlockEmittedLight(int x, int y, int z) { public final int getBlockEmittedLight(int x, int y, int z) {
return 0; return 0;
} }
@Override
public final int getHighestBlockYAt(int x, int z) { public final int getHighestBlockYAt(int x, int z) {
return 64; return 64;
} }
@Override
public boolean isSectionEmpty(int sy) { public boolean isSectionEmpty(int sy) {
return (sy < 4); return (sy < 4);
} }
@Override
public Object[] getBiomeBaseFromSnapshot() { public Object[] getBiomeBaseFromSnapshot() {
return new Object[256]; return new Object[256];
} }