From 8a21c1742b0be0ca2bff8b79231d10d36ee6a34e Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Tue, 21 Dec 2021 23:07:15 -0800 Subject: [PATCH] Add API for item entity health (#6514) --- build-data/paper.at | 3 ++ .../0350-Add-API-for-item-entity-health.patch | 35 +++++++++++++++++++ .../0837-Add-API-for-item-entity-health.patch | 32 +++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 patches/api/0350-Add-API-for-item-entity-health.patch create mode 100644 patches/server/0837-Add-API-for-item-entity-health.patch diff --git a/build-data/paper.at b/build-data/paper.at index 73cb1ac04e..da8de1a382 100644 --- a/build-data/paper.at +++ b/build-data/paper.at @@ -292,3 +292,6 @@ public net.minecraft.world.item.crafting.RecipeManager byName # Entity powdered snow API public net.minecraft.world.entity.monster.Skeleton inPowderSnowTime + +# Add health methods for item entities +public net.minecraft.world.entity.item.ItemEntity health diff --git a/patches/api/0350-Add-API-for-item-entity-health.patch b/patches/api/0350-Add-API-for-item-entity-health.patch new file mode 100644 index 0000000000..913f679ec0 --- /dev/null +++ b/patches/api/0350-Add-API-for-item-entity-health.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Sat, 28 Aug 2021 09:00:35 -0700 +Subject: [PATCH] Add API for item entity health + + +diff --git a/src/main/java/org/bukkit/entity/Item.java b/src/main/java/org/bukkit/entity/Item.java +index 0ee072645ecf1bf5feb74de6960947ef76db366e..87dbc00ab565377b8ae0eb6e73799ae6e2e3a376 100644 +--- a/src/main/java/org/bukkit/entity/Item.java ++++ b/src/main/java/org/bukkit/entity/Item.java +@@ -119,5 +119,24 @@ public interface Item extends Entity { + * @param willAge True if the item should age + */ + public void setWillAge(boolean willAge); ++ ++ /** ++ * Gets the health of item stack. ++ *

++ * Currently the default max health is 5. ++ * ++ * @return the health ++ */ ++ public int getHealth(); ++ ++ /** ++ * Sets the health of the item stack. If the value is non-positive ++ * the itemstack's normal "on destroy" functionality will be run. ++ *

++ * Currently, the default max health is 5. ++ * ++ * @param health the health, a non-positive value will destroy the entity ++ */ ++ public void setHealth(int health); + // Paper end + } diff --git a/patches/server/0837-Add-API-for-item-entity-health.patch b/patches/server/0837-Add-API-for-item-entity-health.patch new file mode 100644 index 0000000000..c475b8fda1 --- /dev/null +++ b/patches/server/0837-Add-API-for-item-entity-health.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Sat, 28 Aug 2021 09:00:45 -0700 +Subject: [PATCH] Add API for item entity health + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +index 342345eb04d00efb58392ccf209e3c51c1064173..8d56f0ab748373e55c0166b92382c126fe8e5381 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +@@ -85,6 +85,21 @@ public class CraftItem extends CraftEntity implements Item { + public void setWillAge(boolean willAge) { + item.age = willAge ? 0 : NO_AGE_TIME; + } ++ ++ @Override ++ public int getHealth() { ++ return item.health; ++ } ++ ++ @Override ++ public void setHealth(int health) { ++ if (health <= 0) { ++ item.getItem().onDestroyed(item); ++ item.discard(); ++ } else { ++ item.health = health; ++ } ++ } + // Paper End + + @Override