summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Seidel <psycowithespn1@aim.com>2012-12-27 16:30:08 -0500
committerGJ <gjmcferrin@gmail.com>2013-03-24 14:04:27 -0400
commit7c40a073d8b173dde3f7c13985b5b587e6158894 (patch)
tree26ae39e305ac673ff9b20ff20ce9e771f9211cec
parentb5320429731b10a48d4d9892a5f73c533144cb57 (diff)
downloadcraftbukkit-7c40a073d8b173dde3f7c13985b5b587e6158894.tar
craftbukkit-7c40a073d8b173dde3f7c13985b5b587e6158894.tar.gz
craftbukkit-7c40a073d8b173dde3f7c13985b5b587e6158894.tar.lz
craftbukkit-7c40a073d8b173dde3f7c13985b5b587e6158894.tar.xz
craftbukkit-7c40a073d8b173dde3f7c13985b5b587e6158894.zip
Add ability to change player item in hand. Adds BUKKIT-3318
-rw-r--r--src/main/java/net/minecraft/server/PlayerConnection.java4
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java9
2 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 13c27051..00c68615 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -760,6 +760,10 @@ public class PlayerConnection extends Connection {
if (packet16blockitemswitch.itemInHandIndex >= 0 && packet16blockitemswitch.itemInHandIndex < PlayerInventory.getHotbarSize()) {
PlayerItemHeldEvent event = new PlayerItemHeldEvent(this.getPlayer(), this.player.inventory.itemInHandIndex, packet16blockitemswitch.itemInHandIndex);
this.server.getPluginManager().callEvent(event);
+ if (event.isCancelled()) {
+ this.sendPacket(new Packet16BlockItemSwitch(this.player.inventory.itemInHandIndex));
+ return;
+ }
// CraftBukkit end
this.player.inventory.itemInHandIndex = packet16blockitemswitch.itemInHandIndex;
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
index 9c959494..50ae773a 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
@@ -1,7 +1,10 @@
package org.bukkit.craftbukkit.inventory;
+import net.minecraft.server.Packet16BlockItemSwitch;
import net.minecraft.server.PlayerInventory;
+import org.apache.commons.lang.Validate;
+import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.bukkit.entity.HumanEntity;
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.ItemStack;
@@ -33,6 +36,12 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
return getInventory().itemInHandIndex;
}
+ public void setHeldItemSlot(int slot) {
+ Validate.isTrue(slot >= 0 && slot < PlayerInventory.getHotbarSize(), "Slot is not between 0 and 8 inclusive");
+ this.getInventory().itemInHandIndex = slot;
+ ((CraftPlayer) this.getHolder()).getHandle().playerConnection.sendPacket(new Packet16BlockItemSwitch(slot));
+ }
+
public ItemStack getHelmet() {
return getItem(getSize() + 3);
}