From 264b11d9f338e9dcfabdcf67d639ece9d2783870 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Tue, 21 Dec 2021 19:52:54 -0800 Subject: [PATCH] Entity powdered snow API (#6833) --- build-data/paper.at | 3 ++ .../api/0349-Entity-powdered-snow-API.patch | 44 +++++++++++++++++++ .../0835-Entity-powdered-snow-API.patch | 37 ++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 patches/api/0349-Entity-powdered-snow-API.patch create mode 100644 patches/server/0835-Entity-powdered-snow-API.patch diff --git a/build-data/paper.at b/build-data/paper.at index 8213dae87..73cb1ac04 100644 --- a/build-data/paper.at +++ b/build-data/paper.at @@ -289,3 +289,6 @@ public net.minecraft.world.level.levelgen.SurfaceSystem getOrCreateRandomFactory # Fix removing recipes public net.minecraft.world.item.crafting.RecipeManager byName + +# Entity powdered snow API +public net.minecraft.world.entity.monster.Skeleton inPowderSnowTime diff --git a/patches/api/0349-Entity-powdered-snow-API.patch b/patches/api/0349-Entity-powdered-snow-API.patch new file mode 100644 index 000000000..8af18828b --- /dev/null +++ b/patches/api/0349-Entity-powdered-snow-API.patch @@ -0,0 +1,44 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Sun, 24 Oct 2021 20:58:52 -0700 +Subject: [PATCH] Entity powdered snow API + + +diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java +index bafad5764cc3933fcd9602d37bd2e68424cbd575..51ec2e4ec4239659272bba3d6ba2ad73926ebb88 100644 +--- a/src/main/java/org/bukkit/entity/Entity.java ++++ b/src/main/java/org/bukkit/entity/Entity.java +@@ -794,5 +794,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent + * @return Whether the entity was successfully spawned. + */ + public boolean spawnAt(@NotNull Location location, @NotNull org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason); ++ ++ /** ++ * Check if entity is inside powdered snow. ++ * ++ * @return true if in powdered snow. ++ */ ++ boolean isInPowderedSnow(); + // Paper end + } +diff --git a/src/main/java/org/bukkit/entity/Skeleton.java b/src/main/java/org/bukkit/entity/Skeleton.java +index 01d838a60d056bf4b4a8ef9d0ac18c6f91f412e6..c61eba5f400d146a8643542048904e353df94f4b 100644 +--- a/src/main/java/org/bukkit/entity/Skeleton.java ++++ b/src/main/java/org/bukkit/entity/Skeleton.java +@@ -41,6 +41,16 @@ public interface Skeleton extends AbstractSkeleton { + */ + void setConversionTime(int time); + ++ // Paper start ++ /** ++ * Gets the time the skeleton ++ * has been inside powdered snow. ++ * ++ * @return time in ticks ++ */ ++ int inPowderedSnowTime(); ++ // Paper end ++ + /** + * A legacy enum that defines the different variances of skeleton-like + * entities on the server. diff --git a/patches/server/0835-Entity-powdered-snow-API.patch b/patches/server/0835-Entity-powdered-snow-API.patch new file mode 100644 index 000000000..9531b9a5b --- /dev/null +++ b/patches/server/0835-Entity-powdered-snow-API.patch @@ -0,0 +1,37 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Sun, 24 Oct 2021 20:58:43 -0700 +Subject: [PATCH] Entity powdered snow API + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +index 5aae88e20bc04560d6ad52cfcaa872d28bfcee8f..5893d2028679d23315a32433f6affa0c8d63c01c 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +@@ -1286,5 +1286,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + entity.setRot(location.getYaw(), location.getPitch()); + return !entity.valid && entity.level.addFreshEntity(entity, reason); + } ++ ++ @Override ++ public boolean isInPowderedSnow() { ++ return getHandle().isInPowderSnow || getHandle().wasInPowderSnow; // depending on the location in the entity "tick" either could be needed. ++ } + // Paper end + } +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java +index 90f34d75f99f31f5c98c499df209979a03e23191..1737857424c5da885c46f39502cafd2a670d3be7 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java +@@ -51,4 +51,11 @@ public class CraftSkeleton extends CraftAbstractSkeleton implements Skeleton { + public SkeletonType getSkeletonType() { + return SkeletonType.NORMAL; + } ++ ++ // Paper start ++ @Override ++ public int inPowderedSnowTime() { ++ return getHandle().inPowderSnowTime; ++ } ++ // Paper end + }