diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockFlowing.java')
-rw-r--r-- | src/main/java/net/minecraft/server/BlockFlowing.java | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/src/main/java/net/minecraft/server/BlockFlowing.java b/src/main/java/net/minecraft/server/BlockFlowing.java deleted file mode 100644 index cdce3ff1..00000000 --- a/src/main/java/net/minecraft/server/BlockFlowing.java +++ /dev/null @@ -1,299 +0,0 @@ -package net.minecraft.server; - -import java.util.Random; - -// CraftBukkit start -import org.bukkit.block.BlockFace; -import org.bukkit.event.block.BlockFromToEvent; -// CraftBukkit end - -public class BlockFlowing extends BlockFluids { - - int a; - boolean[] b = new boolean[4]; - int[] M = new int[4]; - - protected BlockFlowing(Material material) { - super(material); - } - - private void n(World world, int i, int j, int k) { - int l = world.getData(i, j, k); - - world.setTypeAndData(i, j, k, Block.getById(Block.getId(this) + 1), l, 2); - } - - public void a(World world, int i, int j, int k, Random random) { - // CraftBukkit start - org.bukkit.World bworld = world.getWorld(); - org.bukkit.Server server = world.getServer(); - org.bukkit.block.Block source = bworld == null ? null : bworld.getBlockAt(i, j, k); - // CraftBukkit end - - int l = this.e(world, i, j, k); - byte b0 = 1; - - if (this.material == Material.LAVA && !world.worldProvider.f) { - b0 = 2; - } - - boolean flag = true; - int i1 = this.a(world); - int j1; - - if (l > 0) { - byte b1 = -100; - - this.a = 0; - int k1 = this.a(world, i - 1, j, k, b1); - - k1 = this.a(world, i + 1, j, k, k1); - k1 = this.a(world, i, j, k - 1, k1); - k1 = this.a(world, i, j, k + 1, k1); - j1 = k1 + b0; - if (j1 >= 8 || k1 < 0) { - j1 = -1; - } - - if (this.e(world, i, j + 1, k) >= 0) { - int l1 = this.e(world, i, j + 1, k); - - if (l1 >= 8) { - j1 = l1; - } else { - j1 = l1 + 8; - } - } - - if (this.a >= 2 && this.material == Material.WATER) { - if (world.getType(i, j - 1, k).getMaterial().isBuildable()) { - j1 = 0; - } else if (world.getType(i, j - 1, k).getMaterial() == this.material && world.getData(i, j - 1, k) == 0) { - j1 = 0; - } - } - - if (this.material == Material.LAVA && l < 8 && j1 < 8 && j1 > l && random.nextInt(4) != 0) { - i1 *= 4; - } - - if (j1 == l) { - if (flag) { - this.n(world, i, j, k); - } - } else { - l = j1; - if (j1 < 0) { - world.setAir(i, j, k); - } else { - world.setData(i, j, k, j1, 2); - world.a(i, j, k, this, i1); - world.applyPhysics(i, j, k, this); - } - } - } else { - this.n(world, i, j, k); - } - - if (this.q(world, i, j - 1, k)) { - // CraftBukkit start - Send "down" to the server - BlockFromToEvent event = new BlockFromToEvent(source, BlockFace.DOWN); - if (server != null) { - server.getPluginManager().callEvent(event); - } - - if (!event.isCancelled()) { - if (this.material == Material.LAVA && world.getType(i, j - 1, k).getMaterial() == Material.WATER) { - world.setTypeUpdate(i, j - 1, k, Blocks.STONE); - this.fizz(world, i, j - 1, k); - return; - } - - if (l >= 8) { - this.flow(world, i, j - 1, k, l); - } else { - this.flow(world, i, j - 1, k, l + 8); - } - } - // CraftBukkit end - } else if (l >= 0 && (l == 0 || this.p(world, i, j - 1, k))) { - boolean[] aboolean = this.o(world, i, j, k); - - j1 = l + b0; - if (l >= 8) { - j1 = 1; - } - - if (j1 >= 8) { - return; - } - - // CraftBukkit start - All four cardinal directions. Do not change the order! - BlockFace[] faces = new BlockFace[] { BlockFace.WEST, BlockFace.EAST, BlockFace.NORTH, BlockFace.SOUTH }; - int index = 0; - - for (BlockFace currentFace : faces) { - if (aboolean[index]) { - BlockFromToEvent event = new BlockFromToEvent(source, currentFace); - - if (server != null) { - server.getPluginManager().callEvent(event); - } - - if (!event.isCancelled()) { - this.flow(world, i + currentFace.getModX(), j, k + currentFace.getModZ(), j1); - } - } - index++; - } - // CraftBukkit end - } - } - - private void flow(World world, int i, int j, int k, int l) { - if (this.q(world, i, j, k)) { - Block block = world.getType(i, j, k); - - if (this.material == Material.LAVA) { - this.fizz(world, i, j, k); - } else { - block.b(world, i, j, k, world.getData(i, j, k), 0); - } - - world.setTypeAndData(i, j, k, this, l, 3); - } - } - - private int c(World world, int i, int j, int k, int l, int i1) { - int j1 = 1000; - - for (int k1 = 0; k1 < 4; ++k1) { - if ((k1 != 0 || i1 != 1) && (k1 != 1 || i1 != 0) && (k1 != 2 || i1 != 3) && (k1 != 3 || i1 != 2)) { - int l1 = i; - int i2 = k; - - if (k1 == 0) { - l1 = i - 1; - } - - if (k1 == 1) { - ++l1; - } - - if (k1 == 2) { - i2 = k - 1; - } - - if (k1 == 3) { - ++i2; - } - - if (!this.p(world, l1, j, i2) && (world.getType(l1, j, i2).getMaterial() != this.material || world.getData(l1, j, i2) != 0)) { - if (!this.p(world, l1, j - 1, i2)) { - return l; - } - - if (l < 4) { - int j2 = this.c(world, l1, j, i2, l + 1, k1); - - if (j2 < j1) { - j1 = j2; - } - } - } - } - } - - return j1; - } - - private boolean[] o(World world, int i, int j, int k) { - int l; - int i1; - - for (l = 0; l < 4; ++l) { - this.M[l] = 1000; - i1 = i; - int j1 = k; - - if (l == 0) { - i1 = i - 1; - } - - if (l == 1) { - ++i1; - } - - if (l == 2) { - j1 = k - 1; - } - - if (l == 3) { - ++j1; - } - - if (!this.p(world, i1, j, j1) && (world.getType(i1, j, j1).getMaterial() != this.material || world.getData(i1, j, j1) != 0)) { - if (this.p(world, i1, j - 1, j1)) { - this.M[l] = this.c(world, i1, j, j1, 1, l); - } else { - this.M[l] = 0; - } - } - } - - l = this.M[0]; - - for (i1 = 1; i1 < 4; ++i1) { - if (this.M[i1] < l) { - l = this.M[i1]; - } - } - - for (i1 = 0; i1 < 4; ++i1) { - this.b[i1] = this.M[i1] == l; - } - - return this.b; - } - - private boolean p(World world, int i, int j, int k) { - Block block = world.getType(i, j, k); - - return block != Blocks.WOODEN_DOOR && block != Blocks.IRON_DOOR_BLOCK && block != Blocks.SIGN_POST && block != Blocks.LADDER && block != Blocks.SUGAR_CANE_BLOCK ? (block.material == Material.PORTAL ? true : block.material.isSolid()) : true; - } - - protected int a(World world, int i, int j, int k, int l) { - int i1 = this.e(world, i, j, k); - - if (i1 < 0) { - return l; - } else { - if (i1 == 0) { - ++this.a; - } - - if (i1 >= 8) { - i1 = 0; - } - - return l >= 0 && i1 >= l ? l : i1; - } - } - - private boolean q(World world, int i, int j, int k) { - Material material = world.getType(i, j, k).getMaterial(); - - return material == this.material ? false : (material == Material.LAVA ? false : !this.p(world, i, j, k)); - } - - public void onPlace(World world, int i, int j, int k) { - super.onPlace(world, i, j, k); - if (world.getType(i, j, k) == this) { - world.a(i, j, k, this, this.a(world)); - } - } - - public boolean L() { - return true; - } -} |