5b6dfb3463
This work is 100% unfinished. I am pushing it up so that we as a team can work on this update. Do not try to use this branch. You will fail.
51 Zeilen
2.3 KiB
Diff
51 Zeilen
2.3 KiB
Diff
From 6aca1eb30fa703436f9e195e2a3b17c38c223f15 Mon Sep 17 00:00:00 2001
|
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
|
Date: Sun, 21 Jun 2015 15:07:20 -0400
|
|
Subject: [PATCH] Custom replacement for eaten items
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
index 2aaeac324..7e2cc66d7 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -2377,12 +2377,13 @@ public abstract class EntityLiving extends Entity {
|
|
|
|
protected void v() {
|
|
if (!this.activeItem.isEmpty() && this.isHandRaised()) {
|
|
+ PlayerItemConsumeEvent event = null; // Paper
|
|
this.b(this.activeItem, 16);
|
|
// CraftBukkit start - fire PlayerItemConsumeEvent
|
|
ItemStack itemstack;
|
|
if (this instanceof EntityPlayer) {
|
|
org.bukkit.inventory.ItemStack craftItem = CraftItemStack.asBukkitCopy(this.activeItem);
|
|
- PlayerItemConsumeEvent event = new PlayerItemConsumeEvent((Player) this.getBukkitEntity(), craftItem);
|
|
+ event = new PlayerItemConsumeEvent((Player) this.getBukkitEntity(), craftItem); // Paper
|
|
world.getServer().getPluginManager().callEvent(event);
|
|
|
|
if (event.isCancelled()) {
|
|
@@ -2397,9 +2398,21 @@ public abstract class EntityLiving extends Entity {
|
|
itemstack = this.activeItem.a(this.world, this);
|
|
}
|
|
|
|
+ // Paper start - save the default replacement item and change it if necessary
|
|
+ final ItemStack defaultReplacement = itemstack;
|
|
+ if (event != null && event.getReplacement() != null) {
|
|
+ itemstack = CraftItemStack.asNMSCopy(event.getReplacement());
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
this.a(this.cH(), itemstack);
|
|
// CraftBukkit end
|
|
this.cN();
|
|
+
|
|
+ // Paper start - if the replacement is anything but the default, update the client inventory
|
|
+ if (this instanceof EntityPlayer && !com.google.common.base.Objects.equal(defaultReplacement, itemstack)) {
|
|
+ ((EntityPlayer) this).getBukkitEntity().updateInventory();
|
|
+ }
|
|
}
|
|
|
|
}
|
|
--
|
|
2.18.0
|
|
|