package gregtech.api.objects; import gregtech.api.GregTech_API; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import net.minecraftforge.common.ForgeVersion; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; /** * Because Forge fucked this one up royally. */ public class GT_FluidStack extends FluidStack { private static final Collection sAllFluidStacks = new ArrayList(5000); private Fluid mFluid; private static boolean lock=false; public GT_FluidStack(Fluid aFluid, int aAmount) { super(aFluid, aAmount); mFluid = aFluid; sAllFluidStacks.add(this); } public GT_FluidStack(FluidStack aFluid) { this(aFluid.getFluid(), aFluid.amount); } public static void fixAllThoseFuckingFluidIDs() { if(ForgeVersion.getBuildVersion()<1355){ while(lock){try {Thread.sleep(1);} catch (InterruptedException e) {}} lock=true; for (GT_FluidStack tFluid : sAllFluidStacks) tFluid.fixFluidIDForFucksSake(); for (Map tMap : GregTech_API.sFluidMappings) try {GT_Utility.reMap(tMap);} catch(Throwable e) {e.printStackTrace(GT_Log.err);} lock=false;} } public void fixFluidIDForFucksSake() { if(ForgeVersion.getBuildVersion()<1355){ int fluidID; try {fluidID = this.getFluid().getID();} catch(Throwable e){System.err.println(e);} try {fluidID = mFluid.getID();} catch(Throwable e) {fluidID = -1;}} } @Override public FluidStack copy() { if(ForgeVersion.getBuildVersion()<1355){ fixFluidIDForFucksSake();} return new GT_FluidStack(this); } }