2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
3.7 KiB
Java

package com.zivilon.cinder_loe.items;
import com.zivilon.cinder_loe.LoECreativeTabs;
import com.zivilon.cinder_loe.potion.LoEPotions;
import lotr.common.item.LOTRItemMug;
import lotr.common.item.LOTRItemMug.Vessel;
import lotr.client.render.LOTRDrinkIcons;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class LoEItemMug extends LOTRItemMug {
public boolean is_toxic = false;
@SideOnly(Side.CLIENT)
public IIcon[] drinkIcons;
@SideOnly(Side.CLIENT)
public IIcon liquidIcon;
public LoEItemMug(boolean full, boolean food) {
super(full, food, false, 0.0F);
}
public LoEItemMug(float alc) {
this(true, false, true, alc);
}
public LoEItemMug(boolean full, boolean food, boolean brew, float alc) {
super(full, food, brew, alc);
setCreativeTab(LoECreativeTabs.tabFoodLoE);
}
public void setTextureNameFromUnlocalizedName() {
String textureName = getUnlocalizedName().substring("item.".length()); // Strip the "item." prefix
this.setTextureName(textureName);
}
public LoEItemMug addPotionEffect(int effect_id, int seconds) {
return (LoEItemMug)super.addPotionEffect(effect_id, seconds);
}
public LoEItemMug addPotionEffect(int effect_id, int seconds, int amplifier) {
this.potionEffects.add(new PotionEffect(effect_id, seconds * 20, amplifier));
return this;
}
public LoEItemMug setDrinkStats(int i, float f) {
return (LoEItemMug)super.setDrinkStats(i, f);
}
public void registerIcons(IIconRegister iconregister) {
if (this.isFullMug) {
this.drinkIcons = new IIcon[(Vessel.values()).length];
for (int i = 0; i < (Vessel.values()).length; i++) {
this.drinkIcons[i] = LOTRDrinkIcons.registerDrinkIcon(iconregister, this, getIconString(), (Vessel.values()[i]).name);
}
this.liquidIcon = LOTRDrinkIcons.registerLiquidIcon(iconregister, this, getIconString());
barrelGui_emptyBucketSlotIcon = iconregister.registerIcon("lotr:barrel_emptyBucketSlot");
barrelGui_emptyMugSlotIcon = iconregister.registerIcon("lotr:barrel_emptyMugSlot");
} else {
super.registerIcons(iconregister);
}
}
public IIcon getIconFromDamage(int i) {
if (this.isFullMug) {
if (i == -1)
return this.liquidIcon;
int vessel = (getVessel(i)).id;
return this.drinkIcons[vessel];
}
return super.getIconFromDamage(i);
}
public static Vessel getVessel(int damage) {
int i = damage / vesselMeta;
return Vessel.forMeta(i);
}
public LoEItemMug toxic() {
is_toxic = true;
return this;
}
public ItemStack onEaten(ItemStack itemstack, World world, EntityPlayer entityplayer) {
if (is_toxic)
increment_toxin(entityplayer);
return super.onEaten(itemstack, world, entityplayer);
}
public void increment_toxin(EntityPlayer player) {
int effect_duration = 7200; // 360 seconds * 20 ticks
int effect_potency = 0; // Default to level 1 effect
PotionEffect potion = player.getActivePotionEffect(LoEPotions.herbal_poisoning);
if (potion != null) effect_potency = potion.getAmplifier() + 1;
player.addPotionEffect(new PotionEffect(LoEPotions.herbal_poisoning.id, effect_duration, effect_potency));
}
}