diff options
| author | Loki Rautio <lokirautio@gmail.com> | 2026-03-04 03:56:03 -0600 |
|---|---|---|
| committer | Loki Rautio <lokirautio@gmail.com> | 2026-03-04 03:56:03 -0600 |
| commit | 42aec6dac53dffa6afe072560a7e1d4986112538 (patch) | |
| tree | 0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/Recipes.cpp | |
| parent | c9d58eeac7c72f0b3038e084667b4d89a6249fce (diff) | |
| parent | ef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff) | |
Merge branch 'main' into pr/win64-world-saves
# Conflicts:
# Minecraft.Client/MinecraftServer.cpp
# README.md
Diffstat (limited to 'Minecraft.World/Recipes.cpp')
| -rw-r--r-- | Minecraft.World/Recipes.cpp | 219 |
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; } |
