fix: misc

This commit is contained in:
Fireblade
2026-06-20 20:56:13 -04:00
parent ce08a15069
commit 8e31c2d29d
10 changed files with 136 additions and 5 deletions
+113 -2
View File
@@ -35,6 +35,107 @@ wstring AbstractTexturePack::trim(wstring line)
return line;
}
namespace {
class XmlColourTableCallback : public ATG::ISAXCallback
{
public:
HRESULT StartDocument() override { return S_OK; }
HRESULT EndDocument() override { return S_OK; }
HRESULT ElementBegin(CONST WCHAR *strName, UINT NameLen, CONST ATG::XMLAttribute *pAttributes, UINT NumAttributes) override
{
const wstring elementName(strName, NameLen);
if (!equalsIgnoreCase(elementName, L"colour"))
{
return S_OK;
}
wstring colourName;
wstring colourValueText;
for(UINT i = 0; i < NumAttributes; ++i)
{
const ATG::XMLAttribute &attribute = pAttributes[i];
if (attribute.strValue == nullptr)
{
continue;
}
const wstring attributeName(attribute.strName, attribute.NameLen);
if (equalsIgnoreCase(attributeName, L"name"))
{
colourName.assign(attribute.strValue, attribute.ValueLen);
}
else if (equalsIgnoreCase(attributeName, L"value"))
{
colourValueText.assign(attribute.strValue, attribute.ValueLen);
}
}
if (!colourName.empty() && !colourValueText.empty())
{
if (colourValueText[0] == L'#')
{
colourValueText = colourValueText.substr(1);
}
int colourValue = _fromHEXString<int>(colourValueText);
m_colours.emplace_back(colourName, colourValue);
}
return S_OK;
}
HRESULT ElementContent(CONST WCHAR *, UINT, BOOL) override { return S_OK; }
HRESULT ElementEnd(CONST WCHAR *, UINT) override { return S_OK; }
HRESULT CDATABegin() override { return S_OK; }
HRESULT CDATAData(CONST WCHAR *, UINT, BOOL) override { return S_OK; }
HRESULT CDATAEnd() override { return S_OK; }
VOID Error(HRESULT hError, CONST CHAR *strMessage) override
{
app.DebugPrintf("colours.xml parse error (%08X): %s\n", hError, strMessage ? strMessage : "(unknown)");
}
vector<pair<wstring,int>> m_colours;
};
static bool loadColourTableFromXmlFile(File xmlFile, ColourTable *&outTable)
{
FileInputStream fis(xmlFile);
DWORD dwLength = xmlFile.length();
if(dwLength == 0) return false;
byteArray textData(static_cast<unsigned int>(dwLength));
fis.read(textData, 0, dwLength);
fis.close();
ATG::XMLParser parser;
XmlColourTableCallback callback;
parser.RegisterSAXCallbackInterface(&callback);
HRESULT hr = parser.ParseXMLBuffer(reinterpret_cast<const CHAR *>(textData.data), static_cast<UINT>(dwLength));
delete [] textData.data;
if (FAILED(hr) || callback.m_colours.empty())
return false;
ByteArrayOutputStream baos;
DataOutputStream dos(&baos);
dos.writeInt(1);
dos.writeInt(static_cast<int>(callback.m_colours.size()));
for (const auto &entry : callback.m_colours)
{
dos.writeUTF(entry.first);
dos.writeInt(entry.second);
}
byteArray binaryData = baos.toByteArray();
outTable = new ColourTable(binaryData.data, binaryData.length);
delete [] binaryData.data;
return true;
}
}
void AbstractTexturePack::loadIcon()
{
#ifdef _XBOX
@@ -261,12 +362,12 @@ void AbstractTexturePack::loadDefaultColourTable()
#ifdef __PS3__
// need to check if it's a BD build, so pass in the name
File coloursFile(AbstractTexturePack::getPath(true,app.GetBootedFromDiscPatch()?"colours.col":nullptr).append(L"res/colours.col"));
File coloursXmlFile(AbstractTexturePack::getPath(true,app.GetBootedFromDiscPatch()?"colours.xml":nullptr).append(L"res/colours.xml"));
#else
File coloursFile(AbstractTexturePack::getPath(true).append(L"res/colours.col"));
File coloursXmlFile(AbstractTexturePack::getPath(true).append(L"res/colours.xml"));
#endif
if(coloursFile.exists())
{
DWORD dwLength = coloursFile.length();
@@ -280,6 +381,16 @@ void AbstractTexturePack::loadDefaultColourTable()
delete [] data.data;
}
else if(coloursXmlFile.exists())
{
app.DebugPrintf("Default colours table not found, loading colours.xml fallback\n");
if(m_colourTable != nullptr) delete m_colourTable;
if(!loadColourTableFromXmlFile(coloursXmlFile, m_colourTable))
{
app.DebugPrintf("Failed to load colours.xml as a fallback\n");
app.FatalLoadError();
}
}
else
{
app.DebugPrintf("Failed to load the default colours table\n");
+12
View File
@@ -148,6 +148,18 @@ endif()
# Copy redist files
add_copyredist_target(Minecraft.Client)
# replace col file with xml file
add_custom_target(AssetTitleUpdateColourOverride_Minecraft.Client ALL
COMMAND ${CMAKE_COMMAND} -E remove "$<TARGET_FILE_DIR:Minecraft.Client>/Common/res/TitleUpdate/res/colours.col"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_CURRENT_SOURCE_DIR}/Common/res/TitleUpdate/res/colours.xml"
"$<TARGET_FILE_DIR:Minecraft.Client>/Common/res/TitleUpdate/res/colours.xml"
VERBATIM
)
add_dependencies(AssetTitleUpdateColourOverride_Minecraft.Client AssetFolderCopy_Minecraft.Client)
add_dependencies(Minecraft.Client AssetTitleUpdateColourOverride_Minecraft.Client)
set_property(TARGET AssetTitleUpdateColourOverride_Minecraft.Client PROPERTY FOLDER "Build")
# Make sure GameHDD exists on Windows
if(PLATFORM_NAME STREQUAL "Windows64")
add_gamehdd_target(Minecraft.Client)
+2
View File
@@ -286,6 +286,7 @@ enum eMinecraftColour
eMinecraftColour_Water_ExtremeHillsEdge,
eMinecraftColour_Water_Jungle,
eMinecraftColour_Water_JungleHills,
eMinecraftColour_Water_JungleEdge,
eMinecraftColour_Water_Mesa,
eMinecraftColour_Sky_Ocean,
@@ -311,6 +312,7 @@ enum eMinecraftColour
eMinecraftColour_Sky_ExtremeHillsEdge,
eMinecraftColour_Sky_Jungle,
eMinecraftColour_Sky_JungleHills,
eMinecraftColour_Sky_JungleEdge,
eMinecraftColour_Tile_RedstoneDust,
eMinecraftColour_Tile_RedstoneDustUnlit,
@@ -90,6 +90,7 @@ const wchar_t *ColourTable::ColourTableElements[eMinecraftColour_COUNT] =
L"Water_ExtremeHillsEdge",
L"Water_Jungle",
L"Water_JungleHills",
L"Water_JungleEdge",
L"Water_Mesa",
L"Sky_Ocean",
@@ -115,6 +116,7 @@ const wchar_t *ColourTable::ColourTableElements[eMinecraftColour_COUNT] =
L"Sky_ExtremeHillsEdge",
L"Sky_Jungle",
L"Sky_JungleHills",
L"Sky_JungleEdge",
L"Tile_RedstoneDust",
L"Tile_RedstoneDustUnlit",
@@ -87,6 +87,7 @@
<colour name="Water_ExtremeHillsEdge" value="ffffff"/>
<colour name="Water_Jungle" value="ffffff"/>
<colour name="Water_JungleHills" value="ffffff"/>
<colour name="Water_JungleEdge" value="ffffff"/>
<colour name="Water_Mesa" value="3f76e4"/>
<!-- Sky colours -->
@@ -113,6 +114,7 @@
<colour name="Sky_ExtremeHillsEdge" value="7EA3FF"/>
<colour name="Sky_Jungle" value="75ABFF"/>
<colour name="Sky_JungleHills" value="75ABFF"/>
<colour name="Sky_JungleEdge" value="75ABFF"/>
<colour name="Sky_Dawn_Dark" value="B23333"/>
<colour name="Sky_Dawn_Bright" value="FFE533"/>
+2 -2
View File
@@ -109,7 +109,7 @@ void Biome::staticCtor()
Biome::smallerExtremeHills = (new ExtremeHillsBiome(20))->setColor(0x72789a)->setName(L"Extreme Hills Edge")->setDepthAndScale(0.2f, 0.8f)->setTemperatureAndDownfall(0.2f, 0.3f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_ExtremeHillsEdge, eMinecraftColour_Foliage_ExtremeHillsEdge, eMinecraftColour_Water_ExtremeHillsEdge,eMinecraftColour_Sky_ExtremeHillsEdge);
Biome::jungle = (new JungleBiome(21, false))->setColor(0x537b09)->setName(L"Jungle")->setLeafColor(0x537b09)->setTemperatureAndDownfall(1.2f, 0.9f)->setDepthAndScale(0.2f, 0.4f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Jungle, eMinecraftColour_Foliage_Jungle, eMinecraftColour_Water_Jungle,eMinecraftColour_Sky_Jungle);
Biome::jungleHills = (new JungleBiome(22, false))->setColor(0x2c4205)->setName(L"Jungle Hills")->setLeafColor(0x537b09)->setTemperatureAndDownfall(1.2f, 0.9f)->setDepthAndScale(1.8f, 0.5f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_JungleHills, eMinecraftColour_Foliage_JungleHills, eMinecraftColour_Water_JungleHills,eMinecraftColour_Sky_JungleHills);
Biome::jungleEdge = (new JungleBiome(23, true))->setColor(0x6458135)->setName(L"Jungle Edge")->setLeafColor(0x5470985)->setTemperatureAndDownfall(0.95F, 0.8F);
Biome::jungleEdge = (new JungleBiome(23, true))->setColor(0x628b17)->setName(L"Jungle Edge")->setLeafColor(0x537b09)->setTemperatureAndDownfall(0.95F, 0.8F)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Jungle, eMinecraftColour_Foliage_Jungle, eMinecraftColour_Water_JungleEdge,eMinecraftColour_Sky_JungleEdge);
Biome::deepOcean= (new OceanBiome(24))->setName(L"Deep Ocean")->setDepthAndScale(-1.8,0.1f)->setColor(0x000070)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Ocean, eMinecraftColour_Foliage_Ocean, eMinecraftColour_Water_Ocean,eMinecraftColour_Sky_Ocean);;
//public static final BiomeGenBase stoneBeach = (new BiomeGenStoneBeach(25)).setColor(10658436).setBiomeName("Stone Beach").setTemperatureRainfall(0.2F, 0.3F).setHeight(height_RockyWaters);
Biome::coldBeach = (new BeachBiome(26))->setColor(0xFAF0C0)->setName(L"Cold Beach")->setTemperatureAndDownfall(0.05F, 0.3F)->setDepthAndScale(0.0F, 0.025F)->setSnowCovered()->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_IcePlains, eMinecraftColour_Foliage_IcePlains, eMinecraftColour_Water_IcePlains, eMinecraftColour_Sky_IcePlains);
@@ -137,7 +137,7 @@ void Biome::staticCtor()
Biome::swamplandM = (new SwampBiome(134))->setColor(0x07F9B2)->setName(L"Swampland M")->setLeafColor(0x8BAF48)->setDepthAndScale(-0.1f, 0.3f)->setTemperatureAndDownfall(0.8f, 0.9f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Swampland, eMinecraftColour_Foliage_Swampland, eMinecraftColour_Water_Swampland,eMinecraftColour_Sky_Swampland);
Biome::iceSpikes = (new IceBiome(140,true))->setColor(0xffffff)->setName(L"Ice Spikes")->setSnowCovered()->setTemperatureAndDownfall(0, 0.5f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_IcePlains, eMinecraftColour_Foliage_IcePlains, eMinecraftColour_Water_IcePlains,eMinecraftColour_Sky_IcePlains);
Biome::jungleM = (new JungleBiome(149, false))->setColor(0x537b09)->setName(L"Jungle M")->setLeafColor(0x537b09)->setTemperatureAndDownfall(1.2f, 0.9f)->setDepthAndScale(0.2f, 0.4f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Jungle, eMinecraftColour_Foliage_Jungle, eMinecraftColour_Water_Jungle,eMinecraftColour_Sky_Jungle);
Biome::jungleEdgeM = (new JungleBiome(151, true))->setColor(0x6458135)->setName(L"Jungle Edge M")->setLeafColor(0x5470985)->setTemperatureAndDownfall(0.95F, 0.8F);
Biome::jungleEdgeM = (new JungleBiome(151, true))->setColor(0x628b17)->setName(L"Jungle Edge M")->setLeafColor(0x537b09)->setTemperatureAndDownfall(0.95F, 0.8F)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Jungle, eMinecraftColour_Foliage_Jungle, eMinecraftColour_Water_JungleEdge, eMinecraftColour_Sky_JungleEdge);
Biome::birchForestM=(new ForestBiome::MutatedBirchForestBiome(155, biomes[27]))->setColor(0x47875a)->setName(L"Birch Forest M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Forest, eMinecraftColour_Foliage_Birch, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_Forest);
Biome::birchForestHillsM=(new ForestBiome::MutatedBirchForestBiome(156, biomes[28]))->setColor(0x47875a)->setName(L"Birch Forest Hills M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_ForestHills, eMinecraftColour_Foliage_Birch, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_ForestHills);
Biome::roofedForestM=(new ForestBiome::MutatedForestBiome(157, biomes[29]))->setColor(0x177a35)->setName(L"Roofed Forest M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_RoofedForest, eMinecraftColour_Foliage_RoofedForest, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_Forest);
+1 -1
View File
@@ -397,7 +397,7 @@ void Item::staticCtor()
Item::reeds = ( new TilePlanterItem(82, Tile::reeds) ) ->setIconName(L"reeds")->setDescriptionId(IDS_ITEM_REEDS)->setUseDescriptionId(IDS_DESC_REEDS);
Item::paper = ( new Item(83) ) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_paper, Item::eMaterial_paper)->setIconName(L"paper")->setDescriptionId(IDS_ITEM_PAPER)->setUseDescriptionId(IDS_DESC_PAPER);
Item::book = ( new BookItem(84) ) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_paper, Item::eMaterial_book)->setIconName(L"book")->setDescriptionId(IDS_ITEM_BOOK)->setUseDescriptionId(IDS_DESC_BOOK);
Item::slime_ball = ( new Item(85) ) ->setIconName(L"slimeball")->setDescriptionId(IDS_ITEM_SLIMEBALL)->setUseDescriptionId(IDS_DESC_SLIMEBALL);
Item::slime_ball = ( new Item(85) ) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_treasure, Item::eMaterial_slime)->setIconName(L"slimeball")->setDescriptionId(IDS_ITEM_SLIMEBALL)->setUseDescriptionId(IDS_DESC_SLIMEBALL);
Item::chest_minecart = ( new MinecartItem(86, Minecart::TYPE_CHEST) ) ->setIconName(L"chest_minecart")->setDescriptionId(IDS_ITEM_MINECART_CHEST)->setUseDescriptionId(IDS_DESC_MINECARTWITHCHEST);
Item::furnace_minecart = ( new MinecartItem(87, Minecart::TYPE_FURNACE) )->setIconName(L"furnace_minecart")->setDescriptionId(IDS_ITEM_MINECART_FURNACE)->setUseDescriptionId(IDS_DESC_MINECARTWITHFURNACE);
Item::egg = ( new EggItem(88) ) ->setIconName(L"egg")->setDescriptionId(IDS_ITEM_EGG)->setUseDescriptionId(IDS_DESC_EGG);
+1
View File
@@ -87,6 +87,7 @@ public:
eMaterial_redstone,
eMaterial_coal,
eMaterial_paper,
eMaterial_slime,
eMaterial_book,
eMaterial_bookshelf,
eMaterial_wheat,
+1
View File
@@ -147,6 +147,7 @@ void PistonPieceEntity::moveCollidedEntities(float progress, float amount)
{
it->yd = amount;
}
it->yd = it->yd * 1.25f;
it->onGround = false;
it->fallDistance = 0.0f;
it->hasImpulse = true;