package advancedsystemsmanager.flow.setting;
import advancedsystemsmanager.flow.menus.MenuLiquid;
import advancedsystemsmanager.network.ASMPacket;
import advancedsystemsmanager.reference.Names;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import java.util.ArrayList;
import java.util.List;
public class LiquidSetting extends Setting<Fluid>
{
public static final String NBT_FLUID_ID = "FluidId";
public Fluid fluid;
public LiquidSetting(int id)
{
super(id);
}
@Override
public void clear()
{
super.clear();
fluid = null;
setDefaultAmount();
}
@Override
public List<String> getMouseOver()
{
List<String> ret = new ArrayList<String>();
if (fluid == null)
{
ret.add(Names.NO_LIQUID_SELECTED);
} else
{
ret.add(MenuLiquid.getDisplayName(fluid));
}
ret.add("");
ret.add(Names.CHANGE_LIQUID);
if (fluid != null)
{
ret.add(Names.EDIT_SETTING);
}
return ret;
}
@Override
public int getDefaultAmount()
{
return 1000;
}
@Override
public Fluid getContent()
{
return fluid;
}
@Override
public boolean isValid()
{
return fluid != null;
}
@Override
public void copyFrom(Setting setting)
{
fluid = ((LiquidSetting)setting).fluid;
}
@Override
public void load(NBTTagCompound settingTag)
{
super.load(settingTag);
fluid = FluidRegistry.getFluid(settingTag.getShort(NBT_FLUID_ID));
}
@Override
public void save(NBTTagCompound settingTag)
{
super.save(settingTag);
settingTag.setShort(NBT_FLUID_ID, (short)fluid.getID());
}
public int getLiquidId()
{
return fluid.getID();
}
public Fluid getFluid()
{
return fluid;
}
@Override
public void setContent(Fluid obj)
{
fluid = obj;
setDefaultAmount();
}
@Override
public boolean isContentEqual(Fluid check)
{
return fluid == check;
}
@Override
public void writeContentData(ASMPacket packet)
{
super.writeContentData(packet);
packet.writeShort(fluid.getID());
}
@Override
public void readContentData(ASMPacket packet)
{
super.readContentData(packet);
setLiquidFromId(packet.readShort());
}
public void setLiquidFromId(int id)
{
fluid = FluidRegistry.getFluid(id);
}
}