From b6fae51c16321e3c6ae36ce3624c047b94cd22c6 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 29 Nov 2019 23:47:42 -0600 Subject: [PATCH] Despawn egg hatches chicken --- .../java/net/minecraft/server/EntityItem.java | 21 +++++++++++++++++++ .../net/pl3x/purpur/PurpurWorldConfig.java | 7 +++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java index e61af3f5eb..184b2a015a 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java @@ -165,6 +165,27 @@ public class EntityItem extends Entity { } // Spigot end + // Purpur start + @Override + public void die() { + if (!dead && world.purpurConfig.chickenEggsHatchWhenDespawnedMax > 0) { + ItemStack item = getItemStack(); + if (item != null && item.getItem() == Items.EGG) { + int range = world.purpurConfig.chickenEggsHatchWhenDespawnedRange; + if (world.getEntitiesByClass(EntityChicken.class, new AxisAlignedBB(locX() - range, locY() - range, locZ() - range, locX() + range, locY() + range, locZ() + range)).size() < world.purpurConfig.chickenEggsHatchWhenDespawnedMax) { + EntityChicken chicken = EntityTypes.CHICKEN.create(world); + if (chicken != null) { + chicken.setPosition(locX(), locY(), locZ()); + chicken.setAge(-24000); + world.addEntity(chicken, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.EGG); + } + } + } + } + super.die(); + } + // Purpur end + private void u() { Vec3D vec3d = this.getMot(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index c618169db3..e54f5dcfd4 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -188,4 +188,11 @@ public class PurpurWorldConfig { elytraDamagePerFireworkBoost = getInt("elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost); elytraDamagePerTridentBoost = getInt("elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } + + public int chickenEggsHatchWhenDespawnedMax = 0; + public int chickenEggsHatchWhenDespawnedRange = 10; + private void chickenSettings() { + chickenEggsHatchWhenDespawnedMax = getInt("mobs.chicken.eggs-hatch-when-despawned.max", chickenEggsHatchWhenDespawnedMax); + chickenEggsHatchWhenDespawnedRange = getInt("mobs.chicken.eggs-hatch-when-despawned.range", chickenEggsHatchWhenDespawnedRange); + } } -- 2.24.0