2016-05-31 23:43:11 +00:00
|
|
|
package WayofTime.bloodmagic.compat.waila.provider;
|
|
|
|
|
2017-08-16 04:30:48 +00:00
|
|
|
import WayofTime.bloodmagic.ConfigHandler;
|
|
|
|
import WayofTime.bloodmagic.api.Constants;
|
|
|
|
import WayofTime.bloodmagic.block.BlockAltar;
|
|
|
|
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
|
|
|
|
import WayofTime.bloodmagic.item.sigil.ItemSigilDivination;
|
|
|
|
import WayofTime.bloodmagic.item.sigil.ItemSigilSeer;
|
|
|
|
import WayofTime.bloodmagic.tile.TileAltar;
|
|
|
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
2016-05-31 23:43:11 +00:00
|
|
|
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.math.BlockPos;
|
|
|
|
import net.minecraft.world.World;
|
2017-08-16 04:30:48 +00:00
|
|
|
|
|
|
|
import java.util.List;
|
2016-05-31 23:43:11 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Integrated from WailaPlugins by <a
|
|
|
|
* href="https://github.com/tterrag1098">tterrag1098</a>. Originally implemented
|
|
|
|
* in ImLookingAtBlood by <a href="https://github.com/Pokefenn">Pokefenn</a>.
|
|
|
|
*/
|
2017-08-16 04:30:48 +00:00
|
|
|
public class DataProviderBloodAltar implements IWailaDataProvider {
|
2016-05-31 23:43:11 +00:00
|
|
|
@Override
|
2017-08-16 04:30:48 +00:00
|
|
|
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
|
2016-05-31 23:43:11 +00:00
|
|
|
if (!config.getConfig(Constants.Compat.WAILA_CONFIG_ALTAR))
|
|
|
|
return currenttip;
|
|
|
|
|
|
|
|
boolean hasSigil = false;
|
|
|
|
boolean hasSeer = false;
|
|
|
|
|
2017-08-20 01:56:50 +00:00
|
|
|
switch (ConfigHandler.compat.wailaAltarDisplayMode) {
|
|
|
|
case ALWAYS: {
|
2017-08-16 04:30:48 +00:00
|
|
|
hasSigil = hasSeer = true;
|
|
|
|
break;
|
|
|
|
}
|
2017-08-20 01:56:50 +00:00
|
|
|
case SIGIL_HELD: {
|
2017-08-16 04:30:48 +00:00
|
|
|
hasSeer = holdingSeerSigil(accessor.getPlayer());
|
|
|
|
hasSigil = hasSeer || holdingDivinationSigil(accessor.getPlayer());
|
|
|
|
break;
|
|
|
|
}
|
2017-08-20 01:56:50 +00:00
|
|
|
case SIGIL_CONTAINED: {
|
2017-08-16 04:30:48 +00:00
|
|
|
hasSeer = hasStack(new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER), accessor.getPlayer());
|
|
|
|
hasSigil = hasSeer || hasStack(new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION), accessor.getPlayer());
|
|
|
|
break;
|
|
|
|
}
|
2016-05-31 23:43:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (!hasSeer && !hasSigil)
|
|
|
|
return currenttip;
|
|
|
|
|
2017-08-16 04:30:48 +00:00
|
|
|
if (accessor.getPlayer().isSneaking() || config.getConfig(Constants.Compat.WAILA_CONFIG_BYPASS_SNEAK)) {
|
|
|
|
if (accessor.getBlock() instanceof BlockAltar && accessor.getTileEntity() instanceof TileAltar) {
|
2016-05-31 23:43:11 +00:00
|
|
|
TileAltar altar = (TileAltar) accessor.getTileEntity();
|
2017-01-02 09:18:29 +00:00
|
|
|
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()));
|
2016-05-31 23:43:11 +00:00
|
|
|
|
2017-08-16 04:30:48 +00:00
|
|
|
if (hasSeer) {
|
2016-12-31 01:34:43 +00:00
|
|
|
int charge = accessor.getNBTData().getCompoundTag("bloodAltar").getInteger(Constants.NBT.ALTAR_TOTAL_CHARGE);
|
2016-10-31 07:07:59 +00:00
|
|
|
int progress = accessor.getNBTData().getCompoundTag("bloodAltar").getInteger(Constants.NBT.ALTAR_PROGRESS);
|
|
|
|
int liquidRequired = accessor.getNBTData().getCompoundTag("bloodAltar").getInteger(Constants.NBT.ALTAR_LIQUID_REQ);
|
|
|
|
int craftAmount = 1;
|
|
|
|
if (accessor.getNBTData().getTagList("Items", 10).get(0).getId() == 10)
|
2017-08-16 04:30:48 +00:00
|
|
|
craftAmount = ((NBTTagCompound) accessor.getNBTData().getTagList("Items", 10).get(0)).getByte("Count");
|
2017-01-02 09:18:29 +00:00
|
|
|
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.sigil.seer.currentAltarProgress.percent", (int) (((double) progress / (double) liquidRequired * 100) / craftAmount) + "%"));
|
2016-12-31 01:34:43 +00:00
|
|
|
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.sigil.seer.currentCharge", charge));
|
2016-05-31 23:43:11 +00:00
|
|
|
}
|
|
|
|
}
|
2017-08-16 04:30:48 +00:00
|
|
|
} else {
|
2017-01-02 09:18:29 +00:00
|
|
|
currenttip.add(TextHelper.localizeEffect("waila.bloodmagic.sneak"));
|
2016-05-31 23:43:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return currenttip;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-08-16 04:30:48 +00:00
|
|
|
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) {
|
2016-10-31 07:07:59 +00:00
|
|
|
if (te != null)
|
|
|
|
te.writeToNBT(tag);
|
|
|
|
return tag;
|
2016-05-31 23:43:11 +00:00
|
|
|
}
|
|
|
|
|
2017-08-16 04:30:48 +00:00
|
|
|
public static boolean hasStack(ItemStack stack, EntityPlayer player) {
|
2016-05-31 23:43:11 +00:00
|
|
|
for (ItemStack inventoryStack : player.inventory.mainInventory)
|
|
|
|
if (inventoryStack != null && inventoryStack.isItemEqual(stack))
|
|
|
|
return true;
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2017-08-16 04:30:48 +00:00
|
|
|
private static boolean holdingSeerSigil(EntityPlayer player) {
|
2016-12-13 03:56:36 +00:00
|
|
|
if (player.getHeldItemMainhand().getItem() instanceof ItemSigilSeer)
|
2016-05-31 23:43:11 +00:00
|
|
|
return true;
|
|
|
|
|
2016-12-13 03:56:36 +00:00
|
|
|
if (player.getHeldItemOffhand().getItem() instanceof ItemSigilSeer)
|
2016-05-31 23:43:11 +00:00
|
|
|
return true;
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2017-08-16 04:30:48 +00:00
|
|
|
private static boolean holdingDivinationSigil(EntityPlayer player) {
|
2016-12-13 03:56:36 +00:00
|
|
|
if (player.getHeldItemMainhand().getItem() instanceof ItemSigilDivination)
|
2016-05-31 23:43:11 +00:00
|
|
|
return true;
|
|
|
|
|
2017-08-20 01:56:50 +00:00
|
|
|
if (!player.getHeldItemOffhand().isEmpty() && player.getHeldItemOffhand().getItem() instanceof ItemSigilDivination)
|
2016-05-31 23:43:11 +00:00
|
|
|
return true;
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|