package joshie.harvest.cooking.item;
import joshie.harvest.cooking.item.ItemIngredients.Ingredient;
import joshie.harvest.core.HFTab;
import joshie.harvest.core.base.item.ItemHFFoodEnum;
import joshie.harvest.core.util.interfaces.ISellable;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.World;
import java.util.Locale;
public class ItemIngredients extends ItemHFFoodEnum<ItemIngredients, Ingredient> {
public enum Ingredient implements IStringSerializable, ISellable {
CURRY_POWDER(50L, 15L), DUMPLING_POWDER, WINE(200L, 50L), UNUSED1, UNUSED2,
FLOUR(50L, 15L), OIL(50L, 15L), RICEBALL(100L, 25L), SALT(25L, 5L), CHOCOLATE(100L, 25L);
private final long cost;
private final long sell;
Ingredient(long cost, long sell) {
this.cost = cost;
this.sell = sell;
}
Ingredient() {
this(0L, 0L);
}
public long getCost() {
return cost;
}
public boolean isDrink() {
return this == WINE || this == OIL;
}
@Override
public long getSellValue() {
return sell;
}
@Override
public String getName() {
return name().toLowerCase(Locale.ENGLISH);
}
}
public ItemIngredients() {
super(HFTab.COOKING, Ingredient.class);
}
@Override
protected ItemStack getCreativeStack(Ingredient ingredient) {
return ingredient.getSellValue() > 0L ? getStackFromEnum(ingredient) : null;
}
@Override
public int getMaxItemUseDuration(ItemStack stack) {
return 16;
}
@Override
public EnumAction getItemUseAction(ItemStack stack) {
return getEnumFromStack(stack).isDrink() ? EnumAction.DRINK : EnumAction.EAT;
}
@Override
public int getHealAmount(ItemStack stack) {
switch (getEnumFromStack(stack)) {
case CURRY_POWDER:
case DUMPLING_POWDER:
case FLOUR:
case RICEBALL:
return 1;
case WINE:
return 2;
case CHOCOLATE: return 3;
default: return 0;
}
}
@Override
public float getSaturationModifier(ItemStack stack) {
switch (getEnumFromStack(stack)) {
case RICEBALL: return 0.25F;
case CHOCOLATE: return 0.5F;
case CURRY_POWDER:
case DUMPLING_POWDER:
return 0.2F;
case FLOUR:
return 0.6F;
case WINE:
return 0.8F;
default: return 0F;
}
}
@Override
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) {
if (player.canEat(false) && getHealAmount(stack) > 0) {
player.setActiveHand(hand);
return new ActionResult<>(EnumActionResult.SUCCESS, stack);
} else {
return new ActionResult<>(EnumActionResult.FAIL, stack);
}
}
}