| 
					
				 | 
			
			
				@@ -1,339 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-package me.km.playerbank; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.mojang.authlib.GameProfile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import io.netty.buffer.Unpooled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.UUID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import me.km.KajetansMod; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import me.km.dimensions.ModDimensions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//import me.km.events.PlayerJoinMessageEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//import me.km.events.PlayerRespawnAtEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import me.km.utils.ReflectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.entity.Entity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.entity.player.EntityPlayer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.entity.player.EntityPlayerMP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.nbt.NBTTagCompound; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.NetHandlerPlayServer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.NetworkManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.PacketBuffer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketChangeGameState; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketCustomPayload; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketEntityEffect; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketHeldItemChange; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketJoinGame; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketPlayerAbilities; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketRespawn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketServerDifficulty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketSetExperience; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.network.play.server.SPacketSpawnPosition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.scoreboard.ServerScoreboard; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.server.dedicated.DedicatedPlayerList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.server.dedicated.DedicatedServer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.server.management.DemoPlayerInteractionManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.server.management.PlayerInteractionManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.server.management.PlayerProfileCache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.util.math.BlockPos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.util.math.Vec3d; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.util.text.TextComponentString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.world.GameRules; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.world.World; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.world.WorldServer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.world.chunk.storage.AnvilChunkLoader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraft.world.storage.WorldInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraftforge.common.MinecraftForge; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraftforge.fml.relauncher.Side; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import net.minecraftforge.fml.relauncher.SideOnly; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.logging.log4j.LogManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.logging.log4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@SideOnly(Side.SERVER) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class ModDedicatedPlayerList //extends DedicatedPlayerList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /*private final DedicatedServer mcServer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private static final Logger LOG = LogManager.getLogger(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<EntityPlayerMP> playerEntityList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final Map<UUID, EntityPlayerMP> uuidToPlayerMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public ModDedicatedPlayerList(DedicatedServer server)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        super(server); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.mcServer = server; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.playerEntityList = super.getPlayers(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.uuidToPlayerMap = ReflectionUtils.getUuidToPlayerMap(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // copied from net.minecraft.server.management.PlayerList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void setPlayerGameTypeBasedOnOther(EntityPlayerMP target, EntityPlayerMP source, World worldIn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (source != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            target.interactionManager.setGameType(source.interactionManager.getGameType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        target.interactionManager.initializeGameType(worldIn.getWorldInfo().getGameType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // copied from net.minecraft.server.management.PlayerList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void initializeConnectionToPlayer(NetworkManager netManager, EntityPlayerMP p, NetHandlerPlayServer nethandlerplayserver) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get name for old / new name comparing 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GameProfile gameprofile = p.getGameProfile(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        PlayerProfileCache cache = this.mcServer.getPlayerProfileCache(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        GameProfile gameprofile1 = cache.getProfileByUUID(gameprofile.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String playerName = gameprofile1 == null ? gameprofile.getName() : gameprofile1.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cache.addEntry(gameprofile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // read data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        NBTTagCompound nbttagcompound = this.readPlayerDataFromFile(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        WorldServer playerWorld = this.mcServer.getWorld(p.dimension); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(playerWorld == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            p.dimension = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            playerWorld = this.mcServer.getWorld(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BlockPos spawnPoint = playerWorld.provider.getRandomizedSpawnPoint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            p.setPosition(spawnPoint.getX(), spawnPoint.getY(), spawnPoint.getZ()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.setWorld(playerWorld); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.interactionManager.setWorld(playerWorld); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String s = "local"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(netManager.getRemoteAddress() != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            s = netManager.getRemoteAddress().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        LOG.info("{}[{}] logged in with entity id {} at ({}, {}, {})", new Object[] {p.getName(), s, p.getEntityId(), p.posX, p.posY, p.posZ}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        WorldInfo worldinfo = playerWorld.getWorldInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.setPlayerGameTypeBasedOnOther(p, null, playerWorld); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.connection = nethandlerplayserver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // send custom loaded dimensions to the player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ModDimensions.sendNotificationsForDimensions(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // End 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nethandlerplayserver.sendPacket(new SPacketJoinGame(p.getEntityId(), p.interactionManager.getGameType(), worldinfo.isHardcoreModeEnabled(), p.dimension, playerWorld.getDifficulty(), this.getMaxPlayers(), worldinfo.getTerrainType(), playerWorld.getGameRules().getBoolean("reducedDebugInfo"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nethandlerplayserver.sendPacket(new SPacketCustomPayload("MC|Brand", (new PacketBuffer(Unpooled.buffer())).writeString(this.getServerInstance().getServerModName()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nethandlerplayserver.sendPacket(new SPacketServerDifficulty(worldinfo.getDifficulty(), worldinfo.isDifficultyLocked())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nethandlerplayserver.sendPacket(new SPacketPlayerAbilities(p.capabilities)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nethandlerplayserver.sendPacket(new SPacketHeldItemChange(p.inventory.currentItem)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.updatePermissionLevel(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.getStatFile().markAllDirty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.getRecipeBook().init(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.sendScoreboard((ServerScoreboard) playerWorld.getScoreboard(), p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.mcServer.refreshStatusNextTick(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Custom Join Message - Start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //TextComponentTranslation textcomponenttranslation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        PlayerJoinMessageEvent event; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (p.getName().equalsIgnoreCase(playerName)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //textcomponenttranslation = new TextComponentTranslation("multiplayer.player.joined", new Object[] {playerIn.getDisplayName()}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            event = new PlayerJoinMessageEvent(p, false, "No message was set."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //textcomponenttranslation = new TextComponentTranslation("multiplayer.player.joined.renamed", new Object[] {playerIn.getDisplayName(), s}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            event = new PlayerJoinMessageEvent(p, true, "No message was set."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //textcomponenttranslation.getStyle().setColor(TextFormatting.YELLOW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //this.sendMessage(textcomponenttranslation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(!MinecraftForge.EVENT_BUS.post(event)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            KajetansMod.scheduler.scheduleTask(() -> this.sendMessage(new TextComponentString(event.getMessage())), 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Custom Join Message - End 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.playerLoggedIn(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nethandlerplayserver.setPlayerLocation(p.posX, p.posY, p.posZ, p.rotationYaw, p.rotationPitch); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.updateTimeAndWeatherForPlayer(p, playerWorld); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!this.mcServer.getResourcePackUrl().isEmpty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            p.loadResourcePack(this.mcServer.getResourcePackUrl(), this.mcServer.getResourcePackHash()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.getActivePotionEffects().stream().forEach((potioneffect) ->  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            nethandlerplayserver.sendPacket(new SPacketEntityEffect(p.getEntityId(), potioneffect)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (nbttagcompound != null && nbttagcompound.hasKey("RootVehicle", 10)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("RootVehicle"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Entity entity1 = AnvilChunkLoader.readWorldEntity(nbttagcompound1.getCompoundTag("Entity"), playerWorld, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (entity1 != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                UUID uuid = nbttagcompound1.getUniqueId("Attach"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (entity1.getUniqueID().equals(uuid)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    p.startRiding(entity1, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for (Entity entity : entity1.getRecursivePassengers()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (entity.getUniqueID().equals(uuid)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            p.startRiding(entity, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!p.isRiding()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LOG.warn("Couldn\'t reattach entity to player"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    playerWorld.removeEntityDangerously(entity1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for(Entity entity2 : entity1.getRecursivePassengers()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        playerWorld.removeEntityDangerously(entity2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.addSelfToInternalCraftingInventory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedIn(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // copied from net.minecraft.server.management.PlayerList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public EntityPlayerMP recreatePlayerEntity(EntityPlayerMP p, int dim, boolean conqueredEnd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dim = p.dimension; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        WorldServer w = mcServer.getWorld(dim); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(w == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dim = p.getSpawnDimension(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else if(!w.provider.canRespawnHere()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dim = w.provider.getRespawnDimension(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(mcServer.getWorld(dim) == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dim = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        WorldServer pw = p.getServerWorld(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pw.getEntityTracker().removePlayerFromTrackers(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pw.getEntityTracker().untrack(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pw.getPlayerChunkMap().removePlayer(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.playerEntityList.remove(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pw.removeEntityDangerously(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // start of event handling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // determine would-be spawn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        w = mcServer.getWorld(dim); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.dimension = dim; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        PlayerInteractionManager pManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // keep this demo shit for fucks sake 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(this.mcServer.isDemo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pManager = new DemoPlayerInteractionManager(w); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pManager = new PlayerInteractionManager(w); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        EntityPlayerMP newP = new EntityPlayerMP(this.mcServer, w, p.getGameProfile(), pManager); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.connection = p.connection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.setEntityId(p.getEntityId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.setCommandStats(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.setPrimaryHand(p.getPrimaryHand()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.dimension = dim; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        boolean spawnInBed = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        boolean errorIfNoForce = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        PlayerRespawnAtEvent event; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BlockPos bed = p.getBedLocation(dim); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(bed != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BlockPos validBed = EntityPlayer.getBedSpawnLocation(w, bed, p.isSpawnForced(dim)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           if (validBed != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                spawnInBed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                event = new PlayerRespawnAtEvent(newP, w, validBed.getX() + 0.5f, validBed.getY() + 0.1f, validBed.getZ() + 0.5f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                errorIfNoForce = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                event = new PlayerRespawnAtEvent(newP, w, newP.posX, newP.posY, newP.posZ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            event = new PlayerRespawnAtEvent(newP, w, newP.posX, newP.posY, newP.posZ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        MinecraftForge.EVENT_BUS.post(event); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Vec3d v = event.getRespawnLoc(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // only change when there is an actual change        
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(event.isForced()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            w = event.getWorld(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            newP.world = w; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            newP.dimension = w.provider.getDimension(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            p.dimension = newP.dimension; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            newP.setPosition(v.x, v.y, v.z); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(spawnInBed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                newP.setLocationAndAngles(v.x, v.y, v.z, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                newP.setSpawnPoint(bed, p.isSpawnForced(dim)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else if(errorIfNoForce) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                newP.connection.sendPacket(new SPacketChangeGameState(0, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(event.isInventoryKeepingForced() && !conqueredEnd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            GameRules rules = w.getGameRules(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean keep = rules.getBoolean("keepInventory"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rules.setOrCreateGameRule("keepInventory", "true"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            newP.copyFrom(p, conqueredEnd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rules.setOrCreateGameRule("keepInventory", String.valueOf(keep)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            newP.copyFrom(p, conqueredEnd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // end of event handling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        p.getTags().stream().forEach(s -> newP.addTag(s)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.setPlayerGameTypeBasedOnOther(newP, p, w); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        w.getChunkProvider().provideChunk((int) newP.posX >> 4, (int) newP.posZ >> 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        while(!w.getCollisionBoxes(newP, newP.getEntityBoundingBox()).isEmpty() && newP.posY < 256.0D) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            newP.setPosition(newP.posX, newP.posY + 1.0D, newP.posZ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.connection.sendPacket(new SPacketRespawn(newP.dimension, newP.world.getDifficulty(), w.getWorldInfo().getTerrainType(), newP.interactionManager.getGameType())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.connection.setPlayerLocation(newP.posX, newP.posY, newP.posZ, newP.rotationYaw, newP.rotationPitch); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.connection.sendPacket(new SPacketSpawnPosition(w.getSpawnPoint())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.connection.sendPacket(new SPacketSetExperience(newP.experience, newP.experienceTotal, newP.experienceLevel)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.updateTimeAndWeatherForPlayer(newP, w); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.updatePermissionLevel(newP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        w.getPlayerChunkMap().addPlayer(newP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        w.spawnEntity(newP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.playerEntityList.add(newP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.uuidToPlayerMap.put(newP.getUniqueID(), newP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.addSelfToInternalCraftingInventory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        newP.setHealth(newP.getHealth()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerRespawnEvent(newP, conqueredEnd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return newP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 |