From 0eb71db3a6d68d67be245386260e112da0150873 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 25 Nov 2021 22:54:00 +0100 Subject: [PATCH] radaway recipes, simplified IV bag code --- .../com/hbm/crafting/ConsumableRecipes.java | 8 ++--- src/main/java/com/hbm/items/ModItems.java | 31 +++++++++++++------ .../items/special/ItemSimpleConsumable.java | 19 ++++++++++++ 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 1def4dc05..c7697d7d7 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -131,12 +131,12 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); //IV Bags - CraftingManager.addRecipeAuto(new ItemStack(ModItems.iv_blood, 4), new Object[] { "S", "I", "S", 'S', ModItems.plate_polymer, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.iv_empty, 4), new Object[] { "S", "I", "S", 'S', ModItems.plate_polymer, 'I', IRON.plate() }); //Radaway - CraftingManager.addRecipeAuto(new ItemStack(ModItems.radaway, 1), new Object[] { "S", "M", "W", 'S', ModItems.plate_polymer, 'M', ModBlocks.mush, 'W', Items.potionitem }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.radaway_strong, 1), new Object[] { "S", "M", "W", 'S', Items.pumpkin_seeds, 'M', ModBlocks.mush, 'W', ModItems.radaway }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.radaway_flush, 1), new Object[] { "S", "M", "W", 'S', I.dust(), 'M', ModBlocks.mush, 'W', ModItems.radaway_strong }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.radaway, 1), new Object[] { ModItems.iv_blood, COAL.dust(), Items.pumpkin_seeds }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.radaway_strong, 1), new Object[] { ModItems.radaway, ModBlocks.mush }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.radaway_flush, 1), new Object[] { ModItems.radaway_strong, I.dust() }); //Cladding CraftingManager.addShapelessAuto(new ItemStack(ModItems.cladding_paint, 1), new Object[] { PB.nugget(), PB.nugget(), PB.nugget(), PB.nugget(), Items.clay_ball, Items.glass_bottle }); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1c4912b50..379cfb8b8 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3268,20 +3268,31 @@ public class ModItems { syringe_mkunicorn = new ItemSyringe().setUnlocalizedName("syringe_mkunicorn").setFull3D().setCreativeTab(null).setTextureName(RefStrings.MODID + ":syringe_mkunicorn"); iv_empty = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { - stack.stackSize--; + ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.syringe", new ItemStack(ModItems.iv_blood)); user.attackEntityFrom(DamageSource.magic, 5F); - ItemSimpleConsumable.tryAddItem(user, new ItemStack(ModItems.iv_blood)); //are references resolved when the lambda is created or when it is called? must run some tests on this }).setUnlocalizedName("iv_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_empty"); + iv_blood = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { - stack.stackSize--; + ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.radaway", new ItemStack(ModItems.iv_empty)); user.heal(5F); - ItemSimpleConsumable.tryAddItem(user, new ItemStack(ModItems.iv_empty)); - }).setUnlocalizedName("iv_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_blood"); + }).setUnlocalizedName("iv_blood").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_blood"); + + radaway = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { + ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.radaway", new ItemStack(ModItems.iv_empty)); + user.addPotionEffect(new PotionEffect(HbmPotion.radaway.id, 14, 9)); + }).setUnlocalizedName("radaway").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radaway"); + + radaway_strong = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { + ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.radaway", new ItemStack(ModItems.iv_empty)); + ItemSimpleConsumable.addPotionEffect(user, HbmPotion.radaway, 14, 9); + }).setUnlocalizedName("radaway_strong").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radaway_strong"); + + radaway_flush = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { + ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.radaway", new ItemStack(ModItems.iv_empty)); + ItemSimpleConsumable.addPotionEffect(user, HbmPotion.radaway, 50, 19); + }).setUnlocalizedName("radaway_flush").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radaway_flush"); med_bag = new ItemSyringe().setUnlocalizedName("med_bag").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":med_bag"); - radaway = new ItemSyringe().setUnlocalizedName("radaway").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radaway"); - radaway_strong = new ItemSyringe().setUnlocalizedName("radaway_strong").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radaway_strong"); - radaway_flush = new ItemSyringe().setUnlocalizedName("radaway_flush").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radaway_flush"); radx = new ItemPill(0).setUnlocalizedName("radx").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radx"); siox = new ItemPill(0).setUnlocalizedName("siox").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":siox"); xanax = new ItemPill(0).setUnlocalizedName("xanax").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":xanax_2"); @@ -6268,9 +6279,9 @@ public class ModItems { //Universal Tank GameRegistry.registerItem(fluid_tank_empty, fluid_tank_empty.getUnlocalizedName()); GameRegistry.registerItem(fluid_tank_full, fluid_tank_full.getUnlocalizedName()); - GameRegistry.registerItem(fluid_barrel_empty, fluid_barrel_empty.getUnlocalizedName()); - GameRegistry.registerItem(fluid_tank_lead_full, fluid_tank_lead_full.getUnlocalizedName()); GameRegistry.registerItem(fluid_tank_lead_empty, fluid_tank_lead_empty.getUnlocalizedName()); + GameRegistry.registerItem(fluid_tank_lead_full, fluid_tank_lead_full.getUnlocalizedName()); + GameRegistry.registerItem(fluid_barrel_empty, fluid_barrel_empty.getUnlocalizedName()); GameRegistry.registerItem(fluid_barrel_full, fluid_barrel_full.getUnlocalizedName()); GameRegistry.registerItem(fluid_barrel_infinite, fluid_barrel_infinite.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemSimpleConsumable.java b/src/main/java/com/hbm/items/special/ItemSimpleConsumable.java index 56b46eae7..bdd3f1b60 100644 --- a/src/main/java/com/hbm/items/special/ItemSimpleConsumable.java +++ b/src/main/java/com/hbm/items/special/ItemSimpleConsumable.java @@ -4,12 +4,15 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import com.hbm.items.ModItems; +import com.hbm.potion.HbmPotion; import com.hbm.util.Tuple.Pair; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class ItemSimpleConsumable extends Item { @@ -44,6 +47,22 @@ public class ItemSimpleConsumable extends Item { return false; } + public static void giveSoundAndDecrement(ItemStack stack, EntityLivingBase entity, String sound, ItemStack container) { + stack.stackSize--; + entity.worldObj.playSoundAtEntity(entity, sound, 1.0F, 1.0F); + ItemSimpleConsumable.tryAddItem(entity, container); + } + + public static void addPotionEffect(EntityLivingBase entity, Potion effect, int duration, int level) { + + if(!entity.isPotionActive(effect)) { + entity.addPotionEffect(new PotionEffect(effect.id, duration, level)); + } else { + int d = entity.getActivePotionEffect(effect).getDuration() + duration; + entity.addPotionEffect(new PotionEffect(effect.id, d, level)); + } + } + public static void tryAddItem(EntityLivingBase entity, ItemStack stack) { if(entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity;