import net.minecraft.entity.player.EntityPlayerMP; //导入方法依赖的package包/类
private void initialisePlayer(String username, String agentname)
{
AgentSection as = getAgentSectionFromAgentName(agentname);
EntityPlayerMP player = getPlayerFromUsername(username);
if (player != null && as != null)
{
if ((player.getHealth() <= 0 || player.isDead || !player.isEntityAlive()))
{
player.markPlayerActive();
player = MinecraftServer.getServer().getConfigurationManager().recreatePlayerEntity(player, player.dimension, false);
player.playerNetServerHandler.playerEntity = player;
}
// Reset their food and health:
player.setHealth(player.getMaxHealth());
player.getFoodStats().addStats(20, 40);
player.maxHurtResistantTime = 1; // Set this to a low value so that lava will kill the player straight away.
disablePlayerGracePeriod(player); // Otherwise player will be invulnerable for the first 60 ticks.
player.extinguish();// In case the player was left burning.
// Set their initial position and speed:
PosAndDirection pos = as.getAgentStart().getPlacement();
if (pos != null) {
player.rotationYaw = pos.getYaw().floatValue();
player.rotationPitch = pos.getPitch().floatValue();
player.setPositionAndUpdate(pos.getX().doubleValue(),pos.getY().doubleValue(),pos.getZ().doubleValue());
player.onUpdate();// Needed to force scene to redraw
}
player.setVelocity(0, 0, 0);// Minimise chance of drift!
// Set their inventory:
if (as.getAgentStart().getInventory() != null)
initialiseInventory(player, as.getAgentStart().getInventory());
// Set their game mode to spectator for now, to protect them while we wait for the rest of the cast to assemble:
player.setGameType(GameType.SPECTATOR);
}
}