summaryrefslogtreecommitdiffstats
path: root/src/main/java/net
diff options
context:
space:
mode:
authordurron597 <martin.jared@gmail.com>2011-01-01 18:48:58 -0500
committerdurron597 <martin.jared@gmail.com>2011-01-01 18:48:58 -0500
commitc80748c8cca9ff248fcdca77cd30b75d52736a25 (patch)
tree419454b8e005b4f5a211fdb3db203a86c3ce6547 /src/main/java/net
parentcb7e2ee234489dc9ea22f02070c5b55ddd79139e (diff)
downloadcraftbukkit-c80748c8cca9ff248fcdca77cd30b75d52736a25.tar
craftbukkit-c80748c8cca9ff248fcdca77cd30b75d52736a25.tar.gz
craftbukkit-c80748c8cca9ff248fcdca77cd30b75d52736a25.tar.lz
craftbukkit-c80748c8cca9ff248fcdca77cd30b75d52736a25.tar.xz
craftbukkit-c80748c8cca9ff248fcdca77cd30b75d52736a25.zip
Changed BLOCK_CANBUILD to have some checks that user can't override
(building on top of themselves, for example)
Diffstat (limited to 'src/main/java/net')
-rw-r--r--src/main/java/net/minecraft/server/WorldServer.java30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 765e2505..b01d0488 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -90,15 +90,39 @@ public class WorldServer extends World {
@Override
// XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED!
public boolean a(int i1, int j1, int k1, int l1, boolean flag) {
- boolean superResult = super.a(i1, j1, k1, l1, flag);
+ int i2 = a(j1, k1, l1);
+ Block block = Block.m[i2];
+ Block block1 = Block.m[i1];
+ AxisAlignedBB axisalignedbb = block1.d(this, j1, k1, l1);
+
+ // Craftbukkit - We dont want to allow the user to override the bounding box check
+ if (flag) {
+ axisalignedbb = null;
+ }
+ if (axisalignedbb != null && !a(axisalignedbb)) {
+ return false;
+ }
+ // Craftbukkit - check this first as we dont want to allow the user to override this either
+ // Notch checks it after the check to see if block is water, lava, fire, portal
+ if (!(i1 > 0 && block == null)) return false;
+
+ boolean defaultReturn;
+
+ if (block == Block.A || block == Block.B || block == Block.C || block == Block.D || block == Block.ar || block == Block.aS) {
+ defaultReturn = true;
+ } else {
+ defaultReturn = block1.a(this, j1, k1, l1);
+ }
+
+ // Craftbukkit - If flag is true, it's natural, not user placement. Don't hook.
if (!flag) {
- BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j1, k1, l1), i1, superResult);
+ BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j1, k1, l1), i1, defaultReturn);
server.getPluginManager().callEvent(event);
return event.isBuildable();
} else {
- return superResult;
+ return defaultReturn;
}
}
// CraftBukkit stop