diff options
Diffstat (limited to 'src/main/java/de')
84 files changed, 682 insertions, 406 deletions
diff --git a/src/main/java/de/hysky/skyblocker/UpdateNotifications.java b/src/main/java/de/hysky/skyblocker/UpdateNotifications.java index 00ae9ac0..4f9deef0 100644 --- a/src/main/java/de/hysky/skyblocker/UpdateNotifications.java +++ b/src/main/java/de/hysky/skyblocker/UpdateNotifications.java @@ -2,6 +2,7 @@ package de.hysky.skyblocker; import java.io.BufferedReader; import java.io.BufferedWriter; +import java.net.URI; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; @@ -104,7 +105,7 @@ public class UpdateNotifications { Text versionText = Text.literal(newVersion.name()).styled(style -> style .withFormatting(Formatting.GRAY) .withUnderline(true) - .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, downloadLink))); + .withClickEvent(new ClickEvent.OpenUrl(URI.create(downloadLink)))); CLIENT.player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.updateNotifications.newUpdateMessage", versionText)), false); SystemToast.add(CLIENT.getToastManager(), TOAST_TYPE, Text.translatable("skyblocker.updateNotifications.newUpdateToast.title"), Text.stringifiedTranslatable("skyblocker.updateNotifications.newUpdateToast.description", newVersion.version())); diff --git a/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java index 7820dfa4..2af8860e 100644 --- a/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java +++ b/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java @@ -1,6 +1,8 @@ package de.hysky.skyblocker.compatibility; import net.fabricmc.loader.api.FabricLoader; + +import org.apache.commons.lang3.SystemUtils; import org.objectweb.asm.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinInfo; @@ -23,8 +25,12 @@ public class MixinPlugin implements IMixinConfigPlugin { @Override public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - //OptiFabric Compatibility - return !mixinClassName.endsWith("WorldRendererMixin") || !OPTIFABRIC_LOADED; + return switch (mixinClassName) { + case String s when s.endsWith("WorldRendererMixin") -> !OPTIFABRIC_LOADED; + case String s when s.endsWith("GlResourceManagerMixin") -> SystemUtils.IS_OS_MAC && "aarch64".equalsIgnoreCase(SystemUtils.OS_ARCH); + + default -> true; + }; } @Override diff --git a/src/main/java/de/hysky/skyblocker/config/CodecTypeAdapter.java b/src/main/java/de/hysky/skyblocker/config/CodecTypeAdapter.java new file mode 100644 index 00000000..27544703 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/CodecTypeAdapter.java @@ -0,0 +1,28 @@ +package de.hysky.skyblocker.config; + +import java.lang.reflect.Type; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.mojang.serialization.Codec; +import com.mojang.serialization.JsonOps; + +/** + * Creates a GSON type adapter from a {@link Codec}. + */ +public record CodecTypeAdapter<T>(Codec<T> codec) implements JsonSerializer<T>, JsonDeserializer<T> { + + @Override + public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + return codec.parse(JsonOps.INSTANCE, json).getOrThrow(JsonParseException::new); + } + + @Override + public JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context) { + return codec.encodeStart(JsonOps.INSTANCE, src).getOrThrow(); + } +} diff --git a/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java b/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java index 06bec737..82ac889e 100644 --- a/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java +++ b/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java @@ -133,10 +133,7 @@ public abstract class HudConfigScreen extends Screen { @Override public final void close() { - SkyblockerConfig skyblockerConfig = SkyblockerConfigManager.get(); - savePos(skyblockerConfig, widgets); - SkyblockerConfigManager.save(); - + SkyblockerConfigManager.update(config -> savePos(config, widgets)); client.setScreen(parent); } diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java index 5288d247..053d89be 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java @@ -25,6 +25,9 @@ import net.minecraft.util.Identifier; import java.lang.StackWalker.Option; import java.nio.file.Path; +import java.util.function.Consumer; + +import org.apache.commons.lang3.function.Consumers; public class SkyblockerConfigManager { public static final int CONFIG_VERSION = 3; @@ -35,7 +38,7 @@ public class SkyblockerConfigManager { .setJson5(false) .appendGsonBuilder(builder -> builder .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) - .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer())) + .registerTypeHierarchyAdapter(Identifier.class, new CodecTypeAdapter<>(Identifier.CODEC))) .build()) .build(); @@ -65,8 +68,17 @@ public class SkyblockerConfigManager { }); } + @Deprecated(since = "1.21.5", forRemoval = true) public static void save() { - HANDLER.save( |
