001    package net.minecraftforge.liquids;
002    
003    import java.util.LinkedList;
004    
005    import net.minecraft.src.ItemStack;
006    
007    public class LiquidManager {
008        
009        public static final int BUCKET_VOLUME = 1000;
010        public static LinkedList<LiquidData> liquids = new LinkedList<LiquidData>();
011        
012        public static LiquidStack getLiquidForFilledItem(ItemStack filledItem) {
013            if (filledItem == null)
014                return null;
015    
016            for (LiquidData liquid : liquids)
017                if (liquid.filled.isItemEqual(filledItem))
018                    return liquid.stillLiquid;
019    
020            return null;
021        }
022        
023        public static int getLiquidIDForFilledItem(ItemStack filledItem) {
024            LiquidStack liquidForFilledItem = getLiquidForFilledItem(filledItem);
025            
026            if (liquidForFilledItem == null)
027                return 0;
028            
029            return liquidForFilledItem.itemID;
030        }
031    
032        public static ItemStack getFilledItemForLiquid(LiquidStack liquid) {
033            for (LiquidData data : liquids)
034                if(data.stillLiquid.isLiquidEqual(liquid))
035                    return data.filled.copy();
036    
037            return null;
038        }
039        
040        public static ItemStack fillLiquidContainer(int liquidId, int quantity, ItemStack emptyContainer) {
041            return fillLiquidContainer(new LiquidStack(liquidId, quantity, 0), emptyContainer);
042        }
043        
044        public static ItemStack fillLiquidContainer(LiquidStack liquid, ItemStack emptyContainer) {
045            for(LiquidData data : liquids)
046                if(liquid.containsLiquid(data.stillLiquid)
047                        && data.container.isItemEqual(emptyContainer))
048                    return data.filled.copy();
049            return null;
050        }
051    
052        public static boolean isLiquid(ItemStack block) {
053            if (block.itemID == 0)
054                return false;
055    
056            for (LiquidData liquid : liquids)
057                if (liquid.stillLiquid.isLiquidEqual(block) || liquid.movingLiquid.isLiquidEqual(block))
058                    return true;
059    
060            return false;
061        }
062    
063    
064    }