diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/Crucibles/NBTCrucible.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/Crucibles/NBTCrucible.java index 074966dd..77cc34b4 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/Crucibles/NBTCrucible.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/Crucibles/NBTCrucible.java @@ -1,13 +1,16 @@ package nmd.primal.forgecraft.blocks.Crucibles; import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; @@ -18,7 +21,12 @@ 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.core.api.PrimalAPI; +import nmd.primal.core.common.helper.PlayerHelper; +import nmd.primal.core.common.helper.WorldHelper; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.items.ItemCrucible; import nmd.primal.forgecraft.tiles.TileBaseCrucible; import nmd.primal.forgecraft.tiles.TileNBTCrucible; @@ -40,7 +48,7 @@ public class NBTCrucible extends Block implements ITileEntityProvider { setRegistryName(registryName); setCreativeTab(ModInfo.TAB_FORGECRAFT); setHardness(3.0f); - crucibleIngredients.apply(new ItemStack(Blocks.IRON_ORE, 1)); + //crucibleIngredients.apply(new ItemStack(Blocks.IRON_ORE, 1)); } @Override @@ -49,28 +57,86 @@ public class NBTCrucible extends Block implements ITileEntityProvider { if (!world.isRemote) { TileNBTCrucible tile = (TileNBTCrucible) world.getTileEntity(pos); ItemStack pItem = player.inventory.getCurrentItem(); - + ItemStack pItem1 = new ItemStack(pItem.getItem(), 1); + if(pItem.isEmpty()){ + if(!player.isSneaking()) { + ItemStack tempStack = new ItemStack(ModItems.itemcrucible, 1); + tempStack.setTagCompound(new NBTTagCompound()); + NBTTagCompound recipe = new NBTTagCompound(); + recipe.setTag("Items", recipe); + ItemStackHelper.saveAllItems(recipe, tile.ingList); + //tempStack.writeToNBT(tempNBT); + PlayerHelper.spawnItemOnPlayer(world, player, tempStack); + world.setBlockToAir(pos); + } + } + /**SET INGREDIENT ARRAY FOR THE CRUCIBLE NOW**/ + if(!player.isSneaking()) { + if(!pItem.isEmpty()) { + for (int i = 0; i < tile.ingList.size(); i++) { + if (tile.ingList.get(i).isEmpty()) { + tile.ingList.set(i, pItem1); + pItem.shrink(1); + tile.update(); + return true; + } + } + } + } + /**CLEARS THE INVENTORY**/ + if(player.isSneaking()){ + for(int i=0; i crucibleCrafting = new ArrayList<>(); + private int cookTemp; + private int cookTime; + private int coolTime; + private Ingredient ing0; private Ingredient ing1; private Ingredient ing2; private Ingredient ing3; private Ingredient ing4; + private ItemStack dropsCooked; + private ItemStack dropsRaw; + private List ingredientList = new List() { @Override public int size() { @@ -140,10 +147,12 @@ public class CrucibleCrafting { } }; - private ItemStack drops; - public CrucibleCrafting(Ingredient i0, Ingredient i1, Ingredient i2, Ingredient i3, Ingredient i4, ItemStack output){ + + public CrucibleCrafting(Ingredient i0, Ingredient i1, Ingredient i2, Ingredient i3, Ingredient i4, + ItemStack outputRaw, ItemStack outputCooked, + Integer temp, Integer cookTime, Integer coolTime){ this.ing0 = i0; this.ing1 = i1; @@ -155,12 +164,18 @@ public class CrucibleCrafting { this.ingredientList.add(2, i2); this.ingredientList.add(3, i3); this.ingredientList.add(4, i4); - this.drops = output; + this.dropsRaw = outputRaw; + this.dropsCooked = outputCooked; + this.cookTemp = temp; + this.cookTime = cookTime; + this.coolTime = coolTime; } - public static void addRecipe(Ingredient i0, Ingredient i1, Ingredient i2, Ingredient i3, Ingredient i4, ItemStack drop) + public static void addRecipe(Ingredient i0, Ingredient i1, Ingredient i2, Ingredient i3, Ingredient i4, + ItemStack outputRaw, ItemStack outputCooked, + Integer temp, Integer cookTime, Integer coolTime) { - crucibleCrafting.add(new CrucibleCrafting(i0, i1, i2, i3, i4, drop)); + crucibleCrafting.add(new CrucibleCrafting(i0, i1, i2, i3, i4, outputRaw, outputCooked, temp, cookTime, coolTime)); } public static boolean isRecipe(ItemStack i0, ItemStack i1, ItemStack i2, ItemStack i3, ItemStack i4){ diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java index db2b10d7..63e2da04 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java @@ -25,6 +25,7 @@ import nmd.primal.forgecraft.blocks.Anvil.AnvilStone; import nmd.primal.forgecraft.blocks.*; import nmd.primal.forgecraft.blocks.Crucibles.Crucible; import nmd.primal.forgecraft.blocks.Crucibles.CrucibleHot; +import nmd.primal.forgecraft.blocks.Crucibles.NBTCrucible; import nmd.primal.forgecraft.items.ForgeHammer; import nmd.primal.forgecraft.tiles.TileAnvil; @@ -33,6 +34,7 @@ import nmd.primal.forgecraft.tiles.TileAnvil; */ public class ModBlocks { + public static Block nbtCrucible; public static Block forge_brick; public static Block forge_adobe; public static Block bloomery_brick; @@ -118,6 +120,7 @@ public class ModBlocks { public static void init() { + nbtCrucible = new NBTCrucible(Material.ROCK, "nbtCrucible"); forge_brick = new Forge(Material.ROCK, "forge_brick", 5000); forge_adobe = new Forge(Material.ROCK, "forge_adobe", 5000); bloomery_brick = new BloomeryBase(Material.ROCK, "bloomery_brick", 5000); @@ -419,6 +422,7 @@ public class ModBlocks { public static void register() { + registerBlock(nbtCrucible); registerBlock(forge_brick); registerBlock(forge_adobe); registerBlock(bloomery_brick); @@ -509,6 +513,7 @@ public class ModBlocks { @SideOnly(Side.CLIENT) public static void registerRenders() { + registerRender(nbtCrucible); registerRender(forge_brick); registerRender(forge_adobe); registerRender(castingform); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java index 216cec44..21e90368 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModCrafting.java @@ -29,7 +29,11 @@ public class ModCrafting{ Ingredient.EMPTY, Ingredient.EMPTY, Ingredient.EMPTY, - new ItemStack(ModBlocks.ironball, 1)); + new ItemStack(Blocks.IRON_ORE, 1), + new ItemStack(ModBlocks.ironball, 1), + 100, + 20, + 20); /***CASTING BLOCK***/ RecipeHandler.addShapedOreRecipe(new ItemStack(ModBlocks.castingblock), diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java index 5904b54b..cb51865c 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java @@ -32,6 +32,7 @@ import nmd.primal.forgecraft.items.weapons.SlayerSword; public class ModItems { //public static Item test; + public static Item itemcrucible; public static Item bellowshandle; public static Item forgehammer; public static Item softcrucible; @@ -142,6 +143,7 @@ public class ModItems { public static void init() { //OBJLoader.INSTANCE.addDomain(ModInfo.MOD_ID); //pistonbellows = new ItemBellowsHandle("pistonbellows"); + itemcrucible = new ItemCrucible("itemcrucible"); bellowshandle = new BaseItem("bellowshandle"); softcrucible = new ItemSoftCrucible("softcrucible"); stonetongs = new ItemStoneTongs("stonetongs"); @@ -266,6 +268,7 @@ public class ModItems { } public static void register() { + ForgeRegistries.ITEMS.register(itemcrucible); ForgeRegistries.ITEMS.register(castingmud); ForgeRegistries.ITEMS.register(bellowshandle); ForgeRegistries.ITEMS.register(softcrucible); @@ -385,6 +388,7 @@ public class ModItems { @SideOnly(Side.CLIENT) public static void registerRenders() { + registerRender(itemcrucible); registerRender(castingmud); registerRender(bellowshandle); registerRender(softcrucible); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java index 7fb39d52..baf80a4d 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java @@ -18,6 +18,7 @@ public class ModTiles { registerTileEntity(TileBreaker.class, "breaker"); registerTileEntity(TileCastingForm.class, "castingform"); registerTileEntity(TileCastingBlock.class, "castingblock"); + registerTileEntity(TileNBTCrucible.class, "nbtcrucible"); } private static void registerTileEntity(Class tile_class, String baseName) { diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java b/kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java index 99c81670..6429638a 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java @@ -1,12 +1,20 @@ package nmd.primal.forgecraft.items; +import com.mojang.realmsclient.gui.ChatFormatting; import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.Entity; +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.util.NonNullList; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModItems; import javax.annotation.Nullable; import java.util.List; @@ -21,6 +29,33 @@ public class ItemCrucible extends Item { this.setRegistryName(unlocalizedName); this.setMaxStackSize(1); this.setCreativeTab(ModInfo.TAB_FORGECRAFT); + this.setMaxStackSize(1); + this.setNoRepair(); + } + + @Override + public void onCreated(ItemStack item, World world, EntityPlayer playerIn) { + + if(!world.isRemote) { + if (!item.hasTagCompound()) { + item.setTagCompound(new NBTTagCompound()); + NBTTagCompound recipe = new NBTTagCompound(); + recipe.setTag("Items", recipe); + //item.getTagCompound().setTag("recipe", recipe); + } + } + + } + + @Override + public void onUpdate(ItemStack item, World world, Entity player, int itemSlot, boolean isSelected) { + if(!world.isRemote) { + if (!item.hasTagCompound()) { + item.setTagCompound(new NBTTagCompound()); + NBTTagCompound recipe = new NBTTagCompound(); + recipe.setTag("Items", recipe); + } + } } @Override @@ -31,6 +66,11 @@ public class ItemCrucible extends Item { { if (item.hasTagCompound()) { + NonNullList ingList = NonNullList.withSize(5, ItemStack.EMPTY); + NBTTagCompound nbtTag = item.getSubCompound("Items"); + ItemStackHelper.loadAllItems(nbtTag, ingList); + tooltip.add(ChatFormatting.BLUE + "Items:" + ingList.get(0)); + /*tooltip.add(ChatFormatting.GRAY + "Upgrades Left: " + (3 - getModifiers(item)) ); if (getEmerald(item) == true) { tooltip.add(ChatFormatting.DARK_GREEN + "Emerald"); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileNBTCrucible.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileNBTCrucible.java index 65b8b26a..57258c89 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileNBTCrucible.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileNBTCrucible.java @@ -1,9 +1,12 @@ package nmd.primal.forgecraft.tiles; import net.minecraft.block.state.IBlockState; +import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ITickable; +import net.minecraft.util.NonNullList; import net.minecraft.world.World; /** @@ -15,6 +18,7 @@ public class TileNBTCrucible extends BaseTile implements ITickable { private int heat; private boolean hot; private String mod0, mod1, mod2; + public NonNullList ingList = NonNullList.withSize(5, ItemStack.EMPTY); @Override public void update () { @@ -45,9 +49,8 @@ public class TileNBTCrucible extends BaseTile implements ITickable { public NBTTagCompound readNBT(NBTTagCompound nbt) { super.readNBT(nbt); - this.mod0 = nbt.getString("mod0"); - this.mod1 = nbt.getString("mod1"); - this.mod2 = nbt.getString("mod2"); + this.ingList = NonNullList.withSize(this.ingList.size(), ItemStack.EMPTY); + ItemStackHelper.loadAllItems(nbt, this.ingList); this.heat = nbt.getInteger("heat"); this.hot = nbt.getBoolean("hot"); return nbt; @@ -56,13 +59,18 @@ public class TileNBTCrucible extends BaseTile implements ITickable { @Override public NBTTagCompound writeNBT(NBTTagCompound nbt) { + ItemStackHelper.saveAllItems(nbt, this.ingList); nbt.setInteger("heat", this.heat); - nbt.setString("mod0", this.mod0); - nbt.setString("mod1", this.mod1); - nbt.setString("mod2", this.mod2); nbt.setBoolean("hot", this.hot); super.writeNBT(nbt); return nbt; } } + +/* + +this.slotList = NonNullList.withSize(this.getSlotListSize(), ItemStack.EMPTY); + ItemStackHelper.loadAllItems(nbt, this.slotList); + + */ \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/blockstates/nbtcrucible.json b/kfc/src/main/resources/assets/forgecraft/blockstates/nbtcrucible.json new file mode 100644 index 00000000..73d7acf3 --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/blockstates/nbtcrucible.json @@ -0,0 +1,12 @@ +{ + "forge_marker":1, + "defaults": { + "textures": { + "particle": "forgecraft:blocks/stone_slab", + "texture": "forgecraft:blocks/stone_slab" + } + }, + "variants": { + "normal": { "model": "forgecraft:crucibleshut" } + } +} \ No newline at end of file