Mekanism-tilera-Edition/src/main/java/mekanism/common/SideData.java

96 lines
1.8 KiB
Java

package mekanism.common;
import java.util.ArrayList;
import java.util.List;
import mekanism.api.EnumColor;
import mekanism.api.gas.GasTank;
import mekanism.common.base.ITankManager;
import mekanism.common.util.LangUtils;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidTank;
public class SideData
{
/** The color of this SideData */
public EnumColor color;
/** The name of this SideData */
public String name;
/** int[] of available side slots, can be used for items, gases, or items */
public int[] availableSlots;
/** IOState representing this SideData */
public IOState ioState;
public SideData(String n, EnumColor colour, int[] slots)
{
name = n;
color = colour;
availableSlots = slots;
}
public SideData(String n, EnumColor colour, IOState state)
{
name = n;
color = colour;
ioState = state;
}
public String localize()
{
return LangUtils.localize("sideData." + name);
}
public boolean hasSlot(int... slots)
{
for(int i : availableSlots)
{
for(int slot : slots)
{
if(i == slot)
{
return true;
}
}
}
return false;
}
public FluidTankInfo[] getFluidTankInfo(ITankManager manager)
{
Object[] tanks = manager.getTanks();
List<FluidTankInfo> infos = new ArrayList<FluidTankInfo>();
for(int slot : availableSlots)
{
if(slot <= tanks.length-1 && tanks[slot] instanceof IFluidTank)
{
infos.add(((IFluidTank)tanks[slot]).getInfo());
}
}
return infos.toArray(new FluidTankInfo[] {});
}
public GasTank getGasTank(ITankManager manager)
{
Object[] tanks = manager.getTanks();
if(tanks.length < 1 || !(tanks[0] instanceof GasTank))
{
return null;
}
return (GasTank)tanks[0];
}
public static enum IOState
{
INPUT,
OUTPUT,
OFF;
}
}