From 7389f349db67f0eccd24b1c6fb9a5bdce90c6f3d Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Thu, 25 Aug 2022 16:09:16 +0800 Subject: [PATCH] add compat to hodgepodge turns out we just cannot call render block here since our blocks are not 1x1x1 and I definitely don't want to do one draw call for every hint particle --- .../com/gtnewhorizon/structurelib/ClientProxy.java | 7 +++++++ .../gtnewhorizon/structurelib/IStructureCompat.java | 7 +++++++ .../com/gtnewhorizon/structurelib/StructureLib.java | 11 +++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/main/java/com/gtnewhorizon/structurelib/IStructureCompat.java diff --git a/src/main/java/com/gtnewhorizon/structurelib/ClientProxy.java b/src/main/java/com/gtnewhorizon/structurelib/ClientProxy.java index 89b84733..cbcb9ebb 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/ClientProxy.java +++ b/src/main/java/com/gtnewhorizon/structurelib/ClientProxy.java @@ -226,6 +226,11 @@ public class ClientProxy extends CommonProxy { MinecraftForge.EVENT_BUS.register(new ForgeEventHandler()); } + static void markTextureUsed(IIcon icon) { + if (StructureLib.COMPAT instanceof IStructureCompat) + ((IStructureCompat) StructureLib.COMPAT).markTextureUsed(icon); + } + private static class HintGroup { private final List hints = new LinkedList<>(); private int creationTime = -1; @@ -310,6 +315,8 @@ public class ClientProxy extends CommonProxy { for (int i = 0; i < 6; i++) { if (icons[i] == null) continue; + markTextureUsed(icons[i]); + double u = icons[i].getMinU(); double U = icons[i].getMaxU(); double v = icons[i].getMinV(); diff --git a/src/main/java/com/gtnewhorizon/structurelib/IStructureCompat.java b/src/main/java/com/gtnewhorizon/structurelib/IStructureCompat.java new file mode 100644 index 00000000..1ec15bbb --- /dev/null +++ b/src/main/java/com/gtnewhorizon/structurelib/IStructureCompat.java @@ -0,0 +1,7 @@ +package com.gtnewhorizon.structurelib; + +import net.minecraft.util.IIcon; + +public interface IStructureCompat { + void markTextureUsed(IIcon o); +} diff --git a/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java b/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java index b28bcb56..a0b0100e 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java +++ b/src/main/java/com/gtnewhorizon/structurelib/StructureLib.java @@ -10,6 +10,7 @@ import com.gtnewhorizon.structurelib.net.ErrorHintParticleMessage; import com.gtnewhorizon.structurelib.net.SetChannelDataMessage; import com.gtnewhorizon.structurelib.net.UpdateHintParticleMessage; import com.gtnewhorizon.structurelib.util.XSTR; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLPreInitializationEvent; @@ -38,6 +39,7 @@ import org.apache.logging.log4j.Logger; acceptableRemoteVersions = "*", guiFactory = "com.gtnewhorizon.structurelib.GuiFactory") public class StructureLib { + private static final String STRUCTURECOMPAT_MODID = "structurecompat"; public static boolean DEBUG_MODE; public static boolean PANIC_MODE = Boolean.getBoolean("structurelib.panic"); public static Logger LOGGER = LogManager.getLogger("StructureLib"); @@ -71,6 +73,8 @@ public class StructureLib { @Mod.Instance static StructureLib INSTANCE; + static Object COMPAT; + static Block blockHint; static Item itemBlockHint; static Item itemFrontRotationTool; @@ -95,6 +99,13 @@ public class StructureLib { itemConstructableTrigger.getUnlocalizedName()); proxy.preInit(e); NetworkRegistry.INSTANCE.registerGuiHandler(instance(), new GuiHandler()); + + if (Loader.isModLoaded(STRUCTURECOMPAT_MODID)) { + COMPAT = Loader.instance() + .getIndexedModList() + .get(STRUCTURECOMPAT_MODID) + .getMod(); + } } @Mod.EventHandler