From dcb998cecc6bf3b97a5274958034587f32c43079 Mon Sep 17 00:00:00 2001 From: miozune Date: Fri, 15 Sep 2023 20:24:28 +0900 Subject: Add HoloInventory compat (#2292) --- .../crossmod/GregtechWailaDataProvider.java | 55 ---------------------- src/main/java/gregtech/crossmod/Waila.java | 32 ------------- .../holoinventory/GT_InventoryDecoder.java | 38 +++++++++++++++ .../crossmod/holoinventory/HoloInventory.java | 10 ++++ .../crossmod/waila/GregtechWailaDataProvider.java | 55 ++++++++++++++++++++++ src/main/java/gregtech/crossmod/waila/Waila.java | 32 +++++++++++++ 6 files changed, 135 insertions(+), 87 deletions(-) delete mode 100644 src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java delete mode 100644 src/main/java/gregtech/crossmod/Waila.java create mode 100644 src/main/java/gregtech/crossmod/holoinventory/GT_InventoryDecoder.java create mode 100644 src/main/java/gregtech/crossmod/holoinventory/HoloInventory.java create mode 100644 src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java create mode 100644 src/main/java/gregtech/crossmod/waila/Waila.java (limited to 'src/main/java/gregtech/crossmod') diff --git a/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java b/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java deleted file mode 100644 index 7090af64cd..0000000000 --- a/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -package gregtech.crossmod; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import gregtech.api.interfaces.tileentity.IGregtechWailaProvider; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; -import mcp.mobius.waila.api.IWailaDataProvider; - -public class GregtechWailaDataProvider implements IWailaDataProvider { - - @Override - public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { - return null; - } - - @Override - public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { - return currenttip; - } - - @Override - public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { - final TileEntity tile = accessor.getTileEntity(); - if (tile instanceof IGregtechWailaProvider) { - ((IGregtechWailaProvider) tile).getWailaBody(itemStack, currenttip, accessor, config); - } - - return currenttip; - } - - @Override - public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { - return currenttip; - } - - @Override - public NBTTagCompound getNBTData(final EntityPlayerMP player, final TileEntity tile, final NBTTagCompound tag, - final World world, int x, int y, int z) { - if (tile instanceof IGregtechWailaProvider) { - ((IGregtechWailaProvider) tile).getWailaNBTData(player, tile, tag, world, x, y, z); - } - - return tag; - } -} diff --git a/src/main/java/gregtech/crossmod/Waila.java b/src/main/java/gregtech/crossmod/Waila.java deleted file mode 100644 index c66eb6a5de..0000000000 --- a/src/main/java/gregtech/crossmod/Waila.java +++ /dev/null @@ -1,32 +0,0 @@ -package gregtech.crossmod; - -import cpw.mods.fml.common.event.FMLInterModComms; -import gregtech.api.enums.Mods; -import gregtech.api.metatileentity.BaseMetaPipeEntity; -import gregtech.api.metatileentity.BaseMetaTileEntity; -import gregtech.api.multitileentity.base.MultiTileEntity; -import mcp.mobius.waila.api.IWailaDataProvider; -import mcp.mobius.waila.api.IWailaRegistrar; - -public class Waila { - - public static void callbackRegister(IWailaRegistrar register) { - final IWailaDataProvider multiBlockProvider = new GregtechWailaDataProvider(); - - register.registerBodyProvider(multiBlockProvider, BaseMetaTileEntity.class); - register.registerBodyProvider(multiBlockProvider, BaseMetaPipeEntity.class); - register.registerBodyProvider(multiBlockProvider, MultiTileEntity.class); - - register.registerNBTProvider(multiBlockProvider, BaseMetaTileEntity.class); - register.registerNBTProvider(multiBlockProvider, BaseMetaPipeEntity.class); - register.registerNBTProvider(multiBlockProvider, MultiTileEntity.class); - - register.registerTailProvider(multiBlockProvider, BaseMetaTileEntity.class); - register.registerTailProvider(multiBlockProvider, BaseMetaPipeEntity.class); - register.registerTailProvider(multiBlockProvider, MultiTileEntity.class); - } - - public static void init() { - FMLInterModComms.sendMessage(Mods.Waila.ID, "register", Waila.class.getName() + ".callbackRegister"); - } -} diff --git a/src/main/java/gregtech/crossmod/holoinventory/GT_InventoryDecoder.java b/src/main/java/gregtech/crossmod/holoinventory/GT_InventoryDecoder.java new file mode 100644 index 0000000000..0cc8d1bf44 --- /dev/null +++ b/src/main/java/gregtech/crossmod/holoinventory/GT_InventoryDecoder.java @@ -0,0 +1,38 @@ +package gregtech.crossmod.holoinventory; + +import static net.dries007.holoInventory.util.NBTKeys.*; + +import java.util.List; + +import net.dries007.holoInventory.compat.InventoryDecoder; +import net.dries007.holoInventory.compat.InventoryDecoderRegistry; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +import gregtech.api.metatileentity.BaseTileEntity; + +public class GT_InventoryDecoder extends InventoryDecoder { + + public GT_InventoryDecoder() { + super(BaseTileEntity.class); + } + + @Override + public NBTTagList toNBT(IInventory inv) { + List items = ((BaseTileEntity) inv).getItemsForHoloGlasses(); + if (items == null) { + return InventoryDecoderRegistry.DEFAULT.toNBT(inv); + } + NBTTagList tagList = new NBTTagList(); + for (ItemStack stack : items) { + if (stack != null) { + NBTTagCompound tag = stack.writeToNBT(new NBTTagCompound()); + tag.setInteger(NBT_KEY_COUNT, stack.stackSize); + tagList.appendTag(tag); + } + } + return tagList; + } +} diff --git a/src/main/java/gregtech/crossmod/holoinventory/HoloInventory.java b/src/main/java/gregtech/crossmod/holoinventory/HoloInventory.java new file mode 100644 index 0000000000..d7dcdcf4b5 --- /dev/null +++ b/src/main/java/gregtech/crossmod/holoinventory/HoloInventory.java @@ -0,0 +1,10 @@ +package gregtech.crossmod.holoinventory; + +import net.dries007.holoInventory.compat.InventoryDecoderRegistry; + +public class HoloInventory { + + public static void init() { + InventoryDecoderRegistry.register(new GT_InventoryDecoder()); + } +} diff --git a/src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java b/src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java new file mode 100644 index 0000000000..7012bc68fe --- /dev/null +++ b/src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java @@ -0,0 +1,55 @@ +package gregtech.crossmod.waila; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import gregtech.api.interfaces.tileentity.IGregtechWailaProvider; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; + +public class GregtechWailaDataProvider implements IWailaDataProvider { + + @Override + public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { + return null; + } + + @Override + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + return currenttip; + } + + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + final TileEntity tile = accessor.getTileEntity(); + if (tile instanceof IGregtechWailaProvider) { + ((IGregtechWailaProvider) tile).getWailaBody(itemStack, currenttip, accessor, config); + } + + return currenttip; + } + + @Override + public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + return currenttip; + } + + @Override + public NBTTagCompound getNBTData(final EntityPlayerMP player, final TileEntity tile, final NBTTagCompound tag, + final World world, int x, int y, int z) { + if (tile instanceof IGregtechWailaProvider) { + ((IGregtechWailaProvider) tile).getWailaNBTData(player, tile, tag, world, x, y, z); + } + + return tag; + } +} diff --git a/src/main/java/gregtech/crossmod/waila/Waila.java b/src/main/java/gregtech/crossmod/waila/Waila.java new file mode 100644 index 0000000000..50b2b5cb57 --- /dev/null +++ b/src/main/java/gregtech/crossmod/waila/Waila.java @@ -0,0 +1,32 @@ +package gregtech.crossmod.waila; + +import cpw.mods.fml.common.event.FMLInterModComms; +import gregtech.api.enums.Mods; +import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.metatileentity.BaseMetaTileEntity; +import gregtech.api.multitileentity.base.MultiTileEntity; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.api.IWailaRegistrar; + +public class Waila { + + public static void callbackRegister(IWailaRegistrar register) { + final IWailaDataProvider multiBlockProvider = new GregtechWailaDataProvider(); + + register.registerBodyProvider(multiBlockProvider, BaseMetaTileEntity.class); + register.registerBodyProvider(multiBlockProvider, BaseMetaPipeEntity.class); + register.registerBodyProvider(multiBlockProvider, MultiTileEntity.class); + + register.registerNBTProvider(multiBlockProvider, BaseMetaTileEntity.class); + register.registerNBTProvider(multiBlockProvider, BaseMetaPipeEntity.class); + register.registerNBTProvider(multiBlockProvider, MultiTileEntity.class); + + register.registerTailProvider(multiBlockProvider, BaseMetaTileEntity.class); + register.registerTailProvider(multiBlockProvider, BaseMetaPipeEntity.class); + register.registerTailProvider(multiBlockProvider, MultiTileEntity.class); + } + + public static void init() { + FMLInterModComms.sendMessage(Mods.Waila.ID, "register", Waila.class.getName() + ".callbackRegister"); + } +} -- cgit