Created
May 16, 2015 20:36
-
-
Save jarcode-foss/39edb323e5e07aa3bf51 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
boolean updated = false; | |
int i = 1 << scale; | |
int l = MathHelper.floor(updateX - (double) centerX) / i + 64; | |
int i1 = MathHelper.floor(updateZ - (double) centerZ) / i + 64; | |
int j1 = 128 / i; | |
if(world.worldProvider.o()) { | |
j1 /= 2; | |
} | |
for(int k1 = l - j1 + 1; k1 < l + j1; ++k1) { | |
double d0 = 0.0D; | |
for(int l1 = i1 - j1 - 1; l1 < i1 + j1; ++l1) { | |
if(k1 >= 0 && l1 >= -1 && k1 < 128 && l1 < 128) { | |
int i2 = k1 - l; | |
int j2 = l1 - i1; | |
boolean flag1 = i2 * i2 + j2 * j2 > (j1 - 2) * (j1 - 2); | |
int k2 = (centerX / i + k1 - 64) * i; | |
int l2 = (centerZ / i + l1 - 64) * i; | |
HashMultiset hashmultiset = HashMultiset.create(); | |
Chunk chunk = world.getChunkAtWorldCoords(new BlockPosition(k2, 0, l2)); | |
System.out.println("Updating chunk: " + chunk.locX + ", " + chunk.locZ); | |
if(!chunk.isEmpty()) { | |
int i3 = k2 & 15; | |
int j3 = l2 & 15; | |
int k3 = 0; | |
double d1 = 0.0D; | |
if(world.worldProvider.o()) { | |
int blockPosition = k2 + l2 * 231871; | |
blockPosition = blockPosition * blockPosition * 31287121 + blockPosition * 11; | |
if((blockPosition >> 20 & 1) == 0) { | |
hashmultiset.add(Blocks.DIRT.g(Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.DIRT)), 10); | |
} else { | |
hashmultiset.add(Blocks.STONE.g(Blocks.STONE.getBlockData().set(BlockStone.VARIANT, BlockStone.EnumStoneVariant.STONE)), 100); | |
} | |
d1 = 100.0D; | |
} else { | |
BlockPosition.MutableBlockPosition var37 = new BlockPosition.MutableBlockPosition(); | |
for(int i4 = 0; i4 < i; ++i4) { | |
for(int b0 = 0; b0 < i; ++b0) { | |
int material = chunk.b(i4 + i3, b0 + j3) + 1; | |
IBlockData b1 = Blocks.AIR.getBlockData(); | |
if(material > 1) { | |
do { | |
--material; | |
b1 = chunk.getBlockData(var37.c(i4 + i3, material, b0 + j3)); | |
} while(b1.getBlock().g(b1) == MaterialMapColor.b && material > 0); | |
if(material > 0 && b1.getBlock().getMaterial().isLiquid()) { | |
int b2 = material - 1; | |
Block block; | |
do { | |
block = chunk.getTypeAbs(i4 + i3, b2--, b0 + j3); | |
++k3; | |
} while(b2 > 0 && block.getMaterial().isLiquid()); | |
} | |
} | |
d1 += (double)material / (double)(i * i); | |
hashmultiset.add(b1.getBlock().g(b1)); | |
} | |
} | |
} | |
k3 /= i * i; | |
double d2 = (d1 - d0) * 4.0D / (double)(i + 4) + ((double)(k1 + l1 & 1) - 0.5D) * 0.4D; | |
byte var38 = 1; | |
if(d2 > 0.6D) { | |
var38 = 2; | |
} | |
if(d2 < -0.6D) { | |
var38 = 0; | |
} | |
MaterialMapColor var39 = Iterables.getFirst(Multisets.copyHighestCountFirst(hashmultiset), MaterialMapColor.b); | |
if(var39 == MaterialMapColor.n) { | |
d2 = (double)k3 * 0.1D + (double)(k1 + l1 & 1) * 0.2D; | |
var38 = 1; | |
if(d2 < 0.5D) { | |
var38 = 2; | |
} | |
if(d2 > 0.9D) { | |
var38 = 0; | |
} | |
} | |
d0 = d1; | |
if(l1 >= 0 && i2 * i2 + j2 * j2 < j1 * j1 && (!flag1 || (k1 + l1 & 1) != 0)) { | |
synchronized (section.LOCK) { | |
byte var40 = section.colors[k1 + l1 * 128]; | |
assert var39 != null; | |
byte var41 = (byte) (var39.M * 4 + var38); | |
if (var40 != var41) { | |
section.colors[k1 + l1 * 128] = var41; | |
section.flag(k1, l1); | |
updated = true; | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
return updated; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment