From 2eaa9bf578e7d1f0fb29896bdee9604a9518f5f9 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 1 Jan 2016 15:41:01 -0800 Subject: [PATCH] Hey look, the actual compat classes... >.> --- .../compat/waila/CompatibilityWaila.java | 41 ++++++ .../provider/DataProviderBloodAltar.java | 121 ++++++++++++++++++ .../waila/provider/DataProviderTeleposer.java | 74 +++++++++++ 3 files changed, 236 insertions(+) create mode 100644 src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java create mode 100644 src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java create mode 100644 src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderTeleposer.java diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java b/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java new file mode 100644 index 00000000..27813a89 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java @@ -0,0 +1,41 @@ +package WayofTime.bloodmagic.compat.waila; + +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.block.BlockAltar; +import WayofTime.bloodmagic.block.BlockTeleposer; +import WayofTime.bloodmagic.compat.ICompatibility; +import WayofTime.bloodmagic.compat.waila.provider.DataProviderBloodAltar; +import WayofTime.bloodmagic.compat.waila.provider.DataProviderTeleposer; +import mcp.mobius.waila.api.IWailaRegistrar; +import net.minecraftforge.fml.common.event.FMLInterModComms; + +public class CompatibilityWaila implements ICompatibility +{ + @Override + public void loadCompatibility() + { + FMLInterModComms.sendMessage(getModId(), "register", getClass().getName() + ".callbackRegister"); + } + + @Override + public String getModId() + { + return "Waila"; + } + + @Override + public boolean enableCompat() + { + return true; + } + + public static void callbackRegister(IWailaRegistrar registrar) + { + registrar.registerBodyProvider(new DataProviderBloodAltar(), BlockAltar.class); + registrar.registerBodyProvider(new DataProviderTeleposer(), BlockTeleposer.class); + + registrar.addConfig(Constants.Mod.MODID, Constants.Compat.WAILA_CONFIG_BYPASS_SNEAK, false); + registrar.addConfig(Constants.Mod.MODID, Constants.Compat.WAILA_CONFIG_ALTAR, true); + registrar.addConfig(Constants.Mod.MODID, Constants.Compat.WAILA_CONFIG_TELEPOSER, true); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java new file mode 100644 index 00000000..903e5a6b --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java @@ -0,0 +1,121 @@ +package WayofTime.bloodmagic.compat.waila.provider; + +import WayofTime.bloodmagic.ConfigHandler; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.block.BlockAltar; +import WayofTime.bloodmagic.item.sigil.ItemSigilDivination; +import WayofTime.bloodmagic.item.sigil.ItemSigilSeer; +import WayofTime.bloodmagic.registry.ModItems; +import WayofTime.bloodmagic.tile.TileAltar; +import WayofTime.bloodmagic.util.helper.TextHelper; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; + +import java.util.List; + +/** + * Integrated from WailaPlugins by tterrag1098. + * Originally implemented in ImLookingAtBlood by Pokefenn. + */ +public class DataProviderBloodAltar 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 null; + } + + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + if (!config.getConfig(Constants.Compat.WAILA_CONFIG_ALTAR)) + return currenttip; + + boolean hasSigil = false; + boolean hasSeer = false; + + switch (ConfigHandler.wailaAltarDisplayMode) + { + case 0: + { + hasSigil = hasSeer = true; + break; + } + case 1: + { + hasSeer = accessor.getPlayer().getHeldItem() != null && accessor.getPlayer().getHeldItem().getItem() instanceof ItemSigilSeer; + hasSigil = hasSeer || accessor.getPlayer().getHeldItem() != null && accessor.getPlayer().getHeldItem().getItem() instanceof ItemSigilDivination; + break; + } + case 2: + { + hasSeer = hasStack(new ItemStack(ModItems.sigilSeer), accessor.getPlayer()); + hasSigil = hasSeer || hasStack(new ItemStack(ModItems.sigilDivination), accessor.getPlayer()); + break; + } + default: + { + break; + } + } + + if (!hasSeer && !hasSigil) + return currenttip; + + if (accessor.getPlayer().isSneaking() || config.getConfig(Constants.Compat.WAILA_CONFIG_BYPASS_SNEAK)) + { + if (accessor.getBlock() instanceof BlockAltar && accessor.getTileEntity() instanceof TileAltar) + { + TileAltar altar = (TileAltar) accessor.getTileEntity(); + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.sigil.seer.currentAltarTier", altar.getTier().toInt())); + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.sigil.seer.currentAltarCapacity", altar.getCapacity())); + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.sigil.seer.currentEssence", altar.getCurrentBlood())); + + if (hasSeer) + { + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.sigil.seer.currentAltarProgress.percent", ((int) ((double) altar.getProgress() / (double) altar.getLiquidRequired() * 100)) + "%")); + } + } + } else + { + currenttip.add(TextHelper.localizeEffect("waila.BloodMagic.sneak")); + } + + return currenttip; + } + + @Override + public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return null; + } + + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) + { + return null; + } + + public static boolean hasStack(ItemStack stack, EntityPlayer player) + { + for (ItemStack inventoryStack : player.inventory.mainInventory) + if (inventoryStack != null && inventoryStack.isItemEqual(stack)) + return true; + + return false; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderTeleposer.java b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderTeleposer.java new file mode 100644 index 00000000..13e35a92 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderTeleposer.java @@ -0,0 +1,74 @@ +package WayofTime.bloodmagic.compat.waila.provider; + +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.block.BlockTeleposer; +import WayofTime.bloodmagic.item.ItemTelepositionFocus; +import WayofTime.bloodmagic.tile.TileTeleposer; +import WayofTime.bloodmagic.util.helper.TextHelper; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; + +import java.util.List; + +public class DataProviderTeleposer 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 null; + } + + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + if (!config.getConfig(Constants.Compat.WAILA_CONFIG_TELEPOSER)) + return currenttip; + + if (accessor.getPlayer().isSneaking() || config.getConfig(Constants.Compat.WAILA_CONFIG_BYPASS_SNEAK)) + { + if (accessor.getBlock() instanceof BlockTeleposer && accessor.getTileEntity() instanceof TileTeleposer) + { + TileTeleposer teleposer = (TileTeleposer) accessor.getTileEntity(); + if (teleposer.getStackInSlot(0) != null) + { + ItemStack contained = teleposer.getStackInSlot(0); + BlockPos toPos = ((ItemTelepositionFocus) contained.getItem()).getBlockPos(contained); + int dimensionID = contained.getTagCompound().getInteger(Constants.NBT.DIMENSION_ID); + + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.telepositionFocus.coords", toPos.getX(), toPos.getY(), toPos.getZ())); + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.telepositionFocus.dimension", dimensionID)); + } + } + } else + { + currenttip.add(TextHelper.localizeEffect("waila.BloodMagic.sneak")); + } + + return currenttip; + } + + @Override + public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return null; + } + + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) + { + return null; + } +}