public void prepearePlayer() throws Exception {
		this.sendServerIdentificationPacket();
		this.sendMapStartPacket();
		long start = System.currentTimeMillis();
		byte[] b = new byte[this.updater.world.block_array.length];
		System.arraycopy(this.updater.world.block_array, 0, b, 0, b.length);
		if(!this.supports_cpe) {
			for(int k=0;k!=b.length;k++) {
				if(Block.getFallBackID(b[k])!=-1) {
					b[k] = (byte) Block.getFallBackID(b[k]);
				}
			}
		}
		this.sendMap(b);
		this.updater.log("Map transfer finished for player "+this.player_name+" (took "+((System.currentTimeMillis()-start)/1000)+"s)");
		this.sendMapFinishedPacket(this.updater.world.x_size, this.updater.world.y_size, this.updater.world.z_size);
		String join_message = "&e"+player_name+" joined the game!";
		
		Player player = new Player(this);
		for(int k=0;k!=this.updater.plugins.size();k++) {
			if(k>=this.updater.plugins.size()) {
				break;
			}
			join_message = this.updater.plugins.get(k).onPlayerJoin(player, join_message);
		}
		this.sendChatToAll(join_message);
		this.player = new EntityPlayer(this.updater,this.updater.findEmptyPlayerID(),this.player_name);
		this.updater.entitylist.add(this.player);
		
		this.sendSpawnPlayerPacket(-1, this.updater.world.spawn_x, this.updater.world.spawn_y, this.updater.world.spawn_z, this.player_name);
		
		this.sendEntityList();
		this.sendAddEntityToOthers();
	}