Advertisement
Corosus

Untitled

Mar 3rd, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.50 KB | None | 0 0
  1. public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity)
  2.     {
  3.         if (par5Entity.ridingEntity == null && par5Entity.riddenByEntity == null && !par1World.isRemote)
  4.         {
  5.             int time = 0;
  6.             time = par5Entity.getEntityData().getInteger("HWPortalTime");
  7.             //System.out.println(time);
  8.            
  9.             if (par5Entity instanceof EntityPlayerMP) {
  10.                 if (time++ > 300) {
  11.                     time = 0;
  12.                     TileEntityHWPortal portal = null;
  13.                    
  14.                     TileEntity te = par1World.getBlockTileEntity(par2, par3, par4);
  15.                     if (te instanceof TileEntityHWPortal) {
  16.                         portal = ((TileEntityHWPortal)te).getMainTileEntity();
  17.                     }
  18.                    
  19.                    
  20.                     if (portal != null) {
  21.                         //travelToDimension(par5Entity, par1World.provider.dimensionId == 0 ? HostileWorlds.instance.dimIDCatacombs : 0);
  22.                         if (portal.destDim == -1 && par1World.provider.dimensionId == 0) {
  23.                             System.out.println("-1 dim :/");
  24.                             MinecraftServer.getServer().getConfigurationManager().transferPlayerToDimension((EntityPlayerMP) par5Entity, par1World.provider.dimensionId == 0 ? 0 : 0, new HWTeleporter((WorldServer)par5Entity.worldObj));
  25.                         } else {
  26.                             if (DimensionManager.getWorld(portal.destDim) != null) {
  27.                                 MinecraftServer.getServer().getConfigurationManager().transferPlayerToDimension((EntityPlayerMP) par5Entity, par1World.provider.dimensionId == 0 ? portal.destDim : 0, new HWTeleporter((WorldServer)par5Entity.worldObj));
  28.                             }
  29.                         }
  30.                     } else {
  31.                         System.out.println("error cant find tile entity");
  32.                     }
  33.                    
  34.                 }
  35.             } else {
  36.                 if (time++ > 5) {
  37.                     time = 0;
  38.                    
  39.                    
  40.                     int destDim = 0;
  41.                    
  42.                     if (par1World.provider.dimensionId == 0) {
  43.                         TileEntityHWPortal portal = null;
  44.                        
  45.                         TileEntity te = par1World.getBlockTileEntity(par2, par3, par4);
  46.                         if (te instanceof TileEntityHWPortal) {
  47.                             portal = ((TileEntityHWPortal)te).getMainTileEntity();
  48.                         }
  49.                        
  50.                         if (portal != null) {
  51.                             destDim = portal.destDim;
  52.                         }  
  53.                     }
  54.                    
  55.                     if (destDim == -1) {
  56.                         System.out.println("fail, portal.destDim is -1");
  57.                     } else {
  58.                         if (DimensionManager.getWorld(destDim) != null) {
  59.                             travelToDimension(par5Entity, par1World.provider.dimensionId == 0 ? destDim : 0);
  60.                         }
  61.                     }
  62.  
  63.                     //MinecraftServer.getServer().getConfigurationManager().transferEntityToWorld(par5Entity, par2, (WorldServer)par1World, DimensionManager.getWorld(par1World.provider.dimensionId == 0 ? HostileWorlds.instance.dimIDCatacombs : 0), new HWTeleporter((WorldServer)par5Entity.worldObj));
  64.                 }
  65.             }
  66.            
  67.             //needs a proper reset outside this method for when they step out of a portal before it teleports
  68.             par5Entity.getEntityData().setInteger("HWPortalTime", time);
  69.            
  70.            
  71.         }
  72.     }
  73.    
  74.     public void travelToDimension(Entity ent, int par1)
  75.     {
  76.         if (!ent.worldObj.isRemote && !ent.isDead)
  77.         {
  78.             ent.worldObj.theProfiler.startSection("changeDimension");
  79.             MinecraftServer var2 = MinecraftServer.getServer();
  80.             int var3 = ent.dimension;
  81.             WorldServer var4 = var2.worldServerForDimension(var3);
  82.             WorldServer var5 = var2.worldServerForDimension(par1);
  83.             ent.dimension = par1;
  84.             ent.worldObj.setEntityDead(ent);
  85.             ent.isDead = false;
  86.             ent.worldObj.theProfiler.startSection("reposition");
  87.             var2.getConfigurationManager().transferEntityToWorld(ent, var3, var4, var5, new HWTeleporter((WorldServer)ent.worldObj));
  88.             ent.worldObj.theProfiler.endStartSection("reloading");
  89.             Entity var6 = EntityList.createEntityByName(EntityList.getEntityString(ent), var5);
  90.  
  91.             if (var6 != null)
  92.             {
  93.                 var6.copyDataFrom(ent, true);
  94.                 var5.spawnEntityInWorld(var6);
  95.             }
  96.  
  97.             ent.isDead = true;
  98.             ent.worldObj.theProfiler.endSection();
  99.             var4.resetUpdateEntityTick();
  100.             var5.resetUpdateEntityTick();
  101.             ent.worldObj.theProfiler.endSection();
  102.         }
  103.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement