package net.geforcemods.securitycraft.tileentity;
import net.geforcemods.securitycraft.api.CustomizableSCTE;
import net.geforcemods.securitycraft.api.IPasswordProtected;
import net.geforcemods.securitycraft.api.Option;
import net.geforcemods.securitycraft.blocks.BlockKeycardReader;
import net.geforcemods.securitycraft.gui.GuiHandler;
import net.geforcemods.securitycraft.main.mod_SecurityCraft;
import net.geforcemods.securitycraft.misc.EnumCustomModules;
import net.geforcemods.securitycraft.util.BlockUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
public class TileEntityKeycardReader extends CustomizableSCTE implements IPasswordProtected {
private int passLV = 0;
private boolean requiresExactKeycard = false;
/**
* Writes a tile entity to NBT.
* @return
*/
@Override
public NBTTagCompound writeToNBT(NBTTagCompound par1NBTTagCompound){
super.writeToNBT(par1NBTTagCompound);
par1NBTTagCompound.setInteger("passLV", this.passLV);
par1NBTTagCompound.setBoolean("requiresExactKeycard", this.requiresExactKeycard);
return par1NBTTagCompound;
}
/**
* Reads a tile entity from NBT.
*/
@Override
public void readFromNBT(NBTTagCompound par1NBTTagCompound){
super.readFromNBT(par1NBTTagCompound);
if (par1NBTTagCompound.hasKey("passLV"))
{
this.passLV = par1NBTTagCompound.getInteger("passLV");
}
if (par1NBTTagCompound.hasKey("requiresExactKeycard"))
{
this.requiresExactKeycard = par1NBTTagCompound.getBoolean("requiresExactKeycard");
}
}
public void setRequiresExactKeycard(boolean par1) {
requiresExactKeycard = par1;
}
public boolean doesRequireExactKeycard() {
return requiresExactKeycard;
}
@Override
public void activate(EntityPlayer player) {
if(!worldObj.isRemote && BlockUtils.getBlock(getWorld(), getPos()) instanceof BlockKeycardReader){
BlockKeycardReader.activate(worldObj, getPos());
}
}
@Override
public void openPasswordGUI(EntityPlayer player) {
if(getPassword() == null) {
player.openGui(mod_SecurityCraft.instance, GuiHandler.SETUP_KEYCARD_READER_ID, worldObj, pos.getX(), pos.getY(), pos.getZ());
}
}
@Override
public boolean onCodebreakerUsed(IBlockState blockState, EntityPlayer player, boolean isCodebreakerDisabled) {
return false;
}
@Override
public String getPassword() {
return passLV == 0 ? null : String.valueOf(passLV);
}
@Override
public void setPassword(String password) {
passLV = Integer.parseInt(password);
}
@Override
public EnumCustomModules[] acceptedModules() {
return new EnumCustomModules[]{EnumCustomModules.WHITELIST, EnumCustomModules.BLACKLIST};
}
@Override
public Option<?>[] customOptions() {
return null;
}
}