diff --git a/src/main/java/codes/ztereohype/example/gui/ConfigScreen.java b/src/main/java/codes/ztereohype/example/gui/ConfigScreen.java new file mode 100644 index 0000000..5d6fc61 --- /dev/null +++ b/src/main/java/codes/ztereohype/example/gui/ConfigScreen.java @@ -0,0 +1,57 @@ +package codes.ztereohype.example.gui; + +import codes.ztereohype.example.NicerSkies; +import codes.ztereohype.example.config.ConfigManager; +import codes.ztereohype.example.gui.widget.Separator; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.Checkbox; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; + +public class ConfigScreen extends Screen { + private Screen lastScreen; + private ConfigManager cm = NicerSkies.config; + protected ConfigScreen(Screen lastScreen) { + super(Component.literal("Nicer Skies Config")); + this.lastScreen = lastScreen; + } + + @Override + public void init() { + addRenderableWidget(new Checkbox(20, 60, 20, 20, Component.literal("Render nebulas"), cm.getNebulas()) { + @Override + public void onPress() { + super.onPress(); + cm.setNebulas(!cm.getNebulas()); + } + }); + addRenderableWidget(new Checkbox(20, 90, 20, 20, Component.literal("Twinlke Stars"), cm.getTwinklingStars()) { + @Override + public void onPress() { + super.onPress(); + cm.setTwinklingStars(!cm.getTwinklingStars()); + } + }); + addRenderableWidget(new Checkbox(20, 120, 20, 20, Component.literal("Custom Lightmap"), cm.getLightmapTweaked()) { + @Override + public void onPress() { + super.onPress(); + cm.setLightmapTweaked(!cm.getLightmapTweaked()); + } + }); + addRenderableOnly(new Separator(this.width / 2, 30, this.height - 40)); + + addRenderableWidget(new Slider) + } + + @Override + public void render(PoseStack poseStack, int mouseX, int mouseY, float partialTick) { + this.renderBackground(poseStack); + super.render(poseStack, mouseX, mouseY, partialTick); + + drawCenteredString(poseStack, this.font, this.title, this.width / 2, 10, 16777215); + drawCenteredString(poseStack, this.font, "Toggle Features", this.width / 4, 36, 16777215); + drawCenteredString(poseStack, this.font, "Nebula Settings", 3 * this.width / 4, 36, 16777215); + } +} diff --git a/src/main/java/codes/ztereohype/example/gui/ModMenuSettingsApi.java b/src/main/java/codes/ztereohype/example/gui/ModMenuSettingsApi.java new file mode 100644 index 0000000..4bb542d --- /dev/null +++ b/src/main/java/codes/ztereohype/example/gui/ModMenuSettingsApi.java @@ -0,0 +1,14 @@ +package codes.ztereohype.example.gui; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class ModMenuSettingsApi implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return ConfigScreen::new; + } +} diff --git a/src/main/java/codes/ztereohype/example/gui/widget/Separator.java b/src/main/java/codes/ztereohype/example/gui/widget/Separator.java new file mode 100644 index 0000000..73a2b65 --- /dev/null +++ b/src/main/java/codes/ztereohype/example/gui/widget/Separator.java @@ -0,0 +1,30 @@ +package codes.ztereohype.example.gui.widget; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.gui.components.Widget; +import net.minecraft.client.gui.narration.NarrationElementOutput; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.NotNull; + +public class Separator extends GuiComponent implements Widget { + private final int x; + private final int y; + private final int height; + + public Separator(int x, int y, int height) { + this.x = x; + this.y = y; + this.height = height; + } + + @Override + public void render(@NotNull PoseStack poseStack, int mouseX, int mouseY, float partialTick) { + fill(poseStack, x, y, x + 1, y + height, 0xFFFFFFFF); + } +}