mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 04:02:50 +01:00
c6aa61ee18
Updated Upstream (Bukkit/CraftBukkit/Spigot) Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: b9df8e9f SPIGOT-7933: Improve custom Minecart max speed fc496179 Fix InstrumentTest 7c0ec598 PR-1075: Make Art an interface c389f5a4 PR-1074: Make Sound an interface CraftBukkit Changes: df1efc0bb SPIGOT-7945: `Bukkit#dispatchCommand` throws `UnsupportedOperationException` 285df6e85 SPIGOT-7933: Improve custom Minecart max speed a0f3d4e50 SPIGOT-7940: Recipe book errors after reload 9e0618ec2 SPIGOT-7937: Cannot spawn minecart during world generation with minecart_improvements enabled 1eb4d28da SPIGOT-7941: Fix resistance over 4 amplify causing issues in damage 52b99158a PR-1504: Make Art an interface e18ae35f1 PR-1502: Make Sound an interface Spigot Changes: e65d67a7 SPIGOT-7934: Item entities start "bouncing" under certain conditions
48 lines
2.9 KiB
Diff
48 lines
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 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/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
index c177e3ba30b8807eb41ad7741706d9a017ab9717..21a356b3c7d3dec73e5c8feaa4afda479a7ec1a2 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -3983,10 +3983,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
if (!this.useItem.isEmpty() && this.isUsingItem()) {
|
|
// CraftBukkit start - fire PlayerItemConsumeEvent
|
|
ItemStack itemstack;
|
|
+ PlayerItemConsumeEvent event = null; // Paper
|
|
if (this instanceof ServerPlayer entityPlayer) {
|
|
org.bukkit.inventory.ItemStack craftItem = CraftItemStack.asBukkitCopy(this.useItem);
|
|
org.bukkit.inventory.EquipmentSlot hand = org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(enumhand);
|
|
- PlayerItemConsumeEvent event = new PlayerItemConsumeEvent((Player) this.getBukkitEntity(), craftItem, hand);
|
|
+ event = new PlayerItemConsumeEvent((Player) this.getBukkitEntity(), craftItem, hand); // Paper
|
|
this.level().getCraftServer().getPluginManager().callEvent(event);
|
|
|
|
if (event.isCancelled()) {
|
|
@@ -4004,6 +4005,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
} else {
|
|
itemstack = this.useItem.finishUsingItem(this.level(), 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
|
|
// CraftBukkit end
|
|
|
|
if (itemstack != this.useItem) {
|
|
@@ -4011,6 +4018,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
}
|
|
|
|
this.stopUsingItem();
|
|
+ // Paper start - if the replacement is anything but the default, update the client inventory
|
|
+ if (this instanceof ServerPlayer && !com.google.common.base.Objects.equal(defaultReplacement, itemstack)) {
|
|
+ ((ServerPlayer) this).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
}
|