fix short int conversion
This commit is contained in:
parent
45631fa12a
commit
6408e678ff
@ -232,12 +232,19 @@ public final class CachedRegion implements IBlockTypeAccess {
|
|||||||
// 16 * 16 * 256 = 65536 so a short is enough
|
// 16 * 16 * 256 = 65536 so a short is enough
|
||||||
// ^ haha jokes on leijurv, java doesn't have unsigned types so that isn't correct
|
// ^ haha jokes on leijurv, java doesn't have unsigned types so that isn't correct
|
||||||
// also why would you have more than 32767 special blocks in a chunk
|
// also why would you have more than 32767 special blocks in a chunk
|
||||||
short numSpecialBlockTypes = in.readShort();
|
// haha double jokes on you now it works for 65535 not just 32767
|
||||||
|
int numSpecialBlockTypes = in.readShort();
|
||||||
|
if (numSpecialBlockTypes < 0) {
|
||||||
|
numSpecialBlockTypes += 65536;
|
||||||
|
}
|
||||||
for (int i = 0; i < numSpecialBlockTypes; i++) {
|
for (int i = 0; i < numSpecialBlockTypes; i++) {
|
||||||
String blockName = in.readUTF();
|
String blockName = in.readUTF();
|
||||||
List<BlockPos> locs = new ArrayList<>();
|
List<BlockPos> locs = new ArrayList<>();
|
||||||
location[x][z].put(blockName, locs);
|
location[x][z].put(blockName, locs);
|
||||||
short numLocations = in.readShort();
|
int numLocations = in.readShort();
|
||||||
|
if (numLocations < 0) {
|
||||||
|
numLocations += 65536;
|
||||||
|
}
|
||||||
for (int j = 0; j < numLocations; j++) {
|
for (int j = 0; j < numLocations; j++) {
|
||||||
byte xz = in.readByte();
|
byte xz = in.readByte();
|
||||||
int X = xz & 0x0f;
|
int X = xz & 0x0f;
|
||||||
|
Loading…
Reference in New Issue
Block a user