001    package net.minecraftforge.common;
002    
003    import java.util.UUID;
004    
005    import net.minecraft.src.*;
006    import net.minecraftforge.event.*;
007    import net.minecraftforge.event.entity.*;
008    import net.minecraftforge.event.world.WorldEvent;
009    
010    public class ForgeInternalHandler
011    {
012        @ForgeSubscribe(priority = EventPriority.HIGHEST)
013        public void onEntityJoinWorld(EntityJoinWorldEvent event)
014        {
015            if (!event.world.isRemote)
016            {
017                if (event.entity.getPersistentID() == null)
018                {
019                    event.entity.generatePersistentID();
020                }
021                else
022                {
023                    ForgeChunkManager.loadEntity(event.entity);
024                }
025            }
026            Entity entity = event.entity;
027            if (entity instanceof EntityItem)
028            {
029                ItemStack item = ((EntityItem)entity).item;
030                if (item != null && item.getItem().hasCustomEntity(item))
031                {
032                    Entity newEntity = item.getItem().createEntity(event.world, entity, item);
033                    if (newEntity != null)
034                    {
035                        entity.setDead();
036                        event.setCanceled(true);
037                        event.world.spawnEntityInWorld(newEntity);
038                    }
039                }
040            }
041        }
042    
043        @ForgeSubscribe(priority = EventPriority.HIGHEST)
044        public void onDimensionLoad(WorldEvent.Load event)
045        {
046            ForgeChunkManager.loadWorld(event.world);
047        }
048    
049        @ForgeSubscribe(priority = EventPriority.HIGHEST)
050        public void onDimensionSave(WorldEvent.Save event)
051        {
052            ForgeChunkManager.saveWorld(event.world);
053        }
054    }