Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Adapated from Enhanced Portals 3 code
- public static Entity teleportEntityToDim(World oldWorld, World newWorld, int x, int y, int z, Entity entity, String name) {
- if (entity != null && oldWorld != null && newWorld != null) {
- if (entity.timeUntilPortal <= 0) {
- if (newWorld == null) {
- DimensionManager.
- }
- WorldServer oldWorldServer = (WorldServer) oldWorld;
- WorldServer newWorldServer = (WorldServer) newWorld;
- if (entity instanceof EntityPlayer) {
- EntityPlayerMP player = (EntityPlayerMP) entity;
- if (!player.worldObj.isRemote) {
- player.worldObj.theProfiler.startSection("portal");
- player.worldObj.theProfiler.startSection("changeDimension");
- ServerConfigurationManager config = player.mcServer.getConfigurationManager();
- oldWorld.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F);
- player.closeScreen();
- player.dimension = newWorldServer.provider.dimensionId;
- player.playerNetServerHandler.sendPacket(new S07PacketRespawn(player.dimension, player.worldObj.difficultySetting, newWorldServer.getWorldInfo().getTerrainType(), player.theItemInWorldManager.getGameType()));
- oldWorldServer.removeEntity(player);
- player.isDead = false;
- player.setLocationAndAngles(x, y, z, player.rotationYaw, player.rotationPitch);
- newWorldServer.spawnEntityInWorld(player);
- player.setWorld(newWorldServer);
- config.func_72375_a(player, oldWorldServer);
- player.playerNetServerHandler.setPlayerLocation(x, y, z, entity.rotationYaw, entity.rotationPitch);
- player.theItemInWorldManager.setWorld(newWorldServer);
- config.updateTimeAndWeatherForPlayer(player, newWorldServer);
- config.syncPlayerInventory(player);
- player.worldObj.theProfiler.endSection();
- oldWorldServer.resetUpdateEntityTick();
- newWorldServer.resetUpdateEntityTick();
- player.worldObj.theProfiler.endSection();
- for (Iterator<PotionEffect> potion = player.getActivePotionEffects().iterator(); potion.hasNext(); ) {
- player.playerNetServerHandler.sendPacket(new S1DPacketEntityEffect(player.getEntityId(), (PotionEffect) potion.next()));
- }
- player.playerNetServerHandler.sendPacket(new S1FPacketSetExperience(player.experience, player.experienceTotal, player.experienceLevel));
- FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, oldWorldServer.provider.dimensionId, player.dimension);
- player.timeUntilPortal = 150;
- }
- player.worldObj.theProfiler.endSection();
- SoulNetworkHandler.syphonFromNetwork(name, 10000);
- newWorld.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F);
- return player;
- } else {
- NBTTagCompound tag = new NBTTagCompound();
- entity.writeToNBTOptional(tag);
- entity.setDead();
- oldWorld.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F);
- Entity teleportedEntity = EntityList.createEntityFromNBT(tag, newWorldServer);
- if (teleportedEntity != null) {
- teleportedEntity.setLocationAndAngles(x, y, z, entity.rotationYaw, entity.rotationPitch);
- teleportedEntity.forceSpawn = true;
- newWorldServer.spawnEntityInWorld(teleportedEntity);
- teleportedEntity.setWorld(newWorldServer);
- teleportedEntity.timeUntilPortal = 150;
- }
- oldWorldServer.resetUpdateEntityTick();
- newWorldServer.resetUpdateEntityTick();
- SoulNetworkHandler.syphonFromNetwork(name, 10000);
- newWorld.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F);
- return teleportedEntity;
- }
- }
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment