From 6434a0e32719c2d9ef9c71419198ef43e43b5243 Mon Sep 17 00:00:00 2001 From: Ruben Taelman Date: Wed, 9 Oct 2024 19:15:37 +0200 Subject: [PATCH] Port to Fabric --- .../main/resources/iconexporter.accesswidener | 4 +- .../iconexporter/IconExporterFabric.java | 67 +++++++++++++++++++ .../helpers/IconExporterHelpersFabric.java | 33 +++++++++ .../iconexporter/proxy/ClientProxyFabric.java | 23 +++++++ .../iconexporter/proxy/CommonProxyFabric.java | 19 ++++++ .../src/main/resources/fabric.mod.json | 33 +++++++++ 6 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 loader-fabric/src/main/java/org/cyclops/iconexporter/IconExporterFabric.java create mode 100644 loader-fabric/src/main/java/org/cyclops/iconexporter/helpers/IconExporterHelpersFabric.java create mode 100644 loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/ClientProxyFabric.java create mode 100644 loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/CommonProxyFabric.java create mode 100644 loader-fabric/src/main/resources/fabric.mod.json diff --git a/loader-common/src/main/resources/iconexporter.accesswidener b/loader-common/src/main/resources/iconexporter.accesswidener index 98a63db..24c5486 100644 --- a/loader-common/src/main/resources/iconexporter.accesswidener +++ b/loader-common/src/main/resources/iconexporter.accesswidener @@ -1,5 +1,5 @@ accessWidener v1 named -accessible field com/mojang/blaze3d/platform/NativeImage pixels i +accessible field com/mojang/blaze3d/platform/NativeImage pixels J -accessible method net/minecraft/util/thread/BlockableEventLoop submitAsync(Ljava/lang/Runnable;) Ljava/util/concurrent/CompletableFuture; \ No newline at end of file +accessible method net/minecraft/util/thread/BlockableEventLoop submitAsync (Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; \ No newline at end of file diff --git a/loader-fabric/src/main/java/org/cyclops/iconexporter/IconExporterFabric.java b/loader-fabric/src/main/java/org/cyclops/iconexporter/IconExporterFabric.java new file mode 100644 index 0000000..08a8290 --- /dev/null +++ b/loader-fabric/src/main/java/org/cyclops/iconexporter/IconExporterFabric.java @@ -0,0 +1,67 @@ +package org.cyclops.iconexporter; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.fabricmc.api.ModInitializer; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import org.cyclops.cyclopscore.config.ConfigHandlerCommon; +import org.cyclops.cyclopscore.init.ModBaseFabric; +import org.cyclops.cyclopscore.proxy.IClientProxyCommon; +import org.cyclops.cyclopscore.proxy.ICommonProxyCommon; +import org.cyclops.iconexporter.command.CommandExport; +import org.cyclops.iconexporter.command.CommandExportMetadata; +import org.cyclops.iconexporter.helpers.IconExporterHelpersFabric; +import org.cyclops.iconexporter.proxy.ClientProxyFabric; +import org.cyclops.iconexporter.proxy.CommonProxyFabric; + +/** + * The main mod class of IconExporter. + * @author rubensworks + */ +public class IconExporterFabric extends ModBaseFabric implements ModInitializer { + + /** + * The unique instance of this mod. + */ + public static IconExporterFabric _instance; + + public IconExporterFabric() { + super(Reference.MOD_ID, (instance) -> _instance = instance); + } + + @Override + protected LiteralArgumentBuilder constructBaseCommand(Commands.CommandSelection selection, CommandBuildContext context) { + LiteralArgumentBuilder root = super.constructBaseCommand(selection, context); + + if (getModHelpers().getMinecraftHelpers().isClientSide()) { + IconExporterHelpersFabric helpers = new IconExporterHelpersFabric(); + root.then(CommandExport.make(context, this, helpers)); + root.then(CommandExportMetadata.make(context, this, helpers)); + } + + return root; + } + + @Override + protected IClientProxyCommon constructClientProxy() { + return new ClientProxyFabric(); + } + + @Override + protected ICommonProxyCommon constructCommonProxy() { + return new CommonProxyFabric(); + } + + @Override + protected boolean hasDefaultCreativeModeTab() { + return false; + } + + @Override + protected void onConfigsRegister(ConfigHandlerCommon configHandler) { + super.onConfigsRegister(configHandler); + + configHandler.addConfigurable(new GeneralConfig<>(this)); + } +} diff --git a/loader-fabric/src/main/java/org/cyclops/iconexporter/helpers/IconExporterHelpersFabric.java b/loader-fabric/src/main/java/org/cyclops/iconexporter/helpers/IconExporterHelpersFabric.java new file mode 100644 index 0000000..520c458 --- /dev/null +++ b/loader-fabric/src/main/java/org/cyclops/iconexporter/helpers/IconExporterHelpersFabric.java @@ -0,0 +1,33 @@ +package org.cyclops.iconexporter.helpers; + +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributes; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.level.material.Fluid; +import org.cyclops.cyclopscore.helper.IModHelpersFabric; + +import java.util.List; + +/** + * @author rubensworks + */ +public class IconExporterHelpersFabric extends IconExporterHelpersCommon { + @Override + public List getCreativeTabs() { + return BuiltInRegistries.CREATIVE_MODE_TAB.stream() + .filter(tab -> !tab.getBackgroundTexture().equals(CreativeModeTab.createTextureLocation("item_search"))) + .toList(); + } + + @Override + public String getFluidLocalName(Fluid fluid) { + return FluidVariantAttributes.getName(FluidVariant.of(fluid)).getString(); + } + + @Override + public void renderFluidSlot(GuiGraphics gui, Fluid fluid) { + IModHelpersFabric.get().getGuiHelpers().renderFluidSlot(gui, FluidVariant.of(fluid), IModHelpersFabric.get().getFluidHelpers().getBucketVolume(), 0, 0); + } +} diff --git a/loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/ClientProxyFabric.java b/loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/ClientProxyFabric.java new file mode 100644 index 0000000..7b2aad2 --- /dev/null +++ b/loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/ClientProxyFabric.java @@ -0,0 +1,23 @@ +package org.cyclops.iconexporter.proxy; + +import org.cyclops.iconexporter.IconExporterFabric; +import org.cyclops.cyclopscore.init.ModBaseFabric; +import org.cyclops.cyclopscore.proxy.ClientProxyComponentFabric; + +/** + * Proxy for the client side. + * + * @author rubensworks + * + */ +public class ClientProxyFabric extends ClientProxyComponentFabric { + + public ClientProxyFabric() { + super(new CommonProxyFabric()); + } + + @Override + public ModBaseFabric getMod() { + return IconExporterFabric._instance; + } +} diff --git a/loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/CommonProxyFabric.java b/loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/CommonProxyFabric.java new file mode 100644 index 0000000..bb3bb5e --- /dev/null +++ b/loader-fabric/src/main/java/org/cyclops/iconexporter/proxy/CommonProxyFabric.java @@ -0,0 +1,19 @@ +package org.cyclops.iconexporter.proxy; + +import org.cyclops.cyclopscore.init.ModBaseFabric; +import org.cyclops.cyclopscore.proxy.CommonProxyComponentFabric; +import org.cyclops.iconexporter.IconExporterFabric; + +/** + * Proxy for server and client side. + * @author rubensworks + * + */ +public class CommonProxyFabric extends CommonProxyComponentFabric { + + @Override + public ModBaseFabric getMod() { + return IconExporterFabric._instance; + } + +} diff --git a/loader-fabric/src/main/resources/fabric.mod.json b/loader-fabric/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..639a964 --- /dev/null +++ b/loader-fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "id": "${mod_id}", + "version": "${mod_version}", + + "name": "${mod_name}", + "description": "${description}", + "authors": [ + "${mod_author}" + ], + "contact": { + "homepage": "${display_url}", + "sources": "${issue_tracker_url}" + }, + + "license": "${license}", + "icon": "logo.png", + + "environment": "*", + "entrypoints": { + "main": [ + "org.cyclops.iconexporter.IconExporterFabric" + ] + }, + "accessWidener" : "iconexporter.accesswidener", + + "depends": { + "cyclopscore": ">=${cyclopscore_version_semver}", + "fabricloader": ">=${fabric_loader_version}", + "fabric-api": ">=${fabric_version}", + "java": ">=${java_version}" + } +} \ No newline at end of file