diff --git a/build.gradle b/build.gradle index 1edd011..0b352ff 100755 --- a/build.gradle +++ b/build.gradle @@ -101,7 +101,24 @@ repositories { name = "TerraformersMC" url = "https://maven.terraformersmc.com/releases" } - + maven { + name = 'AperLambda' + url = 'https://aperlambda.github.io/maven' + } + mavenCentral() + maven { + name 'Gegy' + url 'https://maven.gegy.dev' + } + maven { + url = "https://api.modrinth.com/maven" + } + maven { + url "https://www.cursemaven.com" + content { + includeGroup "curse.maven" + } + } } dependencies { @@ -109,6 +126,20 @@ dependencies { modImplementation ("com.terraformersmc:modmenu:${project.mod_menu_version}") { exclude group: "net.fabricmc.fabric-api" } + modImplementation ("maven.modrinth:cull-leaves:${project.cull_leaves_version}") + modImplementation ("maven.modrinth:lambdynamiclights:${project.ldl_version}") + modImplementation ("maven.modrinth:lambdabettergrass:${project.lbg_version}") + modImplementation ("maven.modrinth:iris:${project.iris_version}") + modImplementation ("maven.modrinth:cit-resewn:${project.cit_resewn_version}") + modImplementation ("maven.modrinth:continuity:${project.continuity_version}") + modImplementation "curse.maven:custom-entity-models-cem-477078:3440846" + + modImplementation("org.aperlambda:lambdajcommon:1.8.1") { + exclude group: 'com.google.code.gson' + exclude group: 'com.google.guava' + } + modImplementation "dev.lambdaurora:spruceui:${project.spruceui_version}" + modImplementation "maven.modrinth:midnightlib:${project.midnightlib_version}" subprojects.each { api project(path: ":${it.name}", configuration: "dev") diff --git a/gradle.properties b/gradle.properties index c6841db..768b256 100755 --- a/gradle.properties +++ b/gradle.properties @@ -3,22 +3,25 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.17-rc1 - yarn_mappings=1.17-rc1+build.1 - loader_version=0.11.3 + minecraft_version=1.17.1 + yarn_mappings=1.17.1+build.61 + loader_version=0.11.7 # Mod Properties - mod_version = 0.3.0 + mod_version = 0.4.0 maven_group = eu.midnightdust 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.34.8+1.17 - mod_menu_version = 2.0.0-beta.7 + fabric_version=0.40.1+1.17 + mod_menu_version = 2.0.13 - cull_leaves_version = 2.2.0 - ldl_version = 2.0.0+21w20a - lbg_version = 1.1.2+21w20a - iris_version = v0.4.0 - ctmf_version = v0.4.0 + cull_leaves_version = 2.3.0 + ldl_version = 2.0.2+1.17 + lbg_version = 1.2.1+1.17 + iris_version = mc1.17.1-1.1.2 + continuity_version = 1.0.0+1.17 + cit_resewn_version = 0.7.1 + spruceui_version=3.3.0+1.17 + midnightlib_version=0.2.5 diff --git a/puzzle-base/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java b/puzzle-base/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java deleted file mode 100755 index e922563..0000000 --- a/puzzle-base/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java +++ /dev/null @@ -1,376 +0,0 @@ -package eu.midnightdust.lib.config; - -import com.google.gson.ExclusionStrategy; -import com.google.gson.FieldAttributes; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.Selectable; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ScreenTexts; -import net.minecraft.client.gui.widget.*; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.*; -import net.minecraft.util.Formatting; - -import java.lang.annotation.*; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.*; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.regex.Pattern; - -// MidnightConfig v1.0.2 -// Single class config library - feel free to copy! -// Changelog: -// - 1.0.2: -// - Update to 21w20a -// - 1.0.1: -// - Fixed buttons not working in fullscreen -// - 1.0.0: -// - The config screen no longer shows the entries of all instances of MidnightConfig -// - Compatible with servers! -// - Scrollable! -// - Comment support! -// - Fresh New Design - -/** Based on https://github.com/Minenash/TinyConfig - * Credits to Minenash */ - -@SuppressWarnings("unchecked") -public class MidnightConfig { - public static boolean useTooltipForTitle = true; // Render title as tooltip or as simple text - - private static final Pattern INTEGER_ONLY = Pattern.compile("(-?[0-9]*)"); - private static final Pattern DECIMAL_ONLY = Pattern.compile("-?([\\d]+\\.?[\\d]*|[\\d]*\\.?[\\d]+|\\.)"); - - private static final List entries = new ArrayList<>(); - - protected static class EntryInfo { - Field field; - Object widget; - int width; - Map.Entry error; - Object defaultValue; - Object value; - String tempValue; - boolean inLimits = true; - String id; - } - - public static final Map> configClass = new HashMap<>(); - private static Path path; - - private static final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE).addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()).setPrettyPrinting().create(); - - public static void init(String modid, Class config) { - path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json"); - configClass.put(modid, config); - - for (Field field : config.getFields()) { - EntryInfo info = new EntryInfo(); - if (field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) - try { - initClient(modid, field, info); - } catch (Exception e) {continue;} - if (field.isAnnotationPresent(Entry.class)) - try { - info.defaultValue = field.get(null); - } catch (IllegalAccessException ignored) {} - } - try { gson.fromJson(Files.newBufferedReader(path), config); } - catch (Exception e) { write(modid); } - - for (EntryInfo info : entries) { - if (info.field.isAnnotationPresent(Entry.class)) - try { - info.value = info.field.get(null); - info.tempValue = info.value.toString(); - } catch (IllegalAccessException ignored) { - } - } - } - @Environment(EnvType.CLIENT) - public static void initClient(String modid, Field field, EntryInfo info) { - Class type = field.getType(); - Entry e = field.getAnnotation(Entry.class); - info.width = e != null ? e.width() : 0; - info.field = field; - info.id = modid; - - if (e != null) - if (type == int.class) textField(info, Integer::parseInt, INTEGER_ONLY, e.min(), e.max(), true); - else if (type == double.class) textField(info, Double::parseDouble, DECIMAL_ONLY, e.min(), e.max(),false); - else if (type == String.class) textField(info, String::length, null, Math.min(e.min(),0), Math.max(e.max(),1),true); - else if (type == boolean.class) { - Function func = value -> new LiteralText((Boolean) value ? "True" : "False").formatted((Boolean) value ? Formatting.GREEN : Formatting.RED); - info.widget = new AbstractMap.SimpleEntry>(button -> { - info.value = !(Boolean) info.value; - button.setMessage(func.apply(info.value)); - }, func); - } else if (type.isEnum()) { - List values = Arrays.asList(field.getType().getEnumConstants()); - Function func = value -> new TranslatableText(modid + ".midnightconfig." + "enum." + type.getSimpleName() + "." + info.value.toString()); - info.widget = new AbstractMap.SimpleEntry>( button -> { - int index = values.indexOf(info.value) + 1; - info.value = values.get(index >= values.size()? 0 : index); - button.setMessage(func.apply(info.value)); - }, func); - } - entries.add(info); - } - - private static void textField(EntryInfo info, Function f, Pattern pattern, double min, double max, boolean cast) { - boolean isNumber = pattern != null; - info.widget = (BiFunction>) (t, b) -> s -> { - s = s.trim(); - if (!(s.isEmpty() || !isNumber || pattern.matcher(s).matches())) return false; - - Number value = 0; - boolean inLimits = false; - System.out.println(((isNumber ^ s.isEmpty()))); - System.out.println(!s.equals("-") && !s.equals(".")); - info.error = null; - if (!(isNumber && s.isEmpty()) && !s.equals("-") && !s.equals(".")) { - value = f.apply(s); - inLimits = value.doubleValue() >= min && value.doubleValue() <= max; - info.error = inLimits? null : new AbstractMap.SimpleEntry<>(t, new LiteralText(value.doubleValue() < min ? - "§cMinimum " + (isNumber? "value" : "length") + (cast? " is " + (int)min : " is " + min) : - "§cMaximum " + (isNumber? "value" : "length") + (cast? " is " + (int)max : " is " + max))); - } - - info.tempValue = s; - t.setEditableColor(inLimits? 0xFFFFFFFF : 0xFFFF7777); - info.inLimits = inLimits; - b.active = entries.stream().allMatch(e -> e.inLimits); - - if (inLimits) - info.value = isNumber? value : s; - - return true; - }; - } - - public static void write(String modid) { - path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json"); - try { - if (!Files.exists(path)) Files.createFile(path); - Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Environment(EnvType.CLIENT) - public static Screen getScreen(Screen parent, String modid) { - return new TinyConfigScreen(parent, modid); - } - - @Environment(EnvType.CLIENT) - private static class TinyConfigScreen extends Screen { - - protected TinyConfigScreen(Screen parent, String modid) { - super(new TranslatableText(modid + ".midnightconfig." + "title")); - this.parent = parent; - this.modid = modid; - this.translationPrefix = modid + ".midnightconfig."; - } - private final String translationPrefix; - private final Screen parent; - private final String modid; - private MidnightConfigListWidget list; - - // Real Time config update // - @Override - public void tick() { - for (EntryInfo info : entries) - try { info.field.set(null, info.value); } - catch (IllegalAccessException ignored) {} - } - - @Override - protected void init() { - super.init(); - - this.addDrawableChild(new ButtonWidget(this.width / 2 - 154, this.height - 28, 150, 20, ScreenTexts.CANCEL, button -> { - try { gson.fromJson(Files.newBufferedReader(path), configClass.get(modid)); } - catch (Exception e) { write(modid); } - - for (EntryInfo info : entries) { - if (info.field.isAnnotationPresent(Entry.class)) { - try { - info.value = info.field.get(null); - info.tempValue = info.value.toString(); - } catch (IllegalAccessException ignored) { - } - } - } - Objects.requireNonNull(client).openScreen(parent); - })); - - ButtonWidget done = this.addDrawableChild(new ButtonWidget(this.width / 2 + 4, this.height - 28, 150, 20, ScreenTexts.DONE, (button) -> { - for (EntryInfo info : entries) - if (info.id.equals(modid)) { - try { - info.field.set(null, info.value); - } catch (IllegalAccessException ignored) {} - } - write(modid); - Objects.requireNonNull(client).openScreen(parent); - })); - - this.list = new MidnightConfigListWidget(this.client, this.width, this.height, 32, this.height - 32, 25); - this.addSelectableChild(this.list); - for (EntryInfo info : entries) { - if (info.id.equals(modid)) { - TranslatableText name = new TranslatableText(translationPrefix + info.field.getName()); - ButtonWidget resetButton = new ButtonWidget(width - 155, 0, 40, 20, new LiteralText("Reset").formatted(Formatting.RED), (button -> { - info.value = info.defaultValue; - info.tempValue = info.value.toString(); - double scrollAmount = list.getScrollAmount(); - Objects.requireNonNull(client).openScreen(this); - list.setScrollAmount(scrollAmount); - })); - - if (info.widget instanceof Map.Entry) { - Map.Entry> widget = (Map.Entry>) info.widget; - if (info.field.getType().isEnum()) widget.setValue(value -> new TranslatableText(translationPrefix + "enum." + info.field.getType().getSimpleName() + "." + info.value.toString())); - this.list.addButton(new ButtonWidget(width - 110, 0, info.width, 20, widget.getValue().apply(info.value), widget.getKey()),resetButton,name); - } else if (info.widget != null) { - TextFieldWidget widget = new TextFieldWidget(textRenderer, width - 110, 0, info.width, 20, null); - - widget.setText(info.tempValue); - Predicate processor = ((BiFunction>) info.widget).apply(widget, done); - widget.setTextPredicate(processor); - this.list.addButton(widget, resetButton, name); - } else { - ButtonWidget dummy = new ButtonWidget(-10, 0, 0, 0, Text.of(""), null); - this.list.addButton(dummy,dummy,name); - } - } - } - - } - @Override - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { - this.renderBackground(matrices); - this.list.render(matrices, mouseX, mouseY, delta); - - int stringWidth = (int) (title.getString().length() * 2.75f); - if (useTooltipForTitle) renderTooltip(matrices, title, width/2 - stringWidth, 27); - else drawCenteredText(matrices, textRenderer, title, width / 2, 15, 0xFFFFFF); - - for (EntryInfo info : entries) { - if (info.id.equals(modid)) { - if (list.getHoveredButton(mouseX,mouseY).isPresent()) { - ClickableWidget buttonWidget = list.getHoveredButton(mouseX,mouseY).get(); - Text text = ButtonEntry.buttonsWithText.get(buttonWidget); - TranslatableText name = new TranslatableText(this.translationPrefix + info.field.getName()); - String key = translationPrefix + info.field.getName() + ".tooltip"; - - if (info.error != null && text.equals(name)) renderTooltip(matrices, info.error.getValue(), mouseX, mouseY); - else if (I18n.hasTranslation(key) && text.equals(name)) { - List list = new ArrayList<>(); - for (String str : I18n.translate(key).split("\n")) - list.add(new LiteralText(str)); - renderTooltip(matrices, list, mouseX, mouseY); - } - } - } - } - super.render(matrices,mouseX,mouseY,delta); - } - } - @Environment(EnvType.CLIENT) - public static class MidnightConfigListWidget extends ElementListWidget { - TextRenderer textRenderer; - - public MidnightConfigListWidget(MinecraftClient minecraftClient, int i, int j, int k, int l, int m) { - super(minecraftClient, i, j, k, l, m); - this.centerListVertically = false; - textRenderer = minecraftClient.textRenderer; - } - @Override - public int getScrollbarPositionX() { return this.width -7; } - - public void addButton(ClickableWidget button, ClickableWidget resetButton, Text text) { - this.addEntry(ButtonEntry.create(button, text, resetButton)); - } - @Override - public int getRowWidth() { return 10000; } - public Optional getHoveredButton(double mouseX, double mouseY) { - for (ButtonEntry buttonEntry : this.children()) { - for (ClickableWidget ClickableWidget : buttonEntry.buttons) { - if (ClickableWidget.isMouseOver(mouseX, mouseY)) { - return Optional.of(ClickableWidget); - } - } - } - return Optional.empty(); - } - } - public static class ButtonEntry extends ElementListWidget.Entry { - private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - private final List buttons = new ArrayList<>(); - private final List resetButtons = new ArrayList<>(); - private final List texts = new ArrayList<>(); - private final List buttonsWithResetButtons = new ArrayList<>(); - public static final Map buttonsWithText = new HashMap<>(); - - private ButtonEntry(ClickableWidget button, Text text, ClickableWidget resetButton) { - buttonsWithText.put(button,text); - this.buttons.add(button); - this.resetButtons.add(resetButton); - this.texts.add(text); - this.buttonsWithResetButtons.add(button); - this.buttonsWithResetButtons.add(resetButton); - } - public static ButtonEntry create(ClickableWidget button, Text text, ClickableWidget resetButton) { - return new ButtonEntry(button, text, resetButton); - } - public void render(MatrixStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - this.buttons.forEach(button -> { - button.y = y; - button.render(matrices, mouseX, mouseY, tickDelta); - }); - this.texts.forEach(text -> DrawableHelper.drawTextWithShadow(matrices,textRenderer, text,12,y+5,0xFFFFFF)); - this.resetButtons.forEach((button) -> { - button.y = y; - button.render(matrices, mouseX, mouseY, tickDelta); - }); - } - public List children() { - return buttonsWithResetButtons; - } - - public List method_37025() { - return buttonsWithResetButtons; - } - } - @Retention(RetentionPolicy.RUNTIME) - @Target(ElementType.FIELD) - public @interface Entry { - int width() default 100; - double min() default Double.MIN_NORMAL; - double max() default Double.MAX_VALUE; - } - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Comment {} - - public static class HiddenAnnotationExclusionStrategy implements ExclusionStrategy { - public boolean shouldSkipClass(Class clazz) { return false; } - public boolean shouldSkipField(FieldAttributes fieldAttributes) { - return fieldAttributes.getAnnotation(Entry.class) == null; - } - } -} \ No newline at end of file diff --git a/puzzle-base/src/main/java/net/puzzlemc/core/config/PuzzleConfig.java b/puzzle-base/src/main/java/net/puzzlemc/core/config/PuzzleConfig.java index eb20cc1..ea837ee 100755 --- a/puzzle-base/src/main/java/net/puzzlemc/core/config/PuzzleConfig.java +++ b/puzzle-base/src/main/java/net/puzzlemc/core/config/PuzzleConfig.java @@ -1,8 +1,6 @@ package net.puzzlemc.core.config; -import eu.midnightdust.lib.config.MidnightConfig; - -public class PuzzleConfig extends MidnightConfig { +public class PuzzleConfig extends MidnightConfigLite { @Entry public static boolean debugMessages = false; @Entry public static boolean checkUpdates = true; diff --git a/puzzle-base/src/main/java/net/puzzlemc/core/mixin/MixinTitleScreen.java b/puzzle-base/src/main/java/net/puzzlemc/core/mixin/MixinTitleScreen.java index 1bd4d20..9447944 100755 --- a/puzzle-base/src/main/java/net/puzzlemc/core/mixin/MixinTitleScreen.java +++ b/puzzle-base/src/main/java/net/puzzlemc/core/mixin/MixinTitleScreen.java @@ -58,14 +58,14 @@ public class MixinTitleScreen extends Screen { if (open) { Util.getOperatingSystem().open(PuzzleCore.updateURL); } - Objects.requireNonNull(this.client).openScreen(this); + Objects.requireNonNull(this.client).setScreen(this); } @Inject(at = @At("HEAD"), method = "mouseClicked",cancellable = true) private void puzzle$mouseClicked(double mouseX, double mouseY, int button, CallbackInfoReturnable cir) { if (mouseX > 2 && mouseX < (double)(2 + this.puzzleTextWidth) && mouseY > (double)(this.height - 20) && mouseY < (double)this.height-10) { if (Objects.requireNonNull(this.client).options.chatLinksPrompt) { - this.client.openScreen(new ConfirmChatLinkScreen(this::confirmLink, PuzzleCore.updateURL, true)); + this.client.setScreen(new ConfirmChatLinkScreen(this::confirmLink, PuzzleCore.updateURL, true)); } else { Util.getOperatingSystem().open(PuzzleCore.updateURL); } diff --git a/puzzle-gui/build.gradle b/puzzle-gui/build.gradle index a37178e..f7708b3 100755 --- a/puzzle-gui/build.gradle +++ b/puzzle-gui/build.gradle @@ -7,8 +7,18 @@ repositories { url = 'https://aperlambda.github.io/maven' } mavenCentral() - flatDir { - dirs 'local_maven' + maven { + name 'Gegy' + url 'https://maven.gegy.dev' + } + maven { + url = "https://api.modrinth.com/maven" + } + maven { + url "https://www.cursemaven.com" + content { + includeGroup "curse.maven" + } } } @@ -16,18 +26,22 @@ dependencies { api project(":puzzle-base") api project(":puzzle-splashscreen") - api ("com.terraformersmc:modmenu:${project.mod_menu_version}") - modImplementation ("eu.midnightdust:cullleaves:${project.cull_leaves_version}") - modImplementation ("dev.lambdaurora:lambdynamiclights:${project.ldl_version}") - modImplementation ("dev.lambdaurora:lambdabettergrass:${project.lbg_version}") - modImplementation ("com.github.IrisShaders:Iris:${project.iris_version}") + modImplementation "dev.lambdaurora:spruceui:${project.spruceui_version}" + modImplementation "maven.modrinth:midnightlib:${project.midnightlib_version}" + + api ("com.terraformersmc:modmenu:${project.mod_menu_version}") + modImplementation ("maven.modrinth:cull-leaves:${project.cull_leaves_version}") + modImplementation ("maven.modrinth:lambdynamiclights:${project.ldl_version}") + modImplementation ("maven.modrinth:lambdabettergrass:${project.lbg_version}") + modImplementation ("maven.modrinth:iris:${project.iris_version}") + modImplementation ("maven.modrinth:cit-resewn:${project.cit_resewn_version}") + modImplementation "curse.maven:custom-entity-models-cem-477078:3440846" - //modImplementation "dev.lambdaurora:spruceui:${project.spruceui_version}" // Needed for Lambda's mods modImplementation("org.aperlambda:lambdajcommon:1.8.1") { exclude group: 'com.google.code.gson' exclude group: 'com.google.guava' } -// modImplementation ("com.github.PepperCode1:ConnectedTexturesMod-Fabric:${project.ctmf_version}") { -// exclude module: "modmenu" -// } + modImplementation ("maven.modrinth:continuity:${project.continuity_version}") { + exclude module: "modmenu" + } } diff --git a/puzzle-gui/local_maven/cullleaves-2.2.0.jar b/puzzle-gui/local_maven/cullleaves-2.2.0.jar deleted file mode 100755 index c9b0696..0000000 Binary files a/puzzle-gui/local_maven/cullleaves-2.2.0.jar and /dev/null differ diff --git a/puzzle-gui/local_maven/lambdabettergrass-1.1.2+21w20a.jar b/puzzle-gui/local_maven/lambdabettergrass-1.1.2+21w20a.jar deleted file mode 100755 index e148e5d..0000000 Binary files a/puzzle-gui/local_maven/lambdabettergrass-1.1.2+21w20a.jar and /dev/null differ diff --git a/puzzle-gui/local_maven/lambdynamiclights-2.0.0+21w20a.jar b/puzzle-gui/local_maven/lambdynamiclights-2.0.0+21w20a.jar deleted file mode 100755 index a649e79..0000000 Binary files a/puzzle-gui/local_maven/lambdynamiclights-2.0.0+21w20a.jar and /dev/null differ 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 c314c45..8b62718 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java @@ -5,6 +5,9 @@ import dev.lambdaurora.lambdabettergrass.LambdaBetterGrass; import dev.lambdaurora.lambdynlights.DynamicLightsConfig; import dev.lambdaurora.lambdynlights.LambDynLights; import eu.midnightdust.cullleaves.config.CullLeavesConfig; +import me.pepperbell.continuity.client.config.ContinuityConfig; +import net.dorianpb.cem.internal.config.CemConfig; +import net.dorianpb.cem.internal.config.CemOptions; import net.puzzlemc.core.config.PuzzleConfig; import net.puzzlemc.gui.screen.widget.PuzzleWidget; import net.fabricmc.api.ClientModInitializer; @@ -14,6 +17,8 @@ import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.puzzlemc.splashscreen.PuzzleSplashScreen; +import shcm.shsupercm.fabric.citresewn.CITResewn; +import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; //import team.chisel.ctm.client.CTMClient; //import team.chisel.ctm.client.config.ConfigManager; @@ -85,19 +90,20 @@ public class PuzzleClient implements ClientModInitializer { PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("").append("DynLights: ").append(new TranslatableText("block.minecraft.tnt")), (button) -> button.setMessage(ldlConfig.getTntLightingMode().getTranslatedText()), (button) -> ldlConfig.setTntLightingMode(ldlConfig.getTntLightingMode().next()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("").append("DynLights: ").append(new TranslatableText("lambdynlights.option.water_sensitive")), (button) -> button.setMessage(ldlConfig.hasWaterSensitiveCheck() ? YES : NO), (button) -> ldlConfig.setWaterSensitiveCheck(!ldlConfig.hasWaterSensitiveCheck()))); } -// if (FabricLoader.getInstance().isModLoaded("ctm")) { -// PuzzleApi.addToTextureOptions(new PuzzleWidget(Text.of("ConnectedTexturesMod for Fabric"))); -// ConfigManager ctmfConfigManager = CTMClient.getConfigManager(); -// ConfigManager.Config ctmfConfig = CTMClient.getConfigManager().getConfig(); -// PuzzleApi.addToTextureOptions(new PuzzleWidget(new TranslatableText("puzzle.option.ctm"), (button) -> button.setMessage(ctmfConfig.disableCTM ? NO : YES), (button) -> { -// ctmfConfig.disableCTM = !ctmfConfig.disableCTM; -// ctmfConfigManager.onConfigChange(); -// })); -// PuzzleApi.addToTextureOptions(new PuzzleWidget(new TranslatableText("puzzle.option.inside_ctm"), (button) -> button.setMessage(ctmfConfig.connectInsideCTM ? YES : NO), (button) -> { -// ctmfConfig.connectInsideCTM = !ctmfConfig.connectInsideCTM; -// ctmfConfigManager.onConfigChange(); -// })); -// } + if (FabricLoader.getInstance().isModLoaded("continuity")) { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Continuity"))); + ContinuityConfig contConfig = ContinuityConfig.INSTANCE; + PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("options.continuity.disable_ctm"), (button) -> button.setMessage(contConfig.disableCTM.get() ? YES : NO), (button) -> { + contConfig.disableCTM.set(!contConfig.disableCTM.get()); + contConfig.onChange(); + contConfig.save(); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("options.continuity.use_manual_culling"), (button) -> button.setMessage(contConfig.useManualCulling.get() ? YES : NO), (button) -> { + contConfig.useManualCulling.set(!contConfig.useManualCulling.get()); + contConfig.onChange(); + contConfig.save(); + })); + } if (FabricLoader.getInstance().isModLoaded("lambdabettergrass")) { LBGConfig lbgConfig = LambdaBetterGrass.get().config; @@ -105,5 +111,65 @@ public class PuzzleClient implements ClientModInitializer { PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("lambdabettergrass.option.mode"), (button) -> button.setMessage(lbgConfig.getMode().getTranslatedText()), (button) -> lbgConfig.setMode(lbgConfig.getMode().next()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("lambdabettergrass.option.better_snow"), (button) -> button.setMessage(lbgConfig.hasBetterLayer() ? YES : NO), (button) -> lbgConfig.setBetterLayer(!lbgConfig.hasBetterLayer()))); } + + } + public static boolean citInitialized = false; + public static void initCITResewn() { // CITResewn is initialized after Puzzle, so we can't access it in our ClientModInitializer + if (!citInitialized && FabricLoader.getInstance().isModLoaded("citresewn") && CITResewn.INSTANCE != null && CITResewnConfig.INSTANCE() != null) { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("CIT Resewn"))); + CITResewnConfig citConfig = CITResewnConfig.INSTANCE(); + PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("config.citresewn.enabled.title"), (button) -> button.setMessage(citConfig.enabled ? YES : NO), (button) -> { + citConfig.enabled = !citConfig.enabled; + citConfig.write(); + MinecraftClient.getInstance().reloadResources(); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("config.citresewn.mute_errors.title"), (button) -> button.setMessage(citConfig.mute_errors ? YES : NO), (button) -> { + citConfig.mute_errors = !citConfig.mute_errors; + citConfig.write(); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("config.citresewn.mute_warns.title"), (button) -> button.setMessage(citConfig.mute_warns ? YES : NO), (button) -> { + citConfig.mute_warns = !citConfig.mute_warns; + citConfig.write(); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("config.citresewn.broken_paths.title"), (button) -> button.setMessage(citConfig.broken_paths ? YES : NO), (button) -> { + citConfig.broken_paths = !citConfig.broken_paths; + citConfig.write(); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(0, 100,new TranslatableText("config.citresewn.cache_ms.title"), (slider) -> slider.setInt(citConfig.cache_ms), + (button) -> button.setMessage(message(citConfig)), + (slider) -> { + try { + citConfig.cache_ms = slider.getInt(); + } + catch (NumberFormatException ignored) {} + citConfig.write(); + })); + citInitialized = true; + } + } + public static Text message(CITResewnConfig config) { + int ticks = config.cache_ms; + if (ticks <= 1) { + return (new TranslatableText("config.citresewn.cache_ms.ticks." + ticks)).formatted(Formatting.AQUA); + } else { + Formatting color = Formatting.DARK_RED; + if (ticks <= 40) { + color = Formatting.RED; + } + + if (ticks <= 20) { + color = Formatting.GOLD; + } + + if (ticks <= 10) { + color = Formatting.DARK_GREEN; + } + + if (ticks <= 5) { + color = Formatting.GREEN; + } + + return (new TranslatableText("config.citresewn.cache_ms.ticks.any", ticks)).formatted(color); + } } } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/config/ModMenuIntegration.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/config/ModMenuIntegration.java index 543b41a..5d50a55 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/config/ModMenuIntegration.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/config/ModMenuIntegration.java @@ -12,7 +12,7 @@ import java.util.Map; @Environment(EnvType.CLIENT) public class ModMenuIntegration implements ModMenuApi { - // Used to set the config screen for all modules // + //Used to set the config screen for all modules // // @Override // public Map> getProvidedConfigScreenFactories() { // Map> map = ImmutableMap.of(); 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 e3de779..3f20a6b 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 @@ -23,7 +23,7 @@ public class MixinOptionsScreen extends Screen { @Inject(at = @At("TAIL"),method = "init") public void init(CallbackInfo ci) { PuzzleOptionsScreen puzzleScreen = new PuzzleOptionsScreen(this); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 144 - 6, 150, 20, new TranslatableText("puzzle.screen.title").append("..."), (button) -> Objects.requireNonNull(this.client).openScreen(puzzleScreen))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 144 - 6, 150, 20, new TranslatableText("puzzle.screen.title").append("..."), (button) -> Objects.requireNonNull(this.client).setScreen(puzzleScreen))); } } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java index 976dc72..aad8a6b 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java @@ -11,8 +11,7 @@ import java.util.Objects; public class IrisButton extends DrawableHelper { public static ButtonWidget getButton(int x, int y, int width, int height, Screen parent, MinecraftClient client) { ShaderPackScreen shaderPackPage = new ShaderPackScreen(parent); - return new ButtonWidget(x, y, width, height, shaderPackPage.getTitle().copy().append("..."), (button) -> { - Objects.requireNonNull(client).openScreen(shaderPackPage); - }); + return new ButtonWidget(x, y, width, height, shaderPackPage.getTitle().copy().append("..."), (button) -> + Objects.requireNonNull(client).setScreen(shaderPackPage)); } } 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 7e1e8bc..60c6aae 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 @@ -1,6 +1,8 @@ package net.puzzlemc.gui.screen; import net.fabricmc.loader.api.FabricLoader; +import net.puzzlemc.gui.PuzzleApi; +import net.puzzlemc.gui.PuzzleClient; import net.puzzlemc.gui.screen.page.GraphicsPage; import net.puzzlemc.gui.screen.page.MiscPage; import net.puzzlemc.gui.screen.page.PerformancePage; @@ -24,19 +26,20 @@ public class PuzzleOptionsScreen extends Screen { @Override protected void init() { super.init(); + PuzzleClient.initCITResewn(); GraphicsPage graphicsPage = new GraphicsPage(this); MiscPage miscPage = new MiscPage(this); PerformancePage performancePage = new PerformancePage(this); ResourcesPage resourcesPage = new ResourcesPage(this); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 48 - 6, 150, 20, graphicsPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).openScreen(graphicsPage))); - this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 48 - 6, 150, 20, resourcesPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).openScreen(resourcesPage))); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 72 - 6, 150, 20, performancePage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).openScreen(performancePage))); - this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 72 - 6, 150, 20, miscPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).openScreen(miscPage))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 48 - 6, 150, 20, graphicsPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(graphicsPage))); + this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 48 - 6, 150, 20, resourcesPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(resourcesPage))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 72 - 6, 150, 20, performancePage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(performancePage))); + this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 72 - 6, 150, 20, miscPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(miscPage))); if (FabricLoader.getInstance().isModLoaded("iris")) { this.addDrawableChild(IrisButton.getButton(this.width / 2 - 155, this.height / 6 + 96 - 6, 150, 20, this, client)); } - this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).openScreen(parent))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).setScreen(parent))); } @Override diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java index e410bfe..7e39fb1 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java @@ -30,12 +30,13 @@ public abstract class AbstractPuzzleOptionsPage extends Screen { super.init(); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 28, 200, 20, ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).openScreen(parent))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 28, 200, 20, ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).setScreen(parent))); } @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { this.renderBackground(matrices); + if (client != null && client.world != null) this.list.setRenderBackground(false); this.list.render(matrices, mouseX, mouseY, delta); drawCenteredText(matrices, textRenderer, title, width/2, 15, 0xFFFFFF); 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 a26a7f0..22c0c73 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 @@ -37,9 +37,9 @@ public class PuzzleOptionListWidget extends ElementListWidget getHoveredButton(double mouseX, double mouseY) { @@ -92,8 +92,8 @@ public class PuzzleOptionListWidget extends ElementListWidget method_37025() { - return null; + public List selectableChildren() { + return buttons; } } } 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 f2c120d..f163d28 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 @@ -1,29 +1,41 @@ package net.puzzlemc.gui.screen.widget; import net.minecraft.client.gui.widget.SliderWidget; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; public class PuzzleSliderWidget extends SliderWidget { private final int min; - private final double difference; + private final int max; + private final PuzzleWidget.TextAction setTextAction; + private final PuzzleWidget.ChangeSliderValueAction changeAction; + + public PuzzleSliderWidget(int min, int max, int x, int y, int width, int height, PuzzleWidget.SetSliderValueAction setValueAction, PuzzleWidget.TextAction setTextAction, PuzzleWidget.ChangeSliderValueAction changeAction) { + super(x,y,width,height,Text.of(""),0); - public PuzzleSliderWidget(int min, int max, int x, int y, int width, int height, TranslatableText label, double value) { - super(x,y,width,height,label,value); - this.updateMessage(); this.min = min; - this.difference = max - min; + this.max = max; + + setValueAction.setSliderValue(this); + this.setTextAction = setTextAction; + this.changeAction = changeAction; + this.updateMessage(); + } + public int getInt() { + int difference = max - min; + int r = (int) (value * difference); + return r + min; + } + public void setInt(int v) { + value = value / v - value * min; } @Override protected void updateMessage() { - Text text = new LiteralText((int) (min + this.value * difference) + ""); - this.setMessage(new TranslatableText("label").append(": ").append(text)); + this.setTextAction.setTitle(this); } @Override protected void applyValue() { - + this.changeAction.onChange(this); } } 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 7227bdd..2edf8e5 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 @@ -3,13 +3,21 @@ package net.puzzlemc.gui.screen.widget; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; -import org.jetbrains.annotations.Nullable; public class PuzzleTextFieldWidget extends TextFieldWidget { - private TranslatableText label; + private final PuzzleWidget.SetTextValueAction setValueAction; + private final PuzzleWidget.ChangeTextValueAction change; - public PuzzleTextFieldWidget(TextRenderer textRenderer, int x, int y, int width, int height, @Nullable TextFieldWidget copyFrom, Text text) { - super(textRenderer, x, y, width, height, text); + public PuzzleTextFieldWidget(TextRenderer textRenderer, int x, int y, int width, int height, PuzzleWidget.SetTextValueAction setValue, PuzzleWidget.ChangeTextValueAction change) { + super(textRenderer, x, y, width, height, Text.of("")); + this.setValueAction = setValue; + this.change = change; + setValueAction.setTextValue(this); + } + @Override + public void write(String text) { + super.write(text); + this.change.onChange(this); + setValueAction.setTextValue(this); } } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java index fba802a..e9e2a40 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java @@ -4,6 +4,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.SliderWidget; +import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; @@ -15,7 +17,10 @@ public class PuzzleWidget { public Text buttonText; public TextAction buttonTextAction; public ButtonWidget.PressAction onPress; - public PuzzleWidget.SaveAction onSave; + public PuzzleWidget.SetTextValueAction setTextValue; + public PuzzleWidget.SetSliderValueAction setSliderValue; + public PuzzleWidget.ChangeTextValueAction changeTextValue; + public PuzzleWidget.ChangeSliderValueAction changeSliderValue; /** * Puzzle Text Widget Container @@ -41,24 +46,39 @@ public class PuzzleWidget { /** * Puzzle Slider Widget Container (WIP - Doesn't work) */ - public PuzzleWidget(int min, int max, Text descriptionText, TranslatableText buttonText) { + public PuzzleWidget(int min, int max, Text descriptionText, PuzzleWidget.SetSliderValueAction setValueAction, PuzzleWidget.TextAction setTextAction, PuzzleWidget.ChangeSliderValueAction changeAction) { this.buttonType = ButtonType.SLIDER; this.min = min; this.max = max; this.descriptionText = descriptionText; - this.buttonText = buttonText; + this.setSliderValue = setValueAction; + this.buttonTextAction = setTextAction; + this.changeSliderValue = changeAction; } /** * Puzzle Text Field Widget Container (WIP - Doesn't work) */ - public PuzzleWidget(Text descriptionText, Text buttonText) { + public PuzzleWidget(Text descriptionText, PuzzleWidget.SetTextValueAction setValue, ChangeTextValueAction changeAction, int a) { this.buttonType = ButtonType.TEXT_FIELD; this.descriptionText = descriptionText; - this.buttonText = buttonText; + this.setTextValue = setValue; + this.changeTextValue = changeAction; } @Environment(EnvType.CLIENT) - public interface SaveAction { - void onSave(ClickableWidget button); + public interface ChangeTextValueAction { + void onChange(TextFieldWidget textField); + } + @Environment(EnvType.CLIENT) + public interface ChangeSliderValueAction { + void onChange(PuzzleSliderWidget slider); + } + @Environment(EnvType.CLIENT) + public interface SetTextValueAction { + void setTextValue(TextFieldWidget textField); + } + @Environment(EnvType.CLIENT) + public interface SetSliderValueAction { + void setSliderValue(PuzzleSliderWidget slider); } @Environment(EnvType.CLIENT) public interface TextAction { 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 15db3f1..8ca81c7 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 @@ -1,7 +1,7 @@ package net.puzzlemc.splashscreen.mixin; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.SplashScreen; +import net.minecraft.client.gui.screen.SplashOverlay; import net.minecraft.util.Identifier; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = SplashScreen.class, priority = 2000) +@Mixin(value = SplashOverlay.class, priority = 2000) public class MixinSplashScreen { @Shadow @Final static Identifier LOGO; @Shadow @Final private boolean reloading; @@ -27,7 +27,7 @@ public class MixinSplashScreen { private static void init(MinecraftClient client, CallbackInfo ci) { // Load our custom textures at game start // if (PuzzleConfig.resourcepackSplashScreen && PuzzleSplashScreen.LOGO_TEXTURE.toFile().exists()) client.getTextureManager().registerTexture(LOGO, new ConfigTexture(LOGO)); } - @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SplashScreen;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V"), index = 5) + //@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SplashScreen;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V"), index = 5) private int modifyBackgroundColor(int color) { // Set the Background Color to our configured value // long l = Util.getMeasuringTimeMs(); if (this.reloading && this.reloadStartTime == -1L) { @@ -40,11 +40,11 @@ public class MixinSplashScreen { return PuzzleConfig.backgroundColor | m << 24; } - @ModifyArg(method = "renderProgressBar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SplashScreen;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V"), index = 5) + //@ModifyArg(method = "renderProgressBar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SplashScreen;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V"), index = 5) private int modifyProgressFrame(int color) { // Set the Progress Bar Frame Color to our configured value // return PuzzleConfig.progressFrameColor | 255 << 24; } - @ModifyArg(method = "renderProgressBar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SplashScreen;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V", ordinal = 4), index = 5) + //@ModifyArg(method = "renderProgressBar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SplashScreen;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V", ordinal = 4), index = 5) private int modifyProgressColor(int color) { // Set the Progress Bar Color to our configured value // return PuzzleConfig.progressBarColor | 255 << 24; }