diff --git a/README.md b/README.md
index 1a67765..7e9d221 100644
--- a/README.md
+++ b/README.md
@@ -16,12 +16,32 @@ Note that if you're using something like MultiMC or any of its derivates the fol
## List of changes
+### Quality of Life changes
+
Sugar canes can now be places on sand
![sugar cane on sand](https://i.imgur.com/N7WjSx8.png)
+More sounds
+
+- Opening / closing chests
+- Minecarts
+- Items breaking
+
+**Note: The mod doesn't add any sounds by itself, all of these sounds are already present in your "resources" folder, they are automatically downloaded by Minecraft itself**
+
+
+
+Adds Clouds toggle in Video Settings
+
+
+
+
+
+### Fixes
+
Fixes selected blocks being rendered under text in containers
Before:
@@ -102,16 +122,6 @@ After:
-More sounds
-
-- Opening / closing chests
-- Minecarts
-- Items breaking
-
-**Note: The mod doesn't add any sounds by itself, all of these sounds are already present in your "resources" folder, they are automatically downloaded by Minecraft itself**
-
-
-
Fixes leg armor not being updated while riding
Before:
diff --git a/src/main/java/xyz/pixelatedw/finalbeta/ModConfig.java b/src/main/java/xyz/pixelatedw/finalbeta/ModConfig.java
index 240db28..d932060 100644
--- a/src/main/java/xyz/pixelatedw/finalbeta/ModConfig.java
+++ b/src/main/java/xyz/pixelatedw/finalbeta/ModConfig.java
@@ -17,6 +17,9 @@ public class ModConfig {
public static final Option SUGAR_CANE_ON_SAND = make("Sugar Cane on sand", true, "Allows sugar canes to be placed on sand");
public static final Option ADD_MORE_SOUNDS = make("Add more sounds", true,
"Links a few more sounds from your local 'resources' folder with the game, namely for item breaking, minecarts and chests");
+ public static final Option ENABLE_CLOUDS = make("Enable Clouds", true,
+ "Enables the rendering of clouds");
+
public static final Option FIX_BOW_MODEL = make("Fix bow model", true,
"Makes the box model held by players and skeletons bigger and facing forward");
public static final Option FIX_MINECART_FLICKERING = make("Fix minecart flickering", true,
@@ -74,6 +77,10 @@ public class ModConfig {
public T get(Option o) {
return this.fileConfig.getOrElse(o.name, o.defaultValue);
}
+
+ public T set(Option o, T value) {
+ return this.fileConfig.set(o.name, value);
+ }
public static class Option {
private String name;
@@ -94,5 +101,9 @@ public class ModConfig {
public T get() {
return ModConfig.instance().get(this);
}
+
+ public void set(T value) {
+ ModConfig.instance().set(this, value);
+ }
}
}
diff --git a/src/main/java/xyz/pixelatedw/finalbeta/mixin/ScreenMixin.java b/src/main/java/xyz/pixelatedw/finalbeta/mixin/ScreenMixin.java
index 7597c0e..140c504 100644
--- a/src/main/java/xyz/pixelatedw/finalbeta/mixin/ScreenMixin.java
+++ b/src/main/java/xyz/pixelatedw/finalbeta/mixin/ScreenMixin.java
@@ -1,5 +1,7 @@
package xyz.pixelatedw.finalbeta.mixin;
+import java.util.List;
+
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -11,4 +13,7 @@ public class ScreenMixin {
@Shadow
public Minecraft minecraft;
+
+ @Shadow
+ public List buttons;
}
diff --git a/src/main/java/xyz/pixelatedw/finalbeta/mixin/VideoSettingsScreenMixin.java b/src/main/java/xyz/pixelatedw/finalbeta/mixin/VideoSettingsScreenMixin.java
new file mode 100644
index 0000000..87c80ba
--- /dev/null
+++ b/src/main/java/xyz/pixelatedw/finalbeta/mixin/VideoSettingsScreenMixin.java
@@ -0,0 +1,35 @@
+package xyz.pixelatedw.finalbeta.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import net.minecraft.client.gui.screen.VideoSettingsScreen;
+import net.minecraft.client.gui.widgets.Button;
+import net.minecraft.client.resource.language.TranslationStorage;
+import xyz.pixelatedw.finalbeta.ModConfig;
+
+@Mixin(VideoSettingsScreen.class)
+public class VideoSettingsScreenMixin extends ScreenMixin {
+
+ @Inject(method = "init", at = @At("TAIL"))
+ public void init(CallbackInfo ci) {
+ VideoSettingsScreen screen = (VideoSettingsScreen)(Object)this;
+ this.buttons.add(new Button(300, screen.width / 2 - 155, screen.height / 6 + 96, 150, 20, this.getCloudsLabel()));
+ }
+
+ @Inject(method = "buttonClicked", at = @At("HEAD"))
+ public void buttonClicked(Button btn, CallbackInfo ci) {
+ if(btn.active) {
+ if(btn.id == 300) {
+ ModConfig.ENABLE_CLOUDS.set(!ModConfig.ENABLE_CLOUDS.get());
+ }
+ }
+ }
+
+ private String getCloudsLabel() {
+ TranslationStorage i18n = TranslationStorage.getInstance();
+ return "Clouds: " + (ModConfig.ENABLE_CLOUDS.get() ? i18n.translate("options.on") : i18n.translate("options.off"));
+ }
+}
diff --git a/src/main/java/xyz/pixelatedw/finalbeta/mixin/WorldRendererMixin.java b/src/main/java/xyz/pixelatedw/finalbeta/mixin/WorldRendererMixin.java
new file mode 100644
index 0000000..a69b078
--- /dev/null
+++ b/src/main/java/xyz/pixelatedw/finalbeta/mixin/WorldRendererMixin.java
@@ -0,0 +1,21 @@
+package xyz.pixelatedw.finalbeta.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import net.minecraft.client.render.WorldRenderer;
+import xyz.pixelatedw.finalbeta.ModConfig;
+
+@Mixin(WorldRenderer.class)
+public class WorldRendererMixin {
+
+ @Inject(method = "method_1552", at = @At("HEAD"), cancellable = true)
+ public void cloudRenderer(float f, CallbackInfo ci) {
+ if(!ModConfig.ENABLE_CLOUDS.get()) {
+ ci.cancel();
+ }
+ }
+
+}
diff --git a/src/main/resources/finalbeta.mixins.json b/src/main/resources/finalbeta.mixins.json
index 45f3118..81d0370 100644
--- a/src/main/resources/finalbeta.mixins.json
+++ b/src/main/resources/finalbeta.mixins.json
@@ -24,7 +24,9 @@
"FishHookMixin",
"TileRendererMixin",
"LivingEntityMixin",
- "FurnaceEntityMixin"
+ "FurnaceEntityMixin",
+ "WorldRendererMixin",
+ "VideoSettingsScreenMixin"
],
"injectors": {
"defaultRequire": 1