mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 15:00:13 +01:00
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;
|
package io.papermc.paper.testplugin;
|
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public final class TestPlugin extends JavaPlugin implements Listener {
|
public final class TestPlugin extends JavaPlugin implements Listener {
|
||||||
|
@ -8,4 +10,9 @@ public final class TestPlugin extends JavaPlugin implements Listener {
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
this.getServer().getPluginManager().registerEvents(this, this);
|
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