2016-01-05 04:47:35 +01:00
|
|
|
/*
|
2016-05-16 22:52:27 +02:00
|
|
|
* This file ("ItemCoffee.java") is part of the Actually Additions mod for Minecraft.
|
2016-01-05 04:47:35 +01:00
|
|
|
* It is created and owned by Ellpeck and distributed
|
|
|
|
* under the Actually Additions License to be found at
|
2016-05-16 22:52:27 +02:00
|
|
|
* http://ellpeck.de/actaddlicense
|
2016-01-05 04:47:35 +01:00
|
|
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
|
|
|
*
|
2017-01-01 16:23:26 +01:00
|
|
|
* © 2015-2017 Ellpeck
|
2016-01-05 04:47:35 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
package de.ellpeck.actuallyadditions.mod.items;
|
|
|
|
|
2018-06-24 02:44:47 +02:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
|
2016-01-05 04:47:35 +01:00
|
|
|
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
|
2016-05-14 13:51:18 +02:00
|
|
|
import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient;
|
2018-05-10 11:38:58 +02:00
|
|
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
2016-01-05 04:47:35 +01:00
|
|
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemFoodBase;
|
|
|
|
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
|
|
|
|
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
|
|
|
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
|
2017-06-17 00:48:49 +02:00
|
|
|
import net.minecraft.client.util.ITooltipFlag;
|
2016-03-18 23:47:22 +01:00
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
2016-01-05 04:47:35 +01:00
|
|
|
import net.minecraft.init.Items;
|
2016-03-18 23:47:22 +01:00
|
|
|
import net.minecraft.init.MobEffects;
|
2016-01-05 04:47:35 +01:00
|
|
|
import net.minecraft.item.EnumAction;
|
|
|
|
import net.minecraft.item.EnumRarity;
|
|
|
|
import net.minecraft.item.Item;
|
|
|
|
import net.minecraft.item.ItemStack;
|
2018-06-24 02:44:47 +02:00
|
|
|
import net.minecraft.item.crafting.Ingredient;
|
2016-01-05 04:47:35 +01:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
import net.minecraft.potion.PotionEffect;
|
|
|
|
import net.minecraft.util.StringUtils;
|
|
|
|
import net.minecraft.world.World;
|
2016-01-07 18:20:59 +01:00
|
|
|
import net.minecraftforge.fml.common.Loader;
|
2016-01-05 04:47:35 +01:00
|
|
|
|
|
|
|
public class ItemCoffee extends ItemFoodBase{
|
|
|
|
|
|
|
|
public ItemCoffee(String name){
|
|
|
|
super(8, 5.0F, false, name);
|
|
|
|
this.setMaxDamage(3);
|
|
|
|
this.setAlwaysEdible();
|
|
|
|
this.setMaxStackSize(1);
|
|
|
|
this.setNoRepair();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void initIngredients(){
|
2018-06-24 02:44:47 +02:00
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new MilkIngredient(Ingredient.fromItem(Items.MILK_BUCKET)));
|
2016-01-05 04:47:35 +01:00
|
|
|
//Pam's Soy Milk (For Jemx because he's lactose intolerant. YER HAPPY NAO!?)
|
|
|
|
if(Loader.isModLoaded("harvestcraft")){
|
|
|
|
Item item = ItemUtil.getItemFromName("harvestcraft:soymilkItem");
|
|
|
|
if(item != null){
|
2018-06-24 02:44:47 +02:00
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new MilkIngredient(Ingredient.fromItem(item)));
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-24 02:44:47 +02:00
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromItems(Items.SUGAR), 4, new PotionEffect(MobEffects.SPEED, 30, 0)));
|
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromItems(Items.MAGMA_CREAM), 2, new PotionEffect(MobEffects.FIRE_RESISTANCE, 20, 0)));
|
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromStacks(new ItemStack(Items.FISH, 1, 3)), 2, new PotionEffect(MobEffects.WATER_BREATHING, 10, 0)));
|
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromItems(Items.GOLDEN_CARROT), 2, new PotionEffect(MobEffects.NIGHT_VISION, 30, 0)));
|
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromItems(Items.GHAST_TEAR), 3, new PotionEffect(MobEffects.REGENERATION, 5, 0)));
|
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromItems(Items.BLAZE_POWDER), 4, new PotionEffect(MobEffects.STRENGTH, 15, 0)));
|
|
|
|
ActuallyAdditionsAPI.addCoffeeMachineIngredient(new CoffeeIngredient(Ingredient.fromItems(Items.FERMENTED_SPIDER_EYE), 2, new PotionEffect(MobEffects.INVISIBILITY, 25, 0)));
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
|
2018-06-24 02:44:47 +02:00
|
|
|
@Nullable
|
2016-01-05 04:47:35 +01:00
|
|
|
public static CoffeeIngredient getIngredientFromStack(ItemStack stack){
|
2016-05-19 20:05:12 +02:00
|
|
|
for(CoffeeIngredient ingredient : ActuallyAdditionsAPI.COFFEE_MACHINE_INGREDIENTS){
|
2018-06-24 02:44:47 +02:00
|
|
|
if(ingredient.getInput().apply(stack)) return ingredient;
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2016-03-18 23:47:22 +01:00
|
|
|
public static void applyPotionEffectsFromStack(ItemStack stack, EntityLivingBase player){
|
2016-05-14 13:51:18 +02:00
|
|
|
PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack);
|
2016-02-01 20:39:11 +01:00
|
|
|
if(effects != null && effects.length > 0){
|
|
|
|
for(PotionEffect effect : effects){
|
2016-03-18 23:47:22 +01:00
|
|
|
player.addPotionEffect(new PotionEffect(effect.getPotion(), effect.getDuration()*20, effect.getAmplifier()));
|
2016-02-01 20:39:11 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-01-05 04:47:35 +01:00
|
|
|
@Override
|
2016-05-29 23:49:35 +02:00
|
|
|
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase player){
|
2016-01-05 04:47:35 +01:00
|
|
|
ItemStack theStack = stack.copy();
|
2016-01-07 21:41:28 +01:00
|
|
|
super.onItemUseFinish(stack, world, player);
|
2016-01-05 04:47:35 +01:00
|
|
|
applyPotionEffectsFromStack(stack, player);
|
|
|
|
theStack.setItemDamage(theStack.getItemDamage()+1);
|
|
|
|
if(theStack.getMaxDamage()-theStack.getItemDamage() < 0){
|
|
|
|
return new ItemStack(InitItems.itemMisc, 1, TheMiscItems.CUP.ordinal());
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
return theStack;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-29 23:49:35 +02:00
|
|
|
|
2016-01-05 04:47:35 +01:00
|
|
|
@Override
|
|
|
|
public EnumAction getItemUseAction(ItemStack stack){
|
2016-01-07 21:41:28 +01:00
|
|
|
return EnumAction.DRINK;
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getMetadata(int damage){
|
|
|
|
return damage;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean getShareTag(){
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-06-17 00:48:49 +02:00
|
|
|
public void addInformation(ItemStack stack, @Nullable World playerIn, List<String> tooltip, ITooltipFlag advanced){
|
2016-05-14 13:51:18 +02:00
|
|
|
PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack);
|
2016-01-05 04:47:35 +01:00
|
|
|
if(effects != null){
|
|
|
|
for(PotionEffect effect : effects){
|
2017-06-17 00:48:49 +02:00
|
|
|
tooltip.add(StringUtil.localize(effect.getEffectName())+" "+(effect.getAmplifier()+1)+", "+StringUtils.ticksToElapsedTime(effect.getDuration()*20));
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else{
|
2018-05-10 11:38:58 +02:00
|
|
|
tooltip.add(StringUtil.localize("tooltip."+ActuallyAdditions.MODID+".coffeeCup.noEffect"));
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public EnumRarity getRarity(ItemStack stack){
|
2016-01-07 21:41:28 +01:00
|
|
|
return EnumRarity.RARE;
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public static class MilkIngredient extends CoffeeIngredient{
|
|
|
|
|
2018-06-24 02:44:47 +02:00
|
|
|
public MilkIngredient(Ingredient ingredient){
|
|
|
|
super(ingredient, 0);
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean effect(ItemStack stack){
|
2016-05-14 13:51:18 +02:00
|
|
|
PotionEffect[] effects = ActuallyAdditionsAPI.methodHandler.getEffectsFromStack(stack);
|
2016-01-05 04:47:35 +01:00
|
|
|
ArrayList<PotionEffect> effectsNew = new ArrayList<PotionEffect>();
|
|
|
|
if(effects != null && effects.length > 0){
|
|
|
|
for(PotionEffect effect : effects){
|
|
|
|
if(effect.getAmplifier() > 0){
|
2016-03-18 23:47:22 +01:00
|
|
|
effectsNew.add(new PotionEffect(effect.getPotion(), effect.getDuration()+120, effect.getAmplifier()-1));
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
stack.setTagCompound(new NBTTagCompound());
|
|
|
|
if(effectsNew.size() > 0){
|
|
|
|
this.effects = effectsNew.toArray(new PotionEffect[effectsNew.size()]);
|
2016-05-14 13:51:18 +02:00
|
|
|
ActuallyAdditionsAPI.methodHandler.addEffectToStack(stack, this);
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
this.effects = null;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getExtraText(){
|
2018-05-10 11:38:58 +02:00
|
|
|
return StringUtil.localize("container.nei."+ActuallyAdditions.MODID+".coffee.extra.milk");
|
2016-01-05 04:47:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|