aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-09-15 20:24:28 +0900
committerGitHub <noreply@github.com>2023-09-15 13:24:28 +0200
commitdcb998cecc6bf3b97a5274958034587f32c43079 (patch)
treec2c41268049876554d79a22d045ae63f627d499c /src/main/java
parentb31052879e7601dbfea4c7fb53b94119c7bbf5c6 (diff)
downloadGT5-Unofficial-dcb998cecc6bf3b97a5274958034587f32c43079.tar.gz
GT5-Unofficial-dcb998cecc6bf3b97a5274958034587f32c43079.tar.bz2
GT5-Unofficial-dcb998cecc6bf3b97a5274958034587f32c43079.zip
Add HoloInventory compat (#2292)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/GT_Mod.java6
-rw-r--r--src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java14
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java9
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseTileEntity.java13
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java19
-rw-r--r--src/main/java/gregtech/crossmod/holoinventory/GT_InventoryDecoder.java38
-rw-r--r--src/main/java/gregtech/crossmod/holoinventory/HoloInventory.java10
-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
9 files changed, 110 insertions, 3 deletions
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;