Fix passthrough cache

This commit is contained in:
Jesse Boyd 2017-04-28 14:09:30 +10:00
parent f37520cae1
commit cdbe396ae6
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
2 changed files with 33 additions and 32 deletions

View File

@ -135,6 +135,34 @@ public class FaweCache {
} }
static { static {
for (int i = 0; i < Character.MAX_VALUE; i++) {
int id = i >> 4;
int data = i & 0xf;
if (FaweCache.hasNBT(id)) {
CACHE_BLOCK[i] = new ImmutableNBTBlock(id, data);
} else if (FaweCache.hasData(id)) {
CACHE_BLOCK[i] = new ImmutableBlock(id, data);
} else {
CACHE_BLOCK[i] = new ImmutableDatalessBlock(id);
}
CACHE_ITEM[i] = new BaseItem(id, (short) data) {
@Override
public void setData(short data) {
throw new IllegalStateException("Cannot set data");
}
@Override
public void setDamage(short data) {
throw new IllegalStateException("Cannot set data");
}
@Override
public void setType(int id) {
throw new IllegalStateException("Cannot set id");
}
};
}
for (int i = 0; i < 256; i++) { for (int i = 0; i < 256; i++) {
CACHE_BIOME[i] = new BaseBiome(i) { CACHE_BIOME[i] = new BaseBiome(i) {
@Override @Override
@ -173,36 +201,9 @@ public class FaweCache {
} }
} }
} }
} catch (Throwable ignore) {} } catch (Throwable ignore) {
for (int i = 0; i < Character.MAX_VALUE; i++) { ignore.printStackTrace();
int id = i >> 4;
int data = i & 0xf;
if (FaweCache.hasNBT(id)) {
CACHE_BLOCK[i] = new ImmutableNBTBlock(id, data);
} else if (FaweCache.hasData(id)) {
CACHE_BLOCK[i] = new ImmutableBlock(id, data);
} else {
CACHE_BLOCK[i] = new ImmutableDatalessBlock(id);
}
CACHE_ITEM[i] = new BaseItem(id, (short) data) {
@Override
public void setData(short data) {
throw new IllegalStateException("Cannot set data");
}
@Override
public void setDamage(short data) {
throw new IllegalStateException("Cannot set data");
}
@Override
public void setType(int id) {
throw new IllegalStateException("Cannot set id");
}
};
} }
CACHE_COLOR[getCombined(0, 0)] = new Color(128, 128, 128); //Air CACHE_COLOR[getCombined(0, 0)] = new Color(128, 128, 128); //Air
CACHE_COLOR[getCombined(1, 0)] = new Color(180, 180, 180); //stone CACHE_COLOR[getCombined(1, 0)] = new Color(180, 180, 180); //stone
CACHE_COLOR[getCombined(2, 0)] = new Color(0, 225, 0); //grass CACHE_COLOR[getCombined(2, 0)] = new Color(0, 225, 0); //grass

View File

@ -116,6 +116,7 @@ public interface HeightMap {
} }
} }
} else { } else {
int height = pos.getBlockY();
for (int x = -size; x <= size; x++) { for (int x = -size; x <= size; x++) {
int xx = centerX + x; int xx = centerX + x;
mutablePos.mutX(xx); mutablePos.mutX(xx);
@ -137,11 +138,10 @@ public interface HeightMap {
raise = getHeight(-z, -x); raise = getHeight(-z, -x);
break; break;
} }
int height;
if (layers) { if (layers) {
height = session.getNearestSurfaceLayer(xx, zz, pos.getBlockY(), 0, maxY); height = session.getNearestSurfaceLayer(xx, zz, height, 0, maxY);
} else { } else {
height = session.getNearestSurfaceTerrainBlock(xx, zz, pos.getBlockY(), 0, 255); height = session.getNearestSurfaceTerrainBlock(xx, zz, height, 0, 255);
} }
oldData[index] = height; oldData[index] = height;
if (height == 0) { if (height == 0) {