From b6e25415cac1f22bc9d64ffca8108ca0a7e13df7 Mon Sep 17 00:00:00 2001 From: Sylvessa <225480449+sylvessa@users.noreply.github.com> Date: Sun, 22 Mar 2026 17:37:59 -0500 Subject: [PATCH 1/6] Remove redundant buffer in UIScene_SettingsGraphicsMenu.cpp (#1348) (#1380) --- Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp index b258d8c3..e9a85fa5 100644 --- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp @@ -222,9 +222,8 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal const int fovValue = sliderValueToFov(value); pMinecraft->gameRenderer->SetFovVal(static_cast(fovValue)); app.SetGameSettings(m_iPad, eGameSetting_FOV, value); - WCHAR tempString[256]; - swprintf(tempString, 256, L"FOV: %d", fovValue); - m_sliderFOV.setLabel(tempString); + swprintf(TempString, 256, L"FOV: %d", fovValue); + m_sliderFOV.setLabel(TempString); } break; From 603c6ba7cb97b2f3e79a8f9eaa6f148db6a03ed3 Mon Sep 17 00:00:00 2001 From: Iruka Wolf <176847413+Iruka-Wolf@users.noreply.github.com> Date: Sun, 22 Mar 2026 18:49:14 -0700 Subject: [PATCH 2/6] Fix missing trapped chest textures in Natural Texture Pack (#1381) Co-authored-by: Iruka-Wolf <17684713+Iruka-Wolf@users.noreply.github.com> --- .../DLC/Natural/Data/x32Data.pck | Bin 2983911 -> 3015066 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Minecraft.Client/Windows64Media/DLC/Natural/Data/x32Data.pck b/Minecraft.Client/Windows64Media/DLC/Natural/Data/x32Data.pck index c5f592c4249cf29b8d51a34bc1d58e70431fa168..5bb3ebfc26c006e9e126294b75867b145ba3f41e 100644 GIT binary patch delta 35313 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

u5iEv9*jR-l1*VDGI1-5 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 o8v*?aE*Qvmg}|=#|AQ90Dcy}tN Date: Sun, 22 Mar 2026 20:50:06 -0500 Subject: [PATCH 3/6] allow displaying item lore (#1384) --- Minecraft.World/ItemInstance.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Minecraft.World/ItemInstance.cpp b/Minecraft.World/ItemInstance.cpp index 4906c22e..b4f9b2ad 100644 --- a/Minecraft.World/ItemInstance.cpp +++ b/Minecraft.World/ItemInstance.cpp @@ -615,7 +615,7 @@ vector *ItemInstance::getHoverText(shared_ptr player, bool a if (tag->contains(L"display")) { - //CompoundTag *display = tag->getCompound(L"display"); + CompoundTag *display = tag->getCompound(L"display"); //if (display->contains(L"color")) //{ @@ -631,8 +631,7 @@ vector *ItemInstance::getHoverText(shared_ptr player, bool a // } //} - // 4J: Lore isn't in use in game - /*if (display->contains(L"Lore")) + if (display->contains(L"Lore")) { ListTag *lore = (ListTag *) display->getList(L"Lore"); if (lore->size() > 0) @@ -643,7 +642,7 @@ vector *ItemInstance::getHoverText(shared_ptr player, bool a lines->push_back(lore->get(i)->data); } } - }*/ + } } } From ebab3ec40f50a219c1f535d5b24cfd1a9b9a58fe Mon Sep 17 00:00:00 2001 From: Alezito2008 <92759854+Alezito2008@users.noreply.github.com> Date: Sun, 22 Mar 2026 23:05:04 -0300 Subject: [PATCH 4/6] Clicking outside container now drops items (#1306) Java Edition KBM input parity --- Minecraft.World/AbstractContainerMenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Minecraft.World/AbstractContainerMenu.cpp b/Minecraft.World/AbstractContainerMenu.cpp index c98fc22c..0b2abc23 100644 --- a/Minecraft.World/AbstractContainerMenu.cpp +++ b/Minecraft.World/AbstractContainerMenu.cpp @@ -157,7 +157,7 @@ shared_ptr AbstractContainerMenu::clicked(int slotIndex, int butto shared_ptr clickedEntity = nullptr; shared_ptr inventory = player->inventory; - if (slotIndex < 0 || slotIndex >= (int)slots.size()) + if ((slotIndex < 0 && slotIndex != SLOT_CLICKED_OUTSIDE) || slotIndex >= (int)slots.size()) return nullptr; if (clickType == CLICK_QUICK_CRAFT) From 39e46751bf15bc106e5232d9be74dadd21781eaa Mon Sep 17 00:00:00 2001 From: Revela Date: Sun, 22 Mar 2026 21:09:10 -0500 Subject: [PATCH 5/6] Add clipboard paste support to UIControl_TextInput and UIScene_Keyboard (#1298) Previously paste only worked in the chat screen. Wire Screen::getClipboard() into the two remaining text input paths so Ctrl+V works for sign editing, seed entry, server IP/port, and world name fields. --- .../Common/UI/UIControl_TextInput.cpp | 26 +++++++++++++++ .../Common/UI/UIScene_Keyboard.cpp | 33 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/Minecraft.Client/Common/UI/UIControl_TextInput.cpp b/Minecraft.Client/Common/UI/UIControl_TextInput.cpp index 8e679b7c..76f25afb 100644 --- a/Minecraft.Client/Common/UI/UIControl_TextInput.cpp +++ b/Minecraft.Client/Common/UI/UIControl_TextInput.cpp @@ -1,6 +1,7 @@ #include "stdafx.h" #include "UI.h" #include "UIControl_TextInput.h" +#include "..\..\Screen.h" UIControl_TextInput::UIControl_TextInput() { @@ -211,6 +212,31 @@ UIControl_TextInput::EDirectEditResult UIControl_TextInput::tickDirectEdit() } } + // Paste from clipboard + if (g_KBMInput.IsKeyPressed('V') && g_KBMInput.IsKeyDown(VK_CONTROL)) + { + wstring pasted = Screen::getClipboard(); + wstring sanitized; + sanitized.reserve(pasted.length()); + + for (wchar_t pc : pasted) + { + if (pc >= 0x20) // Keep printable characters + { + if (m_iCharLimit > 0 && (m_editBuffer.length() + sanitized.length()) >= (size_t)m_iCharLimit) + break; + sanitized += pc; + } + } + + if (!sanitized.empty()) + { + m_editBuffer.insert(m_iCursorPos, sanitized); + m_iCursorPos += (int)sanitized.length(); + changed = true; + } + } + // Arrow keys, Home, End, Delete for cursor movement if (g_KBMInput.IsKeyPressed(VK_LEFT) && m_iCursorPos > 0) { diff --git a/Minecraft.Client/Common/UI/UIScene_Keyboard.cpp b/Minecraft.Client/Common/UI/UIScene_Keyboard.cpp index 2f2f9132..35edf17f 100644 --- a/Minecraft.Client/Common/UI/UIScene_Keyboard.cpp +++ b/Minecraft.Client/Common/UI/UIScene_Keyboard.cpp @@ -1,6 +1,7 @@ #include "stdafx.h" #include "UI.h" #include "UIScene_Keyboard.h" +#include "..\..\Screen.h" #ifdef _WINDOWS64 // Global buffer that stores the text entered in the native keyboard scene. @@ -224,6 +225,38 @@ void UIScene_Keyboard::tick() } } + // Paste from clipboard + if (g_KBMInput.IsKeyPressed('V') && g_KBMInput.IsKeyDown(VK_CONTROL)) + { + wstring pasted = Screen::getClipboard(); + wstring sanitized; + sanitized.reserve(pasted.length()); + + for (wchar_t pc : pasted) + { + if (pc >= 0x20) // Keep printable characters + { + if (static_cast(m_win64TextBuffer.length() + sanitized.length()) >= m_win64MaxChars) + break; + sanitized += pc; + } + } + + if (!sanitized.empty()) + { + if (m_bPCMode) + { + m_win64TextBuffer.insert(m_iCursorPos, sanitized); + m_iCursorPos += (int)sanitized.length(); + } + else + { + m_win64TextBuffer += sanitized; + } + changed = true; + } + } + if (m_bPCMode) { // Arrow keys, Home, End, Delete for cursor movement From 9a6d126ae14dc3b615085afc225f086976fb6da3 Mon Sep 17 00:00:00 2001 From: Lord Cambion Date: Mon, 23 Mar 2026 03:15:02 +0100 Subject: [PATCH 6/6] Stained Glass Survival Integration & Crafting UI Fix (#1195) * Added Stained Glass i found out that stained glass was not accessible in survival, then i saw they disabled it in the code * Grouping glass correctly in crafting table I removed the #if/endif from the ClothDyeRecipes.cpp and added a different one in StructureRecipies.cpp also changed the Tile definition giving it the same setBaseItemTypeAndMaterial of stained glass to group it correctly inside the crafting table UI. also aincremented the Vertical Slot for crafting table to include many more craftings in the same group --- .../Common/UI/IUIScene_CraftingMenu.h | 6 ++-- Minecraft.World/ClothDyeRecipes.cpp | 28 +++++++++---------- Minecraft.World/Recipes.cpp | 1 + Minecraft.World/StructureRecipies.cpp | 22 +++++++++++++++ Minecraft.World/Tile.cpp | 7 ++++- 5 files changed, 46 insertions(+), 18 deletions(-) diff --git a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h index 03a58378..fa8d9bd1 100644 --- a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h +++ b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h @@ -20,9 +20,9 @@ protected: eGroupTab_Right }; - static const int m_iMaxHSlotC = 12; - static const int m_iMaxHCraftingSlotC = 10; - static const int m_iMaxVSlotC = 17; + static const int m_iMaxHSlotC = 40; + static const int m_iMaxHCraftingSlotC = 40; + static const int m_iMaxVSlotC = 99; static const int m_iMaxDisplayedVSlotC = 3; static const int m_iIngredients3x3SlotC = 9; static const int m_iIngredients2x2SlotC = 4; diff --git a/Minecraft.World/ClothDyeRecipes.cpp b/Minecraft.World/ClothDyeRecipes.cpp index c0625d2e..35d0b5b8 100644 --- a/Minecraft.World/ClothDyeRecipes.cpp +++ b/Minecraft.World/ClothDyeRecipes.cpp @@ -21,20 +21,20 @@ void ClothDyeRecipes::addRecipes(Recipes *r) L'#', new ItemInstance(Tile::clayHardened), L'X', new ItemInstance(Item::dye_powder, 1, i),L'D'); -#if 0 - r->addShapedRecipy(new ItemInstance(Tile::stained_glass, 8, ColoredTile::getItemAuxValueForTileData(i)), // - L"sssczczg", - L"###", - L"#X#", - L"###", - L'#', new ItemInstance(Tile::glass), - L'X', new ItemInstance(Item::dye_powder, 1, i), L'D'); - r->addShapedRecipy(new ItemInstance(Tile::stained_glass_pane, 16, i), // - L"ssczg", - L"###", - L"###", - L'#', new ItemInstance(Tile::stained_glass, 1, i), L'D'); -#endif +//#if 0 +// r->addShapedRecipy(new ItemInstance(Tile::stained_glass, 8, ColoredTile::getItemAuxValueForTileData(i)), // +// L"sssczczg", +// L"###", +// L"#X#", +// L"###", +// L'#', new ItemInstance(Tile::glass), +// L'X', new ItemInstance(Item::dye_powder, 1, i), L'D'); +// r->addShapedRecipy(new ItemInstance(Tile::stained_glass_pane, 16, i), // +// L"ssczg", +// L"###", +// L"###", +// L'#', new ItemInstance(Tile::stained_glass, 1, i), L'D'); +//#endif } // some dye recipes diff --git a/Minecraft.World/Recipes.cpp b/Minecraft.World/Recipes.cpp index 24faaebe..48a04e15 100644 --- a/Minecraft.World/Recipes.cpp +++ b/Minecraft.World/Recipes.cpp @@ -299,6 +299,7 @@ Recipes::Recipes() pClothDyeRecipes->addRecipes(this); + addShapedRecipy(new ItemInstance(Tile::snow, 1), // L"sscig", L"##", // diff --git a/Minecraft.World/StructureRecipies.cpp b/Minecraft.World/StructureRecipies.cpp index 1706a7ce..652a730c 100644 --- a/Minecraft.World/StructureRecipies.cpp +++ b/Minecraft.World/StructureRecipies.cpp @@ -115,6 +115,28 @@ void StructureRecipies::addRecipes(Recipes *r) L'#', Tile::glass, L'D'); + + + + +// Stained Glass block + pane per color +for (int i = 0; i < 16; i++) +{ + r->addShapedRecipy(new ItemInstance(Tile::stained_glass, 8, ColoredTile::getItemAuxValueForTileData(i)), + L"sssczczg", + L"###", + L"#X#", + L"###", + L'#', new ItemInstance(Tile::glass), + L'X', new ItemInstance(Item::dye_powder, 1, i), + L'D'); + r->addShapedRecipy(new ItemInstance(Tile::stained_glass_pane, 16, ColoredTile::getItemAuxValueForTileData(i)), + L"ssczg", + L"###", + L"###", + L'#', new ItemInstance(Tile::stained_glass, 1, ColoredTile::getItemAuxValueForTileData(i)), + L'D'); +} r->addShapedRecipy(new ItemInstance(Tile::netherBrick, 1), // L"sscig", diff --git a/Minecraft.World/Tile.cpp b/Minecraft.World/Tile.cpp index de113714..e80ac108 100644 --- a/Minecraft.World/Tile.cpp +++ b/Minecraft.World/Tile.cpp @@ -371,7 +371,12 @@ void Tile::staticCtor() Tile::ironFence = (new ThinFenceTile(101, L"iron_bars", L"iron_bars", Material::metal, true)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence, Item::eMaterial_iron)->setDestroyTime(5.0f)->setExplodeable(10)->setSoundType(SOUND_METAL)->setDescriptionId(IDS_TILE_IRON_FENCE)->setUseDescriptionId(IDS_DESC_IRON_FENCE); - Tile::thinGlass = (new ThinFenceTile(102, L"glass", L"glass_pane_top", Material::glass, false)) ->setDestroyTime(0.3f)->setSoundType(SOUND_GLASS)->setDescriptionId(IDS_TILE_THIN_GLASS)->setUseDescriptionId(IDS_DESC_THIN_GLASS); + Tile::thinGlass = (new ThinFenceTile(102, L"glass", L"glass_pane_top", Material::glass, false)) + ->setBaseItemTypeAndMaterial(Item::eBaseItemType_glass, Item::eMaterial_glass) + ->setDestroyTime(0.3f) + ->setSoundType(SOUND_GLASS) + ->setDescriptionId(IDS_TILE_THIN_GLASS) + ->setUseDescriptionId(IDS_DESC_THIN_GLASS); Tile::melon = (new MelonTile(103)) ->setDestroyTime(1.0f)->setSoundType(SOUND_WOOD)->setIconName(L"melon")->setDescriptionId(IDS_TILE_MELON)->setUseDescriptionId(IDS_DESC_MELON_BLOCK); Tile::pumpkinStem = (new StemTile(104, Tile::pumpkin)) ->setDestroyTime(0.0f)->setSoundType(SOUND_WOOD)->setIconName(L"pumpkin_stem")->setDescriptionId(IDS_TILE_PUMPKIN_STEM)->sendTileData(); Tile::melonStem = (new StemTile(105, Tile::melon)) ->setDestroyTime(0.0f)->setSoundType(SOUND_WOOD)->setIconName(L"melon_stem")->setDescriptionId(IDS_TILE_MELON_STEM)->sendTileData();