Hello i will be sharing how to update the client to load 211+ maps
everything your going to be editing is in ObjectManager.
underlays and underlays got changed from a byte to a short.
you will see something like this
aByteArrayArrayArray142[l][k9][i8] & 0xf
for this
underlays[l][x][z] & 0xff
same thing for overlays
the & 0xff needs to be & 0x3FFF
Make sure you do both overlays and underlays
you will see something like this
private void method181(int i, int j, Buffer stream, int k, int l, int i1, int k1) {
try {
if (k >= 0 && k < 104 && i >= 0 && i < 104) {
int absX = (k1 + k);
int absY = (j + i);
int absZ = (i1 + l);
tileFlags[l][k][i] = 0;
do {
int l1 = stream.readUnsignedByte();
if (l1 == 0)
if (l == 0) {
tileHeights[0][k][i] = -calculateVertexHeight(0xe3b7b + k + k1, 0x87cce + i + j) * 8;
return;
} else {
tileHeights[l][k][i] = tileHeights[l - 1][k][i] - 240;
return;
}
if (l1 == 1) {
int j2 = stream.readUnsignedByte();
if (j2 == 1)
j2 = 0;
if (l == 0) {
tileHeights[0][k][i] = -j2 * 8;
return;
} else {
tileHeights[l][k][i] = tileHeights[l - 1][k][i] - j2 * 8;
return;
}
}
if (l1 <= 49) {
overlays[l][k][i] = stream.readSignedByte();
overlayTypes[l][k][i] = (byte) ((l1 - 2) / 4);
overlayOrientations[l][k][i] = (byte) ((l1 - 2) + i1 & 3);
} else if (l1 <= 81)
tileFlags[l][k][i] = (byte) (l1 - 49);
else
underlays[l][k][i] = (byte) (l1 - 81);
} while (true);
}
do {
int i2 = stream.readUnsignedByte();
if (i2 == 0)
break;
if (i2 == 1) {
stream.readUnsignedByte();
return;
}
if (i2 <= 49)
stream.readUnsignedByte();
} while (true);
} catch (Exception e) {
}
}
make sure it looks like this
private void method181(int i, int j, Buffer stream, int k, int l, int i1, int k1) {
try {
if (k >= 0 && k < 104 && i >= 0 && i < 104) {
int absX = (k1 + k);
int absY = (j + i);
int absZ = (i1 + l);
tileFlags[l][k][i] = 0;
do {
int l1 = stream.readUShort();
if (l1 == 0)
if (l == 0) {
tileHeights[0][k][i] = -calculateVertexHeight(0xe3b7b + k + k1, 0x87cce + i + j) * 8;
return;
} else {
tileHeights[l][k][i] = tileHeights[l - 1][k][i] - 240;
return;
}
if (l1 == 1) {
int j2 = stream.readUnsignedByte();
if (j2 == 1)
j2 = 0;
if (l == 0) {
tileHeights[0][k][i] = -j2 * 8;
return;
} else {
tileHeights[l][k][i] = tileHeights[l - 1][k][i] - j2 * 8;
return;
}
}
if (l1 <= 49) {
overlays[l][k][i] = (short) stream.readSignedWord();
overlayTypes[l][k][i] = (byte) ((l1 - 2) / 4);
overlayOrientations[l][k][i] = (byte) ((l1 - 2) + i1 & 3);
} else if (l1 <= 81)
tileFlags[l][k][i] = (byte) (l1 - 49);
else
underlays[l][k][i] = (short) (l1 - 81);
} while (true);
}
do {
int i2 = stream.readUShort();
if (i2 == 0)
break;
if (i2 == 1) {
stream.readUnsignedByte();
return;
}
if (i2 <= 49)
stream.readSignedWord();
} while (true);
} catch (Exception e) {
}
}that should do it