BloodMagic/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java

118 lines
5.2 KiB
Java
Raw Normal View History

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;
switch (ConfigHandler.compat.wailaAltarDisplayMode) {
case ALWAYS: {
2017-08-16 04:30:48 +00:00
hasSigil = hasSeer = true;
break;
}
case SIGIL_HELD: {
2017-08-16 04:30:48 +00:00
hasSeer = holdingSeerSigil(accessor.getPlayer());
hasSigil = hasSeer || holdingDivinationSigil(accessor.getPlayer());
break;
}
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) {
int charge = accessor.getNBTData().getCompoundTag("bloodAltar").getInteger(Constants.NBT.ALTAR_TOTAL_CHARGE);
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) + "%"));
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) {
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;
if (!player.getHeldItemOffhand().isEmpty() && player.getHeldItemOffhand().getItem() instanceof ItemSigilDivination)
2016-05-31 23:43:11 +00:00
return true;
return false;
}
}