Rewrite Hwyla integration

Now properly makes use of the API
This commit is contained in:
Nicholas Ignoffo 2018-02-08 19:01:12 -08:00
parent 9f6a4983a6
commit 03fece58fa
9 changed files with 187 additions and 201 deletions

View file

@ -6,14 +6,12 @@ import WayofTime.bloodmagic.apibutnotreally.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.apibutnotreally.registry.RitualRegistry;
import WayofTime.bloodmagic.apibutnotreally.ritual.imperfect.ImperfectRitual;
import WayofTime.bloodmagic.apibutnotreally.util.helper.PlayerHelper;
import WayofTime.bloodmagic.block.BlockRitualController;
import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
import WayofTime.bloodmagic.util.helper.TextHelper;
import joptsimple.internal.Strings;
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;
@ -21,70 +19,64 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
import java.util.List;
public class DataProviderRitualController 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 null;
}
public static final IWailaDataProvider INSTANCE = new DataProviderRitualController();
@Nonnull
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> 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) {
int controllerMeta = accessor.getBlock().getMetaFromState(accessor.getBlockState());
if ((controllerMeta == 0 || controllerMeta == 2) && accessor.getTileEntity() instanceof TileMasterRitualStone) {
TileMasterRitualStone mrs = (TileMasterRitualStone) accessor.getTileEntity();
if (mrs.getCurrentRitual() != null && mrs.isActive()) {
currenttip.add(TextHelper.localizeEffect(mrs.getCurrentRitual().getUnlocalizedName()));
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.currentOwner", PlayerHelper.getUsernameFromUUID(mrs.getOwner())));
if (!RitualRegistry.ritualEnabled(mrs.getCurrentRitual()))
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.config.disabled"));
} else {
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.deactivated"));
}
}
if (controllerMeta == 1 && accessor.getTileEntity() instanceof TileImperfectRitualStone) {
if (accessor.getWorld().isAirBlock(accessor.getPosition().up())) {
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()));
if (!ImperfectRitualRegistry.ritualEnabled(ritual))
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.config.disabled"));
}
}
}
}
NBTTagCompound tag = accessor.getNBTData();
if (tag.getBoolean("master")) {
if (tag.hasKey("ritual"))
currenttip.add(TextHelper.localizeEffect(tag.getString("ritual")));
if (tag.hasKey("owner"))
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.currentOwner", tag.getString("owner")));
if (!tag.getBoolean("active"))
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.deactivated"));
if (!tag.getBoolean("enabled"))
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.config.disabled"));
} else {
currenttip.add(TextHelper.localizeEffect("waila.bloodmagic.sneak"));
if (tag.hasKey("ritual")) {
currenttip.add(TextHelper.localizeEffect(tag.getString("ritual")));
if (!tag.getBoolean("enabled"))
currenttip.add(TextHelper.localizeEffect("tooltip.bloodmagic.config.disabled"));
}
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Nonnull
@Override
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) {
return null;
if (te instanceof TileMasterRitualStone) {
TileMasterRitualStone mrs = (TileMasterRitualStone) te;
tag.setBoolean("master", true);
if (mrs.getCurrentRitual() != null) {
tag.setString("ritual", mrs.getCurrentRitual().getUnlocalizedName());
tag.setBoolean("active", mrs.isActive());
if (!Strings.isNullOrEmpty(mrs.getOwner()))
tag.setString("owner", PlayerHelper.getUsernameFromUUID(mrs.getOwner()));
tag.setBoolean("enabled", RitualRegistry.ritualEnabled(mrs.getCurrentRitual()));
}
} else {
tag.setBoolean("master", false);
ImperfectRitual ritual = ImperfectRitualRegistry.getRitualForBlock(BlockStack.getStackFromPos(world, pos.up()));
if (ritual != null) {
tag.setString("ritual", ritual.getUnlocalizedName());
tag.setBoolean("enabled", ImperfectRitualRegistry.ritualEnabled(ritual));
}
}
return tag;
}
}