summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorErik Broes <erikbroes@grum.nl>2011-12-01 21:43:46 +0100
committerErik Broes <erikbroes@grum.nl>2011-12-01 21:43:46 +0100
commit650717ad32a4294ecfff951c86a812d7b5b74974 (patch)
tree3aea0e82695ddf7285a34950e26df9b9f927a11e /src
parentda6b412fd28bbfe497d18fec0ce6d056753e1981 (diff)
downloadcraftbukkit-650717ad32a4294ecfff951c86a812d7b5b74974.tar
craftbukkit-650717ad32a4294ecfff951c86a812d7b5b74974.tar.gz
craftbukkit-650717ad32a4294ecfff951c86a812d7b5b74974.tar.lz
craftbukkit-650717ad32a4294ecfff951c86a812d7b5b74974.tar.xz
craftbukkit-650717ad32a4294ecfff951c86a812d7b5b74974.zip
Fire BlockPlace event when placing a lilypad, Thanks DiddiZ; Fixes BUKKIT-162
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/ItemWaterLily.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/ItemWaterLily.java b/src/main/java/net/minecraft/server/ItemWaterLily.java
new file mode 100644
index 00000000..694c74f5
--- /dev/null
+++ b/src/main/java/net/minecraft/server/ItemWaterLily.java
@@ -0,0 +1,57 @@
+package net.minecraft.server;
+
+// CraftBukkit start
+import org.bukkit.craftbukkit.block.CraftBlockState;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.event.block.BlockPlaceEvent;
+// CraftBukkit end
+
+public class ItemWaterLily extends ItemColoredBlock {
+
+ public ItemWaterLily(int i) {
+ super(i, false);
+ }
+
+ public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) {
+ MovingObjectPosition movingobjectposition = this.a(world, entityhuman, true);
+
+ if (movingobjectposition == null) {
+ return itemstack;
+ } else {
+ if (movingobjectposition.type == EnumMovingObjectType.TILE) {
+ int i = movingobjectposition.b;
+ int j = movingobjectposition.c;
+ int k = movingobjectposition.d;
+
+ if (!world.a(entityhuman, i, j, k)) {
+ return itemstack;
+ }
+
+ if (!entityhuman.d(i, j, k)) {
+ return itemstack;
+ }
+
+ if (world.getMaterial(i, j, k) == Material.WATER && world.getData(i, j, k) == 0 && world.isEmpty(i, j + 1, k)) {
+ CraftBlockState blockState = CraftBlockState.getBlockState(world, i, j + 1, k); // CraftBukkit
+
+ world.setTypeId(i, j + 1, k, Block.WATER_LILY.id);
+
+ // CraftBukkit start - waterlily
+ BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, Block.WATER_LILY.id);
+
+ if (event.isCancelled() || !event.canBuild()) {
+ event.getBlockPlaced().setTypeId(0);
+ return itemstack;
+ }
+ // CraftBukkit end
+
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ --itemstack.count;
+ }
+ }
+ }
+
+ return itemstack;
+ }
+ }
+}