aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/Recipes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/Recipes.cpp')
-rw-r--r--Minecraft.World/Recipes.cpp219
1 files changed, 164 insertions, 55 deletions
diff --git a/Minecraft.World/Recipes.cpp b/Minecraft.World/Recipes.cpp
index 93be1dfb..dbb1dbde 100644
--- a/Minecraft.World/Recipes.cpp
+++ b/Minecraft.World/Recipes.cpp
@@ -1,19 +1,3 @@
-/*package net.minecraft.world.Item::crafting;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import net.minecraft.world.inventory.CraftingContainer;
-import net.minecraft.world.Item::CoalItem;
-import net.minecraft.world.Item::Item;
-import net.minecraft.world.Item::ItemInstance;
-import net.minecraft.world.level.Tile::StoneSlabTile;
-import net.minecraft.world.level.Tile::Tile;*/
-
#include "stdafx.h"
#include "Container.h"
#include "AbstractContainerMenu.h"
@@ -32,6 +16,7 @@ OreRecipies *Recipes::pOreRecipies=NULL;
StructureRecipies *Recipes::pStructureRecipies=NULL;
ToolRecipies *Recipes::pToolRecipies=NULL;
WeaponRecipies *Recipes::pWeaponRecipies=NULL;
+FireworksRecipe *Recipes::pFireworksRecipes=NULL;
void Recipes::staticCtor()
{
@@ -60,6 +45,11 @@ Recipes::Recipes()
// 4J Stu - These just don't work with our crafting menu
//recipies->push_back(new ArmorDyeRecipe());
+ //recipies->add(new MapCloningRecipe());
+ //recipies->add(new MapExtendingRecipe());
+ //recipies->add(new FireworksRecipe());
+ pFireworksRecipes = new FireworksRecipe();
+
addShapedRecipy(new ItemInstance(Tile::wood, 4, 0), //
L"sczg",
@@ -109,7 +99,7 @@ Recipes::Recipes()
L"ssctctg",
L"###", //
L"XXX", //
- L'#', Tile::cloth, L'X', Tile::wood,
+ L'#', Tile::wool, L'X', Tile::wood,
L'S');
addShapedRecipy(new ItemInstance(Tile::enchantTable, 1), //
@@ -177,7 +167,7 @@ Recipes::Recipes()
L"###", //
L"###", //
- L'#', Tile::stoneBrick,
+ L'#', Tile::cobblestone,
L'S');
addShapedRecipy(new ItemInstance(Tile::cobbleWall, 6, WallTile::TYPE_MOSSY), //
@@ -185,7 +175,7 @@ Recipes::Recipes()
L"###", //
L"###", //
- L'#', Tile::mossStone,
+ L'#', Tile::mossyCobblestone,
L'S');
addShapedRecipy(new ItemInstance(Item::door_wood, 1), //
@@ -228,7 +218,7 @@ Recipes::Recipes()
L"## ", //
L"###", //
- L'#', Tile::stoneBrick,
+ L'#', Tile::cobblestone,
L'S');
addShapedRecipy(new ItemInstance(Tile::stairs_bricks, 4), //
@@ -246,7 +236,7 @@ Recipes::Recipes()
L"## ", //
L"###", //
- L'#', Tile::stoneBrickSmooth,
+ L'#', Tile::cobblestone,
L'S');
addShapedRecipy(new ItemInstance(Tile::stairs_netherBricks, 4), //
@@ -317,6 +307,13 @@ Recipes::Recipes()
L'#', Item::snowBall,
L'S');
+ addShapedRecipy(new ItemInstance(Tile::topSnow, 6), //
+ L"sctg",
+ L"###", //
+
+ L'#', Tile::snow,
+ L'S');
+
addShapedRecipy(new ItemInstance(Tile::clay, 1), //
L"sscig",
L"##", //
@@ -333,7 +330,7 @@ Recipes::Recipes()
L'#', Item::brick,
L'S');
- addShapedRecipy(new ItemInstance(Tile::cloth, 1), //
+ addShapedRecipy(new ItemInstance(Tile::wool, 1), //
L"sscig",
L"##", //
L"##", //
@@ -347,7 +344,7 @@ Recipes::Recipes()
L"#X#", //
L"X#X", //
- L'X', Item::sulphur,//
+ L'X', Item::gunpowder,//
L'#', Tile::sand,
L'T');
@@ -362,13 +359,13 @@ Recipes::Recipes()
L"sctg",
L"###", //
- L'#', Tile::rock,
+ L'#', Tile::stone,
L'S');
addShapedRecipy(new ItemInstance(Tile::stoneSlabHalf, 6, StoneSlabTile::COBBLESTONE_SLAB), //
L"sctg",
L"###", //
- L'#', Tile::stoneBrick,
+ L'#', Tile::cobblestone,
L'S');
addShapedRecipy(new ItemInstance(Tile::stoneSlabHalf, 6, StoneSlabTile::BRICK_SLAB), //
@@ -382,7 +379,7 @@ Recipes::Recipes()
L"sctg",
L"###", //
- L'#', Tile::stoneBrickSmooth,
+ L'#', Tile::stoneBrick,
L'S');
addShapedRecipy(new ItemInstance(Tile::stoneSlabHalf, 6, StoneSlabTile::NETHERBRICK_SLAB), //
@@ -441,7 +438,7 @@ Recipes::Recipes()
L"BEB", //
L"CCC", //
- L'A', Item::milk,//
+ L'A', Item::bucket_milk,//
L'B', Item::sugar,//
L'C', Item::wheat, L'E', Item::egg,
L'F');
@@ -474,6 +471,17 @@ Recipes::Recipes()
L'#', Item::stick,
L'V');
+ addShapedRecipy(new ItemInstance(Tile::activatorRail, 6), //
+ L"ssscictcig",
+ L"XSX", //
+ L"X#X", //
+ L"XSX", //
+
+ L'X', Item::ironIngot,//
+ L'#', Tile::redstoneTorch_on,//
+ L'S', Item::stick,
+ L'V');
+
addShapedRecipy(new ItemInstance(Tile::detectorRail, 6), //
L"ssscicictg",
L"X X", //
@@ -509,6 +517,22 @@ Recipes::Recipes()
L'A', Tile::furnace, L'B', Item::minecart,
L'V');
+ addShapedRecipy(new ItemInstance(Item::minecart_tnt, 1), //
+ L"ssctcig",
+ L"A", //
+ L"B", //
+
+ L'A', Tile::tnt, L'B', Item::minecart,
+ L'V');
+
+ addShapedRecipy(new ItemInstance(Item::minecart_hopper, 1), //
+ L"ssctcig",
+ L"A", //
+ L"B", //
+
+ L'A', Tile::hopper, L'B', Item::minecart,
+ L'V');
+
addShapedRecipy(new ItemInstance(Item::boat, 1), //
L"ssctg",
L"# #", //
@@ -616,14 +640,14 @@ Recipes::Recipes()
L'T');
addShapedRecipy(new ItemInstance(Tile::torch, 4), //
- L"sscicig",
+ L"ssczcig",
L"X", //
L"#", //
- L'X', Item::coal,//
+ L'X', new ItemInstance(Item::coal, 1, CoalItem::STONE_COAL),//
L'#', Item::stick,
L'T');
- addShapedRecipy(new ItemInstance(Tile::lightGem, 1), //
+ addShapedRecipy(new ItemInstance(Tile::glowstone, 1), //
L"sscig",
L"##", //
L"##", //
@@ -644,7 +668,7 @@ Recipes::Recipes()
L"X", //
L"#", //
- L'#', Tile::stoneBrick, L'X', Item::stick,
+ L'#', Tile::cobblestone, L'X', Item::stick,
L'M');
addShapedRecipy(new ItemInstance(Tile::tripWireSource, 2), //
@@ -656,7 +680,7 @@ Recipes::Recipes()
L'#', Tile::wood, L'S', Item::stick, L'I', Item::ironIngot,
L'M');
- addShapedRecipy(new ItemInstance(Tile::notGate_on, 1), //
+ addShapedRecipy(new ItemInstance(Tile::redstoneTorch_on, 1), //
L"sscicig",
L"X", //
L"#", //
@@ -664,14 +688,40 @@ Recipes::Recipes()
L'#', Item::stick, L'X', Item::redStone,
L'M');
- addShapedRecipy(new ItemInstance(Item::diode, 1), //
+ addShapedRecipy(new ItemInstance(Item::repeater, 1), //
L"ssctcictg",
L"#X#", //
L"III", //
- L'#', Tile::notGate_on, L'X', Item::redStone, L'I', Tile::rock,
+ L'#', Tile::redstoneTorch_on, L'X', Item::redStone, L'I', Tile::stone,
L'M');
+ addShapedRecipy(new ItemInstance(Item::comparator, 1), //
+ L"sssctcictg",
+ L" # ", //
+ L"#X#", //
+ L"III", //
+
+ L'#', Tile::redstoneTorch_on, L'X', Item::netherQuartz, L'I', Tile::stone,
+ L'M');
+
+ addShapedRecipy(new ItemInstance(Tile::daylightDetector),
+ L"sssctcictg",
+ L"GGG",
+ L"QQQ",
+ L"WWW",
+
+ L'G', Tile::glass, L'Q', Item::netherQuartz, L'W', Tile::woodSlabHalf,
+ L'M');
+
+ addShapedRecipy(new ItemInstance(Tile::hopper),
+ L"ssscictg",
+ L"I I", //
+ L"ICI", //
+ L" I ", //
+
+ L'I', Item::ironIngot, L'C', Tile::chest,
+ L'M');
addShapedRecipy(new ItemInstance(Item::clock, 1), //
L"ssscicig",
@@ -688,12 +738,21 @@ Recipes::Recipes()
addShapelessRecipy(new ItemInstance(Item::fireball, 3), //
L"iiig",
- Item::sulphur, Item::blazePowder,Item::coal,
+ Item::gunpowder, Item::blazePowder,Item::coal,
L'T');
addShapelessRecipy(new ItemInstance(Item::fireball, 3), //
L"iizg",
- Item::sulphur, Item::blazePowder,new ItemInstance(Item::coal, 1, CoalItem::CHAR_COAL),
+ Item::gunpowder, Item::blazePowder,new ItemInstance(Item::coal, 1, CoalItem::CHAR_COAL),
+ L'T');
+
+ addShapedRecipy(new ItemInstance(Item::lead, 2), //
+ L"ssscicig",
+ L"~~ ", //
+ L"~O ", //
+ L" ~", //
+
+ L'~', Item::string, L'O', Item::slimeBall,
L'T');
@@ -706,7 +765,6 @@ Recipes::Recipes()
L'#', Item::ironIngot, L'X', Item::redStone,
L'T');
- // 4J-PB Added a MapItem init
addShapedRecipy(new ItemInstance(Item::map, 1), //
L"ssscicig",
L"###", //
@@ -719,14 +777,14 @@ Recipes::Recipes()
addShapedRecipy(new ItemInstance(Tile::button, 1), //
L"sctg",
L"#", //
- //L"#", //
- L'#', Tile::rock,
+
+ L'#', Tile::stone,
L'M');
addShapedRecipy(new ItemInstance(Tile::button_wood, 1), //
L"sctg",
L"#", //
- //L"#", //
+
L'#', Tile::wood,
L'M');
@@ -739,16 +797,38 @@ Recipes::Recipes()
addShapedRecipy(new ItemInstance(Tile::pressurePlate_stone, 1), //
L"sctg",
L"##", //
- L'#', Tile::rock,
+ L'#', Tile::stone,
L'M');
+ addShapedRecipy(new ItemInstance(Tile::weightedPlate_heavy, 1), //
+ L"scig",
+ L"##", //
+
+ L'#', Item::ironIngot,
+ L'M');
+
+ addShapedRecipy(new ItemInstance(Tile::weightedPlate_light, 1), //
+ L"scig",
+ L"##", //
+
+ L'#', Item::goldIngot,
+ L'M');
addShapedRecipy(new ItemInstance(Tile::dispenser, 1), //
L"sssctcicig",
L"###", //
L"#X#", //
L"#R#", //
- L'#', Tile::stoneBrick, L'X', Item::bow, L'R', Item::redStone,
+ L'#', Tile::cobblestone, L'X', Item::bow, L'R', Item::redStone,
+ L'M');
+
+ addShapedRecipy(new ItemInstance(Tile::dropper, 1), //
+ L"sssctcig",
+ L"###", //
+ L"# #", //
+ L"#R#", //
+
+ L'#', Tile::cobblestone, L'R', Item::redStone,
L'M');
addShapedRecipy(new ItemInstance(Item::cauldron, 1), //
@@ -765,7 +845,7 @@ Recipes::Recipes()
L" B ", //
L"###", //
- L'#', Tile::stoneBrick, L'B', Item::blazeRod,
+ L'#', Tile::cobblestone, L'B', Item::blazeRod,
L'S');
@@ -778,7 +858,7 @@ Recipes::Recipes()
L'T');
- addShapedRecipy(new ItemInstance(Tile::recordPlayer, 1), //
+ addShapedRecipy(new ItemInstance(Tile::jukebox, 1), //
L"sssctcig",
L"###", //
L"#X#", //
@@ -787,8 +867,6 @@ Recipes::Recipes()
L'#', Tile::wood, L'X', Item::diamond,
'D');
-
-
addShapedRecipy(new ItemInstance(Item::paper, 3), //
L"scig",
L"###", //
@@ -807,7 +885,7 @@ Recipes::Recipes()
//addShapelessRecipy(new ItemInstance(Item.writingBook, 1), //
// Item.book, new ItemInstance(Item.dye_powder, 1, DyePowderItem.BLACK), Item.feather);
- addShapedRecipy(new ItemInstance(Tile::musicBlock, 1), //
+ addShapedRecipy(new ItemInstance(Tile::noteblock, 1), //
L"sssctcig",
L"###", //
L"#X#", //
@@ -831,7 +909,7 @@ Recipes::Recipes()
L"#X#", //
L"###", //
- L'#', Item::stick, L'X', Tile::cloth,
+ L'#', Item::stick, L'X', Tile::wool,
L'D');
@@ -878,7 +956,7 @@ Recipes::Recipes()
L"#X#", //
L"#R#", //
- L'#', Tile::stoneBrick, L'X', Item::ironIngot, L'R', Item::redStone, L'T', Tile::wood,
+ L'#', Tile::cobblestone, L'X', Item::ironIngot, L'R', Item::redStone, L'T', Tile::wood,
L'M');
addShapedRecipy(new ItemInstance((Tile *)Tile::pistonStickyBase, 1), //
@@ -890,6 +968,30 @@ Recipes::Recipes()
L'M');
+ // 4J Stu - Added some dummy firework recipes to allow us to navigate forward to the fireworks scene
+ addShapedRecipy(new ItemInstance(Item::fireworks, 1), //
+ L"sscicig",
+ L" P ", //
+ L" G ", //
+
+ L'P', Item::paper, L'G', Item::gunpowder,
+ L'D');
+
+ addShapedRecipy(new ItemInstance(Item::fireworksCharge,1), //
+ L"sscicig",
+ L" D ", //
+ L" G ", //
+
+ L'D', Item::dye_powder, L'G', Item::gunpowder,
+ L'D');
+
+ addShapedRecipy(new ItemInstance(Item::fireworksCharge,1), //
+ L"sscicig",
+ L" D ", //
+ L" C ", //
+
+ L'D', Item::dye_powder, L'C', Item::fireworksCharge,
+ L'D');
// Sort so the largest recipes get checked first!
@@ -1005,7 +1107,7 @@ ShapedRecipy *Recipes::addShapedRecipy(ItemInstance *result, ...)
break;
case L'i':
pItem=va_arg(vl,Item *);
- pItemInstance= new ItemInstance(pItem);
+ pItemInstance= new ItemInstance(pItem,1,ANY_AUX_VALUE);
mappings->insert(myMap::value_type(wchFrom,pItemInstance));
break;
case L't':
@@ -1146,7 +1248,7 @@ void Recipes::addShapelessRecipy(ItemInstance *result,... )
recipies->push_back(new ShapelessRecipy(result, ingredients, group));
}
-shared_ptr<ItemInstance> Recipes::getItemFor(shared_ptr<CraftingContainer> craftSlots, Level *level)
+shared_ptr<ItemInstance> Recipes::getItemFor(shared_ptr<CraftingContainer> craftSlots, Level *level, Recipy *recipesClass /*= NULL*/)
{
int count = 0;
shared_ptr<ItemInstance> first = nullptr;
@@ -1173,11 +1275,18 @@ shared_ptr<ItemInstance> Recipes::getItemFor(shared_ptr<CraftingContainer> craft
return shared_ptr<ItemInstance>( new ItemInstance(first->id, 1, resultDamage) );
}
- AUTO_VAR(itEnd, recipies->end());
- for (AUTO_VAR(it, recipies->begin()); it != itEnd; it++)
+ if(recipesClass != NULL)
+ {
+ if (recipesClass->matches(craftSlots, level)) return recipesClass->assemble(craftSlots);
+ }
+ else
{
- Recipy *r = *it; //recipies->at(i);
- if (r->matches(craftSlots, level)) return r->assemble(craftSlots);
+ AUTO_VAR(itEnd, recipies->end());
+ for (AUTO_VAR(it, recipies->begin()); it != itEnd; it++)
+ {
+ Recipy *r = *it; //recipies->at(i);
+ if (r->matches(craftSlots, level)) return r->assemble(craftSlots);
+ }
}
return nullptr;
}