package mekanism.common.security; import io.netty.buffer.ByteBuf; import java.util.ArrayList; import mekanism.common.HashList; import mekanism.common.PacketHandler; import mekanism.common.frequency.Frequency; import mekanism.common.security.ISecurityTile.SecurityMode; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import net.minecraftforge.common.util.Constants.NBT; public class SecurityFrequency extends Frequency { public static final String SECURITY = "Security"; public boolean override; public HashList<String> trusted; public SecurityMode securityMode; public SecurityFrequency(String o) { super("Security", o); trusted = new HashList<String>(); securityMode = SecurityMode.PUBLIC; } public SecurityFrequency(NBTTagCompound nbtTags) { super(nbtTags); } public SecurityFrequency(ByteBuf dataStream) { super(dataStream); } @Override public void write(NBTTagCompound nbtTags) { super.write(nbtTags); nbtTags.setBoolean("override", override); nbtTags.setInteger("securityMode", securityMode.ordinal()); if(!trusted.isEmpty()) { NBTTagList trustedList = new NBTTagList(); for(String s : trusted) { trustedList.appendTag(new NBTTagString(s)); } nbtTags.setTag("trusted", trustedList); } } @Override protected void read(NBTTagCompound nbtTags) { super.read(nbtTags); trusted = new HashList<String>(); securityMode = SecurityMode.PUBLIC; override = nbtTags.getBoolean("override"); securityMode = SecurityMode.values()[nbtTags.getInteger("securityMode")]; if(nbtTags.hasKey("trusted")) { NBTTagList trustedList = nbtTags.getTagList("trusted", NBT.TAG_STRING); for(int i = 0; i < trustedList.tagCount(); i++) { trusted.add(trustedList.getStringTagAt(i)); } } } @Override public void write(ArrayList data) { super.write(data); data.add(override); data.add(securityMode.ordinal()); data.add(trusted.size()); for(String s : trusted) { data.add(s); } } @Override protected void read(ByteBuf dataStream) { super.read(dataStream); trusted = new HashList<String>(); securityMode = SecurityMode.PUBLIC; override = dataStream.readBoolean(); securityMode = SecurityMode.values()[dataStream.readInt()]; trusted.clear(); int size = dataStream.readInt(); for(int i = 0; i < size; i++) { trusted.add(PacketHandler.readString(dataStream)); } } }