package net.minecraft.src;
import net.minecraft.network.play.server.S2BPacketChangeGameState;
import net.minecraft.profiler.Profiler;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.WorldServer;
import net.minecraft.world.storage.ISaveHandler;
import net.minecraft.world.storage.WorldInfo;
public class WorldServerOF extends WorldServer
{
private MinecraftServer mcServer;
public WorldServerOF(MinecraftServer par1MinecraftServer, ISaveHandler par2iSaveHandler, WorldInfo worldInfo, int par4, Profiler par6Profiler)
{
super(par1MinecraftServer, par2iSaveHandler, worldInfo, par4, par6Profiler);
this.mcServer = par1MinecraftServer;
}
/**
* Runs a single tick for the world
*/
public void tick()
{
super.tick();
if (!Config.isTimeDefault())
{
this.fixWorldTime();
}
if (Config.waterOpacityChanged)
{
Config.waterOpacityChanged = false;
ClearWater.updateWaterOpacity(Config.getGameSettings(), this);
}
}
/**
* Updates all weather states.
*/
protected void updateWeather()
{
if (!Config.isWeatherEnabled())
{
this.fixWorldWeather();
}
super.updateWeather();
}
private void fixWorldWeather()
{
if (this.worldInfo.isRaining() || this.worldInfo.isThundering())
{
this.worldInfo.setRainTime(0);
this.worldInfo.setRaining(false);
this.setRainStrength(0.0F);
this.worldInfo.setThunderTime(0);
this.worldInfo.setThundering(false);
this.setThunderStrength(0.0F);
this.mcServer.getConfigurationManager().sendPacketToAllPlayers(new S2BPacketChangeGameState(2, 0.0F));
this.mcServer.getConfigurationManager().sendPacketToAllPlayers(new S2BPacketChangeGameState(7, 0.0F));
this.mcServer.getConfigurationManager().sendPacketToAllPlayers(new S2BPacketChangeGameState(8, 0.0F));
}
}
private void fixWorldTime()
{
if (this.worldInfo.getGameType().getID() == 1)
{
long time = this.getWorldTime();
long timeOfDay = time % 24000L;
if (Config.isTimeDayOnly())
{
if (timeOfDay <= 1000L)
{
this.setWorldTime(time - timeOfDay + 1001L);
}
if (timeOfDay >= 11000L)
{
this.setWorldTime(time - timeOfDay + 24001L);
}
}
if (Config.isTimeNightOnly())
{
if (timeOfDay <= 14000L)
{
this.setWorldTime(time - timeOfDay + 14001L);
}
if (timeOfDay >= 22000L)
{
this.setWorldTime(time - timeOfDay + 24000L + 14001L);
}
}
}
}
}