From 70f8b37f0c11aaae1c60f7a0f68a16501c7b42c6 Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:19:33 +0200 Subject: [PATCH 01/10] World conversion skeleton & examples --- dependencies.gradle | 11 ++- .../utilitiesinexcess/CommonProxy.java | 15 +++- .../utilitiesinexcess/UtilitiesInExcess.java | 12 +++ .../utilitiesinexcess/compat/Mods.java | 1 + .../compat/exu/ExuCompat.java | 28 ++++++ .../compat/exu/Remappings.java | 86 +++++++++++++++++++ .../compat/exu/postea/DummyBlock.java | 11 +++ .../exu/postea/IPosteaTransformation.java | 22 +++++ .../blocks/AbstractBlockTransformation.java | 65 ++++++++++++++ .../blocks/SoundMufflerTransformation.java | 46 ++++++++++ .../items/AbstractItemTransformation.java | 50 +++++++++++ .../postea/items/GoldenBagTransformation.java | 46 ++++++++++ 12 files changed, 390 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/DummyBlock.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/SoundMufflerTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenBagTransformation.java diff --git a/dependencies.gradle b/dependencies.gradle index c6689fef..3b7bd752 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -44,11 +44,18 @@ dependencies { compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') compileOnly('com.github.GTNewHorizons:Angelica:1.0.0-beta68a:dev') + api("com.github.GTNewHorizons:Postea:1.1.4:dev") + devOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.4-GTNH:dev") devOnlyNonPublishable("io.github.legacymoddingmc:unimixins:0.1.23:dev") - runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.40-GTNH:dev" ) + runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.40-GTNH:dev") + runtimeOnlyNonPublishable("com.github.GTNewHorizons:worldedit-gtnh:v0.0.8:dev") + runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.9.15:dev") + + // For testing NBT data (/nbtedit) + runtimeOnlyNonPublishable("com.github.GTNewHorizons:ServerUtilities:2.2.6:dev") // For testing glove // runtimeOnlyNonPublishable("com.github.GTNewHorizons:Translocators:1.4.0:dev") - // runtimeOnlyNonPublishable("com.github.GTNewHorizons:Backhand:1.8.2:dev") + // runtimeOnlyNonPublishable("com.github.GTNewHorizons:Backhand:1.8.0:dev") } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java index 74580fca..f3a6689d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java @@ -6,6 +6,8 @@ import com.fouristhenumber.utilitiesinexcess.common.dimensions.endoftime.EndOfTimeEvents; import com.fouristhenumber.utilitiesinexcess.common.dimensions.underworld.UnderWorldEvents; import com.fouristhenumber.utilitiesinexcess.compat.Mods; +import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; import com.fouristhenumber.utilitiesinexcess.network.PacketHandler; import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks; import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind; @@ -35,6 +37,13 @@ public void preInit(FMLPreInitializationEvent event) { if (Mods.NEI.isLoaded()) { IMCForNEI.IMCSender(); } + Remappings.init(); + if (!Mods.ExtraUtilities.isLoaded()) { + for (IPosteaTransformation transformation : Remappings.transformations) { + transformation.registerDummies(); + } + } + Remappings.initTransformationMappings(); } public void init(FMLInitializationEvent event) { @@ -42,7 +51,11 @@ public void init(FMLInitializationEvent event) { GLOVE_KEYBIND = SyncedKeybind.createConfigurable("key.uie.glove", "key.categories.uie", Keyboard.KEY_NONE); } - public void postInit(FMLPostInitializationEvent event) {} + public void postInit(FMLPostInitializationEvent event) { + for (IPosteaTransformation transformation : Remappings.transformations) { + transformation.registerTransformations(); + } + } public void serverStarting(FMLServerStartingEvent event) {} } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java index 764354f9..c8be83e9 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java @@ -47,6 +47,9 @@ import com.fouristhenumber.utilitiesinexcess.common.worldgen.WorldGenEnderLotus; import com.fouristhenumber.utilitiesinexcess.compat.Mods; import com.fouristhenumber.utilitiesinexcess.compat.crafttweaker.QEDCraftTweakerSupport; +import com.fouristhenumber.utilitiesinexcess.compat.exu.ExuCompat; +import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; import com.fouristhenumber.utilitiesinexcess.utils.FMLEventHandler; import com.fouristhenumber.utilitiesinexcess.utils.ForgeEventHandler; import com.fouristhenumber.utilitiesinexcess.utils.PinkFuelHelper; @@ -57,6 +60,7 @@ import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; @@ -140,6 +144,9 @@ public void init(FMLInitializationEvent event) { GameRegistry.registerTileEntity(TileEntityPinkGenerator.class, "TileEntityPinkGeneratorUIE"); GameRegistry.registerTileEntity(TileEntityNetherStarGenerator.class, "TileEntityNetherStarGeneratorUIE"); GameRegistry.registerTileEntity(TileEntityPacifistsBench.class, "TileEntityPacifistsBenchUIE"); + for (IPosteaTransformation transformation : Remappings.transformations) { + transformation.registerTEDummies(); + } lapisAetheriusRenderID = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(new LapisAetheriusRenderer()); @@ -211,4 +218,9 @@ public ItemStack getIconItemStack() { return ICON_ITEM; } }; + + @Mod.EventHandler + public void onMissingMappings(FMLMissingMappingsEvent event) { + ExuCompat.onMissingMappings(event); + } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java index d5d73f19..af9ee108 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java @@ -12,6 +12,7 @@ public enum Mods { Thaumcraft("Thaumcraft"), NEI("NotEnoughItems"), CraftTweaker("MineTweaker3"), + ExtraUtilities("ExtraUtilities"), ; // spotless:on diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java new file mode 100644 index 00000000..5dd22a08 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java @@ -0,0 +1,28 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; + +import cpw.mods.fml.common.event.FMLMissingMappingsEvent; +import cpw.mods.fml.common.registry.GameRegistry; + +public class ExuCompat { + + public static void onMissingMappings(FMLMissingMappingsEvent event) { + for (FMLMissingMappingsEvent.MissingMapping mapping : event.getAll()) { + if (mapping == null) continue; + + if (mapping.type == GameRegistry.Type.ITEM) { + Item newItem = Remappings.itemMappings.getOrDefault(mapping.name, null); + if (newItem != null) { + mapping.remap(newItem); + } + } else { // BLOCK + Block newBlock = Remappings.blockMappings.getOrDefault(mapping.name, null); + if (newBlock != null) { + mapping.remap(newBlock); + } + } + } + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java new file mode 100644 index 00000000..1e6a6cec --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -0,0 +1,86 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenBagTransformation; + +public enum Remappings { + // spotless:off + + // make sure to leave a trailing comma + // Direct block remappings + PURE_LOVE("pureLove", ModBlocks.PURE_LOVE), + // Direct item remappings + + // Item Transformations + GOLDEN_BAG(new GoldenBagTransformation()), + // Block Transformations + SOUND_MUFFLER(new SoundMufflerTransformation()), + + ; // leave trailing semicolon + // spotless:on + + public static final Remappings[] VALUES = values(); + + public static final HashMap itemMappings = new HashMap<>(); + public static final HashMap blockMappings = new HashMap<>(); + public static final List transformations = new ArrayList<>(); + + public static void init() { + for (Remappings remapping : VALUES) { + if (remapping.replacementItem != null) { + itemMappings.put(remapping.getName(), remapping.replacementItem); + } + if (remapping.replacementBlock != null) { + blockMappings.put(remapping.getName(), remapping.replacementBlock); + } + if (remapping.transformation != null) { + transformations.add(remapping.transformation); + } + } + } + + public static void initTransformationMappings() { + for (Remappings remapping : VALUES) { + if (remapping.transformation != null) { + remapping.transformation.addItemRemappings(itemMappings); + remapping.transformation.addBlockRemappings(blockMappings); + } + } + } + + private String oldName; + private Block replacementBlock = null; + private Item replacementItem = null; + private IPosteaTransformation transformation = null; + + private static final String pre = "ExtraUtilities:"; + + Remappings(String oldName, ModBlocks modBlock) { + this.oldName = pre + oldName; + this.replacementBlock = modBlock.get(); + this.replacementItem = modBlock.getItem(); + } + + Remappings(String oldName, ModItems modItem) { + this.oldName = pre + oldName; + this.replacementItem = modItem.get(); + } + + Remappings(IPosteaTransformation posteaTransformation) { + this.transformation = posteaTransformation; + } + + public String getName() { + return oldName; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/DummyBlock.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/DummyBlock.java new file mode 100644 index 00000000..f00e8b69 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/DummyBlock.java @@ -0,0 +1,11 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; + +public class DummyBlock extends Block { + + public DummyBlock(Material materialIn) { + super(materialIn); + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java new file mode 100644 index 00000000..f3f8b23c --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java @@ -0,0 +1,22 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea; + +import java.util.Map; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; + +public interface IPosteaTransformation { + + // Called in FMLPreInitializationEvent + public void registerDummies(); + + // Called in FMLInitializationEvent + public default void registerTEDummies() {} + + public default void addItemRemappings(Map remappings) {} + + public default void addBlockRemappings(Map remappings) {} + + // Called in FMLPostInitializationEvent + public void registerTransformations(); +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java new file mode 100644 index 00000000..e7c36ba5 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java @@ -0,0 +1,65 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import java.util.Map; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.gtnewhorizons.postea.api.BlockReplacementManager; +import com.gtnewhorizons.postea.api.ItemStackReplacementManager; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +import cpw.mods.fml.common.registry.GameRegistry; + +public abstract class AbstractBlockTransformation implements IPosteaTransformation { + + private final Block dummyBlock; + + private String dummyName; + private String oldName; + + public AbstractBlockTransformation() { + dummyBlock = new DummyBlock(Material.ground); + } + + @Override + public void registerDummies() { + GameRegistry.registerBlock(dummyBlock, dummyName); + } + + @Override + public void addItemRemappings(Map remappings) { + remappings.put(oldName, Item.getItemFromBlock(dummyBlock)); + } + + @Override + public void addBlockRemappings(Map remappings) { + remappings.put(oldName, dummyBlock); + } + + @Override + public void registerTransformations() { + BlockReplacementManager + .addBlockReplacement(UtilitiesInExcess.MODID + ":" + dummyName, this::doBlockTransformation); + ItemStackReplacementManager + .addItemReplacement(UtilitiesInExcess.MODID + ":" + dummyName, this::doItemTransformation); + } + + public abstract NBTTagCompound doItemTransformation(NBTTagCompound tag); + + public abstract BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world); + + public void setDummyName(String dummyName) { + this.dummyName = dummyName; + } + + public void setOldName(String oldName) { + this.oldName = oldName; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/SoundMufflerTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/SoundMufflerTransformation.java new file mode 100644 index 00000000..15bd9e89 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/SoundMufflerTransformation.java @@ -0,0 +1,46 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class SoundMufflerTransformation extends AbstractBlockTransformation { + + public SoundMufflerTransformation() { + super(); + setDummyName("dummy_sound_muffler"); + setOldName("ExtraUtilities:sound_muffler"); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + switch (dmg) { + case 0: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.SOUND_MUFFLER.getItem())); + break; + case 1: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.RAIN_MUFFLER.getItem())); + break; + } + tag.setInteger("Damage", 0); + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + int meta = blockConversionInfo.metadata; + if (meta == 1) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.RAIN_MUFFLER.get()); + } else { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.SOUND_MUFFLER.get()); + } + blockConversionInfoNew.metadata = 0; + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java new file mode 100644 index 00000000..72d3b777 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java @@ -0,0 +1,50 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import java.util.Map; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; + +import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.gtnewhorizons.postea.api.ItemStackReplacementManager; + +import cpw.mods.fml.common.registry.GameRegistry; + +public abstract class AbstractItemTransformation implements IPosteaTransformation { + + private final Item dummyItem; + + private String dummyName; + private String oldName; + + public AbstractItemTransformation() { + dummyItem = new Item(); + } + + @Override + public void registerDummies() { + GameRegistry.registerItem(dummyItem, dummyName); + } + + @Override + public void addItemRemappings(Map remappings) { + remappings.put(oldName, dummyItem); + } + + @Override + public void registerTransformations() { + ItemStackReplacementManager + .addItemReplacement(UtilitiesInExcess.MODID + ":" + dummyName, this::doTransformation); + } + + public abstract NBTTagCompound doTransformation(NBTTagCompound tag); + + public void setDummyName(String dummyName) { + this.dummyName = dummyName; + } + + public void setOldName(String oldName) { + this.oldName = oldName; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenBagTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenBagTransformation.java new file mode 100644 index 00000000..2ea8e473 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenBagTransformation.java @@ -0,0 +1,46 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.gtnewhorizons.postea.api.IDExtenderCompat; + +public class GoldenBagTransformation extends AbstractItemTransformation { + + public GoldenBagTransformation() { + super(); + setDummyName("dummy_golden_bag"); + setOldName("ExtraUtilities:golden_bag"); + } + + public NBTTagCompound doTransformation(NBTTagCompound tag) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.GOLDEN_BAG.get())); + + NBTTagCompound tagtag = tag.getCompoundTag("tag"); + NBTTagList tagList = new NBTTagList(); + + List toBeRemoved = new ArrayList<>(); + for (String name : tagtag.func_150296_c()) { + if (!name.startsWith("items_")) continue; + + NBTTagCompound item = tagtag.getCompoundTag(name); + item.setByte("Slot", Byte.parseByte(name.split("_")[1])); + tagList.appendTag(item); + + toBeRemoved.add(name); + } + + for (String name : toBeRemoved) { + tagtag.removeTag(name); + } + + tagtag.setTag("Items", tagList); + tag.setTag("tag", tagtag); + return tag; + } +} From 10b93344a65e568bce5824ac32ca9b92b45aa94b Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:30:50 +0200 Subject: [PATCH 02/10] More transformations --- .../items/ItemInversionSigilActive.java | 2 +- .../compat/exu/Remappings.java | 16 ++++++ .../CompressedBlocksTransformation.java | 56 +++++++++++++++++++ .../blocks/DarkPortalTransformation.java | 43 ++++++++++++++ .../blocks/DecoBlock1Transformation.java | 48 ++++++++++++++++ .../postea/blocks/TrashCanTransformation.java | 55 ++++++++++++++++++ .../items/DivisionSigilTransformation.java | 37 ++++++++++++ .../items/GoldenLassoTransformation.java | 28 ++++++++++ .../items/UnstableIngotTransformation.java | 29 ++++++++++ .../items/WateringCanTransformation.java | 32 +++++++++++ 10 files changed, 345 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/CompressedBlocksTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DarkPortalTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/TrashCanTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/DivisionSigilTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/UnstableIngotTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/WateringCanTransformation.java diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemInversionSigilActive.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemInversionSigilActive.java index cb0beb02..fbd20144 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemInversionSigilActive.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemInversionSigilActive.java @@ -50,7 +50,7 @@ public class ItemInversionSigilActive extends Item { - private static final String DURABILITY_NBT_KEY = "RemainingUses"; + public static final String DURABILITY_NBT_KEY = "RemainingUses"; private static final int BEACON_SEARCH_RADIUS = 6; private final int[][] LIGHTNING_POSITIONS = { { 0, 0 }, { -5, 0 }, { 5, 0 }, { 0, -5 }, { 0, 5 } }; diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java index 1e6a6cec..59eaa4ab 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -10,8 +10,16 @@ import com.fouristhenumber.utilitiesinexcess.ModBlocks; import com.fouristhenumber.utilitiesinexcess.ModItems; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.CompressedBlocksTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DarkPortalTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DecoBlock1Transformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.TrashCanTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.DivisionSigilTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenBagTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenLassoTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.UnstableIngotTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.WateringCanTransformation; public enum Remappings { // spotless:off @@ -23,8 +31,16 @@ public enum Remappings { // Item Transformations GOLDEN_BAG(new GoldenBagTransformation()), + WATERING_CAN(new WateringCanTransformation()), + INVERSION_SIGIL(new DivisionSigilTransformation()), + MOB_JAR(new GoldenLassoTransformation()), + INVERTED_INGOT(new UnstableIngotTransformation()), // Block Transformations SOUND_MUFFLER(new SoundMufflerTransformation()), + DECO_BLOCK_1(new DecoBlock1Transformation()), + COMPRESSED_BLOCKS(new CompressedBlocksTransformation()), + DARK_PORTAL(new DarkPortalTransformation()), + TRASH_CANS(new TrashCanTransformation()), ; // leave trailing semicolon // spotless:on diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/CompressedBlocksTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/CompressedBlocksTransformation.java new file mode 100644 index 00000000..8fa31099 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/CompressedBlocksTransformation.java @@ -0,0 +1,56 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class CompressedBlocksTransformation extends AbstractBlockTransformation { + + public CompressedBlocksTransformation() { + super(); + setDummyName("dummy_compressed_blocks"); + setOldName("ExtraUtilities:cobblestone_compressed"); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + if (dmg < 8) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.COMPRESSED_COBBLESTONE.getItem())); + } else if (dmg < 12) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.COMPRESSED_DIRT.getItem())); + tag.setInteger("Damage", dmg - 8); + } else if (dmg < 14) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.COMPRESSED_GRAVEL.getItem())); + tag.setInteger("Damage", dmg - 12); + } else { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.COMPRESSED_SAND.getItem())); + tag.setInteger("Damage", dmg - 14); + } + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + int dmg = blockConversionInfo.metadata; + if (dmg < 8) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.COMPRESSED_COBBLESTONE.get()); + blockConversionInfoNew.metadata = blockConversionInfo.metadata; + } else if (dmg < 12) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.COMPRESSED_DIRT.get()); + blockConversionInfoNew.metadata = blockConversionInfo.metadata - 8; + } else if (dmg < 14) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.COMPRESSED_GRAVEL.get()); + blockConversionInfoNew.metadata = blockConversionInfo.metadata - 12; + } else { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.COMPRESSED_SAND.get()); + blockConversionInfoNew.metadata = blockConversionInfo.metadata - 14; + } + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DarkPortalTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DarkPortalTransformation.java new file mode 100644 index 00000000..7528cc6c --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DarkPortalTransformation.java @@ -0,0 +1,43 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class DarkPortalTransformation extends AbstractBlockTransformation { + + public DarkPortalTransformation() { + super(); + setDummyName("dummy_dark_portal"); + setOldName("ExtraUtilities:dark_portal"); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + if (dmg == 2) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.END_OF_TIME_PORTAL.getItem())); + } else { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.UNDERWORLD_PORTAL.getItem())); + } + tag.setInteger("Damage", 0); + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + int dmg = blockConversionInfo.metadata; + if (dmg == 2) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.END_OF_TIME_PORTAL.get()); + } else { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.UNDERWORLD_PORTAL.get()); + } + blockConversionInfoNew.metadata = 0; + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java new file mode 100644 index 00000000..841f0458 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java @@ -0,0 +1,48 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class DecoBlock1Transformation extends AbstractBlockTransformation { + + public DecoBlock1Transformation() { + super(); + setDummyName("dummy_decorativeBlock1"); + setOldName("ExtraUtilities:decorativeBlock1"); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + switch (dmg) { + case 5: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.INVERTED_BLOCK.getItem())); + break; + case 8: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.MAGIC_WOOD.getItem())); + break; + } + tag.setInteger("Damage", 0); + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + int meta = blockConversionInfo.metadata; + if (meta == 5) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.INVERTED_BLOCK.get()); + } else if (meta == 8) { + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.MAGIC_WOOD.get()); + } else { + return blockConversionInfo; + } + blockConversionInfoNew.metadata = 0; + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/TrashCanTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/TrashCanTransformation.java new file mode 100644 index 00000000..07691068 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/TrashCanTransformation.java @@ -0,0 +1,55 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class TrashCanTransformation extends AbstractBlockTransformation { + + public TrashCanTransformation() { + super(); + setDummyName("dummy_trash_cans"); + setOldName("ExtraUtilities:trashcan"); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + switch (dmg) { + case 1: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.TRASH_CAN_FLUID.getItem())); + break; + case 2: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.TRASH_CAN_ENERGY.getItem())); + break; + default: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.TRASH_CAN_ITEM.getItem())); + break; + } + tag.setInteger("Damage", 0); + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + int dmg = blockConversionInfo.metadata; + switch (dmg) { + case 1: + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.TRASH_CAN_FLUID.get()); + break; + case 2: + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.TRASH_CAN_ENERGY.get()); + break; + default: + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.TRASH_CAN_ITEM.get()); + break; + } + blockConversionInfoNew.metadata = 0; + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/DivisionSigilTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/DivisionSigilTransformation.java new file mode 100644 index 00000000..e7827dee --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/DivisionSigilTransformation.java @@ -0,0 +1,37 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; + +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.fouristhenumber.utilitiesinexcess.common.items.ItemInversionSigilActive; +import com.gtnewhorizons.postea.api.IDExtenderCompat; + +public class DivisionSigilTransformation extends AbstractItemTransformation { + + public DivisionSigilTransformation() { + super(); + setDummyName("dummy_inversion_sigil"); + setOldName("ExtraUtilities:divisionSigil"); + } + + public NBTTagCompound doTransformation(NBTTagCompound tag) { + NBTTagCompound tagtag = tag.getCompoundTag("tag"); + int stable = tagtag.getByte("stable"); + if (stable == 1) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.PSEUDO_INVERSION_SIGIL.get())); + tag.removeTag("tag"); + } else { + int dmg = tagtag.getInteger("damage"); + tagtag.removeTag("damage"); + if (dmg > 1) { + tagtag.setInteger(ItemInversionSigilActive.DURABILITY_NBT_KEY, dmg); + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.INVERSION_SIGIL_ACTIVE.get())); + } else { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.INVERSION_SIGIL_INACTIVE.get())); + } + } + + return tag; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java new file mode 100644 index 00000000..ab09db40 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java @@ -0,0 +1,28 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; + +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.gtnewhorizons.postea.api.IDExtenderCompat; + +public class GoldenLassoTransformation extends AbstractItemTransformation { + + public GoldenLassoTransformation() { + super(); + setDummyName("dummy_mob_jar"); + setOldName("ExtraUtilities:golden_lasso"); + } + + public NBTTagCompound doTransformation(NBTTagCompound tag) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.MOB_JAR.get())); + + NBTTagCompound tagtag = tag.getCompoundTag("tag"); + NBTTagCompound newTagtag = new NBTTagCompound(); + newTagtag.setTag("MobData", tagtag); + + tag.setTag("tag", newTagtag); + + return tag; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/UnstableIngotTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/UnstableIngotTransformation.java new file mode 100644 index 00000000..c740febd --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/UnstableIngotTransformation.java @@ -0,0 +1,29 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; + +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.gtnewhorizons.postea.api.IDExtenderCompat; + +public class UnstableIngotTransformation extends AbstractItemTransformation { + + public UnstableIngotTransformation() { + super(); + setDummyName("dummy_inverted_ingot"); + setOldName("ExtraUtilities:unstableIngot"); + } + + public NBTTagCompound doTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + switch (dmg) { + case 0, 2: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.INVERTED_INGOT.get())); + break; + case 1: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.INVERTED_NUGGET.get())); + break; + } + return tag; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/WateringCanTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/WateringCanTransformation.java new file mode 100644 index 00000000..814d2003 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/WateringCanTransformation.java @@ -0,0 +1,32 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; + +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.gtnewhorizons.postea.api.IDExtenderCompat; + +public class WateringCanTransformation extends AbstractItemTransformation { + + public WateringCanTransformation() { + super(); + setDummyName("dummy_watering_can"); + setOldName("ExtraUtilities:watering_can"); + } + + public NBTTagCompound doTransformation(NBTTagCompound tag) { + int dmg = tag.getInteger("Damage"); + switch (dmg) { + case 0, 1: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.WATERING_CAN_BASIC.get())); + break; + case 2: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.WATERING_CAN_ADVANCED.get())); + break; + case 3: + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.WATERING_CAN_ELITE.get())); + break; + } + return tag; + } +} From 25ae8825df69a7e4516aed510838eeaed58f693a Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Fri, 5 Dec 2025 14:31:14 +0200 Subject: [PATCH 03/10] documentation --- .../exu/postea/IPosteaTransformation.java | 56 +++++++++++++++---- .../blocks/AbstractBlockTransformation.java | 17 ++++++ .../items/AbstractItemTransformation.java | 16 ++++++ 3 files changed, 79 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java index f3f8b23c..ac218fc2 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java @@ -5,18 +5,54 @@ import net.minecraft.block.Block; import net.minecraft.item.Item; +/** + * Represents a Postea transformation which handles the process of migrating a now-removed items and blocks + * in already existing saves. + * The process goes: + * "modid:removed" -> FMLMissingMappingsEvent -> "ourmodid:dummyitem" -> Postea -> "ourmodid:corrected_item" + */ public interface IPosteaTransformation { - // Called in FMLPreInitializationEvent - public void registerDummies(); - - // Called in FMLInitializationEvent - public default void registerTEDummies() {} - - public default void addItemRemappings(Map remappings) {} - - public default void addBlockRemappings(Map remappings) {} + /** + * This method is called during a common FMLPreInitializationEvent, + * do all your GameRegistry.registerItem and GameRegistry.registerBlock calls here. + */ + void registerDummies(); + + /** + * This method is called during a common FMLInitializationEvent, + * do all your GameRegistry.registerTileEntity calls here. + */ + default void registerTEDummies() {} + + /** + * Called to add your dummy items to be mapped during the FMLMissingMappingsEvent event, + * add your items with the old item's "modid:itemname" registry name as the key + * and your dummy {@link Item} instance as the value. + *

+ * See {@link cpw.mods.fml.common.event.FMLMissingMappingsEvent} for more. + * + * @param remappings Current running list of remappings, add yours to this. + */ + default void addItemRemappings(Map remappings) {} + + /** + * Called to add your dummy blocks to be mapped during the FMLMissingMappingsEvent event, + * add your blocks with the old block's "modid:itemname" registry name as the key + * and your dummy {@link Block} instance as the value. + * Remember to also add it's ItemBlock instance to addItemRemappings. + *

+ * See {@link cpw.mods.fml.common.event.FMLMissingMappingsEvent} for more. + * + * @param remappings Current running list of remappings, add yours to this. + */ + default void addBlockRemappings(Map remappings) {} // Called in FMLPostInitializationEvent - public void registerTransformations(); + /** + * This method is called during a common FMLPostInitializationEvent, + * do all your BlockReplacementManager.addBlockReplacement and + * ItemStackReplacementManager.addItemReplacement calls here. + */ + void registerTransformations(); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java index e7c36ba5..9762bc55 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java @@ -17,6 +17,13 @@ import cpw.mods.fml.common.registry.GameRegistry; +/** + * A simple {@link IPosteaTransformation} that transforms a single block. + * Extend and use setDummyName and setOldName + * then do your transformations in doItemTransformation and doBlockTransformation + *

+ * See {@link SoundMufflerTransformation} for an example. + */ public abstract class AbstractBlockTransformation implements IPosteaTransformation { private final Block dummyBlock; @@ -55,10 +62,20 @@ public void registerTransformations() { public abstract BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world); + /** + * Set the name for this transformation's dummy block *without* the modid, e.g. "dummy_golden_bag". + * + * @param dummyName The registry name for this transformation's dummy block + */ public void setDummyName(String dummyName) { this.dummyName = dummyName; } + /** + * Set the *full registry name* (e.g. "modid:item") of the old block this transformation is replacing + * + * @param oldName The registry name for the block this transformation is replacing + */ public void setOldName(String oldName) { this.oldName = oldName; } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java index 72d3b777..e579df4c 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java @@ -11,6 +11,12 @@ import cpw.mods.fml.common.registry.GameRegistry; +/** + * A simple {@link IPosteaTransformation} that transforms a single item. + * Extend and use setDummyName and setOldName then do your transformations in doTransformation + *

+ * See {@link WateringCanTransformation} for an example. + */ public abstract class AbstractItemTransformation implements IPosteaTransformation { private final Item dummyItem; @@ -40,10 +46,20 @@ public void registerTransformations() { public abstract NBTTagCompound doTransformation(NBTTagCompound tag); + /** + * Set the name for this transformation's dummy item *without* the modid, e.g. "dummy_golden_bag". + * + * @param dummyName The registry name for this transformation's dummy item + */ public void setDummyName(String dummyName) { this.dummyName = dummyName; } + /** + * Set the *full registry name* (e.g. "modid:item") of the old item this transformation is replacing + * + * @param oldName The registry name for the item this transformation is replacing + */ public void setOldName(String oldName) { this.oldName = oldName; } From 2d2754c05146eb750edb649ecda9d05b4bb39e8e Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Fri, 5 Dec 2025 21:20:57 +0200 Subject: [PATCH 04/10] Many more mappings --- dependencies.gradle | 2 +- .../utilitiesinexcess/CommonProxy.java | 29 +++ .../blocks/generators/BlockBaseGenerator.java | 4 + .../generators/BlockEnderGenerator.java | 5 + .../blocks/generators/BlockFoodGenerator.java | 5 + .../generators/BlockFurnaceGenerator.java | 5 + .../BlockHighTemperatureFurnaceGenerator.java | 5 + .../blocks/generators/BlockLavaGenerator.java | 5 + .../BlockLowTemperatureFurnaceGenerator.java | 5 + .../generators/BlockNetherStarGenerator.java | 5 + .../blocks/generators/BlockPinkGenerator.java | 5 + .../generators/BlockPotionGenerator.java | 5 + .../generators/BlockRedstoneGenerator.java | 5 + .../generators/BlockSolarGenerator.java | 5 + .../blocks/generators/BlockTNTGenerator.java | 4 + .../common/items/ItemEnderLotusSeed.java | 18 +- .../compat/exu/Remappings.java | 60 ++++- .../exu/postea/IPosteaTransformation.java | 5 +- .../postea/items/EnderLilyTransformation.java | 27 ++ .../items/GoldenLassoTransformation.java | 10 +- .../tileentities/GeneratorTransformation.java | 236 ++++++++++++++++++ 21 files changed, 433 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java diff --git a/dependencies.gradle b/dependencies.gradle index 3b7bd752..5ce4eda9 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -44,7 +44,7 @@ dependencies { compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') compileOnly('com.github.GTNewHorizons:Angelica:1.0.0-beta68a:dev') - api("com.github.GTNewHorizons:Postea:1.1.4:dev") + api("com.github.GTNewHorizons:Postea:1.1.5:dev") devOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.4-GTNH:dev") devOnlyNonPublishable("io.github.legacymoddingmc:unimixins:0.1.23:dev") diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java index f3a6689d..9e240dbd 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java @@ -1,5 +1,10 @@ package com.fouristhenumber.utilitiesinexcess; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + import org.lwjgl.input.Keyboard; import com.fouristhenumber.utilitiesinexcess.client.IMCForNEI; @@ -11,6 +16,9 @@ import com.fouristhenumber.utilitiesinexcess.network.PacketHandler; import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks; import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind; +import com.gtnewhorizons.postea.api.TileEntityReplacementManager; +import com.gtnewhorizons.postea.utility.BlockInfo; +import com.gtnewhorizons.postea.utility.PosteaUtilities; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -55,6 +63,27 @@ public void postInit(FMLPostInitializationEvent event) { for (IPosteaTransformation transformation : Remappings.transformations) { transformation.registerTransformations(); } + TileEntityReplacementManager.tileEntityTransformer("Furnace", (tag, world) -> { + return new BlockInfo(Blocks.chest, 0, (oldTag) -> { + + NBTTagCompound newTag = PosteaUtilities.cleanseNBT("Chest", oldTag); + + NBTTagList tagList = new NBTTagList(); + + NBTTagCompound stoneAtSlot13 = new NBTTagCompound(); + stoneAtSlot13.setByte("Count", (byte) 1); + stoneAtSlot13.setByte("Slot", (byte) 13); + stoneAtSlot13.setShort("Damage", (short) 0); + stoneAtSlot13.setShort("id", (short) Block.getIdFromBlock(Blocks.stone)); + + tagList.appendTag(stoneAtSlot13); + + newTag.setTag("Items", tagList); + newTag.setInteger("banana", 1); + + return newTag; + }); + }); } public void serverStarting(FMLServerStartingEvent event) {} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java index a2b9b6a5..b6a4561f 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java @@ -11,6 +11,8 @@ public abstract class BlockBaseGenerator extends BlockContainer { + public String TILE_ENTITY_ID; + public int multiplier; protected BlockBaseGenerator(String id, int mult) { @@ -37,4 +39,6 @@ public void onNeighborBlockChange(World worldIn, int x, int y, int z, Block neig } super.onNeighborBlockChange(worldIn, x, y, z, neighbor); } + + public abstract String getGeneratorTEID(); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java index 48c02e45..0fce082b 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java @@ -7,6 +7,11 @@ public class BlockEnderGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityEnderGeneratorUIE"; + } + public BlockEnderGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java index 48049089..ae09978a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java @@ -7,6 +7,11 @@ public class BlockFoodGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityFoodGeneratorUIE"; + } + public BlockFoodGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java index ca3ff191..93007c59 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java @@ -7,6 +7,11 @@ public class BlockFurnaceGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityFurnaceGeneratorUIE"; + } + public BlockFurnaceGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java index a883288c..1a8704c4 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java @@ -7,6 +7,11 @@ public class BlockHighTemperatureFurnaceGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityHighTemperatureFurnaceGenerator"; + } + public BlockHighTemperatureFurnaceGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java index b6f40d74..9091bd6a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java @@ -7,6 +7,11 @@ public class BlockLavaGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityLavaGeneratorUIE"; + } + public BlockLavaGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java index 148525bc..8b90775a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java @@ -7,6 +7,11 @@ public class BlockLowTemperatureFurnaceGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityLowTemperatureFurnaceGeneratorUIE"; + } + public BlockLowTemperatureFurnaceGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java index 0c37795d..4cb15c4d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java @@ -7,6 +7,11 @@ public class BlockNetherStarGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityNetherStarGeneratorUIE"; + } + public BlockNetherStarGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java index e5f0d794..9cb12250 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java @@ -7,6 +7,11 @@ public class BlockPinkGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityPinkGeneratorUIE"; + } + public BlockPinkGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java index 7f3b10c9..b97a6716 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java @@ -7,6 +7,11 @@ public class BlockPotionGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityPotionGeneratorUIE"; + } + public BlockPotionGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java index 9a1e25eb..984bcc6c 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java @@ -7,6 +7,11 @@ public class BlockRedstoneGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntityRedstoneGeneratorUIE"; + } + public BlockRedstoneGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java index 3419a9bd..5eb6d074 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java @@ -7,6 +7,11 @@ public class BlockSolarGenerator extends BlockBaseGenerator { + @Override + public String getGeneratorTEID() { + return "TileEntitySolarGeneratorUIE"; + } + public BlockSolarGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java index 3f6b9115..51b29fea 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java @@ -7,6 +7,10 @@ public class BlockTNTGenerator extends BlockBaseGenerator { + public String getGeneratorTEID() { + return "TileEntityTNTGeneratorUIE"; + } + public BlockTNTGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java index c54961cd..69d82d18 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java @@ -3,8 +3,9 @@ import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.EnumPlantType; import net.minecraftforge.common.IPlantable; @@ -14,12 +15,13 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class ItemEnderLotusSeed extends Item implements IPlantable { +// This unfortunately has to be an ItemBlock for remapping EXU to work +public class ItemEnderLotusSeed extends ItemBlock implements IPlantable { private final Block cropBlock; public ItemEnderLotusSeed(Block cropBlock) { - super(); + super(cropBlock); this.cropBlock = cropBlock; this.setUnlocalizedName("ender_lotus_seed"); } @@ -42,12 +44,22 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, net.minecraft.wor return false; } + @SideOnly(Side.CLIENT) + public int getSpriteNumber() { + return 1; // Use item atlas instead of block atlas + } + @SideOnly(Side.CLIENT) @Override public void registerIcons(IIconRegister reg) { this.itemIcon = reg.registerIcon("utilitiesinexcess:ender_lotus_seed"); } + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int p_77617_1_) { + return this.itemIcon; + } + @Override public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) { return EnumPlantType.Cave; diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java index 59eaa4ab..50dc619f 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -16,19 +16,66 @@ import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.TrashCanTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.DivisionSigilTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.EnderLilyTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenBagTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenLassoTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.UnstableIngotTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.WateringCanTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.GeneratorTransformation; public enum Remappings { // spotless:off // make sure to leave a trailing comma // Direct block remappings - PURE_LOVE("pureLove", ModBlocks.PURE_LOVE), - // Direct item remappings + ANGEL_BLOCK("ExtraUtilities:angelBlock", ModBlocks.FLOATING_BLOCK), + BUD("ExtraUtilities:budoff", ModBlocks.BLOCK_UPDATE_DETECTOR), + DECO_BLOCK_2("ExtraUtilities:decorativeBlock2", ModBlocks.DECORATIVE_GLASS), + MINI_CHEST("ExtraUtilities:chestMini", ModBlocks.SIGNIFICANTLY_SHRUNK_CHEST), + FULL_CHEST("ExtraUtilities:chestFull", ModBlocks.MARGINALLY_MAXIMISED_CHEST), + CURTAINS("ExtraUtilities:curtains", ModBlocks.BLACKOUT_CURTAINS), + PURE_LOVE("ExtraUtilities:pureLove", ModBlocks.PURE_LOVE), + BEDROCKUIM_BLOCK("ExtraUtilities:block_bedrockium", ModBlocks.BEDROCKIUM_BLOCK), + CONVEYOR("ExtraUtilities:conveyor", ModBlocks.CONVEYOR), + GREENSCREEN("ExtraUtilities:greenscreen", ModBlocks.LAPIS_AETHERIUS), +// PEACEFUL_TABLE("ExtraUtilities:peaceful_table_top", ModBlocks.abc), // TODO: add here once merged + CURSED_EARTH("ExtraUtilities:cursedearthside", ModBlocks.CURSED_EARTH), + SPIKE_WOOD("ExtraUtilities:spike_base_wood", ModBlocks.SPIKE_WOOD), + SPIKE_IRON("ExtraUtilities:spike_base", ModBlocks.SPIKE_IRON), + SPIKE_GOLD("ExtraUtilities:spike_base_gold", ModBlocks.SPIKE_GOLD), + SPIKE_DIAMOND("ExtraUtilities:spike_base_diamond", ModBlocks.SPIKE_DIAMOND), + TIMER("ExtraUtilities:timer", ModBlocks.REDSTONE_CLOCK), + ETHEREAL_GLASS("ExtraUtilities:etherealglass", ModBlocks.ETHEREAL_GLASS), +// ENDER_PUMP("ExtraUtilities:enderThermicPump", ModBlocks.abc), // TODO: add here once merged +// COLORED_STONE_BRICK("ExtraUtilities:colorStoneBrick", ModBlocks.abc), +// COLORED_PLANKS("ExtraUtilities:colorWoodPlanks", ModBlocks.abc), +// COLORED_GLOWSTONE("ExtraUtilities:color_lightgem", ModBlocks.abc), +// COLORED_STONE("ExtraUtilities:color_stone", ModBlocks.abc), +// COLORED_QUARTZ_BLOCK("ExtraUtilities:color_quartzBlock", ModBlocks.abc), +// COLORED_SOUL_SAND("ExtraUtilities:color_hellsand", ModBlocks.abc), +// COLORED_REDSTONE_LAMP("ExtraUtilities:color_redstoneLight", ModBlocks.abc), +// COLORED_BRICKS("ExtraUtilities:color_brick", ModBlocks.abc), +// COLORED_COBBLESTONE("ExtraUtilities:color_stonebrick", ModBlocks.abc), +// COLORED_LAPIS_BLOCK("ExtraUtilities:color_blockLapis", ModBlocks.abc), +// COLORED_OBSIDIAN("ExtraUtilities:color_obsidian", ModBlocks.abc), +// COLORED_REDSTONE_BLOCK("ExtraUtilities:color_blockRedstone", ModBlocks.abc), +// COLORED_COAL_BLOCK("ExtraUtilities:color_blockCoal", ModBlocks.abc), + // Direct item remappings + GLOVE("ExtraUtilities:glove", ModItems.GLOVE), + HEAVENLY_RING("ExtraUtilities:angelRing", ModItems.HEAVENLY_RING), // TODO validate when ring variations are merged + FIRE_BATTERY("ExtraUtilities:heatingElement", ModItems.FIRE_BATTERY), + ARCHITECTS_WAND("ExtraUtilities:buildersWand", ModItems.ARCHITECTS_WAND), + SUPER_ARCHITECTS_WAND("ExtraUtilities:creativeBuildersWand", ModItems.ARCHITECTS_WAND), + INVERTED_SWORD("ExtraUtilities:ethericSword", ModItems.ETHERIC_SWORD), + INVERTED_PICKAXE("ExtraUtilities:destructionpickaxe", ModItems.DESTRUCTION_PICKAXE), + INVERTED_AXE("ExtraUtilities:defoliageAxe", ModItems.GLUTTONS_AXE), + INVERTED_SHOVEL("ExtraUtilities:erosionShovel", ModItems.ANTI_PARTICULATE_SHOVEL), + INVERTED_HOE("ExtraUtilities:temporalHoe", ModItems.REVERSING_HOE), + INVERTED_SHEARS("ExtraUtilities:shears", ModItems.PRECISION_SHEARS), + XRAY_GLASSES("ExtraUtilities:sonar_goggles", ModItems.XRAY_GLASSES), + BEDROCKUIM_INGOT("ExtraUtilities:bedrockiumIngot", ModItems.BEDROCKIUM_INGOT), + SCANNER("ExtraUtilities:scanner", ModItems.BLOCK_ANALYZER), // Item Transformations GOLDEN_BAG(new GoldenBagTransformation()), WATERING_CAN(new WateringCanTransformation()), @@ -41,6 +88,9 @@ public enum Remappings { COMPRESSED_BLOCKS(new CompressedBlocksTransformation()), DARK_PORTAL(new DarkPortalTransformation()), TRASH_CANS(new TrashCanTransformation()), + ENDER_LOTUS(new EnderLilyTransformation()), + // Tile Entity Transformation + GENERATORS(new GeneratorTransformation()), ; // leave trailing semicolon // spotless:on @@ -79,16 +129,14 @@ public static void initTransformationMappings() { private Item replacementItem = null; private IPosteaTransformation transformation = null; - private static final String pre = "ExtraUtilities:"; - Remappings(String oldName, ModBlocks modBlock) { - this.oldName = pre + oldName; + this.oldName = oldName; this.replacementBlock = modBlock.get(); this.replacementItem = modBlock.getItem(); } Remappings(String oldName, ModItems modItem) { - this.oldName = pre + oldName; + this.oldName = oldName; this.replacementItem = modItem.get(); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java index ac218fc2..367f5b3d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/IPosteaTransformation.java @@ -17,7 +17,7 @@ public interface IPosteaTransformation { * This method is called during a common FMLPreInitializationEvent, * do all your GameRegistry.registerItem and GameRegistry.registerBlock calls here. */ - void registerDummies(); + default void registerDummies() {} /** * This method is called during a common FMLInitializationEvent, @@ -48,11 +48,10 @@ default void addItemRemappings(Map remappings) {} */ default void addBlockRemappings(Map remappings) {} - // Called in FMLPostInitializationEvent /** * This method is called during a common FMLPostInitializationEvent, * do all your BlockReplacementManager.addBlockReplacement and * ItemStackReplacementManager.addItemReplacement calls here. */ - void registerTransformations(); + default void registerTransformations() {} } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java new file mode 100644 index 00000000..a53d5435 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java @@ -0,0 +1,27 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; + +import java.util.Map; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; + +public class EnderLilyTransformation implements IPosteaTransformation { + + public EnderLilyTransformation() { + + } + + @Override + public void addItemRemappings(Map remappings) { + remappings.put("ExtraUtilities:plant/ender_lilly", ModItems.ENDER_LOTUS_SEED.get()); + } + + @Override + public void addBlockRemappings(Map remappings) { + remappings.put("ExtraUtilities:plant/ender_lilly", ModBlocks.ENDER_LOTUS.get()); + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java index ab09db40..500a1d5a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/GoldenLassoTransformation.java @@ -17,11 +17,13 @@ public GoldenLassoTransformation() { public NBTTagCompound doTransformation(NBTTagCompound tag) { IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.MOB_JAR.get())); - NBTTagCompound tagtag = tag.getCompoundTag("tag"); - NBTTagCompound newTagtag = new NBTTagCompound(); - newTagtag.setTag("MobData", tagtag); + if (tag.hasKey("tag")) { + NBTTagCompound tagtag = tag.getCompoundTag("tag"); + NBTTagCompound newTagtag = new NBTTagCompound(); + newTagtag.setTag("MobData", tagtag); - tag.setTag("tag", newTagtag); + tag.setTag("tag", newTagtag); + } return tag; } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java new file mode 100644 index 00000000..b56e85da --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java @@ -0,0 +1,236 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; + +import java.util.Map; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockBaseGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockRedstoneGenerator; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.api.ItemStackReplacementManager; +import com.gtnewhorizons.postea.api.TileEntityReplacementManager; +import com.gtnewhorizons.postea.utility.BlockInfo; +import com.gtnewhorizons.postea.utility.PosteaUtilities; + +import cpw.mods.fml.common.registry.GameRegistry; + +public class GeneratorTransformation implements IPosteaTransformation { + + private final Block dummyBlock1; + private final Block dummyBlock8; + private final Block dummyBlock64; + + private static final String dummyName1 = "dummy_generator1x"; + private static final String dummyName8 = "dummy_generator8x"; + private static final String dummyName64 = "dummy_generator64x"; + + public GeneratorTransformation() { + dummyBlock1 = new DummyBlock(Material.ground); + dummyBlock8 = new DummyBlock(Material.ground); + dummyBlock64 = new DummyBlock(Material.ground); + } + + @Override + public void registerDummies() { + GameRegistry.registerBlock(dummyBlock1, dummyName1); + GameRegistry.registerBlock(dummyBlock8, dummyName8); + GameRegistry.registerBlock(dummyBlock64, dummyName64); + } + + @Override + public void addItemRemappings(Map remappings) { + remappings.put("ExtraUtilities:generator", Item.getItemFromBlock(dummyBlock1)); + remappings.put("ExtraUtilities:generator.8", Item.getItemFromBlock(dummyBlock8)); + remappings.put("ExtraUtilities:generator.64", Item.getItemFromBlock(dummyBlock64)); + } + + @Override + public void addBlockRemappings(Map remappings) { + remappings.put("ExtraUtilities:generator", dummyBlock1); + remappings.put("ExtraUtilities:generator.8", dummyBlock8); + remappings.put("ExtraUtilities:generator.64", dummyBlock64); + } + + @Override + public void registerTransformations() { + ItemStackReplacementManager + .addItemReplacement(UtilitiesInExcess.MODID + ":" + dummyName1, (tag) -> this.doItemTransformation(tag, 1)); + ItemStackReplacementManager + .addItemReplacement(UtilitiesInExcess.MODID + ":" + dummyName8, (tag) -> this.doItemTransformation(tag, 8)); + ItemStackReplacementManager.addItemReplacement( + UtilitiesInExcess.MODID + ":" + dummyName64, + (tag) -> this.doItemTransformation(tag, 64)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorstone", + (tag, world, chunk) -> this.doGeneratorTransformation(0, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorbase", + (tag, world, chunk) -> this.doGeneratorTransformation(1, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorlava", + (tag, world, chunk) -> this.doGeneratorTransformation(2, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorender", + (tag, world, chunk) -> this.doGeneratorTransformation(3, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorredflux", + (tag, world, chunk) -> this.doGeneratorTransformation(4, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorfood", + (tag, world, chunk) -> this.doGeneratorTransformation(5, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorpotion", + (tag, world, chunk) -> this.doGeneratorTransformation(6, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorsolar", + (tag, world, chunk) -> this.doGeneratorTransformation(7, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatortnt", + (tag, world, chunk) -> this.doGeneratorTransformation(8, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatorpink", + (tag, world, chunk) -> this.doGeneratorTransformation(9, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatoroverclocked", + (tag, world, chunk) -> this.doGeneratorTransformation(10, tag, world, chunk)); + TileEntityReplacementManager.tileEntityTransformer( + "extrautils:generatornether", + (tag, world, chunk) -> this.doGeneratorTransformation(11, tag, world, chunk)); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag, int mult) { + int dmg = tag.getInteger("Damage"); + ModBlocks block = getGeneratorFromMetaAndMult(dmg, mult); + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(block.getItem())); + tag.setInteger("Damage", 0); + return tag; + } + + public BlockInfo doGeneratorTransformation(int meta, NBTTagCompound originalTag, World world, Chunk chunk) { + Block block = chunk + .getBlock(originalTag.getInteger("x") & 15, originalTag.getInteger("y"), originalTag.getInteger("z") & 15); + + int mult = 1; + if (block == dummyBlock8) { + mult = 8; + } else if (block == dummyBlock64) { + mult = 64; + } + + Block newBlock = getGeneratorFromMetaAndMult(meta, mult).get(); + + return new BlockInfo(newBlock, 0, (oldTag) -> { + NBTTagCompound tag = PosteaUtilities.cleanseNBT(((BlockBaseGenerator) newBlock).getGeneratorTEID(), oldTag); + tag.setInteger("Energy", oldTag.getInteger("Energy")); + int burnTime = (int) oldTag.getDouble("coolDown"); + int rfPerTick = oldTag.getInteger("curLevel"); + + tag.setInteger("BurnTime", rfPerTick == 0 ? 0 : burnTime); + tag.setInteger("CurrentRFPerTick", rfPerTick); + + if (oldTag.hasKey("items")) { + NBTTagCompound items = oldTag.getCompoundTag("items"); + if (items.hasKey("item_0")) { + String stackName = newBlock instanceof BlockRedstoneGenerator ? "RedstoneStack" : "FuelStack"; + NBTTagCompound item = items.getCompoundTag("item_0"); + + if (rfPerTick == 0 && burnTime != 0) { + // If we know that the generator is running, but we don't know at what rf/t + // Add an extra item to the input stack + item.setInteger("Count", item.getInteger("Count") + 1); + } + + tag.setTag(stackName, item); + } + } + + if (oldTag.hasKey("Tank_0")) { + NBTTagCompound tank = oldTag.getCompoundTag("Tank_0"); + int amount = tank.getInteger("Amount"); + if (amount > 0 && rfPerTick == 0 && burnTime != 0) { + // If we know that the generator is running, but we don't know at what rf/t + // Add an extra bucket to the input fluid + tank.setInteger("Amount", Math.min(amount + 1000, 4000)); + } + tag.setTag("Fluid", tank); + } + return tag; + }); + } + + public static ModBlocks getGeneratorFromMetaAndMult(int meta, int mult) { + return switch (meta) { + case 0 -> switch (mult) { + case 64 -> ModBlocks.LOW_TEMPERATURE_FURNACE_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.LOW_TEMPERATURE_FURNACE_GENERATOR_PLUS; + default -> ModBlocks.LOW_TEMPERATURE_FURNACE_GENERATOR; + }; + case 1 -> switch (mult) { + case 64 -> ModBlocks.FURNACE_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.FURNACE_GENERATOR_PLUS; + default -> ModBlocks.FURNACE_GENERATOR; + }; + case 2 -> switch (mult) { + case 64 -> ModBlocks.LAVA_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.LAVA_GENERATOR_PLUS; + default -> ModBlocks.LAVA_GENERATOR; + }; + case 3 -> switch (mult) { + case 64 -> ModBlocks.ENDER_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.ENDER_GENERATOR_PLUS; + default -> ModBlocks.ENDER_GENERATOR; + }; + case 4 -> switch (mult) { + case 64 -> ModBlocks.REDSTONE_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.REDSTONE_GENERATOR_PLUS; + default -> ModBlocks.REDSTONE_GENERATOR; + }; + case 5 -> switch (mult) { + case 64 -> ModBlocks.FOOD_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.FOOD_GENERATOR_PLUS; + default -> ModBlocks.FOOD_GENERATOR; + }; + case 6 -> switch (mult) { + case 64 -> ModBlocks.POTION_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.POTION_GENERATOR_PLUS; + default -> ModBlocks.POTION_GENERATOR; + }; + case 7 -> switch (mult) { + case 64 -> ModBlocks.SOLAR_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.SOLAR_GENERATOR_PLUS; + default -> ModBlocks.SOLAR_GENERATOR; + }; + case 8 -> switch (mult) { + case 64 -> ModBlocks.TNT_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.TNT_GENERATOR_PLUS; + default -> ModBlocks.TNT_GENERATOR; + }; + case 9 -> switch (mult) { + case 64 -> ModBlocks.PINK_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.PINK_GENERATOR_PLUS; + default -> ModBlocks.PINK_GENERATOR; + }; + case 10 -> switch (mult) { + case 64 -> ModBlocks.HIGH_TEMPERATURE_FURNACE_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.HIGH_TEMPERATURE_FURNACE_GENERATOR_PLUS; + default -> ModBlocks.HIGH_TEMPERATURE_FURNACE_GENERATOR; + }; + case 11 -> switch (mult) { + case 64 -> ModBlocks.NETHER_STAR_GENERATOR_PLUSPLUS; + case 8 -> ModBlocks.NETHER_STAR_GENERATOR_PLUS; + default -> ModBlocks.NETHER_STAR_GENERATOR; + }; + + default -> throw new IllegalStateException("No defined generator with EXU meta: " + meta); + }; + } +} From 10900c190c27edf517c8a9022452b6ec0df3a34b Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Sun, 7 Dec 2025 11:32:36 +0200 Subject: [PATCH 05/10] even more transformations --- .../utilitiesinexcess/CommonProxy.java | 29 ------ .../compat/exu/ExuCompat.java | 5 + .../compat/exu/Remappings.java | 57 +++++++---- .../blocks/AbstractBlockTransformation.java | 38 ++++---- .../postea/blocks/ConveyorTransformation.java | 34 +++++++ .../items/AbstractItemTransformation.java | 38 ++++---- .../postea/items/EnderLilyTransformation.java | 4 - .../AbstractTileEntityTransformation.java | 95 +++++++++++++++++++ .../tileentities/FullChestTransformation.java | 45 +++++++++ .../tileentities/GeneratorTransformation.java | 4 + .../tileentities/MiniChestTransformation.java | 45 +++++++++ .../tileentities/SpikeTransformation.java | 51 ++++++++++ .../compat/nei/NEIUtils.java | 13 +++ .../utilitiesinexcess/utils/UIEUtils.java | 13 +++ 14 files changed, 382 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/ConveyorTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/SpikeTransformation.java create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java index 9e240dbd..f3a6689d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java @@ -1,10 +1,5 @@ package com.fouristhenumber.utilitiesinexcess; -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; - import org.lwjgl.input.Keyboard; import com.fouristhenumber.utilitiesinexcess.client.IMCForNEI; @@ -16,9 +11,6 @@ import com.fouristhenumber.utilitiesinexcess.network.PacketHandler; import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks; import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind; -import com.gtnewhorizons.postea.api.TileEntityReplacementManager; -import com.gtnewhorizons.postea.utility.BlockInfo; -import com.gtnewhorizons.postea.utility.PosteaUtilities; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; @@ -63,27 +55,6 @@ public void postInit(FMLPostInitializationEvent event) { for (IPosteaTransformation transformation : Remappings.transformations) { transformation.registerTransformations(); } - TileEntityReplacementManager.tileEntityTransformer("Furnace", (tag, world) -> { - return new BlockInfo(Blocks.chest, 0, (oldTag) -> { - - NBTTagCompound newTag = PosteaUtilities.cleanseNBT("Chest", oldTag); - - NBTTagList tagList = new NBTTagList(); - - NBTTagCompound stoneAtSlot13 = new NBTTagCompound(); - stoneAtSlot13.setByte("Count", (byte) 1); - stoneAtSlot13.setByte("Slot", (byte) 13); - stoneAtSlot13.setShort("Damage", (short) 0); - stoneAtSlot13.setShort("id", (short) Block.getIdFromBlock(Blocks.stone)); - - tagList.appendTag(stoneAtSlot13); - - newTag.setTag("Items", tagList); - newTag.setInteger("banana", 1); - - return newTag; - }); - }); } public void serverStarting(FMLServerStartingEvent event) {} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java index 5dd22a08..49c3dbe9 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java @@ -12,6 +12,11 @@ public static void onMissingMappings(FMLMissingMappingsEvent event) { for (FMLMissingMappingsEvent.MissingMapping mapping : event.getAll()) { if (mapping == null) continue; + if (Remappings.skippedMappings.contains(mapping.name)) { + mapping.ignore(); + continue; + } + if (mapping.type == GameRegistry.Type.ITEM) { Item newItem = Remappings.itemMappings.getOrDefault(mapping.name, null); if (newItem != null) { diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java index 50dc619f..c38ee415 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -1,8 +1,6 @@ package com.fouristhenumber.utilitiesinexcess.compat.exu; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.util.*; import net.minecraft.block.Block; import net.minecraft.item.Item; @@ -11,6 +9,7 @@ import com.fouristhenumber.utilitiesinexcess.ModItems; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.CompressedBlocksTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.ConveyorTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DarkPortalTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DecoBlock1Transformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; @@ -21,7 +20,10 @@ import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenLassoTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.UnstableIngotTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.WateringCanTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.FullChestTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.GeneratorTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.MiniChestTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities.SpikeTransformation; public enum Remappings { // spotless:off @@ -31,12 +33,9 @@ public enum Remappings { ANGEL_BLOCK("ExtraUtilities:angelBlock", ModBlocks.FLOATING_BLOCK), BUD("ExtraUtilities:budoff", ModBlocks.BLOCK_UPDATE_DETECTOR), DECO_BLOCK_2("ExtraUtilities:decorativeBlock2", ModBlocks.DECORATIVE_GLASS), - MINI_CHEST("ExtraUtilities:chestMini", ModBlocks.SIGNIFICANTLY_SHRUNK_CHEST), - FULL_CHEST("ExtraUtilities:chestFull", ModBlocks.MARGINALLY_MAXIMISED_CHEST), CURTAINS("ExtraUtilities:curtains", ModBlocks.BLACKOUT_CURTAINS), PURE_LOVE("ExtraUtilities:pureLove", ModBlocks.PURE_LOVE), BEDROCKUIM_BLOCK("ExtraUtilities:block_bedrockium", ModBlocks.BEDROCKIUM_BLOCK), - CONVEYOR("ExtraUtilities:conveyor", ModBlocks.CONVEYOR), GREENSCREEN("ExtraUtilities:greenscreen", ModBlocks.LAPIS_AETHERIUS), // PEACEFUL_TABLE("ExtraUtilities:peaceful_table_top", ModBlocks.abc), // TODO: add here once merged CURSED_EARTH("ExtraUtilities:cursedearthside", ModBlocks.CURSED_EARTH), @@ -47,23 +46,23 @@ public enum Remappings { TIMER("ExtraUtilities:timer", ModBlocks.REDSTONE_CLOCK), ETHEREAL_GLASS("ExtraUtilities:etherealglass", ModBlocks.ETHEREAL_GLASS), // ENDER_PUMP("ExtraUtilities:enderThermicPump", ModBlocks.abc), // TODO: add here once merged -// COLORED_STONE_BRICK("ExtraUtilities:colorStoneBrick", ModBlocks.abc), -// COLORED_PLANKS("ExtraUtilities:colorWoodPlanks", ModBlocks.abc), -// COLORED_GLOWSTONE("ExtraUtilities:color_lightgem", ModBlocks.abc), -// COLORED_STONE("ExtraUtilities:color_stone", ModBlocks.abc), -// COLORED_QUARTZ_BLOCK("ExtraUtilities:color_quartzBlock", ModBlocks.abc), -// COLORED_SOUL_SAND("ExtraUtilities:color_hellsand", ModBlocks.abc), -// COLORED_REDSTONE_LAMP("ExtraUtilities:color_redstoneLight", ModBlocks.abc), -// COLORED_BRICKS("ExtraUtilities:color_brick", ModBlocks.abc), -// COLORED_COBBLESTONE("ExtraUtilities:color_stonebrick", ModBlocks.abc), -// COLORED_LAPIS_BLOCK("ExtraUtilities:color_blockLapis", ModBlocks.abc), -// COLORED_OBSIDIAN("ExtraUtilities:color_obsidian", ModBlocks.abc), -// COLORED_REDSTONE_BLOCK("ExtraUtilities:color_blockRedstone", ModBlocks.abc), -// COLORED_COAL_BLOCK("ExtraUtilities:color_blockCoal", ModBlocks.abc), + COLORED_STONE_BRICK("ExtraUtilities:colorStoneBrick", ModBlocks.COLORED_STONE_BRICKS), + COLORED_PLANKS("ExtraUtilities:colorWoodPlanks", ModBlocks.COLORED_WOOD_PLANKS), + COLORED_GLOWSTONE("ExtraUtilities:color_lightgem", ModBlocks.COLORED_GLOWSTONE), + COLORED_STONE("ExtraUtilities:color_stone", ModBlocks.COLORED_STONE), + COLORED_QUARTZ_BLOCK("ExtraUtilities:color_quartzBlock", ModBlocks.COLORED_QUARTZ_BLOCK), + COLORED_SOUL_SAND("ExtraUtilities:color_hellsand", ModBlocks.COLORED_SOUL_SAND), + COLORED_REDSTONE_LAMP("ExtraUtilities:color_redstoneLight", ModBlocks.COLORED_REDSTONE_LAMP), + COLORED_BRICKS("ExtraUtilities:color_brick", ModBlocks.COLORED_BRICKS), + COLORED_COBBLESTONE("ExtraUtilities:color_stonebrick", ModBlocks.COLORED_COBBLESTONE), + COLORED_LAPIS_BLOCK("ExtraUtilities:color_blockLapis", ModBlocks.COLORED_LAPIS_BLOCK), + COLORED_OBSIDIAN("ExtraUtilities:color_obsidian", ModBlocks.COLORED_OBSIDIAN), + COLORED_REDSTONE_BLOCK("ExtraUtilities:color_blockRedstone", ModBlocks.COLORED_REDSTONE_BLOCK), + COLORED_COAL_BLOCK("ExtraUtilities:color_blockCoal", ModBlocks.COLORED_COAL_BLOCK), // Direct item remappings GLOVE("ExtraUtilities:glove", ModItems.GLOVE), - HEAVENLY_RING("ExtraUtilities:angelRing", ModItems.HEAVENLY_RING), // TODO validate when ring variations are merged + HEAVENLY_RING("ExtraUtilities:angelRing", ModItems.HEAVENLY_RING), FIRE_BATTERY("ExtraUtilities:heatingElement", ModItems.FIRE_BATTERY), ARCHITECTS_WAND("ExtraUtilities:buildersWand", ModItems.ARCHITECTS_WAND), SUPER_ARCHITECTS_WAND("ExtraUtilities:creativeBuildersWand", ModItems.ARCHITECTS_WAND), @@ -89,8 +88,15 @@ public enum Remappings { DARK_PORTAL(new DarkPortalTransformation()), TRASH_CANS(new TrashCanTransformation()), ENDER_LOTUS(new EnderLilyTransformation()), + CONVEYOR(new ConveyorTransformation()), // Tile Entity Transformation GENERATORS(new GeneratorTransformation()), + FULL_CHEST(new FullChestTransformation()), + MINI_CHEST(new MiniChestTransformation()), + SPIKES(new SpikeTransformation()), + // Skipped mappings + PAINT_BRUSH("ExtraUtilities:paintbrush"), + DATABLOCK("ExtraUtilities:datablock"), ; // leave trailing semicolon // spotless:on @@ -100,6 +106,7 @@ public enum Remappings { public static final HashMap itemMappings = new HashMap<>(); public static final HashMap blockMappings = new HashMap<>(); public static final List transformations = new ArrayList<>(); + public static final Set skippedMappings = new HashSet<>(); public static void init() { for (Remappings remapping : VALUES) { @@ -112,6 +119,9 @@ public static void init() { if (remapping.transformation != null) { transformations.add(remapping.transformation); } + if (remapping.isSkipped) { + skippedMappings.add(remapping.getName()); + } } } @@ -129,6 +139,8 @@ public static void initTransformationMappings() { private Item replacementItem = null; private IPosteaTransformation transformation = null; + private boolean isSkipped = false; + Remappings(String oldName, ModBlocks modBlock) { this.oldName = oldName; this.replacementBlock = modBlock.get(); @@ -140,6 +152,11 @@ public static void initTransformationMappings() { this.replacementItem = modItem.get(); } + Remappings(String oldName) { + this.oldName = oldName; + isSkipped = true; + } + Remappings(IPosteaTransformation posteaTransformation) { this.transformation = posteaTransformation; } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java index 9762bc55..df7c0325 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/AbstractBlockTransformation.java @@ -11,6 +11,7 @@ import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.utils.UIEUtils; import com.gtnewhorizons.postea.api.BlockReplacementManager; import com.gtnewhorizons.postea.api.ItemStackReplacementManager; import com.gtnewhorizons.postea.utility.BlockConversionInfo; @@ -31,6 +32,24 @@ public abstract class AbstractBlockTransformation implements IPosteaTransformati private String dummyName; private String oldName; + /** + * Set the name for this transformation's dummy block *without* the modid, e.g. "dummy_golden_bag". + * + * @param dummyName The registry name for this transformation's dummy block + */ + public void setDummyName(String dummyName) { + this.dummyName = dummyName; + } + + /** + * Set the *full registry name* (e.g. "modid:item") of the old block this transformation is replacing + * + * @param oldName The registry name for the block this transformation is replacing + */ + public void setOldName(String oldName) { + this.oldName = oldName; + } + public AbstractBlockTransformation() { dummyBlock = new DummyBlock(Material.ground); } @@ -38,6 +57,7 @@ public AbstractBlockTransformation() { @Override public void registerDummies() { GameRegistry.registerBlock(dummyBlock, dummyName); + UIEUtils.hideInNei(dummyBlock); } @Override @@ -61,22 +81,4 @@ public void registerTransformations() { public abstract NBTTagCompound doItemTransformation(NBTTagCompound tag); public abstract BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world); - - /** - * Set the name for this transformation's dummy block *without* the modid, e.g. "dummy_golden_bag". - * - * @param dummyName The registry name for this transformation's dummy block - */ - public void setDummyName(String dummyName) { - this.dummyName = dummyName; - } - - /** - * Set the *full registry name* (e.g. "modid:item") of the old block this transformation is replacing - * - * @param oldName The registry name for the block this transformation is replacing - */ - public void setOldName(String oldName) { - this.oldName = oldName; - } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/ConveyorTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/ConveyorTransformation.java new file mode 100644 index 00000000..7dfd9df8 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/ConveyorTransformation.java @@ -0,0 +1,34 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class ConveyorTransformation extends AbstractBlockTransformation { + + public ConveyorTransformation() { + super(); + setDummyName("dummy_conveyor"); + setOldName("ExtraUtilities:conveyor"); + } + + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.CONVEYOR.getItem())); + tag.setInteger("Damage", 0); + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + int meta = blockConversionInfo.metadata; + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.CONVEYOR.get()); + blockConversionInfoNew.metadata = meta - 2 >= 0 ? meta - 2 : meta + 2; + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java index e579df4c..e73f7b16 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/AbstractItemTransformation.java @@ -7,6 +7,7 @@ import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.utils.UIEUtils; import com.gtnewhorizons.postea.api.ItemStackReplacementManager; import cpw.mods.fml.common.registry.GameRegistry; @@ -24,8 +25,27 @@ public abstract class AbstractItemTransformation implements IPosteaTransformatio private String dummyName; private String oldName; + /** + * Set the name for this transformation's dummy item *without* the modid, e.g. "dummy_golden_bag". + * + * @param dummyName The registry name for this transformation's dummy item + */ + public void setDummyName(String dummyName) { + this.dummyName = dummyName; + } + + /** + * Set the *full registry name* (e.g. "modid:item") of the old item this transformation is replacing + * + * @param oldName The registry name for the item this transformation is replacing + */ + public void setOldName(String oldName) { + this.oldName = oldName; + } + public AbstractItemTransformation() { dummyItem = new Item(); + UIEUtils.hideInNei(dummyItem); } @Override @@ -45,22 +65,4 @@ public void registerTransformations() { } public abstract NBTTagCompound doTransformation(NBTTagCompound tag); - - /** - * Set the name for this transformation's dummy item *without* the modid, e.g. "dummy_golden_bag". - * - * @param dummyName The registry name for this transformation's dummy item - */ - public void setDummyName(String dummyName) { - this.dummyName = dummyName; - } - - /** - * Set the *full registry name* (e.g. "modid:item") of the old item this transformation is replacing - * - * @param oldName The registry name for the item this transformation is replacing - */ - public void setOldName(String oldName) { - this.oldName = oldName; - } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java index a53d5435..4f19c7fa 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java @@ -11,10 +11,6 @@ public class EnderLilyTransformation implements IPosteaTransformation { - public EnderLilyTransformation() { - - } - @Override public void addItemRemappings(Map remappings) { remappings.put("ExtraUtilities:plant/ender_lilly", ModItems.ENDER_LOTUS_SEED.get()); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java new file mode 100644 index 00000000..5bf98e1e --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java @@ -0,0 +1,95 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; + +import java.util.Map; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; +import com.fouristhenumber.utilitiesinexcess.utils.UIEUtils; +import com.gtnewhorizons.postea.api.ItemStackReplacementManager; +import com.gtnewhorizons.postea.api.TileEntityReplacementManager; +import com.gtnewhorizons.postea.utility.BlockInfo; + +import cpw.mods.fml.common.registry.GameRegistry; + +/** + * A simple {@link IPosteaTransformation} that transforms a single block. + * Extend and use setDummyName and setOldName + * then do your transformations in doItemTransformation and doBlockTransformation + *

+ * See {@link SoundMufflerTransformation} for an example. + */ +public abstract class AbstractTileEntityTransformation implements IPosteaTransformation { + + private final Block dummyBlock; + + private String dummyName; + private String oldBlockName; + private String oldTEID; + + /** + * Set the name for this transformation's dummy block *without* the modid, e.g. "dummy_golden_bag". + * + * @param dummyName The registry name for this transformation's dummy block + */ + public void setDummyBlockName(String dummyName) { + this.dummyName = dummyName; + } + + /** + * Set the *full registry name* (e.g. "modid:item") of the old block this transformation is replacing + * + * @param oldName The registry name for the block this transformation is replacing + */ + public void setOldBlockName(String oldName) { + this.oldBlockName = oldName; + } + + /** + * Set the tile entity ID of the tile entity this transformation is replacing + * + * @param oldId The tile entity ID for the tile entity this transformation is replacing + */ + public void setOldTileEntityId(String oldId) { + this.oldTEID = oldId; + } + + public AbstractTileEntityTransformation() { + dummyBlock = new DummyBlock(Material.ground); + } + + @Override + public void registerDummies() { + GameRegistry.registerBlock(dummyBlock, dummyName); + UIEUtils.hideInNei(dummyBlock); + } + + @Override + public void addItemRemappings(Map remappings) { + remappings.put(oldBlockName, Item.getItemFromBlock(dummyBlock)); + } + + @Override + public void addBlockRemappings(Map remappings) { + remappings.put(oldBlockName, dummyBlock); + } + + @Override + public void registerTransformations() { + ItemStackReplacementManager + .addItemReplacement(UtilitiesInExcess.MODID + ":" + dummyName, this::doItemTransformation); + TileEntityReplacementManager.tileEntityTransformer(oldTEID, this::doTileEntityTransformation); + } + + public abstract NBTTagCompound doItemTransformation(NBTTagCompound tag); + + public abstract BlockInfo doTileEntityTransformation(NBTTagCompound oldTag, World world, Chunk chunk); +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java new file mode 100644 index 00000000..4b1e0866 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java @@ -0,0 +1,45 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockInfo; +import com.gtnewhorizons.postea.utility.PosteaUtilities; + +public class FullChestTransformation extends AbstractTileEntityTransformation { + + public FullChestTransformation() { + super(); + setDummyBlockName("dummy_full_chest"); + setOldBlockName("ExtraUtilities:chestFull"); + setOldTileEntityId("TileFullChest"); + } + + @Override + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.MARGINALLY_MAXIMISED_CHEST.getItem())); + return tag; + } + + @Override + public BlockInfo doTileEntityTransformation(NBTTagCompound _oldTag, World world, Chunk chunk) { + int meta = chunk + .getBlockMetadata(_oldTag.getInteger("x") & 15, _oldTag.getInteger("y"), _oldTag.getInteger("z") & 15); + // Don't ask me why our direction metas are so incomprehensible. + meta = switch (meta) { + case 1 -> 4; + case 0 -> 3; + case 3 -> 5; + default -> 2; + }; + return new BlockInfo(ModBlocks.MARGINALLY_MAXIMISED_CHEST.get(), meta, (oldTag) -> { + NBTTagCompound tag = PosteaUtilities.cleanseNBT("TileEntityMarginallyMaximisedChestUIE", oldTag); + tag.setTag("Items", oldTag.getTag("Items")); + return tag; + }); + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java index b56e85da..fc389357 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java @@ -15,6 +15,7 @@ import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockRedstoneGenerator; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.utils.UIEUtils; import com.gtnewhorizons.postea.api.IDExtenderCompat; import com.gtnewhorizons.postea.api.ItemStackReplacementManager; import com.gtnewhorizons.postea.api.TileEntityReplacementManager; @@ -44,6 +45,9 @@ public void registerDummies() { GameRegistry.registerBlock(dummyBlock1, dummyName1); GameRegistry.registerBlock(dummyBlock8, dummyName8); GameRegistry.registerBlock(dummyBlock64, dummyName64); + UIEUtils.hideInNei(dummyBlock1); + UIEUtils.hideInNei(dummyBlock8); + UIEUtils.hideInNei(dummyBlock64); } @Override diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java new file mode 100644 index 00000000..d1ce86df --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java @@ -0,0 +1,45 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockInfo; +import com.gtnewhorizons.postea.utility.PosteaUtilities; + +public class MiniChestTransformation extends AbstractTileEntityTransformation { + + public MiniChestTransformation() { + super(); + setDummyBlockName("dummy_mini_chest"); + setOldBlockName("ExtraUtilities:chestMini"); + setOldTileEntityId("TileMiniChest"); + } + + @Override + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.SIGNIFICANTLY_SHRUNK_CHEST.getItem())); + return tag; + } + + @Override + public BlockInfo doTileEntityTransformation(NBTTagCompound _oldTag, World world, Chunk chunk) { + int meta = chunk + .getBlockMetadata(_oldTag.getInteger("x") & 15, _oldTag.getInteger("y"), _oldTag.getInteger("z") & 15); + // Don't ask me why our direction metas are so incomprehensible. + meta = switch (meta) { + case 3 -> 4; + case 2 -> 3; + case 1 -> 5; + default -> 2; + }; + return new BlockInfo(ModBlocks.SIGNIFICANTLY_SHRUNK_CHEST.get(), meta, (oldTag) -> { + NBTTagCompound tag = PosteaUtilities.cleanseNBT("TileEntitySignificantlyShrunkChestUIE", oldTag); + tag.setTag("Items", oldTag.getTag("Items")); + return tag; + }); + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/SpikeTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/SpikeTransformation.java new file mode 100644 index 00000000..e17ec183 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/SpikeTransformation.java @@ -0,0 +1,51 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockSpike; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.gtnewhorizons.postea.api.TileEntityReplacementManager; +import com.gtnewhorizons.postea.utility.BlockInfo; +import com.gtnewhorizons.postea.utility.PosteaUtilities; + +public class SpikeTransformation implements IPosteaTransformation { + + @Override + public void registerTransformations() { + TileEntityReplacementManager + .tileEntityTransformer("TileEntityEnchantedSpike", this::doTileEntityTransformation); + } + + public BlockInfo doTileEntityTransformation(NBTTagCompound _oldTag, World world, Chunk chunk) { + Block block = chunk + .getBlock(_oldTag.getInteger("x") & 15, _oldTag.getInteger("y"), _oldTag.getInteger("z") & 15); + + return new BlockInfo(block, 0, (oldTag) -> { + NBTTagCompound tag = PosteaUtilities.cleanseNBT("utilitiesinexcess:TileEntitySpike", oldTag); + + NBTTagCompound fakeWeapon = new NBTTagCompound(); + + ItemStack fakeWeaponStack = new ItemStack(Item.getItemFromBlock(block)); + NBTTagCompound tagtag = (NBTTagCompound) oldTag.copy(); + tagtag.removeTag("x"); + tagtag.removeTag("y"); + tagtag.removeTag("z"); + tagtag.removeTag("id"); + fakeWeaponStack.setTagCompound(tagtag); + fakeWeaponStack.writeToNBT(fakeWeapon); + + tag.setTag("FakeWeapon", fakeWeapon); + + String spikeType = ((BlockSpike) block).getSpikeType() + .name(); + tag.setString("SpikeType", spikeType); + + return tag; + }); + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java new file mode 100644 index 00000000..ce005c13 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java @@ -0,0 +1,13 @@ +package com.fouristhenumber.utilitiesinexcess.compat.nei; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import codechicken.nei.api.API; + +public class NEIUtils { + + public static void hideItem(Item item) { + API.hideItem(new ItemStack(item)); + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java index d624b77b..40955191 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java @@ -3,10 +3,13 @@ import java.text.DecimalFormat; import java.util.Random; +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import com.fouristhenumber.utilitiesinexcess.compat.Mods; +import com.fouristhenumber.utilitiesinexcess.compat.nei.NEIUtils; import baubles.common.container.InventoryBaubles; import baubles.common.lib.PlayerHandler; @@ -64,4 +67,14 @@ public static boolean hasBauble(EntityPlayer player, Class clazz) { public static float lerp(float cur, float target, float speed) { return cur + (target - cur) * speed; } + + public static void hideInNei(Block block) { + hideInNei(Item.getItemFromBlock(block)); + } + + public static void hideInNei(Item item) { + if (!Mods.NEI.isLoaded()) return; + + NEIUtils.hideItem(item); + } } From fba24f008cdd87c20ee59aade1ea52958edb52af Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Mon, 8 Dec 2025 00:52:57 +0200 Subject: [PATCH 06/10] cleanup --- .../blocks/generators/BlockBaseGenerator.java | 4 -- .../generators/BlockEnderGenerator.java | 5 --- .../blocks/generators/BlockFoodGenerator.java | 5 --- .../generators/BlockFurnaceGenerator.java | 5 --- .../BlockHighTemperatureFurnaceGenerator.java | 5 --- .../blocks/generators/BlockLavaGenerator.java | 5 --- .../BlockLowTemperatureFurnaceGenerator.java | 5 --- .../generators/BlockNetherStarGenerator.java | 5 --- .../blocks/generators/BlockPinkGenerator.java | 5 --- .../generators/BlockPotionGenerator.java | 5 --- .../generators/BlockRedstoneGenerator.java | 5 --- .../generators/BlockSolarGenerator.java | 5 --- .../blocks/generators/BlockTNTGenerator.java | 4 -- .../common/items/ItemEnderLotusSeed.java | 7 ++- .../compat/exu/Remappings.java | 15 +++++-- .../blocks/EnderLilyTransformation.java | 38 ++++++++++++++++ .../postea/items/EnderLilyTransformation.java | 23 ---------- .../AbstractTileEntityTransformation.java | 45 +++++++------------ .../tileentities/FullChestTransformation.java | 10 +---- .../tileentities/GeneratorTransformation.java | 42 ++++++++++++++++- .../tileentities/MiniChestTransformation.java | 10 +---- 21 files changed, 111 insertions(+), 142 deletions(-) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/EnderLilyTransformation.java delete mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java index b6a4561f..a2b9b6a5 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java @@ -11,8 +11,6 @@ public abstract class BlockBaseGenerator extends BlockContainer { - public String TILE_ENTITY_ID; - public int multiplier; protected BlockBaseGenerator(String id, int mult) { @@ -39,6 +37,4 @@ public void onNeighborBlockChange(World worldIn, int x, int y, int z, Block neig } super.onNeighborBlockChange(worldIn, x, y, z, neighbor); } - - public abstract String getGeneratorTEID(); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java index 0fce082b..48c02e45 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockEnderGenerator.java @@ -7,11 +7,6 @@ public class BlockEnderGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityEnderGeneratorUIE"; - } - public BlockEnderGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java index ae09978a..48049089 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFoodGenerator.java @@ -7,11 +7,6 @@ public class BlockFoodGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityFoodGeneratorUIE"; - } - public BlockFoodGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java index 93007c59..ca3ff191 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockFurnaceGenerator.java @@ -7,11 +7,6 @@ public class BlockFurnaceGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityFurnaceGeneratorUIE"; - } - public BlockFurnaceGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java index 1a8704c4..a883288c 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockHighTemperatureFurnaceGenerator.java @@ -7,11 +7,6 @@ public class BlockHighTemperatureFurnaceGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityHighTemperatureFurnaceGenerator"; - } - public BlockHighTemperatureFurnaceGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java index 9091bd6a..b6f40d74 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLavaGenerator.java @@ -7,11 +7,6 @@ public class BlockLavaGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityLavaGeneratorUIE"; - } - public BlockLavaGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java index 8b90775a..148525bc 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockLowTemperatureFurnaceGenerator.java @@ -7,11 +7,6 @@ public class BlockLowTemperatureFurnaceGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityLowTemperatureFurnaceGeneratorUIE"; - } - public BlockLowTemperatureFurnaceGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java index 4cb15c4d..0c37795d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockNetherStarGenerator.java @@ -7,11 +7,6 @@ public class BlockNetherStarGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityNetherStarGeneratorUIE"; - } - public BlockNetherStarGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java index 9cb12250..e5f0d794 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPinkGenerator.java @@ -7,11 +7,6 @@ public class BlockPinkGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityPinkGeneratorUIE"; - } - public BlockPinkGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java index b97a6716..7f3b10c9 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockPotionGenerator.java @@ -7,11 +7,6 @@ public class BlockPotionGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityPotionGeneratorUIE"; - } - public BlockPotionGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java index 984bcc6c..9a1e25eb 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockRedstoneGenerator.java @@ -7,11 +7,6 @@ public class BlockRedstoneGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntityRedstoneGeneratorUIE"; - } - public BlockRedstoneGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java index 5eb6d074..3419a9bd 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockSolarGenerator.java @@ -7,11 +7,6 @@ public class BlockSolarGenerator extends BlockBaseGenerator { - @Override - public String getGeneratorTEID() { - return "TileEntitySolarGeneratorUIE"; - } - public BlockSolarGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java index 51b29fea..3f6b9115 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockTNTGenerator.java @@ -7,10 +7,6 @@ public class BlockTNTGenerator extends BlockBaseGenerator { - public String getGeneratorTEID() { - return "TileEntityTNTGeneratorUIE"; - } - public BlockTNTGenerator(String id, int mult) { super(id, mult); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java index 69d82d18..e170e21a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java @@ -3,7 +3,7 @@ import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -15,13 +15,12 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -// This unfortunately has to be an ItemBlock for remapping EXU to work -public class ItemEnderLotusSeed extends ItemBlock implements IPlantable { +public class ItemEnderLotusSeed extends Item implements IPlantable { private final Block cropBlock; public ItemEnderLotusSeed(Block cropBlock) { - super(cropBlock); + super(); this.cropBlock = cropBlock; this.setUnlocalizedName("ender_lotus_seed"); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java index c38ee415..3bf8785d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -1,6 +1,10 @@ package com.fouristhenumber.utilitiesinexcess.compat.exu; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import net.minecraft.block.Block; import net.minecraft.item.Item; @@ -12,10 +16,10 @@ import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.ConveyorTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DarkPortalTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.DecoBlock1Transformation; +import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.EnderLilyTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.TrashCanTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.DivisionSigilTransformation; -import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.EnderLilyTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenBagTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.GoldenLassoTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items.UnstableIngotTransformation; @@ -45,7 +49,7 @@ public enum Remappings { SPIKE_DIAMOND("ExtraUtilities:spike_base_diamond", ModBlocks.SPIKE_DIAMOND), TIMER("ExtraUtilities:timer", ModBlocks.REDSTONE_CLOCK), ETHEREAL_GLASS("ExtraUtilities:etherealglass", ModBlocks.ETHEREAL_GLASS), -// ENDER_PUMP("ExtraUtilities:enderThermicPump", ModBlocks.abc), // TODO: add here once merged + ENDER_PUMP("ExtraUtilities:enderThermicPump", ModBlocks.SMART_PUMP), COLORED_STONE_BRICK("ExtraUtilities:colorStoneBrick", ModBlocks.COLORED_STONE_BRICKS), COLORED_PLANKS("ExtraUtilities:colorWoodPlanks", ModBlocks.COLORED_WOOD_PLANKS), COLORED_GLOWSTONE("ExtraUtilities:color_lightgem", ModBlocks.COLORED_GLOWSTONE), @@ -75,12 +79,14 @@ public enum Remappings { XRAY_GLASSES("ExtraUtilities:sonar_goggles", ModItems.XRAY_GLASSES), BEDROCKUIM_INGOT("ExtraUtilities:bedrockiumIngot", ModItems.BEDROCKIUM_INGOT), SCANNER("ExtraUtilities:scanner", ModItems.BLOCK_ANALYZER), + // Item Transformations GOLDEN_BAG(new GoldenBagTransformation()), WATERING_CAN(new WateringCanTransformation()), INVERSION_SIGIL(new DivisionSigilTransformation()), MOB_JAR(new GoldenLassoTransformation()), INVERTED_INGOT(new UnstableIngotTransformation()), + // Block Transformations SOUND_MUFFLER(new SoundMufflerTransformation()), DECO_BLOCK_1(new DecoBlock1Transformation()), @@ -89,11 +95,14 @@ public enum Remappings { TRASH_CANS(new TrashCanTransformation()), ENDER_LOTUS(new EnderLilyTransformation()), CONVEYOR(new ConveyorTransformation()), + // Tile Entity Transformation GENERATORS(new GeneratorTransformation()), FULL_CHEST(new FullChestTransformation()), MINI_CHEST(new MiniChestTransformation()), SPIKES(new SpikeTransformation()), +// ENDER_PUMP(new EnderPumpTransformation()), + // Skipped mappings PAINT_BRUSH("ExtraUtilities:paintbrush"), DATABLOCK("ExtraUtilities:datablock"), diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/EnderLilyTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/EnderLilyTransformation.java new file mode 100644 index 00000000..c67ea6a6 --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/EnderLilyTransformation.java @@ -0,0 +1,38 @@ +package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import com.fouristhenumber.utilitiesinexcess.ModBlocks; +import com.fouristhenumber.utilitiesinexcess.ModItems; +import com.gtnewhorizons.postea.api.IDExtenderCompat; +import com.gtnewhorizons.postea.utility.BlockConversionInfo; + +public class EnderLilyTransformation extends AbstractBlockTransformation { + + public EnderLilyTransformation() { + super(); + setDummyName("dummy_ender_lotus"); + setOldName("ExtraUtilities:plant/ender_lilly"); + } + + // This is NOT a direct mapping!! + // EXU's ender lily item is the block's ItemBlock, which is incompatible with our version which is a seed + // that plants the block, + public NBTTagCompound doItemTransformation(NBTTagCompound tag) { + IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModItems.ENDER_LOTUS_SEED.get())); + tag.setInteger("Damage", 0); + return tag; + } + + public BlockConversionInfo doBlockTransformation(BlockConversionInfo blockConversionInfo, World world) { + BlockConversionInfo blockConversionInfoNew = new BlockConversionInfo(); + + blockConversionInfoNew.blockID = Block.getIdFromBlock(ModBlocks.ENDER_LOTUS.get()); + blockConversionInfoNew.metadata = 0; + + return blockConversionInfoNew; + } +} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java deleted file mode 100644 index 4f19c7fa..00000000 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/items/EnderLilyTransformation.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.items; - -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; - -import com.fouristhenumber.utilitiesinexcess.ModBlocks; -import com.fouristhenumber.utilitiesinexcess.ModItems; -import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; - -public class EnderLilyTransformation implements IPosteaTransformation { - - @Override - public void addItemRemappings(Map remappings) { - remappings.put("ExtraUtilities:plant/ender_lilly", ModItems.ENDER_LOTUS_SEED.get()); - } - - @Override - public void addBlockRemappings(Map remappings) { - remappings.put("ExtraUtilities:plant/ender_lilly", ModBlocks.ENDER_LOTUS.get()); - } -} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java index 5bf98e1e..e7e3ad2b 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/AbstractTileEntityTransformation.java @@ -9,21 +9,17 @@ import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; -import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; +import com.fouristhenumber.utilitiesinexcess.ModBlocks; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.blocks.SoundMufflerTransformation; -import com.fouristhenumber.utilitiesinexcess.utils.UIEUtils; -import com.gtnewhorizons.postea.api.ItemStackReplacementManager; import com.gtnewhorizons.postea.api.TileEntityReplacementManager; import com.gtnewhorizons.postea.utility.BlockInfo; -import cpw.mods.fml.common.registry.GameRegistry; - /** - * A simple {@link IPosteaTransformation} that transforms a single block. - * Extend and use setDummyName and setOldName - * then do your transformations in doItemTransformation and doBlockTransformation + * A simple {@link IPosteaTransformation} that transforms a single tile entity. + * Extend and use setOldBlockName and setNewBlock + * then do your transformation in doTileEntityTransformation *

* See {@link SoundMufflerTransformation} for an example. */ @@ -31,18 +27,10 @@ public abstract class AbstractTileEntityTransformation implements IPosteaTransfo private final Block dummyBlock; - private String dummyName; private String oldBlockName; private String oldTEID; - /** - * Set the name for this transformation's dummy block *without* the modid, e.g. "dummy_golden_bag". - * - * @param dummyName The registry name for this transformation's dummy block - */ - public void setDummyBlockName(String dummyName) { - this.dummyName = dummyName; - } + private ModBlocks block; /** * Set the *full registry name* (e.g. "modid:item") of the old block this transformation is replacing @@ -53,6 +41,15 @@ public void setOldBlockName(String oldName) { this.oldBlockName = oldName; } + /** + * Set the Modblock instance of the block that this TE will be re-mapped to. + * + * @param block The new block to be mapped to + */ + public void setNewBlock(ModBlocks block) { + this.block = block; + } + /** * Set the tile entity ID of the tile entity this transformation is replacing * @@ -66,30 +63,20 @@ public AbstractTileEntityTransformation() { dummyBlock = new DummyBlock(Material.ground); } - @Override - public void registerDummies() { - GameRegistry.registerBlock(dummyBlock, dummyName); - UIEUtils.hideInNei(dummyBlock); - } - @Override public void addItemRemappings(Map remappings) { - remappings.put(oldBlockName, Item.getItemFromBlock(dummyBlock)); + remappings.put(oldBlockName, block.getItem()); } @Override public void addBlockRemappings(Map remappings) { - remappings.put(oldBlockName, dummyBlock); + remappings.put(oldBlockName, block.get()); } @Override public void registerTransformations() { - ItemStackReplacementManager - .addItemReplacement(UtilitiesInExcess.MODID + ":" + dummyName, this::doItemTransformation); TileEntityReplacementManager.tileEntityTransformer(oldTEID, this::doTileEntityTransformation); } - public abstract NBTTagCompound doItemTransformation(NBTTagCompound tag); - public abstract BlockInfo doTileEntityTransformation(NBTTagCompound oldTag, World world, Chunk chunk); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java index 4b1e0866..dd2c8414 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/FullChestTransformation.java @@ -1,12 +1,10 @@ package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; -import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import com.fouristhenumber.utilitiesinexcess.ModBlocks; -import com.gtnewhorizons.postea.api.IDExtenderCompat; import com.gtnewhorizons.postea.utility.BlockInfo; import com.gtnewhorizons.postea.utility.PosteaUtilities; @@ -14,15 +12,9 @@ public class FullChestTransformation extends AbstractTileEntityTransformation { public FullChestTransformation() { super(); - setDummyBlockName("dummy_full_chest"); setOldBlockName("ExtraUtilities:chestFull"); setOldTileEntityId("TileFullChest"); - } - - @Override - public NBTTagCompound doItemTransformation(NBTTagCompound tag) { - IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.MARGINALLY_MAXIMISED_CHEST.getItem())); - return tag; + setNewBlock(ModBlocks.MARGINALLY_MAXIMISED_CHEST); } @Override diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java index fc389357..6c964070 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/GeneratorTransformation.java @@ -11,8 +11,17 @@ import com.fouristhenumber.utilitiesinexcess.ModBlocks; import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; -import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockBaseGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockEnderGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockFoodGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockFurnaceGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockHighTemperatureFurnaceGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockLavaGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockLowTemperatureFurnaceGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockNetherStarGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockPinkGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockPotionGenerator; import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockRedstoneGenerator; +import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockSolarGenerator; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.DummyBlock; import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; import com.fouristhenumber.utilitiesinexcess.utils.UIEUtils; @@ -133,7 +142,7 @@ public BlockInfo doGeneratorTransformation(int meta, NBTTagCompound originalTag, Block newBlock = getGeneratorFromMetaAndMult(meta, mult).get(); return new BlockInfo(newBlock, 0, (oldTag) -> { - NBTTagCompound tag = PosteaUtilities.cleanseNBT(((BlockBaseGenerator) newBlock).getGeneratorTEID(), oldTag); + NBTTagCompound tag = PosteaUtilities.cleanseNBT(getGeneratorTEID(newBlock), oldTag); tag.setInteger("Energy", oldTag.getInteger("Energy")); int burnTime = (int) oldTag.getDouble("coolDown"); int rfPerTick = oldTag.getInteger("curLevel"); @@ -237,4 +246,33 @@ public static ModBlocks getGeneratorFromMetaAndMult(int meta, int mult) { default -> throw new IllegalStateException("No defined generator with EXU meta: " + meta); }; } + + // TODO replace this once malteez's quarry PR gets merged with the TEID enum + private static String getGeneratorTEID(Block block) { + if (block instanceof BlockEnderGenerator) { + return "TileEntityEnderGeneratorUIE"; + } else if (block instanceof BlockFoodGenerator) { + return "TileEntityFoodGeneratorUIE"; + } else if (block instanceof BlockFurnaceGenerator) { + return "TileEntityFurnaceGeneratorUIE"; + } else if (block instanceof BlockHighTemperatureFurnaceGenerator) { + return "TileEntityHighTemperatureFurnaceGenerator"; + } else if (block instanceof BlockLavaGenerator) { + return "TileEntityLowTemperatureFurnaceGeneratorUIE"; + } else if (block instanceof BlockLowTemperatureFurnaceGenerator) { + return "TileEntityNetherStarGeneratorUIE"; + } else if (block instanceof BlockNetherStarGenerator) { + return "TileEntityPinkGeneratorUIE"; + } else if (block instanceof BlockPinkGenerator) { + return "TileEntityPotionGeneratorUIE"; + } else if (block instanceof BlockPotionGenerator) { + return "TileEntityRedstoneGeneratorUIE"; + } else if (block instanceof BlockRedstoneGenerator) { + return "TileEntitySolarGeneratorUIE"; + } else if (block instanceof BlockSolarGenerator) { + return "TileEntityTNTGeneratorUIE"; + } + + return ""; + } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java index d1ce86df..0a81041f 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/tileentities/MiniChestTransformation.java @@ -1,12 +1,10 @@ package com.fouristhenumber.utilitiesinexcess.compat.exu.postea.tileentities; -import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import com.fouristhenumber.utilitiesinexcess.ModBlocks; -import com.gtnewhorizons.postea.api.IDExtenderCompat; import com.gtnewhorizons.postea.utility.BlockInfo; import com.gtnewhorizons.postea.utility.PosteaUtilities; @@ -14,15 +12,9 @@ public class MiniChestTransformation extends AbstractTileEntityTransformation { public MiniChestTransformation() { super(); - setDummyBlockName("dummy_mini_chest"); setOldBlockName("ExtraUtilities:chestMini"); setOldTileEntityId("TileMiniChest"); - } - - @Override - public NBTTagCompound doItemTransformation(NBTTagCompound tag) { - IDExtenderCompat.setItemStackID(tag, Item.getIdFromItem(ModBlocks.SIGNIFICANTLY_SHRUNK_CHEST.getItem())); - return tag; + setNewBlock(ModBlocks.SIGNIFICANTLY_SHRUNK_CHEST); } @Override From bd0d50307ac7c776a4f8c4a0a4d9653e5b7d937c Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Wed, 10 Dec 2025 00:43:15 +0200 Subject: [PATCH 07/10] add config --- .../utilitiesinexcess/CommonProxy.java | 14 +++++-------- .../utilitiesinexcess/UtilitiesInExcess.java | 6 +++--- .../compat/exu/Remappings.java | 21 ++++++++++++------- .../utilitiesinexcess/config/OtherConfig.java | 5 +++++ 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java index f3a6689d..da324301 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java @@ -7,7 +7,7 @@ import com.fouristhenumber.utilitiesinexcess.common.dimensions.underworld.UnderWorldEvents; import com.fouristhenumber.utilitiesinexcess.compat.Mods; import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings; -import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.config.OtherConfig; import com.fouristhenumber.utilitiesinexcess.network.PacketHandler; import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks; import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind; @@ -37,13 +37,9 @@ public void preInit(FMLPreInitializationEvent event) { if (Mods.NEI.isLoaded()) { IMCForNEI.IMCSender(); } - Remappings.init(); - if (!Mods.ExtraUtilities.isLoaded()) { - for (IPosteaTransformation transformation : Remappings.transformations) { - transformation.registerDummies(); - } + if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded()) { + Remappings.preInit(); } - Remappings.initTransformationMappings(); } public void init(FMLInitializationEvent event) { @@ -52,8 +48,8 @@ public void init(FMLInitializationEvent event) { } public void postInit(FMLPostInitializationEvent event) { - for (IPosteaTransformation transformation : Remappings.transformations) { - transformation.registerTransformations(); + if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded()) { + Remappings.postInit(); } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java index c8be83e9..591be11a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java @@ -49,7 +49,7 @@ import com.fouristhenumber.utilitiesinexcess.compat.crafttweaker.QEDCraftTweakerSupport; import com.fouristhenumber.utilitiesinexcess.compat.exu.ExuCompat; import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings; -import com.fouristhenumber.utilitiesinexcess.compat.exu.postea.IPosteaTransformation; +import com.fouristhenumber.utilitiesinexcess.config.OtherConfig; import com.fouristhenumber.utilitiesinexcess.utils.FMLEventHandler; import com.fouristhenumber.utilitiesinexcess.utils.ForgeEventHandler; import com.fouristhenumber.utilitiesinexcess.utils.PinkFuelHelper; @@ -144,8 +144,8 @@ public void init(FMLInitializationEvent event) { GameRegistry.registerTileEntity(TileEntityPinkGenerator.class, "TileEntityPinkGeneratorUIE"); GameRegistry.registerTileEntity(TileEntityNetherStarGenerator.class, "TileEntityNetherStarGeneratorUIE"); GameRegistry.registerTileEntity(TileEntityPacifistsBench.class, "TileEntityPacifistsBenchUIE"); - for (IPosteaTransformation transformation : Remappings.transformations) { - transformation.registerTEDummies(); + if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded()) { + Remappings.init(); } lapisAetheriusRenderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java index 3bf8785d..060374c1 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -101,7 +101,6 @@ public enum Remappings { FULL_CHEST(new FullChestTransformation()), MINI_CHEST(new MiniChestTransformation()), SPIKES(new SpikeTransformation()), -// ENDER_PUMP(new EnderPumpTransformation()), // Skipped mappings PAINT_BRUSH("ExtraUtilities:paintbrush"), @@ -117,7 +116,7 @@ public enum Remappings { public static final List transformations = new ArrayList<>(); public static final Set skippedMappings = new HashSet<>(); - public static void init() { + public static void preInit() { for (Remappings remapping : VALUES) { if (remapping.replacementItem != null) { itemMappings.put(remapping.getName(), remapping.replacementItem); @@ -131,18 +130,26 @@ public static void init() { if (remapping.isSkipped) { skippedMappings.add(remapping.getName()); } - } - } - - public static void initTransformationMappings() { - for (Remappings remapping : VALUES) { if (remapping.transformation != null) { + remapping.transformation.registerDummies(); remapping.transformation.addItemRemappings(itemMappings); remapping.transformation.addBlockRemappings(blockMappings); } } } + public static void init() { + for (IPosteaTransformation transformation : transformations) { + transformation.registerTEDummies(); + } + } + + public static void postInit() { + for (IPosteaTransformation transformation : transformations) { + transformation.registerTransformations(); + } + } + private String oldName; private Block replacementBlock = null; private Item replacementItem = null; diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java index 2d1d3f18..7aa5b3a6 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java @@ -12,6 +12,11 @@ public static void registerConfig() throws ConfigException { ConfigurationManager.registerConfig(OtherConfig.class); } + @Config.DefaultBoolean(true) + @Config.RequiresMcRestart + @Config.Comment("Enable the Extra Utilities to Utilities In Excess world conversion system") + public static boolean enableWorldConversion; + @Config.DefaultBoolean(true) @Config.RequiresMcRestart @Config.Comment("Enable rendering some UIE baubles on players who have them equipped") From 320ee58bcaf94ad05ca463994f4ba5dbc8f74cde Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Wed, 10 Dec 2025 01:11:10 +0200 Subject: [PATCH 08/10] last minute changes --- dependencies.gradle | 6 ++++-- .../utilitiesinexcess/CommonProxy.java | 4 ++-- .../utilitiesinexcess/UtilitiesInExcess.java | 2 +- .../common/items/ItemEnderLotusSeed.java | 11 ----------- .../utilitiesinexcess/compat/Mods.java | 1 + .../exu/postea/blocks/DecoBlock1Transformation.java | 1 + .../utilitiesinexcess/config/OtherConfig.java | 2 +- 7 files changed, 10 insertions(+), 17 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 5ce4eda9..fd6e65a8 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -53,8 +53,10 @@ dependencies { runtimeOnlyNonPublishable("com.github.GTNewHorizons:worldedit-gtnh:v0.0.8:dev") runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.9.15:dev") - // For testing NBT data (/nbtedit) - runtimeOnlyNonPublishable("com.github.GTNewHorizons:ServerUtilities:2.2.6:dev") + // Misc testing utilities + // runtimeOnlyNonPublishable("com.github.GTNewHorizons:ServerUtilities:2.2.6:dev") // (/nbtedit) + // runtimeOnlyNonPublishable("com.github.GTNewHorizons:worldedit-gtnh:v0.0.8:dev") + // runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.9.15:dev") // For testing glove // runtimeOnlyNonPublishable("com.github.GTNewHorizons:Translocators:1.4.0:dev") // runtimeOnlyNonPublishable("com.github.GTNewHorizons:Backhand:1.8.0:dev") diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java index da324301..041b88be 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/CommonProxy.java @@ -37,7 +37,7 @@ public void preInit(FMLPreInitializationEvent event) { if (Mods.NEI.isLoaded()) { IMCForNEI.IMCSender(); } - if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded()) { + if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded() && Mods.Postea.isLoaded()) { Remappings.preInit(); } } @@ -48,7 +48,7 @@ public void init(FMLInitializationEvent event) { } public void postInit(FMLPostInitializationEvent event) { - if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded()) { + if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded() && Mods.Postea.isLoaded()) { Remappings.postInit(); } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java index 591be11a..23118582 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java @@ -144,7 +144,7 @@ public void init(FMLInitializationEvent event) { GameRegistry.registerTileEntity(TileEntityPinkGenerator.class, "TileEntityPinkGeneratorUIE"); GameRegistry.registerTileEntity(TileEntityNetherStarGenerator.class, "TileEntityNetherStarGeneratorUIE"); GameRegistry.registerTileEntity(TileEntityPacifistsBench.class, "TileEntityPacifistsBenchUIE"); - if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded()) { + if (OtherConfig.enableWorldConversion && !Mods.ExtraUtilities.isLoaded() && Mods.Postea.isLoaded()) { Remappings.init(); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java index e170e21a..c54961cd 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/items/ItemEnderLotusSeed.java @@ -5,7 +5,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.EnumPlantType; import net.minecraftforge.common.IPlantable; @@ -43,22 +42,12 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, net.minecraft.wor return false; } - @SideOnly(Side.CLIENT) - public int getSpriteNumber() { - return 1; // Use item atlas instead of block atlas - } - @SideOnly(Side.CLIENT) @Override public void registerIcons(IIconRegister reg) { this.itemIcon = reg.registerIcon("utilitiesinexcess:ender_lotus_seed"); } - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int p_77617_1_) { - return this.itemIcon; - } - @Override public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) { return EnumPlantType.Cave; diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java index af9ee108..e30bc09d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/Mods.java @@ -13,6 +13,7 @@ public enum Mods { NEI("NotEnoughItems"), CraftTweaker("MineTweaker3"), ExtraUtilities("ExtraUtilities"), + Postea("postea"), ; // spotless:on diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java index 841f0458..b37bd7ad 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/postea/blocks/DecoBlock1Transformation.java @@ -17,6 +17,7 @@ public DecoBlock1Transformation() { setOldName("ExtraUtilities:decorativeBlock1"); } + // TODO Add the remaining decorative block metas once they get implemented public NBTTagCompound doItemTransformation(NBTTagCompound tag) { int dmg = tag.getInteger("Damage"); switch (dmg) { diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java index 7aa5b3a6..97164bdf 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/OtherConfig.java @@ -12,7 +12,7 @@ public static void registerConfig() throws ConfigException { ConfigurationManager.registerConfig(OtherConfig.class); } - @Config.DefaultBoolean(true) + @Config.DefaultBoolean(true) // TODO Set default to false before release @Config.RequiresMcRestart @Config.Comment("Enable the Extra Utilities to Utilities In Excess world conversion system") public static boolean enableWorldConversion; From 01d76af42ea5bfffb25151c9f7ae4fe6fad5c878 Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Sun, 21 Dec 2025 01:06:32 +0200 Subject: [PATCH 09/10] spotless --- .../fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java | 1 - .../com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java index 6b9c1f0b..e39c9583 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/UtilitiesInExcess.java @@ -48,7 +48,6 @@ import com.fouristhenumber.utilitiesinexcess.common.worldgen.WorldGenEnderLotus; import com.fouristhenumber.utilitiesinexcess.compat.Mods; import com.fouristhenumber.utilitiesinexcess.compat.crafttweaker.QEDCraftTweakerSupport; - import com.fouristhenumber.utilitiesinexcess.compat.exu.ExuCompat; import com.fouristhenumber.utilitiesinexcess.compat.exu.Remappings; import com.fouristhenumber.utilitiesinexcess.compat.tinkers.TinkersCompat; diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java index bfaa5c80..6a7a6230 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java @@ -70,7 +70,7 @@ public static boolean hasBauble(EntityPlayer player, Class clazz) { public static float lerp(float cur, float target, float speed) { return cur + (target - cur) * speed; } - + public static NBTTagCompound getUIETag(EntityPlayer player) { NBTTagCompound playerNBT = player.getEntityData(); NBTTagCompound uieTag; From 2c70e96fde50ae0b2af135eab909fda1c4e90197 Mon Sep 17 00:00:00 2001 From: SuperSoupr <26164930+SuperSoupr@users.noreply.github.com> Date: Tue, 23 Dec 2025 20:47:19 +0200 Subject: [PATCH 10/10] fixes --- .../compat/exu/ExuCompat.java | 6 ++--- .../compat/exu/Remappings.java | 24 +++++++++---------- .../compat/nei/NEIUtils.java | 13 ---------- .../utilitiesinexcess/utils/UIEUtils.java | 4 ++-- 4 files changed, 17 insertions(+), 30 deletions(-) delete mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java index 49c3dbe9..7c35f868 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/ExuCompat.java @@ -12,18 +12,18 @@ public static void onMissingMappings(FMLMissingMappingsEvent event) { for (FMLMissingMappingsEvent.MissingMapping mapping : event.getAll()) { if (mapping == null) continue; - if (Remappings.skippedMappings.contains(mapping.name)) { + if (Remappings.SKIPPED_MAPPINGS.contains(mapping.name)) { mapping.ignore(); continue; } if (mapping.type == GameRegistry.Type.ITEM) { - Item newItem = Remappings.itemMappings.getOrDefault(mapping.name, null); + Item newItem = Remappings.ITEM_MAPPINGS.get(mapping.name); if (newItem != null) { mapping.remap(newItem); } } else { // BLOCK - Block newBlock = Remappings.blockMappings.getOrDefault(mapping.name, null); + Block newBlock = Remappings.BLOCK_MAPPINGS.get(mapping.name); if (newBlock != null) { mapping.remap(newBlock); } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java index 060374c1..a283207b 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/exu/Remappings.java @@ -111,41 +111,41 @@ public enum Remappings { public static final Remappings[] VALUES = values(); - public static final HashMap itemMappings = new HashMap<>(); - public static final HashMap blockMappings = new HashMap<>(); - public static final List transformations = new ArrayList<>(); - public static final Set skippedMappings = new HashSet<>(); + public static final HashMap ITEM_MAPPINGS = new HashMap<>(); + public static final HashMap BLOCK_MAPPINGS = new HashMap<>(); + public static final List TRANSFORMATIONS = new ArrayList<>(); + public static final Set SKIPPED_MAPPINGS = new HashSet<>(); public static void preInit() { for (Remappings remapping : VALUES) { if (remapping.replacementItem != null) { - itemMappings.put(remapping.getName(), remapping.replacementItem); + ITEM_MAPPINGS.put(remapping.getName(), remapping.replacementItem); } if (remapping.replacementBlock != null) { - blockMappings.put(remapping.getName(), remapping.replacementBlock); + BLOCK_MAPPINGS.put(remapping.getName(), remapping.replacementBlock); } if (remapping.transformation != null) { - transformations.add(remapping.transformation); + TRANSFORMATIONS.add(remapping.transformation); } if (remapping.isSkipped) { - skippedMappings.add(remapping.getName()); + SKIPPED_MAPPINGS.add(remapping.getName()); } if (remapping.transformation != null) { remapping.transformation.registerDummies(); - remapping.transformation.addItemRemappings(itemMappings); - remapping.transformation.addBlockRemappings(blockMappings); + remapping.transformation.addItemRemappings(ITEM_MAPPINGS); + remapping.transformation.addBlockRemappings(BLOCK_MAPPINGS); } } } public static void init() { - for (IPosteaTransformation transformation : transformations) { + for (IPosteaTransformation transformation : TRANSFORMATIONS) { transformation.registerTEDummies(); } } public static void postInit() { - for (IPosteaTransformation transformation : transformations) { + for (IPosteaTransformation transformation : TRANSFORMATIONS) { transformation.registerTransformations(); } } diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java deleted file mode 100644 index ce005c13..00000000 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/compat/nei/NEIUtils.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.fouristhenumber.utilitiesinexcess.compat.nei; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -import codechicken.nei.api.API; - -public class NEIUtils { - - public static void hideItem(Item item) { - API.hideItem(new ItemStack(item)); - } -} diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java index 6a7a6230..c6155444 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java @@ -10,10 +10,10 @@ import net.minecraft.nbt.NBTTagCompound; import com.fouristhenumber.utilitiesinexcess.compat.Mods; -import com.fouristhenumber.utilitiesinexcess.compat.nei.NEIUtils; import baubles.common.container.InventoryBaubles; import baubles.common.lib.PlayerHandler; +import codechicken.nei.api.API; public class UIEUtils { @@ -91,6 +91,6 @@ public static void hideInNei(Block block) { public static void hideInNei(Item item) { if (!Mods.NEI.isLoaded()) return; - NEIUtils.hideItem(item); + API.hideItem(new ItemStack(item)); } }