Puzzle 1.6.0 - 1.20.2 & Stability improvements

- Port to 1.20.2
- Improve stability by skipping outdated compat entries
- Update EMF integration
This commit is contained in:
Motschen
2023-09-24 21:18:45 +02:00
parent 1dc7245a99
commit bc01662cda
14 changed files with 50 additions and 88 deletions

View File

@@ -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

View File

@@ -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}")

View File

@@ -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));
}));

View File

@@ -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;
}

View File

@@ -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);
}
}
}

View File

@@ -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));

View File

@@ -16,7 +16,9 @@ public class PuzzleButtonWidget extends ButtonWidget {
}
@Override
public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) {
try {
title.setTitle(this);
} catch (Exception e) {e.printStackTrace(); this.visible = false;}
super.renderButton(context, mouseX, mouseY, delta);
}
}

View File

@@ -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;

View File

@@ -17,7 +17,9 @@ public class PuzzleSliderWidget extends SliderWidget {
this.setTextAction = setTextAction;
this.changeAction = changeAction;
try {
this.updateMessage();
} catch (Exception e) {e.printStackTrace(); this.visible = false;}
}
public int getInt() {
int difference = max - min;

View File

@@ -12,7 +12,9 @@ public class PuzzleTextFieldWidget extends TextFieldWidget {
super(textRenderer, x, y, width, height, Text.of(""));
this.setValueAction = setValue;
this.change = change;
try {
setValueAction.setTextValue(this);
} catch (Exception e) {e.printStackTrace(); this.setVisible(false);}
}
@Override
public void write(String text) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

View File

@@ -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;

View File

@@ -21,6 +21,7 @@
"environment": "client",
"depends": {
"fabric": "*"
"fabric": "*",
"minecraft": ">=1.20.2"
}
}