Guest User

Untitled

a guest
Feb 16th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // transfer entity to dimension. do not transfer player using this method! use transferPlayerToDimension
  2.     static boolean transferEntityToDimension(Entity sourceEntity, int destinationDimension, double x, double y, double z)
  3.     {
  4.         WorldServer sourceWorldServer = MinecraftServer.getServer().worldServerForDimension(sourceEntity.dimension);
  5.         WorldServer destinationWorldServer = MinecraftServer.getServer().worldServerForDimension(destinationDimension);
  6.        
  7.         if(sourceWorldServer == null || destinationWorldServer == null)
  8.         {
  9.             return false;
  10.         }
  11.        
  12.         NBTTagCompound tagCompound = new NBTTagCompound();
  13.        
  14.         // if write fails entity is a mount; must write parent to instead
  15.         while(sourceEntity.writeToNBTOptional(tagCompound) == false)
  16.         {
  17.             sourceEntity = sourceEntity.riddenByEntity;
  18.             sourceEntity.writeToNBTOptional(tagCompound);
  19.         }
  20.  
  21.         // get rotation values from entity
  22.         float rotationYaw = sourceEntity.rotationYaw;
  23.         float rotationPitch = sourceEntity.rotationPitch;
  24.        
  25.         // remove entity from source world
  26.         sourceWorldServer.removeEntity(sourceEntity);
  27.                
  28.         // create entity from saved nbt tag
  29.         Entity destinationEntity = EntityList.createEntityFromNBT(tagCompound, destinationWorldServer);
  30.        
  31.         // set entity location and orientation
  32.         destinationEntity.setLocationAndAngles(x, y, z, rotationYaw, rotationPitch);    
  33.  
  34.         // spawn entity in destination world
  35.         destinationWorldServer.spawnEntityInWorld(destinationEntity);  
  36.        
  37.         // register destination entity with IExtendedEntityProperties - TeleporterEntity
  38.         TeleporterEntity destinationEntityProperties = TeleporterEntity.get(destinationEntity);
  39.         if(destinationEntityProperties == null)
  40.         {
  41.             TeleporterEntity.register(destinationEntity);
  42.         }
  43.            
  44.         // so the entity doesn't teleport again when the dimension loads
  45.         destinationEntityProperties.setOnTeleporter(true);
  46.         destinationEntityProperties.setTeleported(true);
  47.                
  48.         // finally, apply the teleportation transfer to ensure the enemy is in the correct location
  49.         TeleporterEntity.transferToLocation(destinationEntity, x, y, z);
  50.        
  51.         return true;
  52.     }
Add Comment
Please, Sign In to add comment