diff options
author | Erik Broes <erikbroes@grum.nl> | 2011-03-23 12:22:13 +0100 |
---|---|---|
committer | Erik Broes <erikbroes@grum.nl> | 2011-03-23 16:51:43 +0100 |
commit | f33de669fb1cb86ba668d60ba2f2352fd63b4417 (patch) | |
tree | 0b713c8318cb327e564ab94951c2f1e9324cfe14 /src/main/java/net/minecraft/server/ItemInWorldManager.java | |
parent | bb9558adec41922473de87718a53f5d3533deb7a (diff) | |
download | craftbukkit-f33de669fb1cb86ba668d60ba2f2352fd63b4417.tar craftbukkit-f33de669fb1cb86ba668d60ba2f2352fd63b4417.tar.gz craftbukkit-f33de669fb1cb86ba668d60ba2f2352fd63b4417.tar.lz craftbukkit-f33de669fb1cb86ba668d60ba2f2352fd63b4417.tar.xz craftbukkit-f33de669fb1cb86ba668d60ba2f2352fd63b4417.zip |
Major overhaul implementing PLAYER_INTERACT, removing PLAYER_ITEM, BLOCK_INTERACT, BLOCK_RIGHT_CLICK
Diffstat (limited to 'src/main/java/net/minecraft/server/ItemInWorldManager.java')
-rw-r--r-- | src/main/java/net/minecraft/server/ItemInWorldManager.java | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/main/java/net/minecraft/server/ItemInWorldManager.java b/src/main/java/net/minecraft/server/ItemInWorldManager.java index f3156e07..daa1aad0 100644 --- a/src/main/java/net/minecraft/server/ItemInWorldManager.java +++ b/src/main/java/net/minecraft/server/ItemInWorldManager.java @@ -1,8 +1,12 @@ package net.minecraft.server; // CraftBukkit start -import org.bukkit.craftbukkit.CraftServer; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.bukkit.event.Event; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; // CraftBukkit end public class ItemInWorldManager { @@ -51,9 +55,18 @@ public class ItemInWorldManager { this.d = this.j; int l = this.b.getTypeId(i, j, k); - if (l > 0) { + // CraftBukkit start + // Swings at air do *NOT* exist. + if (l <= 0) { + return; + } + + PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.a, Action.LEFT_CLICK_BLOCK , i, j, k, -1, this.a.inventory.b()); + + if (event.useInteractedBlock() != Event.Result.DENY) { Block.byId[l].b(this.b, i, j, k, this.a); } + // CraftBukkit end if (l > 0 && Block.byId[l].a(this.a) >= 1.0F) { this.d(i, j, k); @@ -157,6 +170,18 @@ public class ItemInWorldManager { public boolean a(EntityHuman entityhuman, World world, ItemStack itemstack, int i, int j, int k, int l) { int i1 = world.getTypeId(i, j, k); - return i1 > 0 && Block.byId[i1].a(world, i, j, k, entityhuman) ? true : (itemstack == null ? false : itemstack.a(entityhuman, world, i, j, k, l)); + // CraftBukkit start - Interact + boolean result = false; + if (i1 > 0) { + PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(entityhuman, Action.RIGHT_CLICK_BLOCK, i, j, k, l, itemstack); + if (event.useInteractedBlock() != Event.Result.DENY) { + result = Block.byId[i1].a(world, i, j, k, entityhuman); + } + if (itemstack != null && event.useItemInHand() != Event.Result.DENY && (!result || event.useItemInHand() == Event.Result.ALLOW)) { + result = itemstack.a(entityhuman, world, i, j, k, l); + } + } + return result; } + // CraftBukkit end } |