From 4643b0d9591179099be639ce5d684b65f88ebe2e Mon Sep 17 00:00:00 2001 From: Chase Henderson Date: Sat, 27 Jan 2024 13:13:12 -0500 Subject: [PATCH] Shulker duplicate event (#10135) --- .../api/0457-Add-ShulkerDuplicateEvent.patch | 83 +++++++++++++++++++ .../1042-Add-ShulkerDuplicateEvent.patch | 22 +++++ 2 files changed, 105 insertions(+) create mode 100644 patches/api/0457-Add-ShulkerDuplicateEvent.patch create mode 100644 patches/server/1042-Add-ShulkerDuplicateEvent.patch diff --git a/patches/api/0457-Add-ShulkerDuplicateEvent.patch b/patches/api/0457-Add-ShulkerDuplicateEvent.patch new file mode 100644 index 0000000000..a445efc1a9 --- /dev/null +++ b/patches/api/0457-Add-ShulkerDuplicateEvent.patch @@ -0,0 +1,83 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Chase Henderson +Date: Fri, 5 Jan 2024 03:50:10 -0500 +Subject: [PATCH] Add ShulkerDuplicateEvent + + +diff --git a/src/main/java/io/papermc/paper/event/entity/ShulkerDuplicateEvent.java b/src/main/java/io/papermc/paper/event/entity/ShulkerDuplicateEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..1fd54ca6bff3a61b8dfde3350216045376d00ca9 +--- /dev/null ++++ b/src/main/java/io/papermc/paper/event/entity/ShulkerDuplicateEvent.java +@@ -0,0 +1,71 @@ ++package io.papermc.paper.event.entity; ++ ++import org.bukkit.entity.Shulker; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.ApiStatus; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Fired when a shulker duplicates itself by spawning a new shulker. ++ *

++ * The event is fired prior to the newly created shulker, accessible via {@link #getEntity()}, being added to the world. ++ */ ++public class ShulkerDuplicateEvent extends EntityEvent implements Cancellable { ++ ++ private static final HandlerList HANDLER_LIST = new HandlerList(); ++ ++ private final Shulker parent; ++ private boolean cancelled; ++ ++ @ApiStatus.Internal ++ public ShulkerDuplicateEvent(@NotNull Shulker child, @NotNull Shulker parent) { ++ super(child); ++ this.parent = parent; ++ } ++ ++ /** ++ * Provides the newly created shulker, which did not exist prior to the duplication. ++ * At the point of this event, said shulker is not part of the world yet. ++ * ++ * @return the newly duplicated shulker. ++ */ ++ @Override ++ @NotNull ++ public Shulker getEntity() { ++ return (Shulker) entity; ++ } ++ ++ /** ++ * Provides the "parent" of the freshly created shulker. ++ * The parent shulker is the one that initiated the duplication. ++ * ++ * @return the previously existing shulker which duplicated. ++ */ ++ @NotNull ++ public Shulker getParent() { ++ return parent; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancelled = cancel; ++ } ++ ++ @NotNull ++ @Override ++ public HandlerList getHandlers() { ++ return HANDLER_LIST; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return HANDLER_LIST; ++ } ++} diff --git a/patches/server/1042-Add-ShulkerDuplicateEvent.patch b/patches/server/1042-Add-ShulkerDuplicateEvent.patch new file mode 100644 index 0000000000..91ff8b7326 --- /dev/null +++ b/patches/server/1042-Add-ShulkerDuplicateEvent.patch @@ -0,0 +1,22 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Chase Henderson +Date: Fri, 5 Jan 2024 03:50:10 -0500 +Subject: [PATCH] Add ShulkerDuplicateEvent + + +diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java +index b73dac8f68041f8a2e0752d70cc9d08b5cfd1cde..f3c2a2ffb74daa89a516db4c188ce675c79932bf 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java +@@ -484,6 +484,11 @@ public class Shulker extends AbstractGolem implements VariantHolder