fix short int conversion

This commit is contained in:
Leijurv 2018-08-26 08:51:56 -07:00
parent 45631fa12a
commit 6408e678ff
No known key found for this signature in database
GPG Key ID: 44A3EA646EADAC6A

View File

@ -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;