summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/ItemWorldMap.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/ItemWorldMap.java')
-rw-r--r--src/main/java/net/minecraft/server/ItemWorldMap.java208
1 files changed, 107 insertions, 101 deletions
diff --git a/src/main/java/net/minecraft/server/ItemWorldMap.java b/src/main/java/net/minecraft/server/ItemWorldMap.java
index 0e6cc64a..7c1f926d 100644
--- a/src/main/java/net/minecraft/server/ItemWorldMap.java
+++ b/src/main/java/net/minecraft/server/ItemWorldMap.java
@@ -9,7 +9,8 @@ public class ItemWorldMap extends ItemWorldMapBase {
protected ItemWorldMap(int i) {
super(i);
- this.e(1);
+ this.d(1);
+ this.a(CreativeModeTab.f);
}
public WorldMap getSavedMap(ItemStack itemstack, World world) {
@@ -52,10 +53,10 @@ public class ItemWorldMap extends ItemWorldMapBase {
j1 /= 2;
}
- ++worldmap.g;
+ ++worldmap.f;
for (int k1 = l - j1 + 1; k1 < l + j1; ++k1) {
- if ((k1 & 15) == (worldmap.g & 15)) {
+ if ((k1 & 15) == (worldmap.f & 15)) {
int l1 = 255;
int i2 = 0;
double d0 = 0.0D;
@@ -72,130 +73,135 @@ public class ItemWorldMap extends ItemWorldMapBase {
byte b2 = 0;
int[] aint = new int[256];
Chunk chunk = world.getChunkAtWorldCoords(i3, j3);
- if (chunk.isEmpty()) continue; // CraftBukkit - fixes maps erasing themselves on low chunk visibility.
- int k3 = i3 & 15;
- int l3 = j3 & 15;
- int i4 = 0;
- double d1 = 0.0D;
- int j4;
- int k4;
- int l4;
- int i5;
-
- if (world.worldProvider.e) {
- l4 = i3 + j3 * 231871;
- l4 = l4 * l4 * 31287121 + l4 * 11;
- if ((l4 >> 20 & 1) == 0) {
- aint[Block.DIRT.id] += 10;
- } else {
- aint[Block.STONE.id] += 10;
- }
-
- d1 = 100.0D;
- } else {
- for (l4 = 0; l4 < i; ++l4) {
- for (j4 = 0; j4 < i; ++j4) {
- k4 = chunk.b(l4 + k3, j4 + l3) + 1;
- int j5 = 0;
-
- if (k4 > 1) {
- boolean flag1 = false;
-
- do {
- flag1 = true;
- j5 = chunk.getTypeId(l4 + k3, k4 - 1, j4 + l3);
- if (j5 == 0) {
- flag1 = false;
- } else if (k4 > 0 && j5 > 0 && Block.byId[j5].material.F == MaterialMapColor.b) {
- flag1 = false;
- }
- if (!flag1) {
- --k4;
- if (k4 <= 0) break; // CraftBukkit
- j5 = chunk.getTypeId(l4 + k3, k4 - 1, j4 + l3);
- }
- } while (k4 > 0 && !flag1);
+ if (!chunk.isEmpty()) {
+ int k3 = i3 & 15;
+ int l3 = j3 & 15;
+ int i4 = 0;
+ double d1 = 0.0D;
+ int j4;
+ int k4;
+ int l4;
+ int i5;
+
+ if (world.worldProvider.e) {
+ l4 = i3 + j3 * 231871;
+ l4 = l4 * l4 * 31287121 + l4 * 11;
+ if ((l4 >> 20 & 1) == 0) {
+ aint[Block.DIRT.id] += 10;
+ } else {
+ aint[Block.STONE.id] += 10;
+ }
- if (k4 > 0 && j5 != 0 && Block.byId[j5].material.isLiquid()) {
- i5 = k4 - 1;
- boolean flag2 = false;
+ d1 = 100.0D;
+ } else {
+ for (l4 = 0; l4 < i; ++l4) {
+ for (j4 = 0; j4 < i; ++j4) {
+ k4 = chunk.b(l4 + k3, j4 + l3) + 1;
+ int j5 = 0;
- int k5;
+ if (k4 > 1) {
+ boolean flag1 = false;
do {
- k5 = chunk.getTypeId(l4 + k3, i5--, j4 + l3);
- ++i4;
- } while (i5 > 0 && k5 != 0 && Block.byId[k5].material.isLiquid());
+ flag1 = true;
+ j5 = chunk.getTypeId(l4 + k3, k4 - 1, j4 + l3);
+ if (j5 == 0) {
+ flag1 = false;
+ } else if (k4 > 0 && j5 > 0 && Block.byId[j5].material.F == MaterialMapColor.b) {
+ flag1 = false;
+ }
+
+ if (!flag1) {
+ --k4;
+ if (k4 <= 0) {
+ break;
+ }
+
+ j5 = chunk.getTypeId(l4 + k3, k4 - 1, j4 + l3);
+ }
+ } while (k4 > 0 && !flag1);
+
+ if (k4 > 0 && j5 != 0 && Block.byId[j5].material.isLiquid()) {
+ i5 = k4 - 1;
+ boolean flag2 = false;
+
+ int k5;
+
+ do {
+ k5 = chunk.getTypeId(l4 + k3, i5--, j4 + l3);
+ ++i4;
+ } while (i5 > 0 && k5 != 0 && Block.byId[k5].material.isLiquid());
+ }
}
- }
- d1 += (double) k4 / (double) (i * i);
- ++aint[j5];
+ d1 += (double) k4 / (double) (i * i);
+ ++aint[j5];
+ }
}
}
- }
- i4 /= i * i;
- int l5 = b0 / (i * i);
+ i4 /= i * i;
+ int l5 = b0 / (i * i);
- l5 = b1 / (i * i);
- l5 = b2 / (i * i);
- l4 = 0;
- j4 = 0;
+ l5 = b1 / (i * i);
+ l5 = b2 / (i * i);
+ l4 = 0;
+ j4 = 0;
- for (k4 = 0; k4 < 256; ++k4) {
- if (aint[k4] > l4) {
- j4 = k4;
- l4 = aint[k4];
+ for (k4 = 0; k4 < 256; ++k4) {
+ if (aint[k4] > l4) {
+ j4 = k4;
+ l4 = aint[k4];
+ }
}
- }
- double d2 = (d1 - d0) * 4.0D / (double) (i + 4) + ((double) (k1 + j2 & 1) - 0.5D) * 0.4D;
- byte b3 = 1;
+ double d2 = (d1 - d0) * 4.0D / (double) (i + 4) + ((double) (k1 + j2 & 1) - 0.5D) * 0.4D;
+ byte b3 = 1;
- if (d2 > 0.6D) {
- b3 = 2;
- }
+ if (d2 > 0.6D) {
+ b3 = 2;
+ }
- if (d2 < -0.6D) {
- b3 = 0;
- }
+ if (d2 < -0.6D) {
+ b3 = 0;
+ }
- i5 = 0;
- if (j4 > 0) {
- MaterialMapColor materialmapcolor = Block.byId[j4].material.F;
+ i5 = 0;
+ if (j4 > 0) {
+ MaterialMapColor materialmapcolor = Block.byId[j4].material.F;
- if (materialmapcolor == MaterialMapColor.n) {
- d2 = (double) i4 * 0.1D + (double) (k1 + j2 & 1) * 0.2D;
- b3 = 1;
- if (d2 < 0.5D) {
- b3 = 2;
- }
+ if (materialmapcolor == MaterialMapColor.n) {
+ d2 = (double) i4 * 0.1D + (double) (k1 + j2 & 1) * 0.2D;
+ b3 = 1;
+ if (d2 < 0.5D) {
+ b3 = 2;
+ }
- if (d2 > 0.9D) {
- b3 = 0;
+ if (d2 > 0.9D) {
+ b3 = 0;
+ }
}
+
+ i5 = materialmapcolor.q;
}
- i5 = materialmapcolor.q;
- }
+ d0 = d1;
+ if (j2 >= 0 && k2 * k2 + l2 * l2 < j1 * j1 && (!flag || (k1 + j2 & 1) != 0)) {
+ byte b4 = worldmap.colors[k1 + j2 * short1];
+ byte b5 = (byte) (i5 * 4 + b3);
- d0 = d1;
- if (j2 >= 0 && k2 * k2 + l2 * l2 < j1 * j1 && (!flag || (k1 + j2 & 1) != 0)) {
- byte b4 = worldmap.colors[k1 + j2 * short1];
- byte b5 = (byte) (i5 * 4 + b3);
+ if (b4 != b5) {
+ if (l1 > j2) {
+ l1 = j2;
+ }
- if (b4 != b5) {
- if (l1 > j2) {
- l1 = j2;
- }
+ if (i2 < j2) {
+ i2 = j2;
+ }
- if (i2 < j2) {
- i2 = j2;
+ worldmap.colors[k1 + j2 * short1] = b5;
}
-
- worldmap.colors[k1 + j2 * short1] = b5;
}
}
}