aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/crossmod
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/crossmod')
-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/visualprospecting/GT_VisualProspecting_Database.java25
-rw-r--r--src/main/java/gregtech/crossmod/visualprospecting/IDatabase.java10
-rw-r--r--src/main/java/gregtech/crossmod/waila/GregtechWailaDataProvider.java55
-rw-r--r--src/main/java/gregtech/crossmod/waila/Waila.java32
6 files changed, 170 insertions, 0 deletions
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..7f3651990d
--- /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.NBT_KEY_COUNT;
+
+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/visualprospecting/GT_VisualProspecting_Database.java b/src/main/java/gregtech/crossmod/visualprospecting/GT_VisualProspecting_Database.java
new file mode 100644
index 0000000000..f18700f9ea
--- /dev/null
+++ b/src/main/java/gregtech/crossmod/visualprospecting/GT_VisualProspecting_Database.java
@@ -0,0 +1,25 @@
+package gregtech.crossmod.visualprospecting;
+
+import java.util.Optional;
+
+import javax.annotation.Nullable;
+
+import net.minecraft.world.ChunkCoordIntPair;
+
+public class GT_VisualProspecting_Database {
+
+ private static IDatabase database;
+
+ @SuppressWarnings("unused")
+ public static void registerDatabase(IDatabase aDatabase) {
+ database = aDatabase;
+ }
+
+ public static Optional<String> getVeinName(int dimensionId, @Nullable ChunkCoordIntPair coordinates) {
+ if (database == null || coordinates == null) {
+ return Optional.empty();
+ }
+
+ return database.getVeinName(dimensionId, coordinates);
+ }
+}
diff --git a/src/main/java/gregtech/crossmod/visualprospecting/IDatabase.java b/src/main/java/gregtech/crossmod/visualprospecting/IDatabase.java
new file mode 100644
index 0000000000..512958c0b2
--- /dev/null
+++ b/src/main/java/gregtech/crossmod/visualprospecting/IDatabase.java
@@ -0,0 +1,10 @@
+package gregtech.crossmod.visualprospecting;
+
+import java.util.Optional;
+
+import net.minecraft.world.ChunkCoordIntPair;
+
+public interface IDatabase {
+
+ Optional<String> getVeinName(int dimensionId, ChunkCoordIntPair coordinates);
+}
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<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ return currenttip;
+ }
+
+ @Override
+ public List<String> getWailaBody(ItemStack itemStack, List<String> 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<String> getWailaTail(ItemStack itemStack, List<String> 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");
+ }
+}