package com.bioxx.tfc2.api; import java.util.*; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.common.registry.ForgeRegistries; import com.bioxx.tfc2.api.types.EnumFoodGroup; import com.bioxx.tfc2.core.util.FoodReader.FoodJSON; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; public class FoodRegistry { private static final FoodRegistry INSTANCE = new FoodRegistry(); public static final FoodRegistry getInstance() { return INSTANCE; } private Multimap<String, ItemStack> cropMap; private Map<String, TFCFood> foodMap; private FoodRegistry() { cropMap = ArrayListMultimap.create(); foodMap = new HashMap<String, TFCFood>(); } public void registerCropProduce(String crop, ItemStack i) { cropMap.put(crop, i); } public void registerCropProduce(Crop crop, ItemStack i) { cropMap.put(crop.getName(), i); } public Collection<ItemStack> getProduceForCrop(String crop) { return cropMap.get(crop); } public void registerFood(FoodJSON json) { foodMap.put(json.itemName + " " + json.itemMeta, new TFCFood(json)); } public boolean hasKey(Item i, int meta) { return foodMap.containsKey(ForgeRegistries.ITEMS.getKey(i) + " " + meta); } public TFCFood getFood(Item i, int meta) { return foodMap.get(ForgeRegistries.ITEMS.getKey(i) + " " + meta); } public static class TFCFood { public long expiration = 72000L; public boolean isEdible = true; public List<FoodGroupPair> foodGroup = new ArrayList<FoodGroupPair>(); public TFCFood(FoodJSON f) { expiration = f.decayTime; isEdible = f.isEdible; foodGroup = f.foodGroup; } public String getDisplayString() { String s = null; for(FoodGroupPair fg : foodGroup) { if(s == null) s = ""; else s += TextFormatting.BLACK+" "; s += fg.foodGroup.getColoredAbbrv()+ " " + fg.amount+"%"; } return s; } } public static class FoodGroupPair { public final EnumFoodGroup foodGroup; public final float amount; public FoodGroupPair(EnumFoodGroup fg, float a) { foodGroup = fg; amount = a; } } }