feat: TU19 (Dec 2014) Features & Content (#155)

* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
This commit is contained in:
daoge
2026-03-03 03:04:10 +08:00
committed by GitHub
parent 84c31a2331
commit b3feddfef3
2069 changed files with 264842 additions and 139522 deletions

View File

@@ -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)
{
Recipy *r = *it; //recipies->at(i);
if (r->matches(craftSlots, level)) return r->assemble(craftSlots);
if (recipesClass->matches(craftSlots, level)) return recipesClass->assemble(craftSlots);
}
else
{
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;
}