summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authordurron597 <martin.jared@gmail.com>2011-01-01 18:14:26 -0500
committerdurron597 <martin.jared@gmail.com>2011-01-01 18:14:26 -0500
commitce271f8abca88e980a97b1a87918cc428e3c7f9a (patch)
tree71134b281b75db17c62019f404640dca1913e93c /src/main/java
parentebc0eeec2dfb34ca63f6ac43dfde428c772d4314 (diff)
downloadcraftbukkit-ce271f8abca88e980a97b1a87918cc428e3c7f9a.tar
craftbukkit-ce271f8abca88e980a97b1a87918cc428e3c7f9a.tar.gz
craftbukkit-ce271f8abca88e980a97b1a87918cc428e3c7f9a.tar.lz
craftbukkit-ce271f8abca88e980a97b1a87918cc428e3c7f9a.tar.xz
craftbukkit-ce271f8abca88e980a97b1a87918cc428e3c7f9a.zip
Changed base of the source file to be based off of grum/mc-dev:
net/minecraft/server/BlockFlowing.java
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/minecraft/server/BlockFlowing.java262
1 files changed, 145 insertions, 117 deletions
diff --git a/src/main/java/net/minecraft/server/BlockFlowing.java b/src/main/java/net/minecraft/server/BlockFlowing.java
index 0fba19fd..d5d7ef8f 100644
--- a/src/main/java/net/minecraft/server/BlockFlowing.java
+++ b/src/main/java/net/minecraft/server/BlockFlowing.java
@@ -1,5 +1,6 @@
package net.minecraft.server;
+
import java.util.Random;
import org.bukkit.BlockFace;
@@ -7,246 +8,273 @@ import org.bukkit.craftbukkit.CraftBlock;
import org.bukkit.event.Event.Type;
import org.bukkit.event.block.BlockFromToEvent;
-public class BlockFlowing extends BlockFluids
-{
+public class BlockFlowing extends BlockFluids {
+
+ int a;
+ boolean b[];
+ int c[];
- protected BlockFlowing(int i1, Material material)
- {
+ protected BlockFlowing(int i1, Material material) {
super(i1, material);
a = 0;
b = new boolean[4];
c = new int[4];
}
- private void i(World world, int i1, int j1, int k1)
- {
+ private void i(World world, int i1, int j1, int k1) {
int l1 = world.b(i1, j1, k1);
+
world.a(i1, j1, k1, bh + 1, l1);
world.b(i1, j1, k1, i1, j1, k1);
world.g(i1, j1, k1);
}
- public void a(World world, int i1, int j1, int k1, Random random)
- {
+ public void a(World world, int i1, int j1, int k1, Random random) {
int l1 = g(world, i1, j1, k1);
byte byte0 = 1;
- if(bs == Material.g && !world.q.d)
+
+ if (bs == Material.g && !world.q.d) {
byte0 = 2;
+ }
boolean flag = true;
- if(l1 > 0)
- {
+
+ if (l1 > 0) {
int i2 = -100;
+
a = 0;
i2 = e(world, i1 - 1, j1, k1, i2);
i2 = e(world, i1 + 1, j1, k1, i2);
i2 = e(world, i1, j1, k1 - 1, i2);
i2 = e(world, i1, j1, k1 + 1, i2);
int j2 = i2 + byte0;
- if(j2 >= 8 || i2 < 0)
+
+ if (j2 >= 8 || i2 < 0) {
j2 = -1;
- if(g(world, i1, j1 + 1, k1) >= 0)
- {
+ }
+ if (g(world, i1, j1 + 1, k1) >= 0) {
int l2 = g(world, i1, j1 + 1, k1);
- if(l2 >= 8)
+
+ if (l2 >= 8) {
j2 = l2;
- else
+ } else {
j2 = l2 + 8;
+ }
}
- if(a >= 2 && bs == Material.f)
- if(world.d(i1, j1 - 1, k1))
+ if (a >= 2 && bs == Material.f) {
+ if (world.d(i1, j1 - 1, k1)) {
+ j2 = 0;
+ } else if (world.c(i1, j1 - 1, k1) == bs && world.b(i1, j1, k1) == 0) {
j2 = 0;
- else
- if(world.c(i1, j1 - 1, k1) == bs && world.b(i1, j1, k1) == 0)
- j2 = 0;
- if(bs == Material.g && l1 < 8 && j2 < 8 && j2 > l1 && random.nextInt(4) != 0)
- {
+ }
+ }
+ if (bs == Material.g && l1 < 8 && j2 < 8 && j2 > l1 && random.nextInt(4) != 0) {
j2 = l1;
flag = false;
}
- if(j2 != l1)
- {
+ if (j2 != l1) {
l1 = j2;
- if(l1 < 0)
- {
+ if (l1 < 0) {
world.d(i1, j1, k1, 0);
- } else
- {
+ } else {
world.b(i1, j1, k1, l1);
world.h(i1, j1, k1, bh);
world.g(i1, j1, k1, bh);
}
- } else
- if(flag)
- i(world, i1, j1, k1);
- } else
- {
+ } else if (flag) {
+ i(world, i1, j1, k1);
+ }
+ } else {
i(world, i1, j1, k1);
}
-
+
// Craftbukkit start
CraftBlock source = (CraftBlock) ((WorldServer) world).getWorld().getBlockAt(i1, j1, k1);
-
- if(l(world, i1, j1 - 1, k1))
- {
+ if (l(world, i1, j1 - 1, k1)) {
// Craftbucket send "down" to the server
BlockFromToEvent blockFlow = new BlockFromToEvent(Type.BLOCK_FLOW, source, BlockFace.Down);
((WorldServer) world).getServer().getPluginManager().callEvent(blockFlow);
if (!blockFlow.isCancelled()) {
- if(l1 >= 8)
+ if (l1 >= 8) {
world.b(i1, j1 - 1, k1, bh, l1);
- else
+ } else {
world.b(i1, j1 - 1, k1, bh, l1 + 8);
+ }
}
- } else
- if(l1 >= 0 && (l1 == 0 || k(world, i1, j1 - 1, k1)))
- {
- boolean aflag[] = j(world, i1, j1, k1);
- int k2 = l1 + byte0;
- if(l1 >= 8)
- k2 = 1;
- if(k2 >= 8)
- return;
-
- // Craftbukkit start
- BlockFace[] faces = new BlockFace[]{ BlockFace.North, BlockFace.South, BlockFace.East, BlockFace.West };
- for (BlockFace currentFace : faces) {
- int index = 0;
- if (aflag[index]) {
- BlockFromToEvent event = new BlockFromToEvent(Type.BLOCK_FLOW, source, currentFace);
- ((WorldServer) world).getServer().getPluginManager().callEvent(event);
- if (!event.isCancelled())
- f(world, i1 + currentFace.getModX(), j1, k1 + currentFace.getModZ(), k2);
- }
- index++;
+ } else if (l1 >= 0 && (l1 == 0 || k(world, i1, j1 - 1, k1))) {
+ boolean aflag[] = j(world, i1, j1, k1);
+ int k2 = l1 + byte0;
+
+ if (l1 >= 8) {
+ k2 = 1;
+ }
+ if (k2 >= 8) {
+ return;
+ }
+ // Craftbukkit all four cardinal directions. Do not change the order!
+ BlockFace[] faces = new BlockFace[]{ BlockFace.North, BlockFace.South, BlockFace.East, BlockFace.West };
+ for (BlockFace currentFace : faces) {
+ int index = 0;
+ if (aflag[index]) {
+ BlockFromToEvent event = new BlockFromToEvent(Type.BLOCK_FLOW, source, currentFace);
+ ((WorldServer) world).getServer().getPluginManager().callEvent(event);
+ if (!event.isCancelled())
+ f(world, i1 + currentFace.getModX(), j1, k1 + currentFace.getModZ(), k2);
}
- // Craftbukkit stop
+ index++;
}
+ }
+ // Craftbukkit stop
}
- private void f(World world, int i1, int j1, int k1, int l1)
- {
- if(l(world, i1, j1, k1))
- {
+ private void f(World world, int i1, int j1, int k1, int l1) {
+ if (l(world, i1, j1, k1)) {
int i2 = world.a(i1, j1, k1);
- if(i2 > 0)
- if(bs == Material.g)
+
+ if (i2 > 0) {
+ if (bs == Material.g) {
h(world, i1, j1, k1);
- else
+ } else {
Block.m[i2].a_(world, i1, j1, k1, world.b(i1, j1, k1));
+ }
+ }
world.b(i1, j1, k1, bh, l1);
}
}
- private int a(World world, int i1, int j1, int k1, int l1, int i2)
- {
+ private int a(World world, int i1, int j1, int k1, int l1, int i2) {
int j2 = 1000;
- for(int k2 = 0; k2 < 4; k2++)
- {
- if(k2 == 0 && i2 == 1 || k2 == 1 && i2 == 0 || k2 == 2 && i2 == 3 || k2 == 3 && i2 == 2)
+
+ for (int k2 = 0; k2 < 4; k2++) {
+ if (k2 == 0 && i2 == 1 || k2 == 1 && i2 == 0 || k2 == 2 && i2 == 3 || k2 == 3 && i2 == 2) {
continue;
+ }
int l2 = i1;
int i3 = j1;
int j3 = k1;
- if(k2 == 0)
+
+ if (k2 == 0) {
l2--;
- if(k2 == 1)
+ }
+ if (k2 == 1) {
l2++;
- if(k2 == 2)
+ }
+ if (k2 == 2) {
j3--;
- if(k2 == 3)
+ }
+ if (k2 == 3) {
j3++;
- if(k(world, l2, i3, j3) || world.c(l2, i3, j3) == bs && world.b(l2, i3, j3) == 0)
+ }
+ if (k(world, l2, i3, j3) || world.c(l2, i3, j3) == bs && world.b(l2, i3, j3) == 0) {
continue;
- if(!k(world, l2, i3 - 1, j3))
+ }
+ if (!k(world, l2, i3 - 1, j3)) {
return l1;
- if(l1 >= 4)
+ }
+ if (l1 >= 4) {
continue;
+ }
int k3 = a(world, l2, i3, j3, l1 + 1, k2);
- if(k3 < j2)
+
+ if (k3 < j2) {
j2 = k3;
+ }
}
return j2;
}
- private boolean[] j(World world, int i1, int j1, int k1)
- {
- for(int l1 = 0; l1 < 4; l1++)
- {
+ private boolean[] j(World world, int i1, int j1, int k1) {
+ for (int l1 = 0; l1 < 4; l1++) {
c[l1] = 1000;
int j2 = i1;
int i3 = j1;
int j3 = k1;
- if(l1 == 0)
+
+ if (l1 == 0) {
j2--;
- if(l1 == 1)
+ }
+ if (l1 == 1) {
j2++;
- if(l1 == 2)
+ }
+ if (l1 == 2) {
j3--;
- if(l1 == 3)
+ }
+ if (l1 == 3) {
j3++;
- if(k(world, j2, i3, j3) || world.c(j2, i3, j3) == bs && world.b(j2, i3, j3) == 0)
+ }
+ if (k(world, j2, i3, j3) || world.c(j2, i3, j3) == bs && world.b(j2, i3, j3) == 0) {
continue;
- if(!k(world, j2, i3 - 1, j3))
+ }
+ if (!k(world, j2, i3 - 1, j3)) {
c[l1] = 0;
- else
+ } else {
c[l1] = a(world, j2, i3, j3, 1, l1);
+ }
}
int i2 = c[0];
- for(int k2 = 1; k2 < 4; k2++)
- if(c[k2] < i2)
+
+ for (int k2 = 1; k2 < 4; k2++) {
+ if (c[k2] < i2) {
i2 = c[k2];
+ }
+ }
- for(int l2 = 0; l2 < 4; l2++)
+ for (int l2 = 0; l2 < 4; l2++) {
b[l2] = c[l2] == i2;
+ }
return b;
}
- private boolean k(World world, int i1, int j1, int k1)
- {
+ private boolean k(World world, int i1, int j1, int k1) {
int l1 = world.a(i1, j1, k1);
- if(l1 == Block.aE.bh || l1 == Block.aL.bh || l1 == Block.aD.bh || l1 == Block.aF.bh || l1 == Block.aX.bh)
+
+ if (l1 == Block.aE.bh || l1 == Block.aL.bh || l1 == Block.aD.bh || l1 == Block.aF.bh || l1 == Block.aX.bh) {
return true;
- if(l1 == 0)
+ }
+ if (l1 == 0) {
return false;
+ }
Material material = Block.m[l1].bs;
+
return material.a();
}
- protected int e(World world, int i1, int j1, int k1, int l1)
- {
+ protected int e(World world, int i1, int j1, int k1, int l1) {
int i2 = g(world, i1, j1, k1);
- if(i2 < 0)
+
+ if (i2 < 0) {
return l1;
- if(i2 == 0)
+ }
+ if (i2 == 0) {
a++;
- if(i2 >= 8)
+ }
+ if (i2 >= 8) {
i2 = 0;
+ }
return l1 >= 0 && i2 >= l1 ? l1 : i2;
}
- private boolean l(World world, int i1, int j1, int k1)
- {
+ private boolean l(World world, int i1, int j1, int k1) {
Material material = world.c(i1, j1, k1);
- if(material == bs)
+
+ if (material == bs) {
return false;
- if(material == Material.g)
+ }
+ if (material == Material.g) {
return false;
- else
+ } else {
return !k(world, i1, j1, k1);
+ }
}
- public void e(World world, int i1, int j1, int k1)
- {
+ public void e(World world, int i1, int j1, int k1) {
super.e(world, i1, j1, k1);
- if(world.a(i1, j1, k1) == bh)
+ if (world.a(i1, j1, k1) == bh) {
world.h(i1, j1, k1, bh);
+ }
}
+}
- int a;
- boolean b[];
- int c[];
-} \ No newline at end of file