diff options
Diffstat (limited to 'src/main/java/gregtech/crossmod')
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"); + } +} |