aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle5
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java3
-rw-r--r--src/Java/gtPlusPlus/core/item/food/BaseItemMetaFood.java430
-rw-r--r--src/Java/gtPlusPlus/core/item/init/ItemsFoods.java42
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java19
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java12
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang11
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/0.pngbin0 -> 565 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/1.pngbin0 -> 548 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/2.pngbin0 -> 455 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/3.pngbin0 -> 556 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/4.pngbin0 -> 392 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/5.pngbin0 -> 447 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/6.pngbin0 -> 402 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/7.pngbin0 -> 562 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/food/MetaItem1/8.pngbin0 -> 447 bytes
16 files changed, 515 insertions, 7 deletions
diff --git a/build.gradle b/build.gradle
index f8260d8e38..fb19efaab6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -156,6 +156,8 @@ dependencies {
compile "codechicken:NotEnoughItems:1.7.10-1.0.5.120:dev"
compile "api.player:PlayerAPI:1.7.10-1.4"
+ compile "minetweaker:MineTweaker3:1.7.10-3.0.10:dev-full"
+
compile "com.enderio.core:EnderCore:1.7.10-0.2.0.39_beta:dev"
compile "com.enderio:EnderIO:1.7.10-2.3.0.430_beta:dev"
@@ -168,8 +170,9 @@ dependencies {
compileOnly "openmods:OpenModsLib:1.7.10-0.10:deobf"
compileOnly "openblocks:OpenBlocks:1.7.10-1.6-1.7.10:deobf"
- //compileOnly "micdoodle8.mods:GalacticraftCore:1.7-3.0.12.504:Dev"
//compileOnly "micdoodle8.mods:MicdoodleCore:1.7-3.0.12.504:Dev"
+ //compileOnly "micdoodle8.mods:GalacticraftCore:1.7-3.0.12.504:Dev"
+ //compileOnly "micdoodle8.mods:Galacticraft-Planets:1.7-3.0.12.504:Dev"
compileOnly "thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev"
compile "com.azanor.baubles:Baubles:1.7.10-1.0.1.10:deobf"
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index 354107147b..b0e98d389e 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -40,6 +40,7 @@ import gtPlusPlus.core.item.chemistry.RocketFuels;
import gtPlusPlus.core.item.chemistry.StandardBaseParticles;
import gtPlusPlus.core.item.crafting.ItemDummyResearch;
import gtPlusPlus.core.item.effects.RarityUncommon;
+import gtPlusPlus.core.item.food.BaseItemMetaFood;
import gtPlusPlus.core.item.general.BaseItemGrindle;
import gtPlusPlus.core.item.general.BufferCore;
import gtPlusPlus.core.item.general.ItemAirFilter;
@@ -367,6 +368,8 @@ public final class ModItems {
public static CoreItem itemExquisiteIndustrialDiamond;
+ public static BaseItemMetaFood itemMetaFood;
+
static {
Logger.INFO("Items!");
//Default item used when recipes fail, handy for debugging. Let's make sure they exist when this class is called upon.
diff --git a/src/Java/gtPlusPlus/core/item/food/BaseItemMetaFood.java b/src/Java/gtPlusPlus/core/item/food/BaseItemMetaFood.java
new file mode 100644
index 0000000000..d6922fbf92
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/food/BaseItemMetaFood.java
@@ -0,0 +1,430 @@
+package gtPlusPlus.core.item.food;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.minecraft.EntityUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemFood;
+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;
+
+public class BaseItemMetaFood extends ItemFood {
+
+ private static final HashMap<Integer, IIcon> mIconMap = new HashMap<Integer, IIcon>();
+ private static int mTotalMetaItems = 0;
+
+ /*
+ * 0 - Raw Human Meat
+ * 1 - Cooked Human Meat
+ * 2 - Raw Horse Meat
+ * 3 - Cooked Horse Meat
+ * 4 - Raw Wolf Meat
+ * 5 - Cooked Wolf Meat
+ * 6 - Raw Ocelot Meat
+ * 7 - Cooked Ocelot Meat
+ * 8 - Blaze Flesh
+ */
+
+ //listAllmeatraw
+ //listAllmeatcooked
+
+ public static void registerMetaFoods() {
+ registerNewMetaFood(0, "I wouldn't eat this unless I was starving", 2, 0, 64, getPotionEffectPackage(new EffectWeaknessModerate(80), new EffectSlownessModerate(80)), getOreDictNamesAsArrayList("listAllmeatraw"));
+ registerNewMetaFood(1, "Doesn't look any better cooked", 4, 1, 64, getPotionEffectPackage(new EffectWeaknessBasic(50), new EffectSlownessBasic(50)), getOreDictNamesAsArrayList("listAllmeatcooked"));
+ registerNewMetaFood(2, "", 2, 0, 64, getPotionEffectPackage(new EffectWeaknessBasic(30), new EffectSlownessBasic(30)), getOreDictNamesAsArrayList("listAllmeatraw"));
+ registerNewMetaFood(3, "", 4, 1, 64, getOreDictNamesAsArrayList("listAllmeatcooked"));
+ registerNewMetaFood(4, "", 2, 0, 64, getPotionEffectPackage(new EffectWeaknessBasic(25), new EffectSlownessBasic(30)), getOreDictNamesAsArrayList("listAllmeatraw"));
+ registerNewMetaFood(5, "", 4, 1, 64, getOreDictNamesAsArrayList("listAllmeatcooked"));
+ registerNewMetaFood(6, "", 2, 0, 64, getPotionEffectPackage(new EffectWeaknessBasic(30), new EffectSlownessBasic(25)), getOreDictNamesAsArrayList("listAllmeatraw"));
+ registerNewMetaFood(7, "", 4, 1, 64, getOreDictNamesAsArrayList("listAllmeatcooked"));
+ registerNewMetaFood(8, "Warm to the touch", EnumRarity.uncommon, 4, 1, 64, new AutoMap<PotionEffectPackage>(), new setOnFire(), getOreDictNamesAsArrayList("listAllmeatcooked"));
+ }
+
+ private static final HashMap<Integer, Integer> mMaxStackSizeMap = new HashMap<Integer, Integer>();
+ private static final HashMap<Integer, String> mTooltipMap = new HashMap<Integer, String>();
+ private static final HashMap<Integer, EnumRarity> mRarityMap = new HashMap<Integer, EnumRarity>();
+ private static final HashMap<Integer, Integer> mHealAmountMap = new HashMap<Integer, Integer>();
+ private static final HashMap<Integer, Float> mSaturationAmountMap = new HashMap<Integer, Float>();
+ private static final HashMap<Integer, AutoMap<PotionEffectPackage>> mPotionEffectsMap = new HashMap<Integer, AutoMap<PotionEffectPackage>>();
+ private static final HashMap<Integer, Boolean> mHasSpecialBehaviourMap = new HashMap<Integer, Boolean>();
+ private static final HashMap<Integer, SpecialFoodBehaviour> mSpecialBehaviourMap = new HashMap<Integer, SpecialFoodBehaviour>();
+ private static final HashMap<Integer, ArrayList<String>> mOreDictNames = new HashMap<Integer, ArrayList<String>>();
+
+
+ public static void registerNewMetaFood(final int aMetaID, String aTooltip, final int aHealAmount, final float aSaturationModifier, final int aMaxStacksize) {
+ registerNewMetaFood(aMetaID, aTooltip, EnumRarity.common, aHealAmount, aSaturationModifier, aMaxStacksize, new AutoMap<PotionEffectPackage>(), null, new ArrayList<String>());
+ }
+
+ public static void registerNewMetaFood(final int aMetaID, String aTooltip, final int aHealAmount, final float aSaturationModifier, final int aMaxStacksize, final ArrayList<String> aOreDictNames) {
+ registerNewMetaFood(aMetaID, aTooltip, EnumRarity.common, aHealAmount, aSaturationModifier, aMaxStacksize, new AutoMap<PotionEffectPackage>(), null, aOreDictNames);
+ }
+
+
+ public static void registerNewMetaFood(final int aMetaID, String aTooltip, final int aHealAmount, final float aSaturationModifier, final int aMaxStacksize, final AutoMap<PotionEffectPackage> aPotionEffects) {
+ registerNewMetaFood(aMetaID, aTooltip, EnumRarity.common, aHealAmount, aSaturationModifier, aMaxStacksize, new AutoMap<PotionEffectPackage>(), null, new ArrayList<String>());
+ }
+
+ public static void registerNewMetaFood(final int aMetaID, String aTooltip, final int aHealAmount, final float aSaturationModifier, final int aMaxStacksize, final AutoMap<PotionEffectPackage> aPotionEffects, final ArrayList<String> aOreDictNames) {
+ registerNewMetaFood(aMetaID, aTooltip, EnumRarity.common, aHealAmount, aSaturationModifier, aMaxStacksize, aPotionEffects, null, aOreDictNames);
+ }
+
+ public static void registerNewMetaFood(final int aMetaID, String aTooltip, EnumRarity aRarity, final int aHealAmount, final float aSaturationModifier, final int aMaxStacksize, final AutoMap<PotionEffectPackage> aPotionEffects, final SpecialFoodBehaviour aSpecialBehaviour) {
+ registerNewMetaFood(aMetaID, aTooltip, EnumRarity.common, aHealAmount, aSaturationModifier, aMaxStacksize, aPotionEffects, null, new ArrayList<String>());
+ }
+
+ public static void registerNewMetaFood(final int aMetaID, String aTooltip, EnumRarity aRarity, final int aHealAmount, final float aSaturationModifier, final int aMaxStacksize, final AutoMap<PotionEffectPackage> aPotionEffects, final SpecialFoodBehaviour aSpecialBehaviour, final ArrayList<String> aOreDictNames) {
+ mTotalMetaItems++;
+ mMaxStackSizeMap.put(aMetaID, aMaxStacksize);
+ mTooltipMap.put(aMetaID, aTooltip);
+ mRarityMap.put(aMetaID, aRarity);
+ mHealAmountMap.put(aMetaID, aHealAmount);
+ mSaturationAmountMap.put(aMetaID, aSaturationModifier);
+ mPotionEffectsMap.put(aMetaID, aPotionEffects);
+ mHasSpecialBehaviourMap.put(aMetaID, (aSpecialBehaviour != null));
+ if (aSpecialBehaviour != null) {
+ mSpecialBehaviourMap.put(aMetaID, aSpecialBehaviour);
+ }
+ mOreDictNames.put(aMetaID, aOreDictNames);
+ registerFoodToOreDict(aMetaID);
+ }
+
+ private static void registerFoodToOreDict(int aMetaID) {
+ ArrayList<String> aOreDictNames = mOreDictNames.get(aMetaID);
+ if (aOreDictNames != null && !aOreDictNames.isEmpty()) {
+ ItemStack aFoodStack = ItemUtils.simpleMetaStack(ModItems.itemMetaFood, aMetaID, 1);
+ for (String aOreName : aOreDictNames) {
+ ItemUtils.addItemToOreDictionary(aFoodStack, aOreName);
+ }
+ }
+ }
+
+
+ public BaseItemMetaFood() {
+ super(0, 0, false);
+ this.setHasSubtypes(true);
+ this.setNoRepair();
+ this.setMaxStackSize(64);
+ this.setMaxDamage(0);
+ this.setUnlocalizedName("BasicMetaFood");
+ this.setCreativeTab(AddToCreativeTab.tabMisc);
+ GameRegistry.registerItem(this, this.getUnlocalizedName());
+ BaseItemMetaFood.registerMetaFoods();
+ }
+
+ private static final int getMetaKey(ItemStack aStack) {
+ return aStack.getItemDamage();
+ }
+
+ // Heal Amount
+ public int func_150905_g(ItemStack aStack) {
+ return mHealAmountMap.get(getMetaKey(aStack));
+ }
+
+ // Saturation Amount
+ public float func_150906_h(ItemStack aStack) {
+ return mSaturationAmountMap.get(getMetaKey(aStack));
+ }
+
+ // Whether wolves like this food, sadly doesn't support meta items
+ public boolean isWolfsFavoriteMeat() {
+ return false;
+ }
+
+ @Override
+ protected void onFoodEaten(final ItemStack aStack, final World aWorld, final EntityPlayer aPlayer) {
+ //super.onFoodEaten(stack, world, player);
+ AutoMap<PotionEffectPackage> aPotionEffects = mPotionEffectsMap.get(getMetaKey(aStack));
+ if (!aWorld.isRemote && aPotionEffects != null && aPotionEffects.size() > 0) {
+ for (PotionEffectPackage aFoodEffect : aPotionEffects) {
+ if (MathUtils.randInt(0, 100) <= aFoodEffect.getChance() || aFoodEffect.getChance() == 100) {
+ PotionEffect aEffect = aFoodEffect.getEffect();
+ if (aEffect != null && aEffect.getPotionID() > 0) {
+ aPlayer.addPotionEffect(new PotionEffect(aEffect.getPotionID(), aEffect.getDuration() * 20, aEffect.getAmplifier(), aEffect.getIsAmbient()));
+ }
+ }
+ }
+ }
+
+ boolean aHasEpcialBehaviour = mHasSpecialBehaviourMap.get(getMetaKey(aStack));
+ if (!aWorld.isRemote && aHasEpcialBehaviour) {
+ SpecialFoodBehaviour aBehaviour = mSpecialBehaviourMap.get(getMetaKey(aStack));
+ if (aBehaviour != null) {
+ aBehaviour.doBehaviour(aPlayer);
+ }
+ }
+ }
+
+ @Override
+ public ItemStack onEaten(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ return super.onEaten(aStack, aWorld, aPlayer);
+ }
+
+
+ @Override
+ public int getItemStackLimit(ItemStack aStack) {
+ return mMaxStackSizeMap.get(getMetaKey(aStack));
+ }
+
+
+ @Override
+ public boolean isDamageable() {
+ return false;
+ }
+
+ @Override
+ public boolean shouldRotateAroundWhenRendering() {
+ return super.shouldRotateAroundWhenRendering();
+ }
+
+ @Override
+ public void onUpdate(ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) {
+ super.onUpdate(p_77663_1_, p_77663_2_, p_77663_3_, p_77663_4_, p_77663_5_);
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack aStack) {
+ return super.getItemStackDisplayName(aStack);
+ }
+
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer p_77624_2_, List aList, boolean p_77624_4_) {
+ try {
+ String aTooltip = mTooltipMap.get(getMetaKey(aStack));
+ if (aTooltip != null && aTooltip.length() > 0) {
+ aList.add(aTooltip);
+ }
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
+ super.addInformation(aStack, p_77624_2_, aList, p_77624_4_);
+ }
+
+ @Override
+ public EnumRarity getRarity(ItemStack aStack) {
+ return mRarityMap.get(getMetaKey(aStack));
+ }
+
+ @Override
+ public boolean requiresMultipleRenderPasses() {
+ return false;
+ }
+
+ @Override
+ public void getSubItems(Item aItem, CreativeTabs p_150895_2_, List aList) {
+ for (int i=0;i<mIconMap.size();i++) {
+ aList.add(ItemUtils.simpleMetaStack(aItem, i, 1));
+ }
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) {
+ return false;
+ }
+
+ @Override
+ public boolean isRepairable() {
+ return false;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
+ return false;
+ }
+
+ @Override
+ public int getDisplayDamage(ItemStack stack) {
+ return stack.getItemDamage();
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack stack) {
+ return false;
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getItemEnchantability(ItemStack stack) {
+ return 0;
+ }
+
+ @Override
+ public void registerIcons(final IIconRegister u) {
+ for (int i=0;i<mTotalMetaItems;i++) {
+ String aPath = CORE.MODID + ":" + "food/MetaItem1/"+i;
+ mIconMap.put(i, u.registerIcon(aPath));
+ }
+ }
+
+ @Override
+ public IIcon getIconFromDamageForRenderPass(final int damage, final int pass) {
+ return mIconMap.get(damage);
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int damage) {
+ return mIconMap.get(damage);
+ }
+
+ @Override
+ public IIcon getIcon(ItemStack aStack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) {
+ return mIconMap.get(getMetaKey(aStack));
+ }
+
+ @Override
+ public IIcon getIcon(ItemStack aStack, int pass) {
+ return mIconMap.get(getMetaKey(aStack));
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack stack) {
+ return super.getUnlocalizedName() + "." + stack.getItemDamage();
+ }
+
+ private static class PotionEffectPackage {
+
+ private final PotionEffect mEffect;
+ private final int mChance;
+
+ private PotionEffectPackage(PotionEffect aEffect, int aChance) {
+ mEffect = aEffect;
+ mChance = aChance;
+ }
+
+ public PotionEffect getEffect() {
+ return this.mEffect;
+ }
+
+ public int getChance() {
+ return this.mChance;
+ }
+
+ }
+
+ private static AutoMap<PotionEffectPackage> getPotionEffectPackage(PotionEffectPackage... aEffects){
+ AutoMap<PotionEffectPackage> aPackage = new AutoMap<PotionEffectPackage>();
+ if (aEffects != null && aEffects.length > 0) {
+ for (PotionEffectPackage aEffect : aEffects) {
+ aPackage.put(aEffect);
+ }
+ }
+ return aPackage;
+ }
+
+ private static ArrayList<String> getOreDictNamesAsArrayList(String... aOreDictNames){
+ ArrayList<String> aPackage = new ArrayList<String>();
+ if (aOreDictNames != null && aOreDictNames.length > 0) {
+ for (String aEffect : aOreDictNames) {
+ aPackage.add(aEffect);
+ }
+ }
+ return aPackage;
+ }
+
+ private static class EffectWeaknessBasic extends PotionEffectPackage {
+
+ protected EffectWeaknessBasic(int aChance) {
+ super(new PotionEffect(Potion.weakness.getId(), 1, 20), aChance);
+ }
+
+ }
+
+ private static class EffectWeaknessModerate extends PotionEffectPackage {
+
+ protected EffectWeaknessModerate(int aChance) {
+ super(new PotionEffect(Potion.weakness.getId(), 2, 40), aChance);
+ }
+
+ }
+
+ private static class EffectWeaknessSevere extends PotionEffectPackage {
+
+ protected EffectWeaknessSevere(int aChance) {
+ super(new PotionEffect(Potion.weakness.getId(), 3, 60), aChance);
+ }
+
+ }
+
+ private static class EffectSlownessBasic extends PotionEffectPackage {
+
+ protected EffectSlownessBasic(int aChance) {
+ super(new PotionEffect(Potion.moveSlowdown.getId(), 1, 20), aChance);
+ }
+
+ }
+
+ private static class EffectSlownessModerate extends PotionEffectPackage {
+
+ protected EffectSlownessModerate(int aChance) {
+ super(new PotionEffect(Potion.moveSlowdown.getId(), 2, 40), aChance);
+ }
+
+ }
+
+ private static class EffectSlownessSevere extends PotionEffectPackage {
+
+ protected EffectSlownessSevere(int aChance) {
+ super(new PotionEffect(Potion.moveSlowdown.getId(), 3, 60), aChance);
+ }
+
+ }
+
+
+
+
+ private static abstract class SpecialFoodBehaviour {
+
+ protected final int mChance;
+
+ public SpecialFoodBehaviour(int aChance) {
+ mChance = aChance;
+ }
+
+ public final void doBehaviour(EntityPlayer aPlayer) {
+ if (aPlayer != null && !aPlayer.worldObj.isRemote) {
+ if (MathUtils.randInt(0, 100) < mChance || mChance == 100) {
+ behaviour(aPlayer);
+ }
+ }
+ }
+
+ protected abstract void behaviour(EntityPlayer aPlayer);
+
+ }
+
+
+ private static class setOnFire extends SpecialFoodBehaviour {
+
+ public setOnFire() {
+ super(100);
+ }
+
+ @Override
+ public void behaviour(EntityPlayer aPlayer) {
+ EntityUtils.setEntityOnFire(aPlayer, 5);
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java b/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java
index 94ebb3ffcb..7f1ba720cc 100644
--- a/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java
+++ b/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java
@@ -1,15 +1,22 @@
package gtPlusPlus.core.item.init;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
-
import gregtech.api.util.GT_OreDictUnificator;
-
import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.item.base.foods.BaseItemFood;
import gtPlusPlus.core.item.base.foods.BaseItemHotFood;
+import gtPlusPlus.core.item.food.BaseItemMetaFood;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.EntityUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
+import net.minecraft.entity.monster.EntityBlaze;
+import net.minecraft.entity.passive.EntityHorse;
+import net.minecraft.entity.passive.EntityOcelot;
+import net.minecraft.entity.passive.EntityVillager;
+import net.minecraft.entity.passive.EntityWolf;
+import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
public class ItemsFoods {
@@ -40,6 +47,33 @@ public class ItemsFoods {
ModItems.itemHotFoodCurriedSausages = new BaseItemHotFood("itemHotFoodCurriedSausages", 1, 0.5f, "Curried Sausages", 240, ModItems.itemFoodCurriedSausages);
GT_OreDictUnificator.registerOre("foodHotCurriedSausages", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemHotFoodCurriedSausages", 1));
+ ModItems.itemMetaFood = new BaseItemMetaFood();
+ addCookingRecipes();
+ addFoodDropsToMobs();
+
+ }
+
+ private static ItemStack getMetaFoodStack(int aID) {
+ return ItemUtils.simpleMetaStack(ModItems.itemMetaFood, aID, 1);
+ }
+
+ private static void addCookingRecipes() {
+
+ RecipeUtils.addSmeltingRecipe(getMetaFoodStack(0), getMetaFoodStack(1), 0.4F);
+ RecipeUtils.addSmeltingRecipe(getMetaFoodStack(2), getMetaFoodStack(3), 0.35F);
+ RecipeUtils.addSmeltingRecipe(getMetaFoodStack(4), getMetaFoodStack(5), 0.35F);
+ RecipeUtils.addSmeltingRecipe(getMetaFoodStack(6), getMetaFoodStack(7), 0.35F);
+
+ }
+
+ private static void addFoodDropsToMobs() {
+
+ EntityUtils.registerDropsForMob(EntityVillager.class, getMetaFoodStack(0), 2, 1500);
+ EntityUtils.registerDropsForMob(EntityHorse.class, getMetaFoodStack(2), 4, 4000);
+ EntityUtils.registerDropsForMob(EntityWolf.class, getMetaFoodStack(4), 2, 4000);
+ EntityUtils.registerDropsForMob(EntityOcelot.class, getMetaFoodStack(6), 2, 4000);
+ EntityUtils.registerDropsForMob(EntityBlaze.class, getMetaFoodStack(8), 1, 500);
+
}
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
index 49aa3a1306..bba2e55bc2 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
@@ -29,8 +29,23 @@ import net.minecraft.world.biome.BiomeGenBase;
public class EntityUtils {
- public static void setEntityOnFire(final Entity entity, final int length){
- entity.setFire(length);
+ public static void setEntityOnFire(final Entity aEntity, final int length){
+ if (!isEntityImmuneToFire(aEntity)) {
+ aEntity.setFire(length);
+ }
+ }
+
+ public static boolean isEntityOnFire(final Entity aEntity) {
+ Field aIsOnFire = ReflectionUtils.getField(Entity.class, "fire");
+ if (aIsOnFire != null) {
+ int aFireTime = (int) ReflectionUtils.getFieldValue(aIsOnFire, aEntity);
+ return aFireTime > 0;
+ }
+ return false;
+ }
+
+ public static boolean isEntityImmuneToFire(Entity aEntity) {
+ return aEntity.isImmuneToFire();
}
public static int getFacingDirection(final Entity entity){
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java
index 13bc0c9382..56772f0dc7 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/RecipeUtils.java
@@ -20,6 +20,7 @@ import gtPlusPlus.api.objects.minecraft.ShapedRecipe;
import gtPlusPlus.core.handler.COMPAT_HANDLER;
import gtPlusPlus.core.handler.Recipes.LateRegistrationHandler;
import gtPlusPlus.core.handler.Recipes.RegistrationHandler;
+import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import net.minecraft.item.Item;
@@ -632,5 +633,16 @@ public static int mInvalidID = 1;
}
+ public static void addSmeltingRecipe(ItemStack aStackInput, ItemStack aStackOutput) {
+ addSmeltingRecipe(aStackInput, aStackOutput, 0f);
+ }
+
+ public static void addSmeltingRecipe(ItemStack aStackInput, ItemStack aStackOutput, float aXpGained) {
+
+ GameRegistry.addSmelting(aStackInput, aStackOutput, aXpGained);
+
+ }
+
+
}
diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang
index 6e1b64cc9a..7713e74566 100644
--- a/src/resources/assets/miscutils/lang/en_US.lang
+++ b/src/resources/assets/miscutils/lang/en_US.lang
@@ -3113,3 +3113,14 @@ item.BasicAlgaeItem.6.name=Algae Spore (VII)
//Added17/01/20
item.BasicGenericChemItem.6.name=Pink Metal Catalyst
+
+//Added23/03/20
+item.BasicMetaFood.0.name=Raw Human Meat
+item.BasicMetaFood.1.name=Cooked Human Meat
+item.BasicMetaFood.2.name=Raw Horse Meat
+item.BasicMetaFood.3.name=Cooked Horse Meat
+item.BasicMetaFood.4.name=Raw Wolf Meat
+item.BasicMetaFood.5.name=Cooked Wolf Meat
+item.BasicMetaFood.6.name=Raw Ocelot Meat
+item.BasicMetaFood.7.name=Cooked Ocelot Meat
+item.BasicMetaFood.8.name=Blaze Flesh
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/0.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/0.png
new file mode 100644
index 0000000000..944ab47126
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/0.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/1.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/1.png
new file mode 100644
index 0000000000..2d235ca65d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/1.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/2.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/2.png
new file mode 100644
index 0000000000..ec81acba2c
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/2.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/3.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/3.png
new file mode 100644
index 0000000000..1fc103297a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/3.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/4.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/4.png
new file mode 100644
index 0000000000..f32a00069e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/4.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/5.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/5.png
new file mode 100644
index 0000000000..2497c88e2d
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/5.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/6.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/6.png
new file mode 100644
index 0000000000..083db84ef1
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/6.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/7.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/7.png
new file mode 100644
index 0000000000..27927d0db6
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/7.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/food/MetaItem1/8.png b/src/resources/assets/miscutils/textures/items/food/MetaItem1/8.png
new file mode 100644
index 0000000000..7013c41d6b
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/food/MetaItem1/8.png
Binary files differ