diff options
Diffstat (limited to 'src/Java/miscutil/core/item/base')
4 files changed, 155 insertions, 6 deletions
diff --git a/src/Java/miscutil/core/item/base/BaseItemHotFood.java b/src/Java/miscutil/core/item/base/BaseItemHotFood.java new file mode 100644 index 0000000000..1f60059fd9 --- /dev/null +++ b/src/Java/miscutil/core/item/base/BaseItemHotFood.java @@ -0,0 +1,77 @@ +package miscutil.core.item.base; + +import java.util.List; + +import miscutil.core.item.base.foods.BaseItemFood; +import miscutil.core.util.Utils; +import miscutil.core.util.item.UtilsItems; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class BaseItemHotFood extends BaseItemFood{ + + protected String materialName; + protected String unlocalName; + protected int cooldownTime; + protected Item output; + + public BaseItemHotFood(String unlocalizedName, int healAmount, float healSaturation, String foodName, int timeToCoolInSeconds, Item cooledFood) { + super(unlocalizedName, healAmount, healSaturation, false); + this.unlocalName = unlocalizedName; + this.cooldownTime = timeToCoolInSeconds * 20; + this.materialName = foodName; + this.output = cooledFood; + this.setMaxStackSize(1); + } + + @Override + public ItemStack onEaten(ItemStack iStack, World world, EntityPlayer player) { + return super.onEaten(iStack, world, player); + } + + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + //Utils.LOG_INFO("Item Damage: "+iStack.getItemDamage()+" Max Damage: "+iStack.getMaxDamage()); + if (!world.isRemote){ + if(iStack.getItemDamage() == cooldownTime) { + if (entityHolding instanceof EntityPlayer){ + Utils.LOG_INFO("Foods Done."); + ((EntityPlayer) entityHolding).inventory.addItemStackToInventory(UtilsItems.getSimpleStack(output)); + ((EntityPlayer) entityHolding).inventory.consumeInventoryItem(this); + } + }else if(iStack.getItemDamage() < cooldownTime){ + iStack.setItemDamage(iStack.getItemDamage() + 1); + } + if(Utils.divideXintoY(iStack.getItemDamage(), 150)){ + entityHolding.attackEntityFrom(DamageSource.onFire, 1); + } + + + } + super.onUpdate(iStack, world, entityHolding, p_77663_4_, p_77663_5_); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) { + if (materialName != null && materialName != "" && !materialName.equals("")){ + list.add(EnumChatFormatting.GRAY+"Warning: Very hot! Avoid direct handling.."); + list.add(EnumChatFormatting.GRAY+"This food has "+(((int) stack.getMaxDamage()-(int) stack.getItemDamage())/20)+" seconds left."); + } + super.addInformation(stack, aPlayer, list, bool); + } + + public final String getMaterialName() { + return materialName; + } + + @Override + public int getColorFromItemStack(ItemStack stack, int HEX_OxFFFFFF) { + return Utils.rgbtoHexValue(255, 128, 128); + + } +} diff --git a/src/Java/miscutil/core/item/base/foods/BaseItemFood.java b/src/Java/miscutil/core/item/base/foods/BaseItemFood.java new file mode 100644 index 0000000000..1b67fce1ae --- /dev/null +++ b/src/Java/miscutil/core/item/base/foods/BaseItemFood.java @@ -0,0 +1,39 @@ +package miscutil.core.item.base.foods; + +import miscutil.core.creative.AddToCreativeTab; +import miscutil.core.lib.CORE; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import cpw.mods.fml.common.registry.GameRegistry; + +public class BaseItemFood extends ItemFood { + + private PotionEffect[] effects; + + public BaseItemFood(String unlocalizedName, int healAmount, float saturationModifier, boolean wolvesFavorite, PotionEffect... effects) { + super(healAmount, saturationModifier, wolvesFavorite); + this.setUnlocalizedName(unlocalizedName); + this.setTextureName(CORE.MODID + ":" + unlocalizedName); + this.setCreativeTab(AddToCreativeTab.tabMisc); + this.effects = effects; + GameRegistry.registerItem(this, unlocalizedName); + } + + @Override + protected void onFoodEaten(ItemStack stack, World world, EntityPlayer player) { + super.onFoodEaten(stack, world, player); + + for (int i = 0; i < effects.length; i ++) { + if (!world.isRemote && effects[i] != null && effects[i].getPotionID() > 0) + player.addPotionEffect(new PotionEffect(this.effects[i].getPotionID(), + this.effects[i].getDuration(), this.effects[i].getAmplifier(), + this.effects[i].getIsAmbient() + ) + ); + } + } + +}
\ No newline at end of file diff --git a/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java b/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java index 95da94db62..dee7786f6f 100644 --- a/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java +++ b/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java @@ -41,6 +41,12 @@ public class BaseItemIngot extends Item{ } @Override + public String getItemStackDisplayName(ItemStack p_77653_1_) { + + return (materialName+ " Ingot"); + } + + @Override public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) { if (materialName != null && materialName != "" && !materialName.equals("") && !unlocalName.contains("HotIngot") && !unlocalName.toLowerCase().contains("raisinbread")){ list.add(EnumChatFormatting.GRAY+"A solid ingot of " + materialName + "."); diff --git a/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java b/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java index 89ceebe922..4ec6e9891d 100644 --- a/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java +++ b/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java @@ -1,20 +1,25 @@ package miscutil.core.item.base.ingots; import gregtech.api.enums.GT_Values; -import gregtech.api.util.GT_Utility; import java.util.List; import miscutil.core.lib.CORE; import miscutil.core.util.Utils; import miscutil.core.util.UtilsText; +import miscutil.core.util.item.UtilsItems; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; public class BaseItemIngotHot extends BaseItemIngot{ - + private ItemStack outputIngot; + private int tickCounter = 0; + private int tickCounterMax = 200; public BaseItemIngotHot(String unlocalizedName, String materialName, ItemStack coldIngot) { super(unlocalizedName, materialName, Utils.rgbtoHexValue(225, 225, 225)); @@ -22,21 +27,43 @@ public class BaseItemIngotHot extends BaseItemIngot{ this.outputIngot = coldIngot; generateRecipe(); } + + @Override + public String getItemStackDisplayName(ItemStack p_77653_1_) { + + return ("Hot "+materialName+ " Ingot"); + } @Override public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) { if (materialName != null && materialName != "" && !materialName.equals("")){ - list.add(EnumChatFormatting.GRAY+"A "+UtilsText.red.colour()+"burning hot"+UtilsText.lightGray.colour()+" ingot of " + materialName + "."); + list.add(EnumChatFormatting.GRAY+"A "+UtilsText.red.colour()+"burning hot"+UtilsText.lightGray.colour()+" ingot of " + materialName + "."); } super.addInformation(stack, aPlayer, list, bool); } - + @Override public int getColorFromItemStack(ItemStack stack, int HEX_OxFFFFFF) { return Utils.rgbtoHexValue(225, 225, 225); } - + private void generateRecipe(){ - GT_Values.RA.addVacuumFreezerRecipe(GT_Utility.copyAmount(1L, new Object[]{this}), GT_Utility.copyAmount(1L, new Object[]{outputIngot}), 500); + GT_Values.RA.addVacuumFreezerRecipe(UtilsItems.getSimpleStack(this), outputIngot.copy(), 500); + } + + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if(tickCounter < tickCounterMax){ + tickCounter++; + } + else if(tickCounter == tickCounterMax){ + entityHolding.attackEntityFrom(DamageSource.onFire, 1); + tickCounter = 0; + } + super.onUpdate(iStack, world, entityHolding, p_77663_4_, p_77663_5_); + } } + + } |