package net.geforcemods.securitycraft.imc.waila;
import java.util.List;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.IWailaRegistrar;
import net.geforcemods.securitycraft.api.CustomizableSCTE;
import net.geforcemods.securitycraft.api.INameable;
import net.geforcemods.securitycraft.api.IOwnable;
import net.geforcemods.securitycraft.api.IPasswordProtected;
import net.geforcemods.securitycraft.main.mod_SecurityCraft;
import net.geforcemods.securitycraft.misc.EnumCustomModules;
import net.geforcemods.securitycraft.tileentity.TileEntityKeycardReader;
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.StatCollector;
import net.minecraft.world.World;
public class WailaDataProvider implements IWailaDataProvider {
public static void callbackRegister(IWailaRegistrar registrar){
mod_SecurityCraft.log("Adding Waila support!");
registrar.addConfig("SecurityCraft", "securitycraft.showowner", StatCollector.translateToLocal("waila.displayOwner"));
registrar.addConfig("SecurityCraft", "securitycraft.showmodules", StatCollector.translateToLocal("waila.showModules"));
registrar.addConfig("SecurityCraft", "securitycraft.showpasswords", StatCollector.translateToLocal("waila.showPasswords"));
registrar.addConfig("SecurityCraft", "securitycraft.showcustomname", StatCollector.translateToLocal("waila.showCustomName"));
registrar.registerBodyProvider(new WailaDataProvider(), IOwnable.class);
registrar.registerStackProvider(new WailaDataProvider(), ICustomWailaDisplay.class);
}
public ItemStack getWailaStack(IWailaDataAccessor data, IWailaConfigHandler config) {
if(data.getBlock() instanceof ICustomWailaDisplay) {
return ((ICustomWailaDisplay) data.getBlock()).getDisplayStack(data.getWorld(), data.getPosition().blockX, data.getPosition().blockY, data.getPosition().blockZ);
}
return null;
}
public List<String> getWailaHead(ItemStack itemstack, List<String> head, IWailaDataAccessor data, IWailaConfigHandler config) {
return head;
}
public List<String> getWailaBody(ItemStack itemstack, List<String> body, IWailaDataAccessor data, IWailaConfigHandler config) {
if(data.getBlock() instanceof ICustomWailaDisplay && !((ICustomWailaDisplay) data.getBlock()).shouldShowSCInfo(data.getWorld(), data.getPosition().blockX, data.getPosition().blockY, data.getPosition().blockZ)) return body;
if(config.getConfig("securitycraft.showowner") && data.getTileEntity() instanceof IOwnable){
body.add(StatCollector.translateToLocal("waila.owner") + " " + ((IOwnable) data.getTileEntity()).getOwner().getName());
}
if(config.getConfig("securitycraft.showmodules") && data.getTileEntity() instanceof CustomizableSCTE && ((CustomizableSCTE) data.getTileEntity()).getOwner().isOwner(data.getPlayer())){
if(!((CustomizableSCTE) data.getTileEntity()).getModules().isEmpty()){
body.add(StatCollector.translateToLocal("waila.equipped"));
}
for(EnumCustomModules module : ((CustomizableSCTE) data.getTileEntity()).getModules()){
body.add("- " + module.getName());
}
}
if(config.getConfig("securitycraft.showpasswords") && data.getTileEntity() instanceof IPasswordProtected && !(data.getTileEntity() instanceof TileEntityKeycardReader) && ((IOwnable) data.getTileEntity()).getOwner().isOwner(data.getPlayer())){
String password = ((IPasswordProtected) data.getTileEntity()).getPassword();
body.add(StatCollector.translateToLocal("waila.password") + " " + (password != null && !password.isEmpty() ? password : StatCollector.translateToLocal("waila.password.notSet")));
}
if(config.getConfig("securitycraft.showcustomname") && data.getTileEntity() instanceof INameable && ((INameable) data.getTileEntity()).canBeNamed()){
String name = ((INameable) data.getTileEntity()).getCustomName();
body.add(StatCollector.translateToLocal("waila.customName") + " " + (((INameable) data.getTileEntity()).hasCustomName() ? name : StatCollector.translateToLocal("waila.customName.notSet")));
}
return body;
}
public List<String> getWailaTail(ItemStack itemstack, List<String> tail, IWailaDataAccessor data, IWailaConfigHandler config) {
return tail;
}
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity tileEntity, NBTTagCompound tagCompound, World world, int arg4, int arg5, int arg6) {
return tagCompound;
}
}