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
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));
|
|
}
|
|
}
|