From 4c2f2df79ce26a005dd1306c9b49c5d027ee74f4 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 d15a9fcfb..6d78c427d 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 059ecf375..a773d5dc7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -173,6 +173,13 @@ public class PurpurWorldConfig { 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); + } + public boolean enderDragonAlwaysDropsEggBlock = false; public boolean enderDragonAlwaysDropsFullExp = false; private void enderDragonSettings() { -- 2.24.0