From 53df487ec2ab7adfb99edb1d176a18c7e6c0763e Mon Sep 17 00:00:00 2001 From: Mohammad-Ali Minaie Date: Tue, 18 Sep 2018 10:00:42 -0400 Subject: [PATCH] updated recipe management --- .../primal/forgecraft/blocks/CastingForm.java | 44 ++++++++++++++++++- .../forgecraft/crafting/CastingCrafting.java | 7 ++- .../forgecraft/util/CastingFormHandler.java | 3 +- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/CastingForm.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/CastingForm.java index 4d625b22..5d80847b 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/CastingForm.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/CastingForm.java @@ -7,18 +7,31 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.forgecraft.CommonUtils; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.blocks.Crucibles.NBTCrucible; +import nmd.primal.forgecraft.crafting.CastingCrafting; +import nmd.primal.forgecraft.crafting.CrucibleCrafting; +import nmd.primal.forgecraft.init.ModBlocks; +import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.items.SlottedTongs; +import nmd.primal.forgecraft.items.parts.BronzeToolPart; +import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.tiles.TileCastingForm; import nmd.primal.forgecraft.util.CastingFormHandler; @@ -47,8 +60,35 @@ public class CastingForm extends CustomContainerFacing implements CastingFormHan if (!world.isRemote) { TileCastingForm tile = (TileCastingForm) world.getTileEntity(pos); ItemStack pItem = player.inventory.getCurrentItem(); - doInventoryManager(pItem, world, tile, pos, hitx, hity, hitz, state, player); - + if(pItem.getItem() != ModItems.slottedtongs) { + doInventoryManager(pItem, world, tile, pos, hitx, hity, hitz, state, player); + } + if(pItem.getItem().equals(ModItems.slottedtongs)){ + SlottedTongs tongs = (SlottedTongs) pItem.getItem(); + if(tongs.getSlotList().get(0).getItem().equals(Item.getItemFromBlock(ModBlocks.nbtCrucible))) { + ItemStack tongsStack = tongs.getSlotList().get(0).copy(); + NBTTagCompound tag = tongsStack.getSubCompound("BlockEntityTag").copy(); + if(tag != null){ + NonNullList ingList = NonNullList.withSize(5, ItemStack.EMPTY); + ItemStackHelper.loadAllItems(tag, ingList); + CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4)); + if(recipe != null){ + if(tag.getBoolean("status") && tag.getInteger("hot") == 15){ + Item[] tempArray = new Item[25]; + for(int i=0; i<25; i++){ + tempArray[i] = tile.getSlotStack(i).getItem(); + } + CastingCrafting casting = CastingCrafting.getRecipe(tempArray); + if(casting != null){ + CommonUtils.spawnItemEntityFromWorld(world, pos, casting.getOutput()); + return true; + } + } + return true; + } + } + } + } return false; } return false; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/crafting/CastingCrafting.java b/kfc/src/main/java/nmd/primal/forgecraft/crafting/CastingCrafting.java index b01fe338..48638a04 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/crafting/CastingCrafting.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/crafting/CastingCrafting.java @@ -19,13 +19,18 @@ public class CastingCrafting { private Item[] input = new Item[25]; + public String getUpgradeType() { + return upgradeType; + } + + private String upgradeType; private ItemStack output; public CastingCrafting(Item[] input, ItemStack output){ this.input = input; this.output = output; - + //this.upgradeType = upgrade; } // ***************************************************************************** // diff --git a/kfc/src/main/java/nmd/primal/forgecraft/util/CastingFormHandler.java b/kfc/src/main/java/nmd/primal/forgecraft/util/CastingFormHandler.java index e264d543..317d8c0b 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/util/CastingFormHandler.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/util/CastingFormHandler.java @@ -189,12 +189,11 @@ public interface CastingFormHandler { return false; } - default void doCraftingformCrafting(Item[] tempArray, World world, TileCastingForm tile, BlockPos pos){ + default void doCastingCrafting(Item[] tempArray, World world, TileCastingForm tile, BlockPos pos){ CastingCrafting recipe = CastingCrafting.getRecipe(tempArray); if (recipe != null) { CommonUtils.spawnItemEntityFromWorld(world, pos, recipe.getOutput()); } - //world.playEvent(1031, pos, 0); for (int i = 0; i < tile.getSlotListSize(); i++) { if (!tile.getSlotStack(i).isEmpty()) { tile.setSlotStack(i, ItemStack.EMPTY);