updated recipe management

This commit is contained in:
Mohammad-Ali Minaie
2018-09-18 10:00:42 -04:00
parent e083708a57
commit 53df487ec2
3 changed files with 49 additions and 5 deletions

View File

@@ -7,18 +7,31 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.forgecraft.CommonUtils;
import nmd.primal.forgecraft.ModInfo; 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.tiles.TileCastingForm;
import nmd.primal.forgecraft.util.CastingFormHandler; import nmd.primal.forgecraft.util.CastingFormHandler;
@@ -47,8 +60,35 @@ public class CastingForm extends CustomContainerFacing implements CastingFormHan
if (!world.isRemote) { if (!world.isRemote) {
TileCastingForm tile = (TileCastingForm) world.getTileEntity(pos); TileCastingForm tile = (TileCastingForm) world.getTileEntity(pos);
ItemStack pItem = player.inventory.getCurrentItem(); ItemStack pItem = player.inventory.getCurrentItem();
if(pItem.getItem() != ModItems.slottedtongs) {
doInventoryManager(pItem, world, tile, pos, hitx, hity, hitz, state, player); 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<ItemStack> ingList = NonNullList.<ItemStack>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;
} }
return false; return false;

View File

@@ -19,13 +19,18 @@ public class CastingCrafting {
private Item[] input = new Item[25]; private Item[] input = new Item[25];
public String getUpgradeType() {
return upgradeType;
}
private String upgradeType;
private ItemStack output; private ItemStack output;
public CastingCrafting(Item[] input, ItemStack output){ public CastingCrafting(Item[] input, ItemStack output){
this.input = input; this.input = input;
this.output = output; this.output = output;
//this.upgradeType = upgrade;
} }
// ***************************************************************************** // // ***************************************************************************** //

View File

@@ -189,12 +189,11 @@ public interface CastingFormHandler {
return false; 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); CastingCrafting recipe = CastingCrafting.getRecipe(tempArray);
if (recipe != null) { if (recipe != null) {
CommonUtils.spawnItemEntityFromWorld(world, pos, recipe.getOutput()); CommonUtils.spawnItemEntityFromWorld(world, pos, recipe.getOutput());
} }
//world.playEvent(1031, pos, 0);
for (int i = 0; i < tile.getSlotListSize(); i++) { for (int i = 0; i < tile.getSlotListSize(); i++) {
if (!tile.getSlotStack(i).isEmpty()) { if (!tile.getSlotStack(i).isEmpty()) {
tile.setSlotStack(i, ItemStack.EMPTY); tile.setSlotStack(i, ItemStack.EMPTY);