From 6656b86270b2614980fec362766852b89d7a02bc Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 5 Jul 2019 18:55:28 -0500 Subject: [PATCH] Implement PlayerSetSpawnerTypeWithEggEvent --- ...ent-PlayerSetSpawnerTypeWithEggEvent.patch | 104 ++++++++++++++++++ ...ent-PlayerSetSpawnerTypeWithEggEvent.patch | 44 ++++++++ 2 files changed, 148 insertions(+) create mode 100644 patches/api/0014-Implement-PlayerSetSpawnerTypeWithEggEvent.patch create mode 100644 patches/server/0041-Implement-PlayerSetSpawnerTypeWithEggEvent.patch diff --git a/patches/api/0014-Implement-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/api/0014-Implement-PlayerSetSpawnerTypeWithEggEvent.patch new file mode 100644 index 000000000..fc174afc4 --- /dev/null +++ b/patches/api/0014-Implement-PlayerSetSpawnerTypeWithEggEvent.patch @@ -0,0 +1,104 @@ +From 79526b3135fab05e371454352b1f7e76ada80fe0 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 5 Jul 2019 18:21:15 -0500 +Subject: [PATCH] Implement PlayerSetSpawnerTypeWithEggEvent + +--- + .../PlayerSetSpawnerTypeWithEggEvent.java | 85 +++++++++++++++++++ + 1 file changed, 85 insertions(+) + create mode 100644 src/main/java/net/pl3x/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java + +diff --git a/src/main/java/net/pl3x/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java b/src/main/java/net/pl3x/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java +new file mode 100644 +index 00000000..c050b75e +--- /dev/null ++++ b/src/main/java/net/pl3x/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java +@@ -0,0 +1,85 @@ ++package net.pl3x.purpur.event; ++ ++import org.bukkit.block.Block; ++import org.bukkit.block.CreatureSpawner; ++import org.bukkit.entity.EntityType; ++import org.bukkit.entity.Player; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.player.PlayerEvent; ++import org.jetbrains.annotations.NotNull; ++ ++public class PlayerSetSpawnerTypeWithEggEvent extends PlayerEvent implements Cancellable { ++ private static final HandlerList handlers = new HandlerList(); ++ private final Block block; ++ private final CreatureSpawner spawner; ++ private EntityType type; ++ private boolean cancel; ++ ++ public PlayerSetSpawnerTypeWithEggEvent(@NotNull Player player, @NotNull Block block, @NotNull CreatureSpawner spawner, @NotNull EntityType type) { ++ super(player); ++ this.block = block; ++ this.spawner = spawner; ++ this.type = type; ++ } ++ ++ /** ++ * Get the spawner Block in the world ++ * ++ * @return Spawner Block ++ */ ++ @NotNull ++ public Block getBlock() { ++ return block; ++ } ++ ++ /** ++ * Get the spawner state ++ * ++ * @return Spawner state ++ */ ++ @NotNull ++ public CreatureSpawner getSpawner() { ++ return spawner; ++ } ++ ++ /** ++ * Gets the EntityType being set on the spawner ++ * ++ * @return EntityType being set ++ */ ++ @NotNull ++ public EntityType getEntityType() { ++ return type; ++ } ++ ++ /** ++ * Sets the EntityType being set on the spawner ++ * ++ * @param type EntityType to set ++ */ ++ public void setEntityType(@NotNull EntityType type) { ++ this.type = type; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancel; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancel = cancel; ++ } ++ ++ @Override ++ @NotNull ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} +-- +2.20.1 + diff --git a/patches/server/0041-Implement-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/server/0041-Implement-PlayerSetSpawnerTypeWithEggEvent.patch new file mode 100644 index 000000000..0258d3907 --- /dev/null +++ b/patches/server/0041-Implement-PlayerSetSpawnerTypeWithEggEvent.patch @@ -0,0 +1,44 @@ +From a24211c391399fb7eb0a9c83144d59f4e56deea2 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 5 Jul 2019 18:21:00 -0500 +Subject: [PATCH] Implement PlayerSetSpawnerTypeWithEggEvent + +--- + .../java/net/minecraft/server/ItemMonsterEgg.java | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/src/main/java/net/minecraft/server/ItemMonsterEgg.java b/src/main/java/net/minecraft/server/ItemMonsterEgg.java +index bb3b0abd9..4b77c099a 100644 +--- a/src/main/java/net/minecraft/server/ItemMonsterEgg.java ++++ b/src/main/java/net/minecraft/server/ItemMonsterEgg.java +@@ -2,6 +2,11 @@ package net.minecraft.server; + + import com.google.common.collect.Iterables; + import com.google.common.collect.Maps; ++import net.pl3x.purpur.event.PlayerSetSpawnerTypeWithEggEvent; ++import org.bukkit.block.CreatureSpawner; ++import org.bukkit.entity.EntityType; ++import org.bukkit.entity.Player; ++ + import java.util.Map; + import java.util.Objects; + import javax.annotation.Nullable; +@@ -41,6 +46,15 @@ public class ItemMonsterEgg extends Item { + MobSpawnerAbstract mobspawnerabstract = ((TileEntityMobSpawner) tileentity).getSpawner(); + EntityTypes entitytypes = this.b(itemstack.getTag()); + ++ // Purpur start ++ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); ++ PlayerSetSpawnerTypeWithEggEvent event = new PlayerSetSpawnerTypeWithEggEvent((Player) itemactioncontext.b.getBukkitEntity(), bukkitBlock, (CreatureSpawner) bukkitBlock.getState(), EntityType.fromName(entitytypes.getName())); ++ if (!event.callEvent()) { ++ return EnumInteractionResult.FAIL; ++ } ++ entitytypes = EntityTypes.getFromKey(new MinecraftKey(event.getEntityType().getKey().toString())); ++ // Purpur end ++ + mobspawnerabstract.setMobName(entitytypes); + tileentity.update(); + world.notify(blockposition, iblockdata, iblockdata, 3); +-- +2.20.1 +