import net.minecraft.world.World; //導入方法依賴的package包/類
@Override
protected void execute()
{
// Set up some initial conditions:
ServerSection ss = currentMissionInit().getMission().getServerSection();
ServerInitialConditions sic = (ss != null) ? ss.getServerInitialConditions() : null;
if (sic != null && sic.getTime() != null)
{
boolean allowTimeToPass = (sic.getTime().isAllowPassageOfTime() != Boolean.FALSE); // Defaults to true if unspecified.
MinecraftServer server = MinecraftServer.getServer();
if (server.worldServers != null && server.worldServers.length != 0)
{
for (int i = 0; i < MinecraftServer.getServer().worldServers.length; ++i)
{
World world = MinecraftServer.getServer().worldServers[i];
world.getGameRules().setOrCreateGameRule("doDaylightCycle", allowTimeToPass ? "true" : "false");
if (sic.getTime().getStartTime() != null)
world.setWorldTime(sic.getTime().getStartTime());
}
}
}
ModSettings modsettings = currentMissionInit().getMission().getModSettings();
if (modsettings != null && modsettings.getMsPerTick() != null)
TimeHelper.serverTickLength = (long)(modsettings.getMsPerTick());
if (getHandlers().quitProducer != null)
getHandlers().quitProducer.prepare(currentMissionInit());
if (getHandlers().worldDecorator != null)
getHandlers().worldDecorator.prepare(currentMissionInit());
// Fire the starting pistol:
MalmoMod.safeSendToAll(MalmoMessageType.SERVER_GO);
// And start the turn schedule turning, if there is one:
if (!ServerStateMachine.this.userTurnSchedule.isEmpty())
{
String agentName = ServerStateMachine.this.userTurnSchedule.get(0);
ServerConfigurationManager scoman = MinecraftServer.getServer().getConfigurationManager();
EntityPlayerMP player = scoman.getPlayerByUsername(agentName);
if (player != null)
{
MalmoMod.network.sendTo(new MalmoMod.MalmoMessage(MalmoMessageType.SERVER_YOUR_TURN, ""), player);
}
else if (getHandlers().worldDecorator != null)
{
// Not a player - is it a world decorator?
getHandlers().worldDecorator.targetedUpdate(agentName);
}
}
}