From d2ce5b7362a08d020c0bcf5e1336f85df233e32b Mon Sep 17 00:00:00 2001 From: FourIsTheNumber <33456283+FourIsTheNumber@users.noreply.github.com> Date: Sat, 4 Jul 2026 20:02:17 -0400 Subject: [PATCH] Add postea transformer for microblock items (#48) --- dependencies.gradle | 1 + .../compat/ItemMicroPartTransformer.java | 29 +++++++++++++++++++ .../microblock/compat/PosteaCompat.java | 11 +++++++ .../microblock/handler/proxies.scala | 4 +++ 4 files changed, 45 insertions(+) create mode 100644 src/main/scala/codechicken/microblock/compat/ItemMicroPartTransformer.java create mode 100644 src/main/scala/codechicken/microblock/compat/PosteaCompat.java diff --git a/dependencies.gradle b/dependencies.gradle index 08c7828..9a1a671 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -3,6 +3,7 @@ dependencies { implementation("com.github.GTNewHorizons:CodeChickenCore:1.4.12:dev") compileOnly("com.github.GTNewHorizons:Angelica:2.1.19:dev") + compileOnly("com.github.GTNewHorizons:Postea:1.2.5:dev") {transitive = false} devOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.93-GTNH:dev") { exclude group: 'com.github.GTNewHorizons', module: 'CodeChickenCore' } diff --git a/src/main/scala/codechicken/microblock/compat/ItemMicroPartTransformer.java b/src/main/scala/codechicken/microblock/compat/ItemMicroPartTransformer.java new file mode 100644 index 0000000..e934af6 --- /dev/null +++ b/src/main/scala/codechicken/microblock/compat/ItemMicroPartTransformer.java @@ -0,0 +1,29 @@ +package codechicken.microblock.compat; + +import net.minecraft.nbt.NBTTagCompound; + +import com.gtnewhorizons.postea.api.IItemStackTransformationHandler; + +import codechicken.microblock.MicroMaterialRegistry; + +public class ItemMicroPartTransformer implements IItemStackTransformationHandler { + + @Override + public boolean apply(String originalItemId, NBTTagCompound stackTag) { + if (!stackTag.hasKey("tag")) return false; + NBTTagCompound tag = stackTag.getCompoundTag("tag"); + if (!tag.hasKey("mat")) return false; + + String matName = tag.getString("mat"); + + // Goes through the remap layer, which is private + int remappedId = MicroMaterialRegistry.materialID(matName); + String remappedName = MicroMaterialRegistry.materialName(remappedId); + + if (remappedName.equals(matName)) return false; + + tag.setString("mat", remappedName); + stackTag.setTag("tag", tag); + return true; + } +} diff --git a/src/main/scala/codechicken/microblock/compat/PosteaCompat.java b/src/main/scala/codechicken/microblock/compat/PosteaCompat.java new file mode 100644 index 0000000..0967432 --- /dev/null +++ b/src/main/scala/codechicken/microblock/compat/PosteaCompat.java @@ -0,0 +1,11 @@ +package codechicken.microblock.compat; + +import com.gtnewhorizons.postea.api.ItemStackReplacementManager; + +public class PosteaCompat { + + public static void registerTransformers() { + ItemStackReplacementManager + .addTransformationHandler("ForgeMicroblock:microblock", new ItemMicroPartTransformer()); + } +} diff --git a/src/main/scala/codechicken/microblock/handler/proxies.scala b/src/main/scala/codechicken/microblock/handler/proxies.scala index bbe7e21..a1a5e36 100644 --- a/src/main/scala/codechicken/microblock/handler/proxies.scala +++ b/src/main/scala/codechicken/microblock/handler/proxies.scala @@ -16,6 +16,7 @@ import net.minecraftforge.oredict.OreDictionary import net.minecraft.item.ItemStack import net.minecraftforge.oredict.ShapedOreRecipe import codechicken.lib.packet.PacketCustom +import codechicken.microblock.compat.PosteaCompat import cpw.mods.fml.common.Loader import cpw.mods.fml.common.registry.GameRegistry import net.minecraft.client.renderer.RenderBlocks @@ -110,6 +111,9 @@ class MicroblockProxy_serverImpl { MicroblockSPH.registryChannel, MicroblockSPH ) + if (Loader.isModLoaded("postea")) { + PosteaCompat.registerTransformers() + } } }