From 600ba25272f2b9f2d163c884a4b66e0ddb0a98a6 Mon Sep 17 00:00:00 2001 From: mschae23 <46165762+mschae23@users.noreply.github.com> Date: Thu, 28 Nov 2024 17:28:05 +0100 Subject: [PATCH] Fix "cost_function" being used in V1 configs - and move current configs to legacy package --- gradle.properties | 12 ++-- .../grindenchantments/GrindEnchantments.java | 2 +- .../GrindEnchantmentsMod.java | 55 ++++++++++------ .../config/{ => legacy}/ClientConfig.java | 2 +- .../{ => legacy}/DedicatedServerConfig.java | 2 +- .../GrindEnchantmentsConfigV3.java} | 36 ++++++----- .../config/legacy/v1/DisenchantConfigV1.java | 38 +++++++++++ .../legacy/v1/GrindEnchantmentsConfigV1.java | 59 +++++++++++++++++ .../config/legacy/v1/MoveConfigV1.java | 37 +++++++++++ .../v2/GrindEnchantmentsConfigV2.java} | 38 +++++------ .../config/v1/GrindEnchantmentsV1Config.java | 64 ------------------- .../impl/DisenchantOperation.java | 10 +-- .../grindenchantments/impl/MoveOperation.java | 8 +-- .../impl/ResetRepairCostOperation.java | 10 +-- .../mixin/GrindstoneScreenHandlerMixin.java | 4 +- src/main/resources/fabric.mod.json | 2 +- 16 files changed, 233 insertions(+), 146 deletions(-) rename src/main/java/de/mschae23/grindenchantments/config/{ => legacy}/ClientConfig.java (95%) rename src/main/java/de/mschae23/grindenchantments/config/{ => legacy}/DedicatedServerConfig.java (96%) rename src/main/java/de/mschae23/grindenchantments/config/{GrindEnchantmentsV3Config.java => legacy/GrindEnchantmentsConfigV3.java} (63%) create mode 100644 src/main/java/de/mschae23/grindenchantments/config/legacy/v1/DisenchantConfigV1.java create mode 100644 src/main/java/de/mschae23/grindenchantments/config/legacy/v1/GrindEnchantmentsConfigV1.java create mode 100644 src/main/java/de/mschae23/grindenchantments/config/legacy/v1/MoveConfigV1.java rename src/main/java/de/mschae23/grindenchantments/config/{v2/GrindEnchantmentsV2Config.java => legacy/v2/GrindEnchantmentsConfigV2.java} (72%) delete mode 100644 src/main/java/de/mschae23/grindenchantments/config/v1/GrindEnchantmentsV1Config.java diff --git a/gradle.properties b/gradle.properties index c076349..a8b476f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/versions.html - minecraft_version=1.21.2-rc1 - yarn_mappings=1.21.2-rc1+build.1 - loader_version=0.16.7 + minecraft_version=1.21.4-pre3 + yarn_mappings=1.21.4-pre3+build.2 + loader_version=0.16.9 # Mod Properties - mod_version = 3.2.2 + mod_version = 4.0.0 maven_group = de.mschae23.minecraft.mod archives_base_name = grind-enchantments # Dependencies - fabric_api_version=0.106.0+1.21.2 - codec_config_api_version=2.0.0+1.20.5-rc3 + fabric_api_version=0.110.0+1.21.4 + codec_config_api_version=2.1.0+1.21.3 tax_free_levels_version=1.4.1-fabric-1.21.1 diff --git a/src/main/java/de/mschae23/grindenchantments/GrindEnchantments.java b/src/main/java/de/mschae23/grindenchantments/GrindEnchantments.java index 51a43da..7140024 100644 --- a/src/main/java/de/mschae23/grindenchantments/GrindEnchantments.java +++ b/src/main/java/de/mschae23/grindenchantments/GrindEnchantments.java @@ -31,7 +31,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import de.mschae23.grindenchantments.config.DedicatedServerConfig; +import de.mschae23.grindenchantments.config.legacy.DedicatedServerConfig; import de.mschae23.grindenchantments.config.FilterConfig; import de.mschae23.grindenchantments.cost.CostFunction; diff --git a/src/main/java/de/mschae23/grindenchantments/GrindEnchantmentsMod.java b/src/main/java/de/mschae23/grindenchantments/GrindEnchantmentsMod.java index 5da4295..ab72a3d 100644 --- a/src/main/java/de/mschae23/grindenchantments/GrindEnchantmentsMod.java +++ b/src/main/java/de/mschae23/grindenchantments/GrindEnchantmentsMod.java @@ -26,13 +26,14 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.loader.api.FabricLoader; -import de.mschae23.config.api.ConfigIo; -import de.mschae23.config.api.ModConfig; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; -import de.mschae23.grindenchantments.config.v1.GrindEnchantmentsV1Config; -import de.mschae23.grindenchantments.config.v2.GrindEnchantmentsV2Config; +import com.mojang.serialization.MapCodec; +import de.mschae23.config.api.ConfigIo; +import de.mschae23.config.api.ModConfig; +import de.mschae23.grindenchantments.config.legacy.v1.GrindEnchantmentsConfigV1; +import de.mschae23.grindenchantments.config.legacy.v2.GrindEnchantmentsConfigV2; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; import de.mschae23.grindenchantments.cost.CostFunctionType; import de.mschae23.grindenchantments.event.ApplyLevelCostEvent; import de.mschae23.grindenchantments.event.GrindstoneEvents; @@ -51,16 +52,27 @@ public class GrindEnchantmentsMod implements ModInitializer { public static final Path CONFIG_PATH = Paths.get(MODID + ".json"); - private static final GrindEnchantmentsV3Config LATEST_CONFIG_DEFAULT = GrindEnchantmentsV3Config.DEFAULT; - private static final int LATEST_CONFIG_VERSION = LATEST_CONFIG_DEFAULT.version(); - private static final Codec> CONFIG_CODEC = ModConfig.createCodec(LATEST_CONFIG_VERSION, GrindEnchantmentsMod::getConfigType); - - private static GrindEnchantmentsV3Config CONFIG = LATEST_CONFIG_DEFAULT; + private static GrindEnchantmentsConfigV3 LEGACY_CONFIG = GrindEnchantmentsConfigV3.DEFAULT; @Override public void onInitialize() { + final GrindEnchantmentsConfigV3 legacyLatestConfigDefault = GrindEnchantmentsConfigV3.DEFAULT; + final int legacyLatestConfigVersion = legacyLatestConfigDefault.version(); + @SuppressWarnings({"unchecked", "deprecation"}) + final MapCodec>[] legacyConfigCodecs = new MapCodec[] { + GrindEnchantmentsConfigV1.TYPE_CODEC, GrindEnchantmentsConfigV2.TYPE_CODEC, GrindEnchantmentsConfigV3.TYPE_CODEC + }; + + final Codec> legacyConfigCodec = ModConfig.createCodec(legacyLatestConfigVersion, version -> + getConfigType(0, legacyConfigCodecs, version)); + + // TODO Proper solution to client-side configs + // ClientLifecycleEvents.CLIENT_STARTED.register(client -> + // CONFIG = ConfigIo.initializeConfig(Paths.get(MODID + ".json"), LATEST_CONFIG_VERSION, LATEST_CONFIG_DEFAULT, CONFIG_CODEC, + // JsonOps.INSTANCE, LOGGER::info, LOGGER::error) + // ); ServerLifecycleEvents.SERVER_STARTING.register(server -> - CONFIG = ConfigIo.initializeConfig(Paths.get(MODID + ".json"), LATEST_CONFIG_VERSION, LATEST_CONFIG_DEFAULT, CONFIG_CODEC, + LEGACY_CONFIG = ConfigIo.initializeConfig(Paths.get(MODID + ".json"), legacyLatestConfigVersion, legacyLatestConfigDefault, legacyConfigCodec, RegistryOps.of(JsonOps.INSTANCE, server.getRegistryManager()), LOGGER::info, LOGGER::error) ); @@ -89,21 +101,22 @@ public void onInitialize() { } } - @SuppressWarnings("deprecation") - private static ModConfig.Type getConfigType(int version) { - return new ModConfig.Type<>(version, switch (version) { - case 1 -> GrindEnchantmentsV1Config.TYPE_CODEC; - case 2 -> GrindEnchantmentsV2Config.TYPE_CODEC; - default -> GrindEnchantmentsV3Config.TYPE_CODEC; - }); + private static > ModConfig.Type getConfigType(int versionOffset, MapCodec>[] codecs, int version) { + for (int i = codecs.length; i > 0; i--) { + if (version == i) { + return new ModConfig.Type<>(i + versionOffset, codecs[i - 1]); + } + } + + return new ModConfig.Type<>(codecs.length + versionOffset, codecs[codecs.length - 1]); } - public static GrindEnchantmentsV3Config getConfig() { - return CONFIG; + public static GrindEnchantmentsConfigV3 getConfig() { + return LEGACY_CONFIG; } public static void log(Level level, Object message) { - LOGGER.log(level, "[Grind Enchantments] " + message); + LOGGER.log(level, "[Grind Enchantments] {}", message); } public static Identifier id(String path) { diff --git a/src/main/java/de/mschae23/grindenchantments/config/ClientConfig.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/ClientConfig.java similarity index 95% rename from src/main/java/de/mschae23/grindenchantments/config/ClientConfig.java rename to src/main/java/de/mschae23/grindenchantments/config/legacy/ClientConfig.java index 3209b10..9f224a4 100644 --- a/src/main/java/de/mschae23/grindenchantments/config/ClientConfig.java +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/ClientConfig.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.mschae23.grindenchantments.config; +package de.mschae23.grindenchantments.config.legacy; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; diff --git a/src/main/java/de/mschae23/grindenchantments/config/DedicatedServerConfig.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/DedicatedServerConfig.java similarity index 96% rename from src/main/java/de/mschae23/grindenchantments/config/DedicatedServerConfig.java rename to src/main/java/de/mschae23/grindenchantments/config/legacy/DedicatedServerConfig.java index a289885..eda1984 100644 --- a/src/main/java/de/mschae23/grindenchantments/config/DedicatedServerConfig.java +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/DedicatedServerConfig.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.mschae23.grindenchantments.config; +package de.mschae23.grindenchantments.config.legacy; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; diff --git a/src/main/java/de/mschae23/grindenchantments/config/GrindEnchantmentsV3Config.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/GrindEnchantmentsConfigV3.java similarity index 63% rename from src/main/java/de/mschae23/grindenchantments/config/GrindEnchantmentsV3Config.java rename to src/main/java/de/mschae23/grindenchantments/config/legacy/GrindEnchantmentsConfigV3.java index 7ae0740..25a4a13 100644 --- a/src/main/java/de/mschae23/grindenchantments/config/GrindEnchantmentsV3Config.java +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/GrindEnchantmentsConfigV3.java @@ -17,36 +17,40 @@ * along with this program. If not, see . */ -package de.mschae23.grindenchantments.config; +package de.mschae23.grindenchantments.config.legacy; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import de.mschae23.config.api.ModConfig; +import de.mschae23.grindenchantments.config.DisenchantConfig; +import de.mschae23.grindenchantments.config.FilterConfig; +import de.mschae23.grindenchantments.config.MoveConfig; +import de.mschae23.grindenchantments.config.ResetRepairCostConfig; -public record GrindEnchantmentsV3Config(DisenchantConfig disenchant, MoveConfig move, ResetRepairCostConfig resetRepairCost, +public record GrindEnchantmentsConfigV3(DisenchantConfig disenchant, MoveConfig move, ResetRepairCostConfig resetRepairCost, FilterConfig filter, - DedicatedServerConfig dedicatedServerConfig, ClientConfig clientConfig) implements ModConfig { - public static final MapCodec TYPE_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - DisenchantConfig.CODEC.fieldOf("disenchant_to_book").forGetter(GrindEnchantmentsV3Config::disenchant), - MoveConfig.CODEC.fieldOf("move_enchantments").forGetter(GrindEnchantmentsV3Config::move), - ResetRepairCostConfig.CODEC.fieldOf("reset_repair_cost").forGetter(GrindEnchantmentsV3Config::resetRepairCost), - FilterConfig.CODEC.fieldOf("filter").forGetter(GrindEnchantmentsV3Config::filter), - DedicatedServerConfig.CODEC.orElse(DedicatedServerConfig.DEFAULT).fieldOf("dedicated_server_options").forGetter(GrindEnchantmentsV3Config::dedicatedServerConfig), - ClientConfig.CODEC.fieldOf("client_options").forGetter(GrindEnchantmentsV3Config::clientConfig) - ).apply(instance, instance.stable(GrindEnchantmentsV3Config::new))); + DedicatedServerConfig dedicatedServerConfig, ClientConfig clientConfig) implements ModConfig { + public static final MapCodec TYPE_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + DisenchantConfig.CODEC.fieldOf("disenchant_to_book").forGetter(GrindEnchantmentsConfigV3::disenchant), + MoveConfig.CODEC.fieldOf("move_enchantments").forGetter(GrindEnchantmentsConfigV3::move), + ResetRepairCostConfig.CODEC.fieldOf("reset_repair_cost").forGetter(GrindEnchantmentsConfigV3::resetRepairCost), + FilterConfig.CODEC.fieldOf("filter").forGetter(GrindEnchantmentsConfigV3::filter), + DedicatedServerConfig.CODEC.orElse(DedicatedServerConfig.DEFAULT).fieldOf("dedicated_server_options").forGetter(GrindEnchantmentsConfigV3::dedicatedServerConfig), + ClientConfig.CODEC.fieldOf("client_options").forGetter(GrindEnchantmentsConfigV3::clientConfig) + ).apply(instance, instance.stable(GrindEnchantmentsConfigV3::new))); - public static final ModConfig.Type TYPE = new ModConfig.Type<>(3, TYPE_CODEC); + public static final ModConfig.Type TYPE = new ModConfig.Type<>(3, TYPE_CODEC); - public static final GrindEnchantmentsV3Config DEFAULT = - new GrindEnchantmentsV3Config(DisenchantConfig.DEFAULT, MoveConfig.DEFAULT, ResetRepairCostConfig.DEFAULT, FilterConfig.DEFAULT, DedicatedServerConfig.DEFAULT, ClientConfig.DEFAULT); + public static final GrindEnchantmentsConfigV3 DEFAULT = + new GrindEnchantmentsConfigV3(DisenchantConfig.DEFAULT, MoveConfig.DEFAULT, ResetRepairCostConfig.DEFAULT, FilterConfig.DEFAULT, DedicatedServerConfig.DEFAULT, ClientConfig.DEFAULT); @Override - public Type type() { + public Type type() { return TYPE; } @Override - public GrindEnchantmentsV3Config latest() { + public GrindEnchantmentsConfigV3 latest() { return this; } diff --git a/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/DisenchantConfigV1.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/DisenchantConfigV1.java new file mode 100644 index 0000000..defa116 --- /dev/null +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/DisenchantConfigV1.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2024 mschae23 + * + * This file is part of Grind enchantments. + * + * Grind enchantments is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package de.mschae23.grindenchantments.config.legacy.v1; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import de.mschae23.grindenchantments.config.DisenchantConfig; +import de.mschae23.grindenchantments.cost.CostFunction; + +@Deprecated +public record DisenchantConfigV1(boolean enabled, boolean consumeItem, CostFunction costFunction) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.BOOL.fieldOf("enabled").forGetter(DisenchantConfigV1::enabled), + Codec.BOOL.fieldOf("consume_enchanted_item").forGetter(DisenchantConfigV1::consumeItem), + CostFunction.TYPE_CODEC.fieldOf("cost_config").forGetter(DisenchantConfigV1::costFunction) + ).apply(instance, instance.stable(DisenchantConfigV1::new))); + + public DisenchantConfig latest() { + return new DisenchantConfig(this.enabled, this.consumeItem, this.costFunction); + } +} diff --git a/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/GrindEnchantmentsConfigV1.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/GrindEnchantmentsConfigV1.java new file mode 100644 index 0000000..28a281a --- /dev/null +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/GrindEnchantmentsConfigV1.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2024 mschae23 + * + * This file is part of Grind enchantments. + * + * Grind enchantments is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package de.mschae23.grindenchantments.config.legacy.v1; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import de.mschae23.config.api.ModConfig; +import de.mschae23.grindenchantments.config.legacy.ClientConfig; +import de.mschae23.grindenchantments.config.legacy.DedicatedServerConfig; +import de.mschae23.grindenchantments.config.legacy.v2.GrindEnchantmentsConfigV2; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; + +@Deprecated +@SuppressWarnings("DeprecatedIsStillUsed") +public record GrindEnchantmentsConfigV1(de.mschae23.grindenchantments.config.legacy.v1.DisenchantConfigV1 disenchant, MoveConfigV1 move, boolean allowCurses, + DedicatedServerConfig dedicatedServerConfig, ClientConfig clientConfig) implements ModConfig { + public static final MapCodec TYPE_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + DisenchantConfigV1.CODEC.fieldOf("disenchant_to_book").forGetter(GrindEnchantmentsConfigV1::disenchant), + MoveConfigV1.CODEC.fieldOf("move_enchantments").forGetter(GrindEnchantmentsConfigV1::move), + Codec.BOOL.orElse(Boolean.FALSE).fieldOf("allow_removing_curses").forGetter(GrindEnchantmentsConfigV1::allowCurses), + DedicatedServerConfig.CODEC.orElse(DedicatedServerConfig.DEFAULT).fieldOf("dedicated_server_options").forGetter(GrindEnchantmentsConfigV1::dedicatedServerConfig), + ClientConfig.CODEC.fieldOf("client_options").forGetter(GrindEnchantmentsConfigV1::clientConfig) + ).apply(instance, instance.stable(GrindEnchantmentsConfigV1::new))); + + public static final Type TYPE = new Type<>(1, TYPE_CODEC); + + @Override + public Type type() { + return TYPE; + } + + @Override + public GrindEnchantmentsConfigV3 latest() { + return new GrindEnchantmentsConfigV2(this.disenchant.latest(), this.move.latest(), this.allowCurses, this.dedicatedServerConfig, this.clientConfig).latest(); + } + + @Override + public boolean shouldUpdate() { + return true; + } +} diff --git a/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/MoveConfigV1.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/MoveConfigV1.java new file mode 100644 index 0000000..77236b6 --- /dev/null +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/v1/MoveConfigV1.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 mschae23 + * + * This file is part of Grind enchantments. + * + * Grind enchantments is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package de.mschae23.grindenchantments.config.legacy.v1; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import de.mschae23.grindenchantments.config.MoveConfig; +import de.mschae23.grindenchantments.cost.CostFunction; + +@Deprecated +public record MoveConfigV1(boolean enabled, CostFunction costFunction) { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.BOOL.fieldOf("enabled").forGetter(MoveConfigV1::enabled), + CostFunction.TYPE_CODEC.fieldOf("cost_config").forGetter(MoveConfigV1::costFunction) + ).apply(instance, instance.stable(MoveConfigV1::new))); + + public MoveConfig latest() { + return new MoveConfig(this.enabled, this.costFunction); + } +} diff --git a/src/main/java/de/mschae23/grindenchantments/config/v2/GrindEnchantmentsV2Config.java b/src/main/java/de/mschae23/grindenchantments/config/legacy/v2/GrindEnchantmentsConfigV2.java similarity index 72% rename from src/main/java/de/mschae23/grindenchantments/config/v2/GrindEnchantmentsV2Config.java rename to src/main/java/de/mschae23/grindenchantments/config/legacy/v2/GrindEnchantmentsConfigV2.java index e0a1790..e542708 100644 --- a/src/main/java/de/mschae23/grindenchantments/config/v2/GrindEnchantmentsV2Config.java +++ b/src/main/java/de/mschae23/grindenchantments/config/legacy/v2/GrindEnchantmentsConfigV2.java @@ -17,47 +17,47 @@ * along with this program. If not, see . */ -package de.mschae23.grindenchantments.config.v2; +package de.mschae23.grindenchantments.config.legacy.v2; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import de.mschae23.config.api.ModConfig; -import de.mschae23.grindenchantments.config.ClientConfig; -import de.mschae23.grindenchantments.config.DedicatedServerConfig; +import de.mschae23.grindenchantments.config.legacy.ClientConfig; +import de.mschae23.grindenchantments.config.legacy.DedicatedServerConfig; import de.mschae23.grindenchantments.config.DisenchantConfig; import de.mschae23.grindenchantments.config.FilterAction; import de.mschae23.grindenchantments.config.FilterConfig; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; import de.mschae23.grindenchantments.config.MoveConfig; import de.mschae23.grindenchantments.config.ResetRepairCostConfig; import de.mschae23.grindenchantments.cost.FilterCostFunction; @Deprecated @SuppressWarnings("DeprecatedIsStillUsed") -public record GrindEnchantmentsV2Config(DisenchantConfig disenchant, MoveConfig move, boolean allowCurses, - DedicatedServerConfig dedicatedServerConfig, ClientConfig clientConfig) implements ModConfig { - public static final MapCodec TYPE_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - DisenchantConfig.CODEC.fieldOf("disenchant_to_book").forGetter(GrindEnchantmentsV2Config::disenchant), - MoveConfig.CODEC.fieldOf("move_enchantments").forGetter(GrindEnchantmentsV2Config::move), - Codec.BOOL.orElse(Boolean.FALSE).fieldOf("allow_removing_curses").forGetter(GrindEnchantmentsV2Config::allowCurses), - DedicatedServerConfig.CODEC.orElse(DedicatedServerConfig.DEFAULT).fieldOf("dedicated_server_options").forGetter(GrindEnchantmentsV2Config::dedicatedServerConfig), - ClientConfig.CODEC.fieldOf("client_options").forGetter(GrindEnchantmentsV2Config::clientConfig) - ).apply(instance, instance.stable(GrindEnchantmentsV2Config::new))); +public record GrindEnchantmentsConfigV2(DisenchantConfig disenchant, MoveConfig move, boolean allowCurses, + DedicatedServerConfig dedicatedServerConfig, ClientConfig clientConfig) implements ModConfig { + public static final MapCodec TYPE_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + DisenchantConfig.CODEC.fieldOf("disenchant_to_book").forGetter(GrindEnchantmentsConfigV2::disenchant), + MoveConfig.CODEC.fieldOf("move_enchantments").forGetter(GrindEnchantmentsConfigV2::move), + Codec.BOOL.orElse(Boolean.FALSE).fieldOf("allow_removing_curses").forGetter(GrindEnchantmentsConfigV2::allowCurses), + DedicatedServerConfig.CODEC.orElse(DedicatedServerConfig.DEFAULT).fieldOf("dedicated_server_options").forGetter(GrindEnchantmentsConfigV2::dedicatedServerConfig), + ClientConfig.CODEC.fieldOf("client_options").forGetter(GrindEnchantmentsConfigV2::clientConfig) + ).apply(instance, instance.stable(GrindEnchantmentsConfigV2::new))); - public static final Type TYPE = new Type<>(2, TYPE_CODEC); + public static final Type TYPE = new Type<>(2, TYPE_CODEC); - public static final GrindEnchantmentsV2Config DEFAULT = - new GrindEnchantmentsV2Config(DisenchantConfig.DEFAULT, MoveConfig.DEFAULT, false, DedicatedServerConfig.DEFAULT, ClientConfig.DEFAULT); + public static final GrindEnchantmentsConfigV2 DEFAULT = + new GrindEnchantmentsConfigV2(DisenchantConfig.DEFAULT, MoveConfig.DEFAULT, false, DedicatedServerConfig.DEFAULT, ClientConfig.DEFAULT); @Override - public Type type() { + public Type type() { return TYPE; } @Override - public GrindEnchantmentsV3Config latest() { - return new GrindEnchantmentsV3Config( + public GrindEnchantmentsConfigV3 latest() { + return new GrindEnchantmentsConfigV3( new DisenchantConfig(this.disenchant.enabled(), this.disenchant.consumeItem(), new FilterCostFunction(this.disenchant.costFunction())), new MoveConfig(this.move.enabled(), diff --git a/src/main/java/de/mschae23/grindenchantments/config/v1/GrindEnchantmentsV1Config.java b/src/main/java/de/mschae23/grindenchantments/config/v1/GrindEnchantmentsV1Config.java deleted file mode 100644 index 933c292..0000000 --- a/src/main/java/de/mschae23/grindenchantments/config/v1/GrindEnchantmentsV1Config.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2024 mschae23 - * - * This file is part of Grind enchantments. - * - * Grind enchantments is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package de.mschae23.grindenchantments.config.v1; - -import de.mschae23.config.api.ModConfig; -import de.mschae23.grindenchantments.config.ClientConfig; -import de.mschae23.grindenchantments.config.DedicatedServerConfig; -import de.mschae23.grindenchantments.config.DisenchantConfig; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; -import de.mschae23.grindenchantments.config.MoveConfig; -import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import de.mschae23.grindenchantments.config.v2.GrindEnchantmentsV2Config; - -@Deprecated -@SuppressWarnings("DeprecatedIsStillUsed") -public record GrindEnchantmentsV1Config(DisenchantConfig disenchant, MoveConfig move, boolean allowCurses, - DedicatedServerConfig dedicatedServerConfig, ClientConfig clientConfig) implements ModConfig { - public static final MapCodec TYPE_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - DisenchantConfig.CODEC.fieldOf("disenchant_to_book").forGetter(GrindEnchantmentsV1Config::disenchant), - MoveConfig.CODEC.fieldOf("move_enchantments").forGetter(GrindEnchantmentsV1Config::move), - Codec.BOOL.orElse(Boolean.FALSE).fieldOf("allow_removing_curses").forGetter(GrindEnchantmentsV1Config::allowCurses), - DedicatedServerConfig.CODEC.orElse(DedicatedServerConfig.DEFAULT).fieldOf("dedicated_server_options").forGetter(GrindEnchantmentsV1Config::dedicatedServerConfig), - ClientConfig.CODEC.fieldOf("client_options").forGetter(GrindEnchantmentsV1Config::clientConfig) - ).apply(instance, instance.stable(GrindEnchantmentsV1Config::new))); - - public static final Type TYPE = new Type<>(1, TYPE_CODEC); - - public static final GrindEnchantmentsV1Config DEFAULT = - new GrindEnchantmentsV1Config(DisenchantConfig.DEFAULT, MoveConfig.DEFAULT, false, DedicatedServerConfig.DEFAULT, ClientConfig.DEFAULT); - - @Override - public Type type() { - return TYPE; - } - - @Override - public GrindEnchantmentsV3Config latest() { - return new GrindEnchantmentsV2Config(this.disenchant, this.move, this.allowCurses, this.dedicatedServerConfig, this.clientConfig).latest(); - } - - @Override - public boolean shouldUpdate() { - return true; - } -} diff --git a/src/main/java/de/mschae23/grindenchantments/impl/DisenchantOperation.java b/src/main/java/de/mschae23/grindenchantments/impl/DisenchantOperation.java index 43622bb..6471ff5 100644 --- a/src/main/java/de/mschae23/grindenchantments/impl/DisenchantOperation.java +++ b/src/main/java/de/mschae23/grindenchantments/impl/DisenchantOperation.java @@ -33,7 +33,7 @@ import de.mschae23.grindenchantments.GrindEnchantmentsMod; import de.mschae23.grindenchantments.config.FilterAction; import de.mschae23.grindenchantments.config.FilterConfig; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; import de.mschae23.grindenchantments.event.ApplyLevelCostEvent; import de.mschae23.grindenchantments.event.GrindstoneEvents; import org.jetbrains.annotations.NotNull; @@ -52,14 +52,14 @@ public boolean canInsert(ItemStack stack, ItemStack other, int slotId) { ItemStack enchantedItemStack = input1.hasEnchantments() ? input1 : input2; - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); return transferEnchantmentsToBook(enchantedItemStack, config.filter()); } @Override public boolean canTakeResult(ItemStack input1, ItemStack input2, PlayerEntity player, RegistryWrapper.WrapperLookup wrapperLookup) { if (isDisenchantOperation(input1, input2)) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); boolean stack1Book = input1.getItem() == Items.BOOK; ItemStack enchantedItemStack = stack1Book ? input2 : input1; @@ -77,7 +77,7 @@ public boolean onTakeResult(ItemStack input1, ItemStack input2, ItemStack result return false; } - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); boolean stack1Book = input1.getItem() == Items.BOOK; ItemStack enchantedItemStack = stack1Book ? input2 : input1; @@ -105,7 +105,7 @@ public boolean onTakeResult(ItemStack input1, ItemStack input2, ItemStack result @Override public int getLevelCost(ItemStack input1, ItemStack input2, PlayerEntity player, RegistryWrapper.WrapperLookup wrapperLookup) { if (isDisenchantOperation(input1, input2)) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); boolean stack1Book = input1.getItem() == Items.BOOK; ItemStack enchantedItemStack = stack1Book ? input2 : input1; diff --git a/src/main/java/de/mschae23/grindenchantments/impl/MoveOperation.java b/src/main/java/de/mschae23/grindenchantments/impl/MoveOperation.java index 3445760..e157aec 100644 --- a/src/main/java/de/mschae23/grindenchantments/impl/MoveOperation.java +++ b/src/main/java/de/mschae23/grindenchantments/impl/MoveOperation.java @@ -38,7 +38,7 @@ import de.mschae23.grindenchantments.GrindEnchantmentsMod; import de.mschae23.grindenchantments.config.FilterAction; import de.mschae23.grindenchantments.config.FilterConfig; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; import de.mschae23.grindenchantments.event.ApplyLevelCostEvent; import de.mschae23.grindenchantments.event.GrindstoneEvents; import it.unimi.dsi.fastutil.objects.Object2IntMap; @@ -106,7 +106,7 @@ public boolean canInsert(ItemStack stack, ItemStack other, int slotId) { @Override public boolean canTakeResult(ItemStack input1, ItemStack input2, PlayerEntity player, RegistryWrapper.WrapperLookup wrapperLookup) { if (isMoveOperation(input1, input2)) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); return canTakeResult(input1, input2, () -> GrindEnchantments.getLevelCost(input1, config.move().costFunction(), config.filter(), wrapperLookup), player); @@ -121,7 +121,7 @@ public boolean onTakeResult(ItemStack input1, ItemStack input2, ItemStack result return false; } - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); FilterConfig filter = config.filter(); ItemEnchantmentsComponent enchantments = EnchantmentHelper.getEnchantments(input1); @@ -159,7 +159,7 @@ public boolean onTakeResult(ItemStack input1, ItemStack input2, ItemStack result @Override public int getLevelCost(ItemStack input1, ItemStack input2, PlayerEntity player, RegistryWrapper.WrapperLookup wrapperLookup) { if (isMoveOperation(input1, input2)) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); return GrindEnchantments.getLevelCost(input1, config.move().costFunction(), config.filter(), wrapperLookup); } diff --git a/src/main/java/de/mschae23/grindenchantments/impl/ResetRepairCostOperation.java b/src/main/java/de/mschae23/grindenchantments/impl/ResetRepairCostOperation.java index cd27151..232a3d7 100644 --- a/src/main/java/de/mschae23/grindenchantments/impl/ResetRepairCostOperation.java +++ b/src/main/java/de/mschae23/grindenchantments/impl/ResetRepairCostOperation.java @@ -31,7 +31,7 @@ import de.mschae23.grindenchantments.GrindEnchantmentsMod; import de.mschae23.grindenchantments.config.FilterAction; import de.mschae23.grindenchantments.config.FilterConfig; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; import de.mschae23.grindenchantments.config.ResetRepairCostConfig; import de.mschae23.grindenchantments.event.ApplyLevelCostEvent; import de.mschae23.grindenchantments.event.GrindstoneEvents; @@ -51,7 +51,7 @@ public boolean canInsert(ItemStack stack, ItemStack other, int slotId) { return ItemStack.EMPTY; } - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); FilterConfig filter = config.filter(); if (filter.enabled() && filter.item().action() != FilterAction.IGNORE @@ -74,7 +74,7 @@ public boolean canInsert(ItemStack stack, ItemStack other, int slotId) { @Override public boolean canTakeResult(ItemStack input1, ItemStack input2, PlayerEntity player, RegistryWrapper.WrapperLookup wrapperLookup) { if (isResetRepairCostOperation(input1, input2)) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); return canTakeResult(input1, input2, () -> GrindEnchantments.getLevelCost(input1, config.resetRepairCost().costFunction(), config.filter(), wrapperLookup), player); @@ -89,7 +89,7 @@ public boolean onTakeResult(ItemStack input1, ItemStack input2, ItemStack result return false; } - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); FilterConfig filter = config.filter(); input.setStack(0, ItemStack.EMPTY); @@ -113,7 +113,7 @@ public boolean onTakeResult(ItemStack input1, ItemStack input2, ItemStack result @Override public int getLevelCost(ItemStack input1, ItemStack input2, PlayerEntity player, RegistryWrapper.WrapperLookup wrapperLookup) { if (isResetRepairCostOperation(input1, input2)) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); return GrindEnchantments.getLevelCost(input1, config.resetRepairCost().costFunction(), config.filter(), wrapperLookup); } diff --git a/src/main/java/de/mschae23/grindenchantments/mixin/GrindstoneScreenHandlerMixin.java b/src/main/java/de/mschae23/grindenchantments/mixin/GrindstoneScreenHandlerMixin.java index 9ef8aec..e55a48c 100644 --- a/src/main/java/de/mschae23/grindenchantments/mixin/GrindstoneScreenHandlerMixin.java +++ b/src/main/java/de/mschae23/grindenchantments/mixin/GrindstoneScreenHandlerMixin.java @@ -31,7 +31,7 @@ import net.minecraft.world.WorldEvents; import de.mschae23.grindenchantments.GrindEnchantments; import de.mschae23.grindenchantments.GrindEnchantmentsMod; -import de.mschae23.grindenchantments.config.GrindEnchantmentsV3Config; +import de.mschae23.grindenchantments.config.legacy.GrindEnchantmentsConfigV3; import de.mschae23.grindenchantments.event.GrindstoneEvents; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -79,7 +79,7 @@ private void onGetOutputStack(ItemStack input1, ItemStack input2, CallbackInfoRe @Inject(method = "quickMove", at = @At(value = "INVOKE", target = "Lnet/minecraft/screen/GrindstoneScreenHandler;insertItem(Lnet/minecraft/item/ItemStack;IIZ)Z", ordinal = 0), locals = LocalCapture.CAPTURE_FAILHARD) private void onInsertResultItem(PlayerEntity player, int index, CallbackInfoReturnable cir, ItemStack itemStack1, Slot slot, ItemStack itemStack2) { - GrindEnchantmentsV3Config config = GrindEnchantmentsMod.getConfig(); + GrindEnchantmentsConfigV3 config = GrindEnchantmentsMod.getConfig(); if (config.dedicatedServerConfig().alternativeCostDisplay()) { GrindEnchantments.removeLevelCostNbt(itemStack2); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 55fd6ee..55a4d9f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -9,7 +9,7 @@ "mschae23" ], "contact": { - "homepage": "https://www.curseforge.com/minecraft/mc-mods/grind-enchantments", + "homepage": "https://legacy.curseforge.com/minecraft/mc-mods/grind-enchantments", "sources": "https://github.com/mschae23/grind-enchantments", "issues": "https://github.com/mschae23/grind-enchantments/issues" },