package net.minecraft.src;
import java.util.Random;
/*Every block class is its own file (except the mod_ file, which contains all of the blocks and items in your entire mod.*/
public class BlockUraniumOre extends Block
{
public BlockUraniumOre(int i, int j)
{
super(i, j, Material.rock);
}
public int idDropped(int i, Random random, int j)
{
return mod_Uranium.Uranium.shiftedIndex;
}
public int quantityDropped(Random random)
{
return 1;
}}
ItemFluxCapacitor.java
package net.minecraft.src;
public class ItemFluxCapacitor extends Item
{
public ItemFluxCapacitor(int i)
{
super(i);
maxStackSize = 1;
}
}
ItemUranium
package net.minecraft.src;
public class ItemUranium extends Item
{
public ItemUranium(int i)
{
super(i);
maxStackSize = 64;
}
}
mod_FluxCapacitor.java <-- change this and the corresponding class define-er thingy to what you want your mod to be titled
package net.minecraft.src;
import java.util.Random;
//I combined all of your mod_ files into this one.
//Remember to make sure that this "public class mod_…" matches your filename, for example "public class mod_Blah", the filename would be "mod_Blah"
public class mod_FluxCapacitor extends BaseMod
{
public static final Block UraniumOre = new BlockUraniumOre(200, 0).setBlockName("Uranium Ore").setHardness(1F).setResistance(7F);
public static final Item Uranium = new ItemUranium(1551).setItemName("Uranium");
public static final Item FluxCapacitor = new ItemFluxCapacitor(1550).setItemName("Flux Capacitor");
public void load()
{
UraniumOre.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/New/UraniumOre.png");
ModLoader.registerBlock(UraniumOre);
ModLoader.addName(UraniumOre, "Uranium Ore");
ModLoader.addRecipe(new ItemStack(UraniumOre, 1), new Object [] {"#", "#", Character.valueOf('#'), Block.dirt});
Uranium.iconIndex = ModLoader.addOverride("/gui/items.png", "/New/Uranium.png");
ModLoader.addName(Uranium, "Uranium");
ModLoader.addRecipe(new ItemStack(Uranium, 1), new Object [] {"###", Character.valueOf('#'), Block.dirt});
FluxCapacitor.iconIndex = ModLoader.addOverride("/gui/items.png", "/New/FluxCapacitor.png");
ModLoader.addName(FluxCapacitor, "Flux Capacitor");
ModLoader.addRecipe(new ItemStack(FluxCapacitor, 2), new Object [] {"###", "%%%", "###", Character.valueOf('#'), Uranium, Character.valueOf('%'), Block.stone});
}
public String getVersion()
{
return "1.2_03";
}
}
WorldGenUraniumOre.java
package net.minecraft.src;
import java.util.Random;
/*I have no experience in world generation unfortunately, so i'm not sure about this one.*/
public class WorldGenUraniumOre extends WorldGenerator
{
public WorldGenUraniumOre()
{
}
public boolean generate(World world, Random random, int i, int j, int k)
{
int UraniumOre = mod_UraniumOre.UraniumOre.blockID;
world.setBlockWithNotify(i, j, k, UraniumOre);
world.setBlockAndMetadataWithNotify(i, j + 1, k, UraniumOre, 1);
return true;
}
}
This is what WOULD have been in the 'fixed' folder.
Hello can someone also show me a simple world gen code for a hut or something cause the best i can do with the worldgen is just floating ruin blocks all over the place. Plus how do you make Entities spawn in different places cause my mobs just spawn in groups of like 15 which is annoying!
*The spoiler is just practice for me don't read it.
ModLoader.addRecipe(new ItemStack(moonsand, 2), new Object[] {
"a", Character.valueOf('a'), Block.dirt
});
}
public String Version()
{
return "Minecraft Version 1.2_03";
}
@Override
public String getVersion() {
// TODO Auto-generated method stub
return null;
}
package net.minecraft.src;
import java.util.Random;
public class Blockmoonsand extends Block
{
public Blockmoonsand(int i, int j)
{
super(i, j, Material.sand);
}
public int idDropped(int i, Random random)
{
return mod_moonbase.moonsand.blockID;
}
public int quantityDropped(Random random)
{
return 1;
}
}
It is all good, except it tells me that "valueOf(char) in java.lang.Character cannot be applied to (java.lang.String)" in my recipes.
Here is my code:
package net.minecraft.src;
public class mod_CakeInAJar extends BaseMod
{
public static final Item CakeInAJar = new ItemFood(3600, 6, 3F, false).setItemName("CakeInAJar");
public static final Item RainbowInAJar = new ItemFood(3601, 10, 5F, false).setPotionEffect(Potion.moveSpeed.id, 120, 0, 1F).setItemName("RainbowInAJar");
public void load()
{
ModLoader.addName(RainbowInAJar, "Rainbow in a Jar");
ModLoader.addName(CakeInAJar, "Cake in a Jar");
ModLoader.addRecipe(new ItemStack(CakeInAJar, 1), new Object [] {" # ", " X ", Character.valueOf("#"), Item.cake, Character.valueOf("X"), Item.glassBottle});
ModLoader.addRecipe(new ItemStack(RainbowInAJar, 1), new Object [] {" # ", "@%X", " $ ", Character.valueOf("#"), new ItemStack(Item.dyePowder, 1, 1), Character.valueOf("@"), new ItemStack(Item.dyePowder, 1, 2), Character.valueOf("X"), new ItemStack(Item.dyePowder, 1, 4), Character.valueOf("$"), new ItemStack(Item.dyePowder, 1, 11), Character.valueOf("%"), CakeInAJar});
CakeInAJar.iconIndex = ModLoader.addOverride("/gui/items.png", "/platypus364/cakeInAJar.png");
RainbowInAJar.iconIndex = ModLoader.addOverride("/gui/items.png", "/platypus364/rainbowInAJar.png");
}
public String getVersion()
{
return "1.2_03";
}
}
" " is a string
' ' is a character.
You need to have it like this:
Character.valueOf('#')
Rollback Post to RevisionRollBack
“Computers are incredibly fast, accurate and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination."
OK i am seriously stuck on the models of monsters, i dont get how to get the different blocks in different places.
Please can someone help by sending a something that explains them
Thanks
Use a program called Techne. You can make your model in that then export it.
Im cannot change the Sound Step... If Im try, the Game Crash...
Have some modification in The footStep? have a new specific field to put it?
public static final Block moonsand = new Blockmoonsand (131,36) .setBlockName("moonsand").setHardness(0.8F).setResistance(2F).setLightValue(0.750F).setStepSound(Block.soundWoodFootstep);
Have you tried it exactly like that?
It would be good if you could post the crash report though. It should be in the ModLoader.txt in the jars folder.
Hello can someone also show me a simple world gen code for a hut or something cause the best i can do with the worldgen is just floating ruin blocks all over the place. Plus how do you make Entities spawn in different places cause my mobs just spawn in groups of like 15 which is annoying!
Add some more world.setBlockWithNotfiy lines, then change the location and the block and you will have your hut. It will take a bit of trial and error but you'll get it working.
“Computers are incredibly fast, accurate and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination."
getNavigator().func_48673_b(true);
tasks.addTask(0, new EntityAISwimming(this));
tasks.addTask(1, new EntityAIBreakDoor(this));
tasks.addTask(2, new EntityAIAttackOnCollide(this, net.minecraft.src.Entityspiderman.class, moveSpeed, false));
tasks.addTask(3, new EntityAIAttackOnCollide(this, net.minecraft.src.EntityVillager.class, moveSpeed, true));
tasks.addTask(4, new EntityAIMoveTwardsRestriction(this, moveSpeed));
tasks.addTask(5, new EntityAIMoveThroughVillage(this, moveSpeed, false));
tasks.addTask(6, new EntityAIWander(this, moveSpeed));
tasks.addTask(7, new EntityAIWatchClosest(this, net.minecraft.src.Entityspiderman.class, 8F));
tasks.addTask(7, new EntityAILookIdle(this));
targetTasks.addTask(1, new EntityAIHurtByTarget(this, false));
targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, net.minecraft.src.Entityspiderman.class, 16F, 0, true));
targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, net.minecraft.src.EntityVillager.class, 16F, 0, false));
this is the code i have done and it isent working i have testing it in so many ways venom just wont attack spiderman ra i need to post a update on my mod but i haveent added mutch need your help
getNavigator().func_48673_b(true);
tasks.addTask(0, new EntityAISwimming(this));
tasks.addTask(1, new EntityAIBreakDoor(this));
tasks.addTask(2, new EntityAIAttackOnCollide(this, net.minecraft.src.Entityspiderman.class, moveSpeed, false));
tasks.addTask(3, new EntityAIAttackOnCollide(this, net.minecraft.src.EntityVillager.class, moveSpeed, true));
tasks.addTask(4, new EntityAIMoveTwardsRestriction(this, moveSpeed));
tasks.addTask(5, new EntityAIMoveThroughVillage(this, moveSpeed, false));
tasks.addTask(6, new EntityAIWander(this, moveSpeed));
tasks.addTask(7, new EntityAIWatchClosest(this, net.minecraft.src.Entityspiderman.class, 8F));
tasks.addTask(7, new EntityAILookIdle(this));
targetTasks.addTask(1, new EntityAIHurtByTarget(this, false));
targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, net.minecraft.src.Entityspiderman.class, 16F, 0, true));
targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, net.minecraft.src.EntityVillager.class, 16F, 0, false));
this is the code i have done and it isent working i have testing it in so many ways venom just wont attack spiderman ra i need to post a update on my mod but i haveent added mutch need your help
You need to add this method to your entity class as well.
“Computers are incredibly fast, accurate and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination."
== MCP 6.0 (data: 6.0, client: 1.2.3, server: 1.2.3) ==
# found jad, jad patches, ff patches, osx patches, srgs, name csvs, doc csvs, pa
ram csvs, astyle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files (x86)\Java\jdk1.7.0_03\bin\javac" -g -source 1.6 -target 1.6
-classpath "lib;lib\*...' failed : 1
== ERRORS FOUND ==
warning: [options] bootstrap class path not set in conjunction with -source 1.6
src\minecraft\net\minecraft\src\mod_Random.java:7: error: cannot find symbol
ModLoader.AddSmelting(Item.rottenFlesh.shiftedIndex, new ItemStack(Item.
leather, 1));
^
symbol: method AddSmelting(int,ItemStack)
location: class ModLoader
1 error
1 warning
==================
!! Can not find server sources, try decompiling !!
Press any key to continue . . .
Heres the mod_Random
package net.minecraft.src;
public class mod_Random extends BaseMod
{
public void load()
{
ModLoader.AddSmelting(Item.rottenFlesh.shiftedIndex, new ItemStack(Item.leather, 1));
}
public String getVersion()
{
return "1.1";
}
}
== MCP 6.0 (data: 6.0, client: 1.2.3, server: 1.2.3) ==
# found jad, jad patches, ff patches, osx patches, srgs, name csvs, doc csvs, pa
ram csvs, astyle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files (x86)\Java\jdk1.7.0_03\bin\javac" -g -source 1.6 -target 1.6
-classpath "lib;lib\*...' failed : 1
== ERRORS FOUND ==
warning: [options] bootstrap class path not set in conjunction with -source 1.6
src\minecraft\net\minecraft\src\mod_Random.java:7: error: cannot find symbol
ModLoader.AddSmelting(Item.rottenFlesh.shiftedIndex, new ItemStack(Item.
leather, 1));
^
symbol: method AddSmelting(int,ItemStack)
location: class ModLoader
1 error
1 warning
==================
!! Can not find server sources, try decompiling !!
Press any key to continue . . .
Heres the mod_Random
package net.minecraft.src;
public class mod_Random extends BaseMod
{
public void load()
{
ModLoader.AddSmelting(Item.rottenFlesh.shiftedIndex, new ItemStack(Item.leather, 1));
}
public String getVersion()
{
return "1.1";
}
}
Your problem is caused by: AddSmelting is now addSmelting. so just uncapitalize the 'A', then it should work.
Here, ill merge them into the correct file format for you
keep following that format (the one i give you)
the code itself may not be entirely correct, but you'll see how the organization works
I would definitely download that btw. However you might want to start with slightly smaller mods, getting the world generation+time travel (multiworld) as well as the Kingdom's AI would be rather complicated.
Thanks for the help, and we are a team of coders and I am the newest to it... I just decided to start first... And I had my own mod back in 1.8.1 I made but used different mod files for everything because you didnt make things with the mod items just the default items... Tutorials really need to say that you need to only have 1 mod file lol...
package net.minecraft.src;
import java.util.Random;
/*Every block class is its own file (except the mod_ file, which contains all of the blocks and items in your entire mod.*/
public class BlockUraniumOre extends Block
{
public BlockUraniumOre(int i, int j)
{
super(i, j, Material.rock);
}
public int idDropped(int i, Random random, int j)
{
return mod_Uranium.Uranium.shiftedIndex;
}
public int quantityDropped(Random random)
{
return 1;
}}
ItemFluxCapacitor.java
package net.minecraft.src;
public class ItemFluxCapacitor extends Item
{
public ItemFluxCapacitor(int i)
{
super(i);
maxStackSize = 1;
}
}
ItemUranium
package net.minecraft.src;
public class ItemUranium extends Item
{
public ItemUranium(int i)
{
super(i);
maxStackSize = 64;
}
}
mod_FluxCapacitor.java <-- change this and the corresponding class define-er thingy to what you want your mod to be titled
package net.minecraft.src;
import java.util.Random;
//I combined all of your mod_ files into this one.
//Remember to make sure that this "public class mod_…" matches your filename, for example "public class mod_Blah", the filename would be "mod_Blah"
public class mod_FluxCapacitor extends BaseMod
{
public static final Block UraniumOre = new BlockUraniumOre(200, 0).setBlockName("Uranium Ore").setHardness(1F).setResistance(7F);
public static final Item Uranium = new ItemUranium(1551).setItemName("Uranium");
public static final Item FluxCapacitor = new ItemFluxCapacitor(1550).setItemName("Flux Capacitor");
public void load()
{
UraniumOre.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/New/UraniumOre.png");
ModLoader.registerBlock(UraniumOre);
ModLoader.addName(UraniumOre, "Uranium Ore");
ModLoader.addRecipe(new ItemStack(UraniumOre, 1), new Object [] {"#", "#", Character.valueOf('#'), Block.dirt});
Uranium.iconIndex = ModLoader.addOverride("/gui/items.png", "/New/Uranium.png");
ModLoader.addName(Uranium, "Uranium");
ModLoader.addRecipe(new ItemStack(Uranium, 1), new Object [] {"###", Character.valueOf('#'), Block.dirt});
FluxCapacitor.iconIndex = ModLoader.addOverride("/gui/items.png", "/New/FluxCapacitor.png");
ModLoader.addName(FluxCapacitor, "Flux Capacitor");
ModLoader.addRecipe(new ItemStack(FluxCapacitor, 2), new Object [] {"###", "%%%", "###", Character.valueOf('#'), Uranium, Character.valueOf('%'), Block.stone});
}
public String getVersion()
{
return "1.2_03";
}
}
WorldGenUraniumOre.java
package net.minecraft.src;
import java.util.Random;
/*I have no experience in world generation unfortunately, so i'm not sure about this one.*/
public class WorldGenUraniumOre extends WorldGenerator
{
public WorldGenUraniumOre()
{
}
public boolean generate(World world, Random random, int i, int j, int k)
{
int UraniumOre = mod_UraniumOre.UraniumOre.blockID;
world.setBlockWithNotify(i, j, k, UraniumOre);
world.setBlockAndMetadataWithNotify(i, j + 1, k, UraniumOre, 1);
return true;
}
}
This is what WOULD have been in the 'fixed' folder.
Lol I forgot to add the mod_worldgen file in that zip but I figured out how to add it myself to your edited files, then I just cnaged some stuff to make it direct to the mod_TimeTravel and now it all works great! Thanks so much for your help you have been amazing along with techguy by helping me...
public static final Block moonsand = new Blockmoonsand (131,36) .setBlockName("moonsand").setHardness(0.8F).setResistance(2F).setLightValue(0.750F).setStepSound(Block.soundWoodFootstep);
Have you tried it exactly like that?
It would be good if you could post the crash report though. It should be in the ModLoader.txt in the jars folder.
Yes.
So... I'm tried with Wood Sounds and Work... I dont know what happened... I will try with Sand sound again. Thank You!
I Use anothers sounds and working... I'm really dont know Whats happened here...
Hi TechGuy,
I just tried to code a little Minecraft Mod but I always get it wrong.
This Mod should basicly add a new block to the game (recepe just a placeholder) but I always get the same error.
I dont know if I'm just stupid (btw. my first mod) or something.
mod_block.java
package net.minecraft.src;
import java.util.Random;
public class mod_Block extends BaseMod
{
public static final Block HayBlock = new BlockHay(1550,0).setHardness(0.1F).setResistance(5.0F).setBlockName("Hay").setLightValue(1F);
public void load()
{
HayBlock.blockIndexInTexture = ModLoader.addOverride("/terrain.png","/HayBlock.png");
ModLoader.registerBlock(HayBlock);
ModLoader.addName(HayBlock, "Hay");
ModLoader.addRecipe(new ItemStack(HayBlock, 1), new Object []{ "#", Character.valueOf('#'), Block.dirt});
}
public String Version()
{
return "1.2.3";
}
}
BlockHay.java
package net.minecraft.src;
import java.util.Random;
public class BlockHay extends Block
{
protected BlockHay (int i, int j)
{
super(i,j,Material.wood);
}
public int idDropped(int i, Random random)
{
return Item.wheat.shiftedIndex;
}
public int quantityDropped(Random random)
{
return 4;
}
}
If I'm just stupid - sorry for getting on your nerves.
Thanks
(Sorry for the bad English - I'm German)
I should probably report the error:
I coded it in Eclipse and it always says:
The type mod_Block must implement the inherited abstract method BaseMod.getVersion()
So... For Fix it... I Added this part im My Code
@Override
public String getVersion() {
// TODO Auto-generated method stub
return null;
@BKNrules. Check the Path in Propeties of Computer.
So...
Two Questions...
For generate another Worlds, is possible put for add My Blocks in this? And Do is possible set the Light time? Like in Day, the Light Value is 1.0F and in The Night, Light Value is 0.5F?
public static final Block HayBlock = new BlockHay(1550,0).setHardness(0.1F).setResistance(5.0F).setBlockName("Hay").setLightValue(1F);
public void load()
your block ID is to high, it can not be more than 256. So make it like 150 or higher.
@BKNrules. Check the Path in Propeties of Computer.
I tried it and I still got the same message. Right now my path has this:
C:\Perl\site\bin;C:\Perl\bin;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\WINDOWS\system32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem;
Should it be like this?:
C:\Perl\site\bin;C:\Perl\bin;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\WINDOWS\system32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem;C:\Program Files\Java\jdk1.7.0_03\bin;
Need a bit of help. With the crafting recipe, how dirt is Block.dirt, what would cocoa beans be?
If you look in the Item.java file and look through the files on top that have "pubic static final" before them, the name after that is what the item is in the code, but for cocoa beans (that are technically a dye) you should refer to the section that Techguy has on it in the recipe section.
BlockUraniumOre.java
ItemFluxCapacitor.java
ItemUranium
mod_FluxCapacitor.java <-- change this and the corresponding class define-er thingy to what you want your mod to be titled
WorldGenUraniumOre.java
This is what WOULD have been in the 'fixed' folder.
If I helped you at all or made a nice post, go ahead and click the green plus over there if you want.
That was dumb of me, I forgot that stone is a base block, duh, wow, that was a big mistake, thanks for pointing that out.
*The spoiler is just practice for me don't read it.
And I have a Little Problem...
Im cannot change the Sound Step... If Im try, the Game Crash...
Have some modification in The footStep? have a new specific field to put it?
" " is a string
' ' is a character.
You need to have it like this:
together they are powerful beyond imagination."
Use a program called Techne. You can make your model in that then export it.
Have you tried it exactly like that?
It would be good if you could post the crash report though. It should be in the ModLoader.txt in the jars folder.
Add some more world.setBlockWithNotfiy lines, then change the location and the block and you will have your hut. It will take a bit of trial and error but you'll get it working.
together they are powerful beyond imagination."
tasks.addTask(0, new EntityAISwimming(this));
tasks.addTask(1, new EntityAIBreakDoor(this));
tasks.addTask(2, new EntityAIAttackOnCollide(this, net.minecraft.src.Entityspiderman.class, moveSpeed, false));
tasks.addTask(3, new EntityAIAttackOnCollide(this, net.minecraft.src.EntityVillager.class, moveSpeed, true));
tasks.addTask(4, new EntityAIMoveTwardsRestriction(this, moveSpeed));
tasks.addTask(5, new EntityAIMoveThroughVillage(this, moveSpeed, false));
tasks.addTask(6, new EntityAIWander(this, moveSpeed));
tasks.addTask(7, new EntityAIWatchClosest(this, net.minecraft.src.Entityspiderman.class, 8F));
tasks.addTask(7, new EntityAILookIdle(this));
targetTasks.addTask(1, new EntityAIHurtByTarget(this, false));
targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, net.minecraft.src.Entityspiderman.class, 16F, 0, true));
targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, net.minecraft.src.EntityVillager.class, 16F, 0, false));
this is the code i have done and it isent working i have testing it in so many ways venom just wont attack spiderman ra
You need to add this method to your entity class as well.
together they are powerful beyond imagination."
Error
Heres the mod_Random
Your problem is caused by: AddSmelting is now addSmelting. so just uncapitalize the 'A', then it should work.
Thanks for the help, and we are a team of coders and I am the newest to it... I just decided to start first... And I had my own mod back in 1.8.1 I made but used different mod files for everything because you didnt make things with the mod items just the default items... Tutorials really need to say that you need to only have 1 mod file lol...
Lol I forgot to add the mod_worldgen file in that zip but I figured out how to add it myself to your edited files, then I just cnaged some stuff to make it direct to the mod_TimeTravel and now it all works great! Thanks so much for your help you have been amazing along with techguy by helping me...
Yes.
So... I'm tried with Wood Sounds and Work... I dont know what happened... I will try with Sand sound again. Thank You!
I Use anothers sounds and working... I'm really dont know Whats happened here...
So... For Fix it... I Added this part im My Code
@BKNrules. Check the Path in Propeties of Computer.
So...
Two Questions...
For generate another Worlds, is possible put for add My Blocks in this? And Do is possible set the Light time? Like in Day, the Light Value is 1.0F and in The Night, Light Value is 0.5F?
Thanks!
your block ID is to high, it can not be more than 256. So make it like 150 or higher.
I tried it and I still got the same message. Right now my path has this:
C:\Perl\site\bin;C:\Perl\bin;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\WINDOWS\system32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem;
Should it be like this?:
C:\Perl\site\bin;C:\Perl\bin;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\WINDOWS\system32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem;C:\Program Files\Java\jdk1.7.0_03\bin;
public boolean isAIEnabled()
{
return true;
}
im not realy sore
If you look in the Item.java file and look through the files on top that have "pubic static final" before them, the name after that is what the item is in the code, but for cocoa beans (that are technically a dye) you should refer to the section that Techguy has on it in the recipe section.