diff options
author | Chase Henderson <[email protected]> | 2024-01-27 13:13:12 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2024-01-27 19:13:12 +0100 |
commit | 4643b0d9591179099be639ce5d684b65f88ebe2e (patch) | |
tree | 547f2de8fefdda0e21914229f0f3ed3efa6f709e | |
parent | ed130f1170830a08b093855fbba1061c5cf38184 (diff) | |
download | Paper-4643b0d9591179099be639ce5d684b65f88ebe2e.tar.gz Paper-4643b0d9591179099be639ce5d684b65f88ebe2e.zip |
Shulker duplicate event (#10135)
-rw-r--r-- | patches/api/0457-Add-ShulkerDuplicateEvent.patch | 83 | ||||
-rw-r--r-- | patches/server/1042-Add-ShulkerDuplicateEvent.patch | 22 |
2 files changed, 105 insertions, 0 deletions
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 <[email protected]> +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. ++ * <p> ++ * 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 <[email protected]> +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<Optional<Dye + if (entityshulker != null) { + entityshulker.setVariant(this.getVariant()); + entityshulker.moveTo(vec3d); ++ // Paper start - Shulker duplicate event ++ if (!new io.papermc.paper.event.entity.ShulkerDuplicateEvent((org.bukkit.entity.Shulker) entityshulker.getBukkitEntity(), (org.bukkit.entity.Shulker) this.getBukkitEntity()).callEvent()) { ++ return; ++ } ++ // Paper end - Shulker duplicate event + this.level().addFreshEntity(entityshulker, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - the mysteries of life + } + |