diff --git a/gradle.properties b/gradle.properties index ce01a72..455c606 100755 --- a/gradle.properties +++ b/gradle.properties @@ -3,38 +3,37 @@ org.gradle.jvmargs=-Xmx4G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.20 - yarn_mappings=1.20+build.1 - loader_version=0.14.21 + minecraft_version=1.20.2 + yarn_mappings=1.20.2+build.1 + loader_version=0.14.22 # Mod Properties - mod_version = 1.5.2+1.20 + mod_version = 1.6.0+1.20.2 maven_group = net.puzzlemc archives_base_name = puzzle # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.83.0+1.20 + fabric_version=0.89.2+1.20.2 mod_menu_version = 7.0.1 - midnightlib_version = 1.4.1-fabric + midnightlib_version = 1.5.0-fabric cull_leaves_version = 3.0.2-fabric - ldl_version = 2.3.0+1.19.4 - lbg_version = 1.5.1+1.20 - iris_version = 1.6.4+1.20 - continuity_version = 3.0.0-beta.2+1.19.3 - animatica_version = 0.5+1.19 + ldl_version = 2.3.2+1.20.1 + lbg_version = 1.5.2+1.20.1 + iris_version = 1.6.9+1.20.2 + continuity_version = 3.0.0-beta.3+1.20.1 + animatica_version = 0.6+1.20 colormatic_version = 3.1.2 - borderless_mining_version = 1.1.7+1.19.4 - dynamic_fps_version = v2.2.0 + borderless_mining_version = 1.1.8+1.20.1 + dynamic_fps_version = 3.2.0 toml4j_version = 0.7.2 cit_resewn_version = 1.1.3+1.20 - cem_version = 0.7.1-1.19.3 complete_config_version = 2.3.0 spruceui_version=5.0.0+1.20 - emf_version=0.2.10 - etf_version=4.4.4 - exordium_version=1.1.1-1.19.4 + emf_version=1.0.2 + etf_version=4.5.1 + exordium_version=1.2.1-1.20.2 # Required for LBG quilt_loader_version=0.19.0-beta.18 quilt_fabric_api_version=7.0.1+0.83.0-1.20 diff --git a/puzzle-gui/build.gradle b/puzzle-gui/build.gradle index a9f92f5..ed8ef23 100755 --- a/puzzle-gui/build.gradle +++ b/puzzle-gui/build.gradle @@ -43,10 +43,10 @@ dependencies { modCompileOnlyApi ("maven.modrinth:lambdabettergrass:${project.lbg_version}") modCompileOnly "org.quiltmc:quilt-loader:${rootProject.quilt_loader_version}" modCompileOnlyApi "org.quiltmc.quilted-fabric-api:quilted-fabric-api:${rootProject.quilt_fabric_api_version}" - modImplementation ("maven.modrinth:iris:${project.iris_version}") + modCompileOnlyApi ("maven.modrinth:iris:${project.iris_version}") modCompileOnly ("maven.modrinth:cit-resewn:${project.cit_resewn_version}") modCompileOnlyApi ("maven.modrinth:continuity:${project.continuity_version}") - modImplementation ("maven.modrinth:animatica:${project.animatica_version}") + modCompileOnlyApi ("maven.modrinth:animatica:${project.animatica_version}") modCompileOnlyApi ("maven.modrinth:colormatic:${project.colormatic_version}") modImplementation ("maven.modrinth:borderless-mining:${project.borderless_mining_version}") modImplementation ("maven.modrinth:dynamic-fps:${project.dynamic_fps_version}") diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java index 4f3d918..c0dee0f 100644 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java @@ -1,13 +1,12 @@ package net.puzzlemc.gui; -import eu.midnightdust.lib.util.MidnightColorUtil; import net.fabricmc.loader.api.FabricLoader; import net.irisshaders.iris.api.v0.IrisApi; import net.irisshaders.iris.api.v0.IrisApiConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Style; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.puzzlemc.gui.screen.widget.PuzzleWidget; public class IrisCompat { @@ -18,7 +17,7 @@ public class IrisCompat { IrisApiConfig irisConfig = IrisApi.getInstance().getConfig(); irisConfig.setShadersEnabledAndApply(!irisConfig.areShadersEnabled()); })); - PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.translatable("options.iris.shaderPackSelection.title"), (button) -> button.setMessage(Text.literal("➥ ").append(Text.translatable("iris.puzzle.option.open").setStyle(Style.EMPTY.withColor(MidnightColorUtil.radialRainbow(0.5f, 1).getRGB())))), (button) -> { + PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.translatable("options.iris.shaderPackSelection.title"), (button) -> button.setMessage(Text.literal("➥ ").append(Text.translatable("iris.puzzle.option.open").formatted(Formatting.GOLD))), (button) -> { MinecraftClient client = MinecraftClient.getInstance(); client.setScreen((Screen) IrisApi.getInstance().openMainIrisScreenObj(client.currentScreen)); })); diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java index 3f68a71..4e28e41 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java @@ -4,8 +4,6 @@ import dev.lambdaurora.lambdabettergrass.LBGConfig; import dev.lambdaurora.lambdabettergrass.LambdaBetterGrass; import dev.lambdaurora.lambdynlights.DynamicLightsConfig; import dev.lambdaurora.lambdynlights.LambDynLights; -import dynamicfps.DynamicFPSConfig; -import dynamicfps.DynamicFPSMod; import eu.midnightdust.core.MidnightLibClient; import eu.midnightdust.cullleaves.config.CullLeavesConfig; import eu.midnightdust.lib.util.PlatformFunctions; @@ -14,6 +12,8 @@ import io.github.kvverti.colormatic.ColormaticConfigController; import link.infra.borderlessmining.config.ConfigHandler; import me.pepperbell.continuity.client.config.ContinuityConfig; import me.pepperbell.continuity.client.config.Option; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.util.Identifier; import net.puzzlemc.core.config.PuzzleConfig; import net.puzzlemc.gui.screen.widget.PuzzleWidget; import net.fabricmc.api.ClientModInitializer; @@ -23,7 +23,6 @@ import net.minecraft.util.Formatting; import net.puzzlemc.splashscreen.PuzzleSplashScreen; import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; import traben.entity_model_features.config.EMFConfig; -import traben.entity_model_features.utils.EMFManager; import traben.entity_texture_features.ETFApi; import traben.entity_texture_features.config.ETFConfig; import io.github.kvverti.colormatic.ColormaticConfig; @@ -33,6 +32,7 @@ public class PuzzleClient implements ClientModInitializer { public final static String id = "puzzle"; public static final Text YES = Text.translatable("gui.yes").formatted(Formatting.GREEN); public static final Text NO = Text.translatable("gui.no").formatted(Formatting.RED); + public static final Identifier PUZZLE_BUTTON = new Identifier(id, "icon/button"); @Override public void onInitializeClient() { @@ -109,49 +109,6 @@ public class PuzzleClient implements ClientModInitializer { catch (NumberFormatException ignored) {} })); } - if (isActive("dynamicfps")) { - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.of("Dynamic FPS"))); - DynamicFPSConfig fpsConfig = DynamicFPSMod.config; - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("config.dynamicfps.reduce_when_unfocused"), (button) -> button.setMessage(fpsConfig.reduceFPSWhenUnfocused ? YES : NO), (button) -> { - fpsConfig.reduceFPSWhenUnfocused = !fpsConfig.reduceFPSWhenUnfocused; - fpsConfig.save(); - })); - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(0, 60,Text.translatable("config.dynamicfps.unfocused_fps"), () -> fpsConfig.unfocusedFPS, - (button) -> button.setMessage(Text.of(fpsConfig.unfocusedFPS + " FPS")), - (slider) -> { - try { - fpsConfig.unfocusedFPS = slider.getInt(); - } - catch (NumberFormatException ignored) {} - finally {fpsConfig.save();} - })); - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("config.dynamicfps.restore_when_hovered"), (button) -> button.setMessage(fpsConfig.restoreFPSWhenHovered ? YES : NO), (button) -> { - fpsConfig.restoreFPSWhenHovered = !fpsConfig.restoreFPSWhenHovered; - fpsConfig.save(); - })); - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("config.dynamicfps.run_gc_on_unfocus"), (button) -> button.setMessage(fpsConfig.runGCOnUnfocus ? YES : NO), (button) -> { - fpsConfig.runGCOnUnfocus = !fpsConfig.runGCOnUnfocus; - fpsConfig.save(); - })); - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(0, 100,Text.translatable("config.dynamicfps.unfocused_volume"), () -> ((Number)(fpsConfig.unfocusedVolumeMultiplier * 100)).intValue(), - (button) -> button.setMessage(Text.of(((Number)(fpsConfig.unfocusedVolumeMultiplier * 100)).intValue() + "%")), - (slider) -> { - try { - fpsConfig.unfocusedVolumeMultiplier = ((Number)slider.getInt()).floatValue() / 100; - } - catch (NumberFormatException ignored) {} - finally {fpsConfig.save();} - })); - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(0, 100,Text.translatable("config.dynamicfps.hidden_volume"), () -> ((Number)(fpsConfig.hiddenVolumeMultiplier * 100)).intValue(), - (button) -> button.setMessage(Text.of(((Number)(fpsConfig.hiddenVolumeMultiplier * 100)).intValue() + "%")), - (slider) -> { - try { - fpsConfig.hiddenVolumeMultiplier = ((Number)slider.getInt()).floatValue() / 100; - } - catch (NumberFormatException ignored) {} - finally {fpsConfig.save();} - })); - } if (isActive("borderlessmining")) { PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.of("Borderless Mining"))); ConfigHandler bmConfig = ConfigHandler.getInstance(); @@ -229,7 +186,6 @@ public class PuzzleClient implements ClientModInitializer { Option.BooleanOption booleanOption = ((Option.BooleanOption)option); PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("options.continuity."+s), (button) -> button.setMessage(booleanOption.get() ? YES : NO), (button) -> { booleanOption.set(!booleanOption.get()); - contConfig.onChange(); contConfig.save(); })); } catch (Exception ignored) {} @@ -263,13 +219,17 @@ public class PuzzleClient implements ClientModInitializer { if (isActive("entity_model_features")) { PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("entity_model_features.title"))); EMFConfig emfConfig = EMFConfig.getConfig(); - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("entity_model_features.config.substitute_vanilla"), (button) -> button.setMessage(emfConfig.attemptToCopyVanillaModelIntoMissingModelPart ? YES : NO), (button) -> { - emfConfig.attemptToCopyVanillaModelIntoMissingModelPart = !emfConfig.attemptToCopyVanillaModelIntoMissingModelPart; + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("entity_model_features.config.force_models"), (button) -> button.setMessage(emfConfig.attemptRevertingEntityModelsAlteredByAnotherMod ? YES : NO), (button) -> { + emfConfig.attemptRevertingEntityModelsAlteredByAnotherMod = !emfConfig.attemptRevertingEntityModelsAlteredByAnotherMod; EMFConfig.EMF_saveConfig(); - if (EMFConfig.getConfig().reloadMode == EMFConfig.ModelDataRefreshMode.MANUAL) { - EMFManager.resetInstance(); - } })); + if (PlatformFunctions.isModLoaded("physicsmod")) { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("entity_model_features.config.physics"), (button) -> button.setMessage(emfConfig.attemptPhysicsModPatch_2 != EMFConfig.PhysicsModCompatChoice.OFF ? + Text.translatable("entity_model_features.config." + (emfConfig.attemptPhysicsModPatch_2 == EMFConfig.PhysicsModCompatChoice.VANILLA ? "physics.1" : "physics.2")) : ScreenTexts.OFF), (button) -> { + emfConfig.attemptPhysicsModPatch_2 = emfConfig.attemptPhysicsModPatch_2.next(); + EMFConfig.EMF_saveConfig(); + })); + } } lateInitDone = true; } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/mixin/MixinOptionsScreen.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/mixin/MixinOptionsScreen.java index 14d9edd..8e50f3d 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/mixin/MixinOptionsScreen.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/mixin/MixinOptionsScreen.java @@ -1,9 +1,8 @@ package net.puzzlemc.gui.mixin; import eu.midnightdust.core.config.MidnightLibConfig; -import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.util.Identifier; +import net.minecraft.client.gui.widget.TextIconButtonWidget; import net.puzzlemc.core.config.PuzzleConfig; import net.puzzlemc.gui.PuzzleClient; import net.puzzlemc.gui.screen.PuzzleOptionsScreen; @@ -19,8 +18,6 @@ import java.util.Objects; @Mixin(OptionsScreen.class) public abstract class MixinOptionsScreen extends Screen { - private static final Identifier PUZZLE_ICON_TEXTURE = new Identifier(PuzzleClient.id, "textures/gui/puzzle_button.png"); - protected MixinOptionsScreen(Text title) { super(title); } @@ -31,7 +28,9 @@ public abstract class MixinOptionsScreen extends Screen { int i = 0; if (FabricLoader.getInstance().isModLoaded("lod")) i = i + 358; if (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.FALSE)) i = i - 25; - this.addDrawableChild(new TexturedOverlayButtonWidget(this.width / 2 - 178 + i, this.height / 6 - 12, 20, 20, 0, 0, 20, PUZZLE_ICON_TEXTURE, 32, 64, (buttonWidget) -> (Objects.requireNonNull(this.client)).setScreen(new PuzzleOptionsScreen(this)), Text.translatable("midnightlib.overview.title"))); + TextIconButtonWidget iconButton = TextIconButtonWidget.builder(Text.translatable("puzzle.screen.title"), (buttonWidget) -> (Objects.requireNonNull(this.client)).setScreen(new PuzzleOptionsScreen(this)), true).dimension(20, 20).texture(PuzzleClient.PUZZLE_BUTTON, 20, 20).build(); + iconButton.setPosition(this.width / 2 - 178 + i, this.height / 6 - 12); + this.addDrawableChild(iconButton); } } } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java index 3dfc5b0..3cb2f5e 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java @@ -56,6 +56,7 @@ public class PuzzleOptionsScreen extends Screen { this.addSelectableChild(this.list); super.init(); + if (client != null && client.world != null) this.list.setRenderBackground(false); this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).setScreen(parent)).dimensions(this.width / 2 - 100, this.height - 28, 200, 20).build()); } @@ -86,11 +87,10 @@ public class PuzzleOptionsScreen extends Screen { @Override public void render(DrawContext context, int mouseX, int mouseY, float delta) { - this.renderBackground(context); - if (client != null && client.world != null) this.list.setRenderBackground(false); + super.render(context, mouseX, mouseY, delta); + this.list.render(context, mouseX, mouseY, delta); - super.render(context, mouseX, mouseY, delta); if (tooltip != null) { if (this.list.getFocused() != null && (this.list.getHoveredEntry() == null || this.list.getHoveredEntry().button == null || !this.list.getHoveredEntry().button.isMouseOver(mouseX, mouseY))) { context.drawTooltip(textRenderer, tooltip, this.list.getFocused().getX(), this.list.getFocused().getY() + (this.list.getFocused().getHeight() * 2)); diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleButtonWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleButtonWidget.java index 9a8e6f5..c699ccf 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleButtonWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleButtonWidget.java @@ -16,7 +16,9 @@ public class PuzzleButtonWidget extends ButtonWidget { } @Override public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) { - title.setTitle(this); + try { + title.setTitle(this); + } catch (Exception e) {e.printStackTrace(); this.visible = false;} super.renderButton(context, mouseX, mouseY, delta); } } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java index 9ddfadb..a08b0d0 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java @@ -10,7 +10,6 @@ import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.gui.widget.ElementListWidget; import net.minecraft.client.resource.language.I18n; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.text.TranslatableTextContent; import net.puzzlemc.gui.screen.PuzzleOptionsScreen; diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java index fc9e5d3..0cdc176 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java @@ -17,7 +17,9 @@ public class PuzzleSliderWidget extends SliderWidget { this.setTextAction = setTextAction; this.changeAction = changeAction; - this.updateMessage(); + try { + this.updateMessage(); + } catch (Exception e) {e.printStackTrace(); this.visible = false;} } public int getInt() { int difference = max - min; diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleTextFieldWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleTextFieldWidget.java index 2edf8e5..54be22c 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleTextFieldWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleTextFieldWidget.java @@ -12,7 +12,9 @@ public class PuzzleTextFieldWidget extends TextFieldWidget { super(textRenderer, x, y, width, height, Text.of("")); this.setValueAction = setValue; this.change = change; - setValueAction.setTextValue(this); + try { + setValueAction.setTextValue(this); + } catch (Exception e) {e.printStackTrace(); this.setVisible(false);} } @Override public void write(String text) { diff --git a/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/puzzle_button.png b/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/puzzle_button.png deleted file mode 100644 index 5e9f87b..0000000 Binary files a/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/puzzle_button.png and /dev/null differ diff --git a/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/sprites/icon/button.png b/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/sprites/icon/button.png new file mode 100644 index 0000000..d50691f Binary files /dev/null and b/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/sprites/icon/button.png differ diff --git a/puzzle-splashscreen/src/main/java/net/puzzlemc/splashscreen/mixin/MixinSplashScreen.java b/puzzle-splashscreen/src/main/java/net/puzzlemc/splashscreen/mixin/MixinSplashScreen.java index c242474..90d0a7d 100755 --- a/puzzle-splashscreen/src/main/java/net/puzzlemc/splashscreen/mixin/MixinSplashScreen.java +++ b/puzzle-splashscreen/src/main/java/net/puzzlemc/splashscreen/mixin/MixinSplashScreen.java @@ -8,7 +8,6 @@ import net.minecraft.client.gui.screen.SplashOverlay; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.texture.NativeImage; import net.minecraft.client.texture.NativeImageBackedTexture; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 06656d9..18f5c95 100755 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -21,6 +21,7 @@ "environment": "client", "depends": { - "fabric": "*" + "fabric": "*", + "minecraft": ">=1.20.2" } }