                  {
                      public String call() throws Exception
                      {
-@@ -553,7 +553,7 @@ public abstract class World implements IBlockAccess
+@@ -553,7 +550,7 @@ public abstract class World implements IBlockAccess
              {
                  CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Exception while updating neighbours");
                  CrashReportCategory crashreportcategory = crashreport.makeCategory("Block being updated");

 net/minecraft/tileentity/TileEntitySign.java       |   2 +-
 net/minecraft/util/Timer.java                      |   6 +
 net/minecraft/util/text/TextComponentBase.java     |  17 +-
 net/minecraft/world/World.java                     |   8 +-
 net/minecraft/world/chunk/Chunk.java               |   2 +-
 .../world/gen/structure/MapGenStructure.java       |   6 +-
 net/minecraft/world/storage/WorldInfo.java         |  18 +-
 67 files changed, 1223 insertions(+), 417 deletions(-)

diff --git a/net/minecraft/block/Block.java b/net/minecraft/block/Block.java
index 25c6330..da46b84 100644

                 {
                     public String call() throws Exception
                     {
@@ -1573,13 +1570,33 @@ public abstract class World implements IBlockAccess
      */
     public float getCelestialAngle(float partialTicks)
     {
-        return this.provider.calculateCelestialAngle(this.worldInfo.getWorldTime(), partialTicks);
+		// TODO: Client
+		if(WurstClient.INSTANCE.mods.weatherMod.isEnabled()
+			&& WurstClient.INSTANCE.mods.weatherMod.changeTime.isChecked())
+		{
+			return this.provider.calculateCelestialAngle(
+				(long)WurstClient.INSTANCE.mods.weatherMod.time.getValue(),
+				partialTicks);
+		}else
+		{
+			return this.provider.calculateCelestialAngle(
+				this.worldInfo.getWorldTime(), partialTicks);
+		}
     }
 
     public int getMoonPhase()
     {
+		// TODO: Client
+		if(WurstClient.INSTANCE.mods.weatherMod.isEnabled()
+			&& WurstClient.INSTANCE.mods.weatherMod.changeMoonPhase.isChecked())
+		{
+			return (int)WurstClient.INSTANCE.mods.weatherMod.moonPhase
+				.getValue();
+		}else
+		{
 			return this.provider.getMoonPhase(this.worldInfo.getWorldTime());
 		}
+    }
 
     /**
      * gets the current fullness of the moon expressed as a float between 1.0 and 0.0, in steps of .25
@@ -3633,7 +3650,16 @@ public abstract class World implements IBlockAccess
      */
     public float getRainStrength(float delta)
     {
-        return this.prevRainingStrength + (this.rainingStrength - this.prevRainingStrength) * delta;
+		// TODO: Client
+		if(WurstClient.INSTANCE.mods.weatherMod.isEnabled()
+			&& WurstClient.INSTANCE.mods.weatherMod.disableRain.isChecked())
+		{
+			return 0;
+		}else
+		{
+			return this.prevRainingStrength
+				+ (this.rainingStrength - this.prevRainingStrength) * delta;
+		}
     }
 
     /**
@@ -3809,14 +3835,14 @@ public abstract class World implements IBlockAccess
     {
         CrashReportCategory crashreportcategory = report.makeCategoryDepth("Affected level", 1);
         crashreportcategory.addCrashSection("Level name", this.worldInfo == null ? "????" : this.worldInfo.getWorldName());
