summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2013-01-16 08:03:35 -0600
committerfeildmaster <admin@feildmaster.com>2013-01-16 08:06:00 -0600
commit98aea835b5b74f841a0a92567a6987367b542c77 (patch)
tree9774bef4ed5c3f98076bde02c41b99241451a337
parent614ef2f8c5d8d1aa3deb0c08283b056cdeeb5d78 (diff)
downloadcraftbukkit-98aea835b5b74f841a0a92567a6987367b542c77.tar
craftbukkit-98aea835b5b74f841a0a92567a6987367b542c77.tar.gz
craftbukkit-98aea835b5b74f841a0a92567a6987367b542c77.tar.lz
craftbukkit-98aea835b5b74f841a0a92567a6987367b542c77.tar.xz
craftbukkit-98aea835b5b74f841a0a92567a6987367b542c77.zip
Handle beds and doors the same way as other blocks. Fixes BUKKIT-3437
Relates to: BUKKIT-3438
-rw-r--r--src/main/java/net/minecraft/server/ItemBed.java14
-rw-r--r--src/main/java/net/minecraft/server/ItemDoor.java19
2 files changed, 14 insertions, 19 deletions
diff --git a/src/main/java/net/minecraft/server/ItemBed.java b/src/main/java/net/minecraft/server/ItemBed.java
index bf83e2e3..e84ccd0a 100644
--- a/src/main/java/net/minecraft/server/ItemBed.java
+++ b/src/main/java/net/minecraft/server/ItemBed.java
@@ -15,8 +15,6 @@ public class ItemBed extends Item {
} else if (l != 1) {
return false;
} else {
- int clickedX = i, clickedY = j, clickedZ = k; // CraftBukkit
-
++j;
BlockBed blockbed = (BlockBed) Block.BED;
int i1 = MathHelper.floor((double) (entityhuman.yaw * 4.0F / 360.0F) + 0.5D) & 3;
@@ -41,15 +39,9 @@ public class ItemBed extends Item {
if (entityhuman.a(i, j, k, l, itemstack) && entityhuman.a(i + b0, j, k + b1, l, itemstack)) {
if (world.isEmpty(i, j, k) && world.isEmpty(i + b0, j, k + b1) && world.v(i, j - 1, k) && world.v(i + b0, j - 1, k + b1)) {
- CraftBlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
-
- world.setTypeIdAndData(i, j, k, blockbed.id, i1);
-
- // CraftBukkit start - bed
- org.bukkit.event.block.BlockPlaceEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ);
-
- if (event.isCancelled() || !event.canBuild()) {
- event.getBlockPlaced().setTypeIdAndData(blockState.getTypeId(), blockState.getRawData(), false);
+ // CraftBukkit start
+ //world.setTypeIdAndData(i, j, k, blockbed.id, i1);
+ if (!ItemBlock.processBlockPlace(world, entityhuman, null, i, j, k, blockbed.id, l)) {
return false;
}
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/ItemDoor.java b/src/main/java/net/minecraft/server/ItemDoor.java
index 6362d07e..4cbe26b5 100644
--- a/src/main/java/net/minecraft/server/ItemDoor.java
+++ b/src/main/java/net/minecraft/server/ItemDoor.java
@@ -1,7 +1,5 @@
package net.minecraft.server;
-import org.bukkit.craftbukkit.block.CraftBlockState; // CraftBukkit
-
public class ItemDoor extends Item {
private Material a;
@@ -85,17 +83,22 @@ public class ItemDoor extends Item {
flag2 = true;
}
- CraftBlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
world.suppressPhysics = true;
- world.setTypeIdAndData(i, j, k, block.id, l);
// CraftBukkit start
if (entityhuman != null) {
- org.bukkit.event.block.BlockPlaceEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k);
-
- if (event.isCancelled() || !event.canBuild()) {
- event.getBlockPlaced().setTypeIdAndData(blockState.getTypeId(), blockState.getRawData(), false);
+ if(!ItemBlock.processBlockPlace(world, entityhuman, null, i, j, k, block.id, l)) {
+ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet53BlockChange(i, j + 1, k, world));
return false;
}
+
+ if (world.getTypeId(i, j, k) != block.id) {
+ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet53BlockChange(i, j + 1, k, world));
+ return true;
+ }
+
+ world.suppressPhysics = true;
+ } else {
+ world.setTypeIdAndData(i, j, k, block.id, l);
}
// CraftBukkit end
world.setTypeIdAndData(i, j + 1, k, block.id, 8 | (flag2 ? 1 : 0));