diff options
author | Erik Broes <erikbroes@grum.nl> | 2011-12-01 21:43:46 +0100 |
---|---|---|
committer | Erik Broes <erikbroes@grum.nl> | 2011-12-01 21:43:46 +0100 |
commit | 650717ad32a4294ecfff951c86a812d7b5b74974 (patch) | |
tree | 3aea0e82695ddf7285a34950e26df9b9f927a11e /src/main/java/net/minecraft/server/ItemWaterLily.java | |
parent | da6b412fd28bbfe497d18fec0ce6d056753e1981 (diff) | |
download | craftbukkit-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/main/java/net/minecraft/server/ItemWaterLily.java')
-rw-r--r-- | src/main/java/net/minecraft/server/ItemWaterLily.java | 57 |
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;
+ }
+ }
+}
|