Tombenpotter

Untitled

Nov 11th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. //Adapated from Enhanced Portals 3 code
  2. public static Entity teleportEntityToDim(World oldWorld, World newWorld, int x, int y, int z, Entity entity, String name) {
  3. if (entity != null && oldWorld != null && newWorld != null) {
  4. if (entity.timeUntilPortal <= 0) {
  5. if (newWorld == null) {
  6. DimensionManager.
  7. }
  8. WorldServer oldWorldServer = (WorldServer) oldWorld;
  9. WorldServer newWorldServer = (WorldServer) newWorld;
  10. if (entity instanceof EntityPlayer) {
  11. EntityPlayerMP player = (EntityPlayerMP) entity;
  12. if (!player.worldObj.isRemote) {
  13. player.worldObj.theProfiler.startSection("portal");
  14. player.worldObj.theProfiler.startSection("changeDimension");
  15. ServerConfigurationManager config = player.mcServer.getConfigurationManager();
  16. oldWorld.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F);
  17. player.closeScreen();
  18. player.dimension = newWorldServer.provider.dimensionId;
  19. player.playerNetServerHandler.sendPacket(new S07PacketRespawn(player.dimension, player.worldObj.difficultySetting, newWorldServer.getWorldInfo().getTerrainType(), player.theItemInWorldManager.getGameType()));
  20. oldWorldServer.removeEntity(player);
  21. player.isDead = false;
  22. player.setLocationAndAngles(x, y, z, player.rotationYaw, player.rotationPitch);
  23. newWorldServer.spawnEntityInWorld(player);
  24. player.setWorld(newWorldServer);
  25. config.func_72375_a(player, oldWorldServer);
  26. player.playerNetServerHandler.setPlayerLocation(x, y, z, entity.rotationYaw, entity.rotationPitch);
  27. player.theItemInWorldManager.setWorld(newWorldServer);
  28. config.updateTimeAndWeatherForPlayer(player, newWorldServer);
  29. config.syncPlayerInventory(player);
  30. player.worldObj.theProfiler.endSection();
  31. oldWorldServer.resetUpdateEntityTick();
  32. newWorldServer.resetUpdateEntityTick();
  33. player.worldObj.theProfiler.endSection();
  34. for (Iterator<PotionEffect> potion = player.getActivePotionEffects().iterator(); potion.hasNext(); ) {
  35. player.playerNetServerHandler.sendPacket(new S1DPacketEntityEffect(player.getEntityId(), (PotionEffect) potion.next()));
  36. }
  37. player.playerNetServerHandler.sendPacket(new S1FPacketSetExperience(player.experience, player.experienceTotal, player.experienceLevel));
  38. FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, oldWorldServer.provider.dimensionId, player.dimension);
  39. player.timeUntilPortal = 150;
  40. }
  41. player.worldObj.theProfiler.endSection();
  42. SoulNetworkHandler.syphonFromNetwork(name, 10000);
  43. newWorld.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F);
  44. return player;
  45. } else {
  46. NBTTagCompound tag = new NBTTagCompound();
  47. entity.writeToNBTOptional(tag);
  48. entity.setDead();
  49. oldWorld.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F);
  50. Entity teleportedEntity = EntityList.createEntityFromNBT(tag, newWorldServer);
  51. if (teleportedEntity != null) {
  52. teleportedEntity.setLocationAndAngles(x, y, z, entity.rotationYaw, entity.rotationPitch);
  53. teleportedEntity.forceSpawn = true;
  54. newWorldServer.spawnEntityInWorld(teleportedEntity);
  55. teleportedEntity.setWorld(newWorldServer);
  56. teleportedEntity.timeUntilPortal = 150;
  57. }
  58. oldWorldServer.resetUpdateEntityTick();
  59. newWorldServer.resetUpdateEntityTick();
  60. SoulNetworkHandler.syphonFromNetwork(name, 10000);
  61. newWorld.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F);
  62. return teleportedEntity;
  63. }
  64. }
  65. }
  66. return null;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment