diff options
-rw-r--r-- | dependencies.gradle | 1 | ||||
-rw-r--r-- | src/main/java/gregtech/GT_Mod.java | 6 | ||||
-rw-r--r-- | src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java | 14 | ||||
-rw-r--r-- | src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java | 9 | ||||
-rw-r--r-- | src/main/java/gregtech/api/metatileentity/BaseTileEntity.java | 13 | ||||
-rw-r--r-- | src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java | 19 | ||||
-rw-r--r-- | src/main/java/gregtech/crossmod/holoinventory/GT_InventoryDecoder.java | 38 | ||||
-rw-r--r-- | src/main/java/gregtech/crossmod/holoinventory/HoloInventory.java | 10 | ||||
-rw-r--r-- | src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java (renamed from src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java) | 2 | ||||
-rw-r--r-- | src/main/java/gregtech/crossmod/waila/Waila.java (renamed from src/main/java/gregtech/crossmod/Waila.java) | 2 |
10 files changed, 111 insertions, 3 deletions
diff --git a/dependencies.gradle b/dependencies.gradle index 75da6fb382..726133e498 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -61,6 +61,7 @@ dependencies { compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") { transitive = false } compileOnly("com.github.GTNewHorizons:Hodgepodge:2.3.1:dev") { transitive = false } compileOnly('com.github.GTNewHorizons:Botania:1.9.24-GTNH:dev') { transitive = false } + compileOnly('com.github.GTNewHorizons:HoloInventory:2.3.1-GTNH-pre:dev') { transitive = false } compileOnly("com.google.auto.value:auto-value-annotations:1.10.1") { transitive = false } annotationProcessor("com.google.auto.value:auto-value:1.10.1") diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java index 8d4652c1d8..d2bb5e7b85 100644 --- a/src/main/java/gregtech/GT_Mod.java +++ b/src/main/java/gregtech/GT_Mod.java @@ -87,7 +87,8 @@ import gregtech.common.misc.spaceprojects.commands.SPM_Command; import gregtech.common.misc.spaceprojects.commands.SP_Command; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_CraftingInput_ME; import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase; -import gregtech.crossmod.Waila; +import gregtech.crossmod.holoinventory.HoloInventory; +import gregtech.crossmod.waila.Waila; import gregtech.loaders.load.GT_CoverBehaviorLoader; import gregtech.loaders.load.GT_FuelLoader; import gregtech.loaders.load.GT_ItemIterator; @@ -356,6 +357,9 @@ public class GT_Mod implements IGT_Mod { if (Mods.Waila.isModLoaded()) { Waila.init(); } + if (Mods.HoloInventory.isModLoaded()) { + HoloInventory.init(); + } IMCForNEI.IMCSender(); GregTech_API.sLoadFinished = true; GT_Log.out.println("GT_Mod: Load-Phase finished!"); diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java index 7b29f185c6..a8ddfa9114 100644 --- a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java +++ b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java @@ -4,12 +4,15 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; + import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -524,4 +527,15 @@ public interface IMetaTileEntity extends ISidedInventory, IFluidTank, IFluidHand default ItemStack getMachineCraftingIcon() { return null; } + + /** + * Gets items to be displayed for HoloInventory mod. + * + * @return null if default implementation should be used, i.e. {@link IInventory#getStackInSlot}. + * Otherwise, a list of items to be displayed. Null element may be contained. + */ + @Nullable + default List<ItemStack> getItemsForHoloGlasses() { + return null; + } } diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 625fbba5af..b42e7a1a82 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -2475,6 +2475,15 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity hasTimeStatisticsStarted = true; } + @Nullable + @Override + public List<ItemStack> getItemsForHoloGlasses() { + if (canAccessData()) { + return mMetaTileEntity.getItemsForHoloGlasses(); + } + return null; + } + @Override public String getCustomName() { return getMetaTileEntity() instanceof ICustomNameObject customNameObject ? customNameObject.getCustomName() diff --git a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java index 0d3f6cf7a5..774c13e91b 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java @@ -12,6 +12,8 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; +import javax.annotation.Nullable; + import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -583,6 +585,17 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje } } + /** + * Gets items to be displayed for HoloInventory mod. + * + * @return null if default implementation should be used, i.e. {@link IInventory#getStackInSlot}. + * Otherwise, a list of items to be displayed. Null element may be contained. + */ + @Nullable + public List<ItemStack> getItemsForHoloGlasses() { + return null; + } + @Deprecated public String trans(String aKey, String aEnglish) { return GT_Utility.trans(aKey, aEnglish); diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java index 7b00a9746c..c830cd4e52 100644 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java +++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java @@ -1,5 +1,10 @@ package gregtech.common.tileentities.storage; +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Nullable; + import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -80,4 +85,18 @@ public class GT_MetaTileEntity_QuantumChest extends GT_MetaTileEntity_DigitalChe protected void setItemStack(ItemStack s) { mItemStack = s; } + + @Nullable + @Override + public List<ItemStack> getItemsForHoloGlasses() { + List<ItemStack> ret = new ArrayList<>(); + ret.add(getStackInSlot(0)); + ret.add(getStackInSlot(1)); + if (mItemStack != null) { + ItemStack copy = mItemStack.copy(); + copy.stackSize = mItemCount; + ret.add(copy); + } + return ret; + } } 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<ItemStack> 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/GregtechWailaDataProvider.java b/src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java index 7090af64cd..7012bc68fe 100644 --- a/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java +++ b/src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java @@ -1,4 +1,4 @@ -package gregtech.crossmod; +package gregtech.crossmod.waila; import java.util.List; diff --git a/src/main/java/gregtech/crossmod/Waila.java b/src/main/java/gregtech/crossmod/waila/Waila.java index c66eb6a5de..50b2b5cb57 100644 --- a/src/main/java/gregtech/crossmod/Waila.java +++ b/src/main/java/gregtech/crossmod/waila/Waila.java @@ -1,4 +1,4 @@ -package gregtech.crossmod; +package gregtech.crossmod.waila; import cpw.mods.fml.common.event.FMLInterModComms; import gregtech.api.enums.Mods; |