diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 1993245b..40551922 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -92,6 +92,7 @@ public class Constants public static final String WAILA_CONFIG_BYPASS_SNEAK = Mod.MODID + ".bypassSneak"; public static final String WAILA_CONFIG_ALTAR = Mod.MODID + ".bloodAltar"; public static final String WAILA_CONFIG_TELEPOSER = Mod.MODID + ".teleposer"; + public static final String WAILA_CONFIG_RITUAL = Mod.MODID + ".ritualController"; } public static class Misc diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java b/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java index 27813a89..4b59e75c 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/CompatibilityWaila.java @@ -2,9 +2,11 @@ package WayofTime.bloodmagic.compat.waila; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.block.BlockAltar; +import WayofTime.bloodmagic.block.BlockRitualController; import WayofTime.bloodmagic.block.BlockTeleposer; import WayofTime.bloodmagic.compat.ICompatibility; import WayofTime.bloodmagic.compat.waila.provider.DataProviderBloodAltar; +import WayofTime.bloodmagic.compat.waila.provider.DataProviderRitualController; import WayofTime.bloodmagic.compat.waila.provider.DataProviderTeleposer; import mcp.mobius.waila.api.IWailaRegistrar; import net.minecraftforge.fml.common.event.FMLInterModComms; @@ -33,9 +35,11 @@ public class CompatibilityWaila implements ICompatibility { registrar.registerBodyProvider(new DataProviderBloodAltar(), BlockAltar.class); registrar.registerBodyProvider(new DataProviderTeleposer(), BlockTeleposer.class); + registrar.registerBodyProvider(new DataProviderRitualController(), BlockRitualController.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); + registrar.addConfig(Constants.Mod.MODID, Constants.Compat.WAILA_CONFIG_RITUAL, true); } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java new file mode 100644 index 00000000..478b4b2b --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java @@ -0,0 +1,97 @@ +package WayofTime.bloodmagic.compat.waila.provider; + +import WayofTime.bloodmagic.api.BlockStack; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; +import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.block.BlockRitualController; +import WayofTime.bloodmagic.tile.TileImperfectRitualStone; +import WayofTime.bloodmagic.tile.TileMasterRitualStone; +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.block.Block; +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 DataProviderRitualController 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_RITUAL)) + return currenttip; + + if (accessor.getPlayer().isSneaking() || config.getConfig(Constants.Compat.WAILA_CONFIG_BYPASS_SNEAK)) + { + if (accessor.getBlock() instanceof BlockRitualController) + { + if (accessor.getBlock().getMetaFromState(accessor.getBlockState()) == 0 && accessor.getTileEntity() instanceof TileMasterRitualStone) + { + TileMasterRitualStone mrs = (TileMasterRitualStone) accessor.getTileEntity(); + + if (mrs.getCurrentRitual() != null) + { + currenttip.add(TextHelper.localizeEffect(mrs.getCurrentRitual().getUnlocalizedName())); + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromUUID(mrs.getOwner()))); + } else + { + currenttip.add(TextHelper.localizeEffect("tooltip.BloodMagic.deactivated")); + } + } + + if (accessor.getBlock().getMetaFromState(accessor.getBlockState()) == 1 && accessor.getTileEntity() instanceof TileImperfectRitualStone) + { + if (accessor.getWorld().getBlockState(accessor.getPosition().up()).getBlock() != null) + { + Block up = accessor.getWorld().getBlockState(accessor.getPosition().up()).getBlock(); + int meta = up.getMetaFromState(accessor.getWorld().getBlockState(accessor.getPosition().up())); + BlockStack blockStack = new BlockStack(up, meta); + ImperfectRitual ritual = ImperfectRitualRegistry.getRitualForBlock(blockStack); + + if (ritual != null) + currenttip.add(TextHelper.localizeEffect(ritual.getUnlocalizedName())); + } + } + } + } 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; + } +}