diff --git a/gradle.properties b/gradle.properties index 709097c..3376c4f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,14 +1,14 @@ # Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx1G # Fabric Properties -minecraft_version=24w18a +minecraft_version=24w21b loader_version=0.15.11 # Mod Properties mod_version=4.1.2 maven_group=me.drex archives_base_name=villagerconfig # Dependencies -fabric_version=0.97.8+1.20.6 +fabric_version=0.99.0+1.21 mod_menu_version=10.0.0-beta.1 cloth_config_version=14.0.125 fiber_version=0.23.0-2 diff --git a/src/main/java/me/drex/villagerconfig/config/ConfigScreen.java b/src/main/java/me/drex/villagerconfig/config/ConfigScreen.java index f35c2c4..ddf00f8 100644 --- a/src/main/java/me/drex/villagerconfig/config/ConfigScreen.java +++ b/src/main/java/me/drex/villagerconfig/config/ConfigScreen.java @@ -14,7 +14,7 @@ public class ConfigScreen { public static Screen getConfigScreen(Screen parentScreen) { ConfigBuilder builder = ConfigBuilder.create() .setParentScreen(parentScreen) - .setDefaultBackgroundTexture(new ResourceLocation("minecraft:textures/block/emerald_block.png")) + .setDefaultBackgroundTexture(ResourceLocation.parse("minecraft:textures/block/emerald_block.png")) .setTitle(Component.translatable("config.villagerconfig.title")); builder.setGlobalized(true); diff --git a/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamSetsAccessor.java b/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamSetsAccessor.java index 98ec730..e4832d4 100644 --- a/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamSetsAccessor.java +++ b/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamSetsAccessor.java @@ -1,17 +1,17 @@ package me.drex.villagerconfig.mixin.loot; +import com.google.common.collect.BiMap; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.function.Consumer; +import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(LootContextParamSets.class) public interface LootContextParamSetsAccessor { - @Invoker - static LootContextParamSet invokeRegister(String name, Consumer type) { + @Accessor + static BiMap getREGISTRY() { throw new AssertionError(); } diff --git a/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamsAccessor.java b/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamsAccessor.java deleted file mode 100644 index 0e7d094..0000000 --- a/src/main/java/me/drex/villagerconfig/mixin/loot/LootContextParamsAccessor.java +++ /dev/null @@ -1,16 +0,0 @@ -package me.drex.villagerconfig.mixin.loot; - -import net.minecraft.world.level.storage.loot.parameters.LootContextParam; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(LootContextParams.class) -public interface LootContextParamsAccessor { - - @Invoker - static LootContextParam invokeCreate(String name) { - throw new AssertionError(); - } - -} diff --git a/src/main/java/me/drex/villagerconfig/mixin/loot/LootItemFunctionsAccessor.java b/src/main/java/me/drex/villagerconfig/mixin/loot/LootItemFunctionsAccessor.java deleted file mode 100644 index cdd5a02..0000000 --- a/src/main/java/me/drex/villagerconfig/mixin/loot/LootItemFunctionsAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.drex.villagerconfig.mixin.loot; - -import com.mojang.serialization.MapCodec; -import net.minecraft.world.level.storage.loot.functions.LootItemFunction; -import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; -import net.minecraft.world.level.storage.loot.functions.LootItemFunctions; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(LootItemFunctions.class) -public interface LootItemFunctionsAccessor { - - @Invoker - static LootItemFunctionType invokeRegister(String id, MapCodec codec) { - throw new AssertionError(); - } - -} diff --git a/src/main/java/me/drex/villagerconfig/mixin/loot/NumberProvidersAccessor.java b/src/main/java/me/drex/villagerconfig/mixin/loot/NumberProvidersAccessor.java deleted file mode 100644 index 444cb42..0000000 --- a/src/main/java/me/drex/villagerconfig/mixin/loot/NumberProvidersAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.drex.villagerconfig.mixin.loot; - -import com.mojang.serialization.MapCodec; -import net.minecraft.world.level.storage.loot.providers.number.LootNumberProviderType; -import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; -import net.minecraft.world.level.storage.loot.providers.number.NumberProviders; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(NumberProviders.class) -public interface NumberProvidersAccessor { - - @Invoker - static LootNumberProviderType invokeRegister(String id, MapCodec codec) { - throw new AssertionError(); - } - -} diff --git a/src/main/java/me/drex/villagerconfig/util/TradeManager.java b/src/main/java/me/drex/villagerconfig/util/TradeManager.java index c7a6673..ab5a9b5 100644 --- a/src/main/java/me/drex/villagerconfig/util/TradeManager.java +++ b/src/main/java/me/drex/villagerconfig/util/TradeManager.java @@ -56,6 +56,6 @@ protected void apply(Map prepared, @NotNull Resou @Override public ResourceLocation getFabricId() { - return new ResourceLocation(VillagerConfig.MOD_ID, "trades"); + return ResourceLocation.fromNamespaceAndPath(VillagerConfig.MOD_ID, "trades"); } } diff --git a/src/main/java/me/drex/villagerconfig/util/TradeProvider.java b/src/main/java/me/drex/villagerconfig/util/TradeProvider.java index 40afb41..18ac9bf 100644 --- a/src/main/java/me/drex/villagerconfig/util/TradeProvider.java +++ b/src/main/java/me/drex/villagerconfig/util/TradeProvider.java @@ -63,7 +63,7 @@ public class TradeProvider implements DataProvider { private final PackOutput.PathProvider pathResolver; private final MinecraftServer server; private final boolean experimental; - public static final ResourceLocation WANDERING_TRADER_ID = new ResourceLocation("wanderingtrader"); + public static final ResourceLocation WANDERING_TRADER_ID = ResourceLocation.withDefaultNamespace("wanderingtrader"); private static final IntUnaryOperator WANDERING_TRADER_COUNT = i -> switch (i) { case 1 -> 5; case 2 -> 1; diff --git a/src/main/java/me/drex/villagerconfig/util/loot/LootItemFunctionTypes.java b/src/main/java/me/drex/villagerconfig/util/loot/LootItemFunctionTypes.java index 7a2bb9c..7aeefc3 100644 --- a/src/main/java/me/drex/villagerconfig/util/loot/LootItemFunctionTypes.java +++ b/src/main/java/me/drex/villagerconfig/util/loot/LootItemFunctionTypes.java @@ -1,18 +1,26 @@ package me.drex.villagerconfig.util.loot; -import me.drex.villagerconfig.mixin.loot.LootItemFunctionsAccessor; +import com.mojang.serialization.MapCodec; import me.drex.villagerconfig.util.loot.function.EnchantRandomlyLootFunction; import me.drex.villagerconfig.util.loot.function.SetDyeFunction; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.storage.loot.functions.LootItemFunction; import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; -import static me.drex.villagerconfig.VillagerConfig.modId; +import static me.drex.villagerconfig.VillagerConfig.MOD_ID; public class LootItemFunctionTypes { - public static final LootItemFunctionType SET_DYE = LootItemFunctionsAccessor.invokeRegister(modId("set_dye"), SetDyeFunction.CODEC); - public static final LootItemFunctionType ENCHANT_RANDOMLY = LootItemFunctionsAccessor.invokeRegister(modId("enchant_randomly"), EnchantRandomlyLootFunction.CODEC); + public static final LootItemFunctionType SET_DYE = register("set_dye", SetDyeFunction.CODEC); + public static final LootItemFunctionType ENCHANT_RANDOMLY = register("enchant_randomly", EnchantRandomlyLootFunction.CODEC); public static void init() { } + private static LootItemFunctionType register(String string, MapCodec mapCodec) { + return Registry.register(BuiltInRegistries.LOOT_FUNCTION_TYPE, ResourceLocation.fromNamespaceAndPath(MOD_ID, string), new LootItemFunctionType<>(mapCodec)); + } + } diff --git a/src/main/java/me/drex/villagerconfig/util/loot/LootNumberProviderTypes.java b/src/main/java/me/drex/villagerconfig/util/loot/LootNumberProviderTypes.java index b35cf62..7fbfdfc 100644 --- a/src/main/java/me/drex/villagerconfig/util/loot/LootNumberProviderTypes.java +++ b/src/main/java/me/drex/villagerconfig/util/loot/LootNumberProviderTypes.java @@ -1,20 +1,28 @@ package me.drex.villagerconfig.util.loot; -import me.drex.villagerconfig.mixin.loot.NumberProvidersAccessor; +import com.mojang.serialization.MapCodec; import me.drex.villagerconfig.util.loot.number.AddLootNumberProvider; import me.drex.villagerconfig.util.loot.number.MultiplyLootNumberProvider; import me.drex.villagerconfig.util.loot.number.ReferenceLootNumberProvider; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.storage.loot.providers.number.LootNumberProviderType; +import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; -import static me.drex.villagerconfig.VillagerConfig.modId; +import static me.drex.villagerconfig.VillagerConfig.MOD_ID; public class LootNumberProviderTypes { - public static final LootNumberProviderType REFERENCE = NumberProvidersAccessor.invokeRegister(modId("reference"), ReferenceLootNumberProvider.CODEC); - public static final LootNumberProviderType ADD = NumberProvidersAccessor.invokeRegister(modId("add"), AddLootNumberProvider.CODEC); - public static final LootNumberProviderType MUL = NumberProvidersAccessor.invokeRegister(modId("multiply"), MultiplyLootNumberProvider.CODEC); + public static final LootNumberProviderType REFERENCE = register("reference", ReferenceLootNumberProvider.CODEC); + public static final LootNumberProviderType ADD = register("add", AddLootNumberProvider.CODEC); + public static final LootNumberProviderType MUL = register("multiply", MultiplyLootNumberProvider.CODEC); public static void init() { } + private static LootNumberProviderType register(String string, MapCodec mapCodec) { + return Registry.register(BuiltInRegistries.LOOT_NUMBER_PROVIDER_TYPE, ResourceLocation.fromNamespaceAndPath(MOD_ID, string), new LootNumberProviderType(mapCodec)); + } + } diff --git a/src/main/java/me/drex/villagerconfig/util/loot/VCLootContextParams.java b/src/main/java/me/drex/villagerconfig/util/loot/VCLootContextParams.java index a4404e6..734ba9e 100644 --- a/src/main/java/me/drex/villagerconfig/util/loot/VCLootContextParams.java +++ b/src/main/java/me/drex/villagerconfig/util/loot/VCLootContextParams.java @@ -1,21 +1,40 @@ package me.drex.villagerconfig.util.loot; import me.drex.villagerconfig.mixin.loot.LootContextParamSetsAccessor; -import me.drex.villagerconfig.mixin.loot.LootContextParamsAccessor; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.storage.loot.parameters.LootContextParam; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import java.util.Map; +import java.util.function.Consumer; -import static me.drex.villagerconfig.VillagerConfig.modId; +import static me.drex.villagerconfig.VillagerConfig.MOD_ID; public class VCLootContextParams { - public static final LootContextParam> NUMBER_REFERENCE = LootContextParamsAccessor.invokeCreate(modId("number_reference")); - public static final LootContextParamSet VILLAGER_LOOT_CONTEXT = LootContextParamSetsAccessor.invokeRegister("villager", builder -> builder.required(LootContextParams.ORIGIN).required(LootContextParams.THIS_ENTITY).required(NUMBER_REFERENCE)); + public static final LootContextParam> NUMBER_REFERENCE = create("number_reference"); + public static final LootContextParamSet VILLAGER_LOOT_CONTEXT = register("villager", builder -> new LootContextParamSet.Builder().required(LootContextParams.ORIGIN).required(LootContextParams.THIS_ENTITY).required(NUMBER_REFERENCE)); public static void init() { } + private static LootContextParam create(String string) { + return new LootContextParam<>(ResourceLocation.fromNamespaceAndPath(MOD_ID, string)); + } + + private static LootContextParamSet register(String string, Consumer consumer) { + // [VanillaCopy] - LootContextParamSets.register + LootContextParamSet.Builder builder = new LootContextParamSet.Builder(); + consumer.accept(builder); + LootContextParamSet lootContextParamSet = builder.build(); + ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(MOD_ID, string); // ResourceLocation.withDefaultNamespace -> ResourceLocation.fromNamespaceAndPath + LootContextParamSet lootContextParamSet2 = LootContextParamSetsAccessor.getREGISTRY().put(resourceLocation, lootContextParamSet); + if (lootContextParamSet2 != null) { + throw new IllegalStateException("Loot table parameter set " + resourceLocation + " is already registered"); + } else { + return lootContextParamSet; + } + } + } diff --git a/src/main/resources/villagerconfig.mixins.json b/src/main/resources/villagerconfig.mixins.json index 8956a37..01c62b2 100644 --- a/src/main/resources/villagerconfig.mixins.json +++ b/src/main/resources/villagerconfig.mixins.json @@ -11,12 +11,9 @@ "VillagerMixin", "WanderingTraderMixin", "ZombieMixin", - "loot.LootContextParamsAccessor", "loot.LootContextParamSetsAccessor", "loot.LootContextParamSetsMixin", - "loot.LootItemFunctionsAccessor", "loot.LootItemFunctionsMixin", - "loot.NumberProvidersAccessor", "loot.NumberProvidersMixin" ], "injectors": {