From 31d2db14d22911a259defeacef8263d52f5a4223 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 | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java index 2926fbb957..bbb9ca1efc 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 fbde4cc77e..878770c110 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -262,11 +262,15 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public boolean chickenRequireShiftToMount = true; public boolean chickenDontLayEggsWhenRidden = false; + public int chickenEggsHatchWhenDespawnedMax = 0; + public int chickenEggsHatchWhenDespawnedRange = 10; private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); chickenRequireShiftToMount = getBoolean("mobs.chicken.require-shift-to-mount", chickenRequireShiftToMount); chickenDontLayEggsWhenRidden = getBoolean("mobs.chicken.dont-lay-eggs-when-ridden", chickenDontLayEggsWhenRidden); + chickenEggsHatchWhenDespawnedMax = getInt("mobs.chicken.eggs-hatch-when-despawned.max", chickenEggsHatchWhenDespawnedMax); + chickenEggsHatchWhenDespawnedRange = getInt("mobs.chicken.eggs-hatch-when-despawned.range", chickenEggsHatchWhenDespawnedRange); } public boolean codRidable = false; -- 2.24.0