96 lines
1.7 KiB
Java
96 lines
1.7 KiB
Java
package mekanism.common;
|
|
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
|
|
import mekanism.api.Object3D;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraftforge.common.ForgeDirection;
|
|
import net.minecraftforge.fluids.FluidStack;
|
|
|
|
public class SynchronizedTankData
|
|
{
|
|
public Set<Object3D> locations = new HashSet<Object3D>();
|
|
|
|
public int volLength;
|
|
|
|
public int volWidth;
|
|
|
|
public int volHeight;
|
|
|
|
public int volume;
|
|
|
|
public FluidStack fluidStored;
|
|
|
|
public ItemStack[] inventory = new ItemStack[2];
|
|
|
|
public boolean didTick;
|
|
|
|
public boolean hasRenderer;
|
|
|
|
public Object3D renderLocation;
|
|
|
|
public Set<ValveData> valves = new HashSet<ValveData>();
|
|
|
|
@Override
|
|
public int hashCode()
|
|
{
|
|
int code = 1;
|
|
code = 31 * locations.hashCode();
|
|
code = 31 * volLength;
|
|
code = 31 * volWidth;
|
|
code = 31 * volHeight;
|
|
code = 31 * volume;
|
|
return code;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj)
|
|
{
|
|
if(!(obj instanceof SynchronizedTankData))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
SynchronizedTankData data = (SynchronizedTankData)obj;
|
|
|
|
if(!data.locations.equals(locations))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(data.volLength != volLength || data.volWidth != volWidth || data.volHeight != volHeight)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(data.volume != volume)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static class ValveData
|
|
{
|
|
public ForgeDirection side;
|
|
public Object3D location;
|
|
public boolean serverFluid;
|
|
|
|
@Override
|
|
public int hashCode()
|
|
{
|
|
int code = 1;
|
|
code = 31 * code + side.ordinal();
|
|
code = 31 * code + location.hashCode();
|
|
return code;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj)
|
|
{
|
|
return obj instanceof ValveData && ((ValveData)obj).side == side && ((ValveData)obj).location.equals(location);
|
|
}
|
|
}
|
|
}
|