diff --git a/src/main/java/net/minecraft/entity/Entity.java b/src/main/java/net/minecraft/entity/Entity.java index 765fdbc..2ed0bfb 100644 --- a/src/main/java/net/minecraft/entity/Entity.java +++ b/src/main/java/net/minecraft/entity/Entity.java @@ -2521,4 +2521,9 @@ { return 9216d;//16384.0d; } + + public void despawnInactive() + { + + } } diff --git a/src/main/java/net/minecraft/entity/EntityLiving.java b/src/main/java/net/minecraft/entity/EntityLiving.java index 14d6f04..a401a4c 100644 --- a/src/main/java/net/minecraft/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/entity/EntityLiving.java @@ -1167,6 +1167,7 @@ return EnumCreatureType.monster; } + @Override public void despawnInactive() { if(!canDespawn() || ++entityAge <= 600) diff --git a/src/main/java/net/minecraft/entity/item/EntityItem.java b/src/main/java/net/minecraft/entity/item/EntityItem.java index 2dd45b4..c67da5c 100644 --- a/src/main/java/net/minecraft/entity/item/EntityItem.java +++ b/src/main/java/net/minecraft/entity/item/EntityItem.java @@ -1,6 +1,7 @@ package net.minecraft.entity.item; import java.util.Iterator; + import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -17,8 +18,10 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.item.ItemExpireEvent; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.Event.Result; @@ -31,7 +34,6 @@ private String field_145801_f; private String field_145802_g; public float hoverStart; - private long lastTick; private static final String __OBFID = "CL_00001669"; /** @@ -51,7 +53,6 @@ this.motionX = (double)((float)(Math.random() * 0.20000000298023224D - 0.10000000149011612D)); this.motionY = 0.20000000298023224D; this.motionZ = (double)((float)(Math.random() * 0.20000000298023224D - 0.10000000149011612D)); - lastTick = p_i1709_1_.getTotalWorldTime(); } public EntityItem(World p_i1710_1_, double p_i1710_2_, double p_i1710_4_, double p_i1710_6_, ItemStack p_i1710_8_) @@ -73,7 +74,6 @@ this.hoverStart = (float)(Math.random() * Math.PI * 2.0D); this.setSize(0.25F, 0.25F); this.yOffset = this.height / 2.0F; - lastTick = p_i1711_1_.getTotalWorldTime(); } protected void entityInit() @@ -145,9 +145,7 @@ this.motionY *= -0.5D; } - int elapsedTicks = (int)(worldObj.getTotalWorldTime() - lastTick); - lastTick = worldObj.getTotalWorldTime(); - this.age += elapsedTicks; + ++this.age; ItemStack item = getDataWatcher().getWatchableObjectItemStack(10); @@ -459,8 +457,30 @@ /*===================================== ULTRAMINE START =====================================*/ + @Override public boolean isEntityItem() { return true; } + + @Override + public void despawnInactive() + { + if (++age >= lifespan) + { + ItemStack item = getDataWatcher().getWatchableObjectItemStack(10); + if (item != null) + { + ItemExpireEvent event = new ItemExpireEvent(this, (item.getItem() == null ? 6000 : item.getItem().getEntityLifespan(item, worldObj))); + if (MinecraftForge.EVENT_BUS.post(event)) + lifespan += event.extraLife; + else + setDead(); + } + else + { + setDead(); + } + } + } } \ No newline at end of file diff --git a/src/main/java/org/ultramine/server/ServerLoadBalancer.java b/src/main/java/org/ultramine/server/ServerLoadBalancer.java index bdb7c47..1bff767 100644 --- a/src/main/java/org/ultramine/server/ServerLoadBalancer.java +++ b/src/main/java/org/ultramine/server/ServerLoadBalancer.java @@ -47,8 +47,7 @@ int prior = activeChunkSet.get(ChunkHash.chunkToKey(cx, cz)); if(prior == Byte.MAX_VALUE) { - if(ent.isEntityLiving()) - ((EntityLiving)ent).despawnInactive(); + ent.despawnInactive(); return false; }