From 60a99b552ba5aa0cd8cb7ef6bc8ea1d0562b4f52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Thu, 16 Nov 2023 23:16:43 +0100 Subject: [PATCH] Port to MC 1.20.2. --- build.gradle.kts | 10 +---- common/build.gradle.kts | 2 +- .../li/cil/tis3d/api/util/RenderContext.java | 8 ++-- .../cil/tis3d/client/gui/CodeBookScreen.java | 25 ++++++++--- .../gui/ReadOnlyMemoryModuleScreen.java | 2 - fabric/build.gradle.kts | 16 +------ .../client/fabric/ClientBootstrapFabric.java | 8 ++-- .../block/fabric/ModuleBakedModel.java | 2 +- .../block/fabric/ModuleModelLoader.java | 23 +++++++--- .../tis3d/data/fabric/ModRecipesProvider.java | 17 ++++--- .../tis3d/data/forge/ModRecipesProvider.java | 16 +++---- gradle/libs.versions.toml | 44 ++++++++++++------- 12 files changed, 88 insertions(+), 85 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index fe6c702f..9897f75b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,18 +46,10 @@ subprojects { forRepository { maven("https://maven.parchmentmc.org") } filter { includeGroupByRegex("org\\.parchmentmc.*") } } - exclusiveContent { - forRepository { maven("https://cursemaven.com") } - filter { includeGroup("curse.maven") } - } exclusiveContent { forRepository { maven("https://api.modrinth.com/maven") } filter { includeGroup("maven.modrinth") } } - exclusiveContent { - forRepository { flatDir { dir("${rootProject.projectDir}/libs") } } - filter { includeGroup("local") } - } } dependencies { @@ -65,7 +57,7 @@ subprojects { val loom = project.extensions.getByName("loom") "mappings"(loom.layered { officialMojangMappings() - parchment("org.parchmentmc.data:parchment-$minecraftVersion:${rootProject.libs.versions.parchment.get()}@zip") + parchment("org.parchmentmc.data:parchment-${rootProject.libs.versions.parchment.minecraft.get()}:${rootProject.libs.versions.parchment.mappings.get()}@zip") }) "compileOnly"("com.google.code.findbugs:jsr305:3.0.2") } diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 74a7af68..4785fc44 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -12,7 +12,7 @@ loom { dependencies { modImplementation(libs.fabric.loader) modApi(libs.architectury.api) - modApi(libs.manual.api) + modApi(libs.fabric.manual) } tasks { diff --git a/common/src/main/java/li/cil/tis3d/api/util/RenderContext.java b/common/src/main/java/li/cil/tis3d/api/util/RenderContext.java index 4ede8f68..c650b98a 100644 --- a/common/src/main/java/li/cil/tis3d/api/util/RenderContext.java +++ b/common/src/main/java/li/cil/tis3d/api/util/RenderContext.java @@ -174,10 +174,10 @@ default void drawQuad(final VertexConsumer builder, final float x, final float y default void drawAtlasQuad(final VertexConsumer builder, final TextureAtlasSprite sprite, final float x, final float y, final float width, final float height, final float u0, final float v0, final float u1, final float v1, final int argb) { - final float atlasU0 = sprite.getU(u0 * 16); - final float atlasV0 = sprite.getV(v0 * 16); - final float atlasU1 = sprite.getU(u1 * 16); - final float atlasV1 = sprite.getV(v1 * 16); + final float atlasU0 = sprite.getU(u0); + final float atlasV0 = sprite.getV(v0); + final float atlasU1 = sprite.getU(u1); + final float atlasV1 = sprite.getV(v1); drawQuad(builder, x, y, width, height, atlasU0, atlasV0, atlasU1, atlasV1, argb); } diff --git a/common/src/main/java/li/cil/tis3d/client/gui/CodeBookScreen.java b/common/src/main/java/li/cil/tis3d/client/gui/CodeBookScreen.java index b8c4dc19..6f4f3120 100644 --- a/common/src/main/java/li/cil/tis3d/client/gui/CodeBookScreen.java +++ b/common/src/main/java/li/cil/tis3d/client/gui/CodeBookScreen.java @@ -113,6 +113,13 @@ public void removed() { Network.sendToServer(new CodeBookDataMessage(hand, tag)); } + @Override + public void renderBackground(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) { + super.renderBackground(graphics, mouseX, mouseY, partialTicks); + + graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, guiX, guiY, 0, 0, GUI_WIDTH, GUI_HEIGHT); + } + @Override public void render(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) { if (!player.isAlive() || !Items.is(player.getItemInHand(hand), Items.BOOK_CODE)) { @@ -120,10 +127,8 @@ public void render(final GuiGraphics graphics, final int mouseX, final int mouse return; } - renderBackground(graphics); - // Background. - graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, guiX, guiY, 0, 0, GUI_WIDTH, GUI_HEIGHT); + super.render(graphics, mouseX, mouseY, partialTicks); // Check page change button availability. buttonPreviousPage.visible = data.getSelectedPage() > 0 && data.getPageCount() > 0; @@ -131,8 +136,6 @@ public void render(final GuiGraphics graphics, final int mouseX, final int mouse (data.getSelectedPage() == data.getPageCount() - 1 && isCurrentProgramNonEmpty()); buttonDeletePage.visible = data.getPageCount() > 1 || isCurrentProgramNonEmpty(); - super.render(graphics, mouseX, mouseY, partialTicks); - // Draw current program. drawProgram(graphics, mouseX, mouseY); @@ -723,10 +726,14 @@ private static final class ButtonChangePage extends Button { @Override public void renderWidget(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) { - final int offsetX = isHoveredOrFocused() ? BUTTON_WIDTH : 0; + final int offsetX = isHoveredOrFocusedUsingKeyboard() ? BUTTON_WIDTH : 0; final int offsetY = type == PageChangeType.Previous ? BUTTON_HEIGHT : 0; graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, getX(), getY(), TEXTURE_X + offsetX, TEXTURE_Y + offsetY, BUTTON_WIDTH, BUTTON_HEIGHT); } + + private boolean isHoveredOrFocusedUsingKeyboard() { + return this.isHovered() || this.isFocused() && Minecraft.getInstance().getLastInputType().isKeyboard(); + } } private static final class ButtonDeletePage extends Button { @@ -742,8 +749,12 @@ private static final class ButtonDeletePage extends Button { @Override public void renderWidget(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) { - final int offsetX = isHoveredOrFocused() ? BUTTON_WIDTH : 0; + final int offsetX = isHoveredOrFocusedUsingKeyboard() ? BUTTON_WIDTH : 0; graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, getX(), getY(), TEXTURE_X + offsetX, TEXTURE_Y, BUTTON_WIDTH, BUTTON_HEIGHT); } + + private boolean isHoveredOrFocusedUsingKeyboard() { + return this.isHovered() || this.isFocused() && Minecraft.getInstance().getLastInputType().isKeyboard(); + } } } diff --git a/common/src/main/java/li/cil/tis3d/client/gui/ReadOnlyMemoryModuleScreen.java b/common/src/main/java/li/cil/tis3d/client/gui/ReadOnlyMemoryModuleScreen.java index dd172b05..b2e1e7a9 100644 --- a/common/src/main/java/li/cil/tis3d/client/gui/ReadOnlyMemoryModuleScreen.java +++ b/common/src/main/java/li/cil/tis3d/client/gui/ReadOnlyMemoryModuleScreen.java @@ -63,8 +63,6 @@ public void removed() { @Override public void render(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) { - renderBackground(graphics); - super.render(graphics, mouseX, mouseY, partialTicks); final BufferBuilder builder = Tesselator.getInstance().getBuilder(); diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 6f6fdf9f..cc81ee95 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -22,31 +22,17 @@ loom { } } -repositories { - exclusiveContent { - forRepository { maven("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/") } - filter { includeGroup("fuzs.forgeconfigapiport") } - } - exclusiveContent { - forRepository { maven("https://maven.shedaniel.me") } - filter { includeGroup("me.shedaniel") } - } -} - dependencies { modImplementation(libs.fabric.loader) modApi(libs.fabric.api) modApi(libs.fabric.architectury) + modApi(libs.fabric.roughlyEnoughItems) modImplementation(libs.fabric.manual) modImplementation(libs.fabric.forgeConfigPort) - modImplementation(libs.fabric.roughlyEnoughItems) { - exclude(group = "net.fabricmc.fabric-api") - } // Not used by mod, just for dev convenience. modRuntimeOnly(libs.fabric.tooltipFix) - modRuntimeOnly(libs.fabric.sodium) } tasks { diff --git a/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java b/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java index 69e05938..94be5f34 100644 --- a/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java +++ b/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java @@ -8,10 +8,8 @@ import li.cil.tis3d.common.block.entity.fabric.ChunkUnloadListener; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents; -import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; import net.fabricmc.fabric.api.event.client.player.ClientPickBlockGatherCallback; import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.impl.entrypoint.EntrypointUtils; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.BlockHitResult; @@ -26,7 +24,9 @@ public void onInitializeClient() { ClientBootstrap.run(); ClientSetup.run(); - EntrypointUtils.invoke("tis3d:registration", FabricProviderInitializer.class, FabricProviderInitializer::registerProviders); + FabricLoader.getInstance() + .getEntrypoints("tis3d:registration", FabricProviderInitializer.class) + .forEach(FabricProviderInitializer::registerProviders); ClientChunkEvents.CHUNK_UNLOAD.register((level, chunk) -> { for (final BlockEntity blockEntity : chunk.getBlockEntities().values()) { @@ -53,7 +53,7 @@ public void onInitializeClient() { if (FabricLoader.getInstance().isModLoaded("sodium")) { LOGGER.warn("Sodium detected, disabling modules that need custom block model rendering. See https://github.com/MightyPirates/TIS-3D/issues/171"); } else { - ModelLoadingRegistry.INSTANCE.registerResourceProvider(rm -> new ModuleModelLoader()); + ModuleModelLoader.initialize(); } } } diff --git a/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleBakedModel.java b/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleBakedModel.java index c089371f..d8a7e0bb 100644 --- a/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleBakedModel.java +++ b/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleBakedModel.java @@ -51,7 +51,7 @@ public void emitBlockQuads(final BlockAndTintGetter blockView, final BlockState if (module instanceof final ModuleWithBakedModelFabric moduleWithModel && moduleWithModel.hasModel()) { moduleWithModel.emitBlockQuads(blockView, state, pos, direction, randomSupplier, context); } else { - ((FabricBakedModel) proxy).emitBlockQuads(blockView, state, pos, randomSupplier, context); + proxy.emitBlockQuads(blockView, state, pos, randomSupplier, context); } } diff --git a/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleModelLoader.java b/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleModelLoader.java index 2b90ace3..b25c8a8c 100644 --- a/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleModelLoader.java +++ b/fabric/src/main/java/li/cil/tis3d/client/renderer/block/fabric/ModuleModelLoader.java @@ -1,20 +1,29 @@ package li.cil.tis3d.client.renderer.block.fabric; import li.cil.tis3d.api.API; -import net.fabricmc.fabric.api.client.model.ModelProviderContext; -import net.fabricmc.fabric.api.client.model.ModelResourceProvider; +import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin; +import net.fabricmc.fabric.api.client.model.loading.v1.ModelModifier; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; -public final class ModuleModelLoader implements ModelResourceProvider { +public final class ModuleModelLoader implements ModelLoadingPlugin, ModelModifier.OnLoad { private static final ResourceLocation BLOCK_CASING_MODULE_MODEL_LOCATION = new ResourceLocation(API.MOD_ID, "block/casing_module"); + public static void initialize() { + ModelLoadingPlugin.register(new ModuleModelLoader()); + } + + @Override + public void onInitializeModelLoader(ModelLoadingPlugin.Context context) { + context.modifyModelOnLoad().register(this); + } + @Override - public UnbakedModel loadModelResource(final ResourceLocation resourceId, final ModelProviderContext context) { - if (resourceId.equals(BLOCK_CASING_MODULE_MODEL_LOCATION)) { - return new ModuleUnbakedModel(context.loadModel(new ResourceLocation(resourceId.getNamespace(), resourceId.getPath() + "_proxy"))); + public UnbakedModel modifyModelOnLoad(UnbakedModel model, ModelModifier.OnLoad.Context context) { + if (context.id().equals(BLOCK_CASING_MODULE_MODEL_LOCATION)) { + return new ModuleUnbakedModel(context.getOrLoadModel(new ResourceLocation(context.id().getNamespace(), context.id().getPath() + "_proxy"))); } else { - return null; + return model; } } } diff --git a/fabric/src/main/java/li/cil/tis3d/data/fabric/ModRecipesProvider.java b/fabric/src/main/java/li/cil/tis3d/data/fabric/ModRecipesProvider.java index 68ab860d..74653162 100644 --- a/fabric/src/main/java/li/cil/tis3d/data/fabric/ModRecipesProvider.java +++ b/fabric/src/main/java/li/cil/tis3d/data/fabric/ModRecipesProvider.java @@ -5,12 +5,12 @@ import li.cil.tis3d.common.item.Items; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; -import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance; +import net.minecraft.advancements.Criterion; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.core.HolderLookup; -import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.resources.ResourceLocation; @@ -20,7 +20,6 @@ import net.minecraft.world.level.ItemLike; import java.util.concurrent.CompletableFuture; -import java.util.function.Consumer; public final class ModRecipesProvider extends FabricRecipeProvider { public ModRecipesProvider(final FabricDataOutput output, final CompletableFuture ignoredRegistries) { @@ -28,7 +27,7 @@ public ModRecipesProvider(final FabricDataOutput output, final CompletableFuture } @Override - public void buildRecipes(final Consumer consumer) { + public void buildRecipes(final RecipeOutput consumer) { ShapedRecipeBuilder .shaped(RecipeCategory.REDSTONE, Items.CASING.get(), 8) .pattern("IRI") @@ -128,17 +127,17 @@ public void buildRecipes(final Consumer consumer) { .save(consumer, new ResourceLocation(API.MOD_ID, Items.STACK_MODULE.getId().getPath() + "/from_queue")); } - private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final Item item, final AbstractCriterionTriggerInstance unlockedBy) { + private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final Item item, final Criterion unlockedBy) { return module(module, count, unlockedBy) .define('S', item); } - private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final TagKey tag, final AbstractCriterionTriggerInstance unlockedBy) { + private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final TagKey tag, final Criterion unlockedBy) { return module(module, count, unlockedBy) .define('S', tag); } - private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final AbstractCriterionTriggerInstance unlockedBy) { + private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final Criterion unlockedBy) { return ShapedRecipeBuilder .shaped(RecipeCategory.MISC, module.get(), count) .pattern("PPP") @@ -150,11 +149,11 @@ private static ShapedRecipeBuilder module(final RegistrySupplier .unlockedBy("has_base_item", unlockedBy); } - private static InventoryChangeTrigger.TriggerInstance inventoryChange(final TagKey tag) { + private static Criterion inventoryChange(final TagKey tag) { return InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(tag).build()); } - private static InventoryChangeTrigger.TriggerInstance inventoryChange(final ItemLike item) { + private static Criterion inventoryChange(final ItemLike item) { return InventoryChangeTrigger.TriggerInstance.hasItems(item); } } diff --git a/forge/src/main/java/li/cil/tis3d/data/forge/ModRecipesProvider.java b/forge/src/main/java/li/cil/tis3d/data/forge/ModRecipesProvider.java index 4d8b4977..b05dfb45 100644 --- a/forge/src/main/java/li/cil/tis3d/data/forge/ModRecipesProvider.java +++ b/forge/src/main/java/li/cil/tis3d/data/forge/ModRecipesProvider.java @@ -3,7 +3,7 @@ import dev.architectury.registry.registries.RegistrySupplier; import li.cil.tis3d.api.API; import li.cil.tis3d.common.item.Items; -import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance; +import net.minecraft.advancements.Criterion; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.data.PackOutput; @@ -15,15 +15,13 @@ import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; -import java.util.function.Consumer; - public final class ModRecipesProvider extends RecipeProvider { public ModRecipesProvider(final PackOutput output) { super(output); } @Override - protected void buildRecipes(final Consumer consumer) { + protected void buildRecipes(final RecipeOutput consumer) { ShapedRecipeBuilder .shaped(RecipeCategory.REDSTONE, Items.CASING.get(), 8) .pattern("IRI") @@ -123,17 +121,17 @@ protected void buildRecipes(final Consumer consumer) { .save(consumer, new ResourceLocation(API.MOD_ID, Items.STACK_MODULE.getId().getPath() + "/from_queue")); } - private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final Item item, final AbstractCriterionTriggerInstance unlockedBy) { + private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final Item item, final Criterion unlockedBy) { return module(module, count, unlockedBy) .define('S', item); } - private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final TagKey tag, final AbstractCriterionTriggerInstance unlockedBy) { + private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final TagKey tag, final Criterion unlockedBy) { return module(module, count, unlockedBy) .define('S', tag); } - private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final AbstractCriterionTriggerInstance unlockedBy) { + private static ShapedRecipeBuilder module(final RegistrySupplier module, final int count, final Criterion unlockedBy) { return ShapedRecipeBuilder .shaped(RecipeCategory.MISC, module.get(), count) .pattern("PPP") @@ -145,11 +143,11 @@ private static ShapedRecipeBuilder module(final RegistrySupplier .unlockedBy("has_base_item", unlockedBy); } - private static InventoryChangeTrigger.TriggerInstance inventoryChange(final TagKey tag) { + private static Criterion inventoryChange(final TagKey tag) { return InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(tag).build()); } - private static InventoryChangeTrigger.TriggerInstance inventoryChange(final ItemLike item) { + private static Criterion inventoryChange(final ItemLike item) { return InventoryChangeTrigger.TriggerInstance.hasItems(item); } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 49f22632..3553f298 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,41 +1,51 @@ [versions] -minecraft = "1.20.1" -parchment = "2023.08.13" +minecraft = "1.20.2" +parchment-minecraft = "1.20.1" +parchment-mappings = "2023.09.03" -architectury = "9.1.12" -manual = "1.2.3" +architectury = "10.0.9" +manual = "1.2.6" -fabric-loader = "0.14.22" -fabric-api = "0.87.0+1.20.1" -fabric-forgeConfigPort = "8.0.0" +fabric-loader = "0.14.24" +fabric-api = "0.90.7+1.20.2" -forge-platform = "1.20.1-47.1.0" +fabric-forgeConfigPort = "9.0.0" +fabric-forgeConfigPortArtifact = "v9.0.0-1.20.2-Fabric" +fabric-rei = "13.0.675+fabric" +fabric-clothConfig = "12.0.109+fabric" +fabric-markdownManual = "MC1.20.2-fabric-1.2.6" + +fabric-tooltipfix = "1.1.1-1.20" + +forge-platform = "1.20.2-48.0.39" + +forge-markdownManual = "MC1.20.2-forge-1.2.6" +forge-jei = "16.0.0.28" [plugins] loom = { id = "dev.architectury.loom", version = "1.3-SNAPSHOT" } architectury = { id = "architectury-plugin", version = "3.4-SNAPSHOT" } shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" } -spotless = { id = "com.diffplug.spotless", version = "6.20.0" } +spotless = { id = "com.diffplug.spotless", version = "6.22.0" } [libraries] minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" } architectury-api = { group = "dev.architectury", name = "architectury", version.ref = "architectury" } -manual-api = { group = "curse.maven", name = "markdownmanual-502485", version = "4719409" } fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" } fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" } fabric-architectury = { group = "dev.architectury", name = "architectury-fabric", version.ref = "architectury" } -fabric-forgeConfigPort = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-fabric", version.ref = "fabric-forgeConfigPort" } -fabric-manual = { group = "curse.maven", name = "markdownmanual-502485", version = "4719410" } -fabric-roughlyEnoughItems = { group = "me.shedaniel", name = "RoughlyEnoughItems-fabric", version = "12.0.645" } +fabric-forgeConfigPort = { group = "maven.modrinth", name = "forge-config-api-port", version.ref = "fabric-forgeConfigPortArtifact" } +fabric-manual = { group = "maven.modrinth", name = "markdownmanual", version.ref = "fabric-markdownManual" } +fabric-clothConfig = { group = "maven.modrinth", name = "cloth-config", version.ref = "fabric-clothConfig" } +fabric-roughlyEnoughItems = { group = "maven.modrinth", name = "rei", version.ref = "fabric-rei" } -fabric-tooltipFix = { group = "curse.maven", name = "tooltipfix-411557", version = "4577194" } -fabric-sodium = { group = "maven.modrinth", name = "sodium", version = "mc1.20.1-0.5.2" } +fabric-tooltipFix = { group = "maven.modrinth", name = "tooltipfix", version.ref = "fabric-tooltipfix" } forge-platform = { group = "net.minecraftforge", name = "forge", version.ref = "forge-platform" } forge-architectury = { group = "dev.architectury", name = "architectury-forge", version.ref = "architectury" } -forge-manual = { group = "curse.maven", name = "markdownmanual-502485", version = "4719408" } +forge-manual = { group = "maven.modrinth", name = "markdownmanual", version.ref = "forge-markdownManual" } -forge-justEnoughItems = { group = "curse.maven", name = "jei-238222", version = "4690097" } +forge-justEnoughItems = { group = "maven.modrinth", name = "jei", version.ref = "forge-jei" }