geforkt von Mirrors/Paper
2873869bb1
Signs no longer have a specific isEdiable state, the entire API in this regard needs updating/deprecation. The boolean field is completely gone, replaced by a uuid (which will need a new setEditingPlayer(UUID) method on the Sign interface), and the current upstream implementation of setEdiable simply flips the is_waxed state. This patch is hence not needed as it neither allows editing (which will be redone in a later patch) nor is required to copy the is_waxed boolean flag as it lives in the signs compound tag and is covered by applyTo.
37 Zeilen
2.0 KiB
Diff
37 Zeilen
2.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Bjarne Koll <lynxplay101@gmail.com>
|
|
Date: Tue, 10 Jan 2023 21:06:42 +0100
|
|
Subject: [PATCH] Correctly shrink items during EntityResurrectEvent
|
|
|
|
The EntityResurrectEvent logic is supposed to locate a totem of undying
|
|
in any of the interaction slots of the player inventory and then, if the
|
|
called EntityResurrectEvent is not cancelled, shrink that item by 1,
|
|
usually reducing it to zero.
|
|
|
|
For this, the logic iterates over the items in the interaction slots and
|
|
breaks out the loop if a totem of undying was found.
|
|
However, even if no totem of undying was found, the iteration item stack
|
|
variable remains as a refernce to the last interaction slot probed.
|
|
|
|
Plugins uncancelling a EntityResurrectEvent, which is published
|
|
pre-cancelled to listeners if no totem of undying could be found,
|
|
would hence cause the server logic to shrink completely unrelated items
|
|
found in, at the writing of this patch, the players off hand slot.
|
|
|
|
This patch corrects this behaviour by only shrinking the item if a totem
|
|
of undying was found and the event was called uncancelled.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
index 7a6caded7f5c711e96fa0d6b177923c2a49004e4..16e98ca278c9005d7695a73582de2123abb68ac4 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -1592,7 +1592,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
this.level().getCraftServer().getPluginManager().callEvent(event);
|
|
|
|
if (!event.isCancelled()) {
|
|
- if (!itemstack1.isEmpty()) {
|
|
+ if (!itemstack1.isEmpty() && itemstack != null) { // Paper - only reduce item if actual totem was found
|
|
itemstack1.shrink(1);
|
|
}
|
|
if (itemstack != null && this instanceof ServerPlayer) {
|