Add pre-unbreaking amount to PlayerItemDamageEvent (#7724)
This commit is contained in:
parent
8bfb1d22f8
commit
c66b0f99f2
3 changed files with 82 additions and 0 deletions
|
@ -0,0 +1,52 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: HexedHero <6012891+HexedHero@users.noreply.github.com>
|
||||
Date: Sun, 10 Apr 2022 06:21:19 +0100
|
||||
Subject: [PATCH] Add pre-unbreaking amount to PlayerItemDamageEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java b/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java
|
||||
index 2d049633998b3965ce0f4a6a4cea3169da0d5658..a2993c7434c9775483a1b4628f2f66454b0d666d 100644
|
||||
--- a/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java
|
||||
@@ -15,12 +15,21 @@ public class PlayerItemDamageEvent extends PlayerEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final ItemStack item;
|
||||
private int damage;
|
||||
+ private int originalDamage; // Paper - Add pre-reduction damage
|
||||
private boolean cancelled = false;
|
||||
|
||||
+ @Deprecated // Paper - Add pre-reduction damage
|
||||
public PlayerItemDamageEvent(@NotNull Player player, @NotNull ItemStack what, int damage) {
|
||||
+ // Paper start - Add pre-reduction damage
|
||||
+ this(player, what, damage, damage);
|
||||
+ }
|
||||
+
|
||||
+ public PlayerItemDamageEvent(@NotNull Player player, @NotNull ItemStack what, int damage, int originalDamage) {
|
||||
super(player);
|
||||
this.item = what;
|
||||
this.damage = damage;
|
||||
+ this.originalDamage = originalDamage;
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -42,6 +51,19 @@ public class PlayerItemDamageEvent extends PlayerEvent implements Cancellable {
|
||||
return damage;
|
||||
}
|
||||
|
||||
+ // Paper start - Add pre-reduction damage
|
||||
+ /**
|
||||
+ * Gets the amount of durability damage this item would have taken before
|
||||
+ * the Unbreaking reduction. If the item has no Unbreaking level then
|
||||
+ * this value will be the same as the {@link #getDamage()} value.
|
||||
+ *
|
||||
+ * @return pre-reduction damage amount
|
||||
+ */
|
||||
+ public int getOriginalDamage() {
|
||||
+ return originalDamage;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
public void setDamage(int damage) {
|
||||
this.damage = damage;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: HexedHero <6012891+HexedHero@users.noreply.github.com>
|
||||
Date: Sun, 10 Apr 2022 06:26:32 +0100
|
||||
Subject: [PATCH] Add pre-unbreaking amount to PlayerItemDamageEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
index dc4639f905fb71435daf29c61f64621a3e2cc533..6837c965592d4584cfc958a1008b98791a0fc780 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
@@ -551,10 +551,11 @@ public final class ItemStack {
|
||||
}
|
||||
}
|
||||
|
||||
+ int originalDamage = amount; // Paper
|
||||
amount -= k;
|
||||
// CraftBukkit start
|
||||
if (player instanceof ServerPlayer serverPlayer) { // Paper
|
||||
- PlayerItemDamageEvent event = new PlayerItemDamageEvent(serverPlayer.getBukkitEntity(), CraftItemStack.asCraftMirror(this), amount); // Paper
|
||||
+ PlayerItemDamageEvent event = new PlayerItemDamageEvent(serverPlayer.getBukkitEntity(), CraftItemStack.asCraftMirror(this), amount, originalDamage); // Paper
|
||||
event.getPlayer().getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (amount != event.getDamage() || event.isCancelled()) {
|
|
@ -1,6 +1,8 @@
|
|||
package io.papermc.paper.testplugin;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class TestPlugin extends JavaPlugin implements Listener {
|
||||
|
@ -8,4 +10,9 @@ public final class TestPlugin extends JavaPlugin implements Listener {
|
|||
public void onEnable() {
|
||||
this.getServer().getPluginManager().registerEvents(this, this);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void a(PlayerItemDamageEvent event) {
|
||||
System.out.println(event.getOriginalDamage() + " to " + event.getDamage());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue