From 4ad74261e529597c1cb4026059173cf8b46cb684 Mon Sep 17 00:00:00 2001 From: Dawid Krystian Czaplicki <100421659+dawc17@users.noreply.github.com> Date: Fri, 20 Feb 2026 20:32:14 +0100 Subject: [PATCH 1/2] add variable breaking speed for stone on pickaxes --- src/core/main.cpp | 5 ++++- src/utils/BlockTypes.cpp | 30 ++++++++++++++++++++++++++++++ src/utils/BlockTypes.h | 3 +++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index 5960472..b598b4e 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1,3 +1,4 @@ +#include #ifdef _WIN32 #define NOMINMAX #define WIN32_LEAN_AND_MEAN @@ -678,7 +679,9 @@ int main(int argc, char* argv[]) else { float hardness = getBlockHardness(player.breakingBlockId); - player.breakProgress += deltaTime / hardness; + uint8_t heldId = player.inventory.selectedItem().blockId; + float speedMult = getToolSpeedMultiplier(heldId, player.breakingBlockId); + player.breakProgress += (deltaTime / hardness) * speedMult; if (player.breakProgress >= 1.0f) { setBlockAtWorld(hit->blockPos.x, hit->blockPos.y, hit->blockPos.z, 0, *chunkManager); diff --git a/src/utils/BlockTypes.cpp b/src/utils/BlockTypes.cpp index 044c71b..c348386 100644 --- a/src/utils/BlockTypes.cpp +++ b/src/utils/BlockTypes.cpp @@ -1,4 +1,5 @@ #include "BlockTypes.h" +#include "../rendering/ToolModelGenerator.h" std::array g_blockTypes; std::array g_defaultBlockTypes; @@ -210,3 +211,32 @@ float getBlockHardness(uint8_t blockId) default: return 1.0f; } } + +ToolType getBlockPreferredTool(uint8_t blockId) +{ + switch (blockId) + { + case 3: //stone + case 22: //cobblestone + return ToolType::Pickaxe; + default: + return ToolType::None; + } +} + +float getToolSpeedMultiplier(uint8_t toolItemId, uint8_t blockId) +{ + ToolType preferred = getBlockPreferredTool(blockId); + if (preferred == ToolType::None) + return 1.0f; + + switch (toolItemId) + { + case TOOL_WOOD_PICKAXE: return 1.0f; + case TOOL_STONE_PICKAXE: return 1.5f; + case TOOL_IRON_PICKAXE: return 1.9f; + case TOOL_GOLD_PICKAXE: return 2.2f; + case TOOL_DIAMOND_PICKAXE: return 3.0f; + default: return 0.3f; + } +} diff --git a/src/utils/BlockTypes.h b/src/utils/BlockTypes.h index aaa54cd..a3d539f 100644 --- a/src/utils/BlockTypes.h +++ b/src/utils/BlockTypes.h @@ -26,6 +26,9 @@ enum BlockTex : int }; float getBlockHardness(uint8_t blockId); +enum class ToolType { None, Pickaxe }; +ToolType getBlockPreferredTool(uint8_t blockId); +float getToolSpeedMultiplier(uint8_t toolItemId, uint8_t blockId); struct BlockType { From 0320ce8e7803c613aeda289a2efd087baf70e604 Mon Sep 17 00:00:00 2001 From: Dawid Krystian Czaplicki <100421659+dawc17@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:27:01 +0100 Subject: [PATCH 2/2] Add axes/shovels/swords assets and tool support Add new tool and weapon textures and wire them into the build and game: embed new PNG assets in CMake, add tool IDs, register models in ToolModelGenerator, and include items in the creative inventory. Extend BlockTypes to recognize axes and shovels as preferred tools and provide speed multipliers per tool tier. Also adjust several ImGui window positions/sizes in imgui.ini. --- assets/textures/tools/diamond_axe.png | Bin 0 -> 171 bytes assets/textures/tools/diamond_shovel.png | Bin 0 -> 154 bytes assets/textures/tools/gold_axe.png | Bin 0 -> 171 bytes assets/textures/tools/gold_shovel.png | Bin 0 -> 154 bytes assets/textures/tools/iron_axe.png | Bin 0 -> 168 bytes assets/textures/tools/iron_shovel.png | Bin 0 -> 150 bytes assets/textures/tools/stone_axe.png | Bin 0 -> 170 bytes assets/textures/tools/stone_shovel.png | Bin 0 -> 154 bytes assets/textures/tools/wood_axe.png | Bin 0 -> 170 bytes assets/textures/tools/wood_shovel.png | Bin 0 -> 153 bytes assets/textures/weapons/diamond_sword.png | Bin 0 -> 182 bytes assets/textures/weapons/gold_sword.png | Bin 0 -> 182 bytes assets/textures/weapons/iron_sword.png | Bin 0 -> 179 bytes assets/textures/weapons/stone_sword.png | Bin 0 -> 182 bytes assets/textures/weapons/wood_sword.png | Bin 0 -> 181 bytes imgui.ini | 12 +++--- src/CMakeLists.txt | 19 +++++++++ src/gameplay/Inventory.cpp | 15 +++++++ src/rendering/ToolModelGenerator.cpp | 18 +++++++++ src/rendering/ToolModelGenerator.h | 21 ++++++++++ src/utils/BlockTypes.cpp | 47 ++++++++++++++++++---- src/utils/BlockTypes.h | 2 +- 22 files changed, 119 insertions(+), 15 deletions(-) create mode 100644 assets/textures/tools/diamond_axe.png create mode 100644 assets/textures/tools/diamond_shovel.png create mode 100644 assets/textures/tools/gold_axe.png create mode 100644 assets/textures/tools/gold_shovel.png create mode 100644 assets/textures/tools/iron_axe.png create mode 100644 assets/textures/tools/iron_shovel.png create mode 100644 assets/textures/tools/stone_axe.png create mode 100644 assets/textures/tools/stone_shovel.png create mode 100644 assets/textures/tools/wood_axe.png create mode 100644 assets/textures/tools/wood_shovel.png create mode 100644 assets/textures/weapons/diamond_sword.png create mode 100644 assets/textures/weapons/gold_sword.png create mode 100644 assets/textures/weapons/iron_sword.png create mode 100644 assets/textures/weapons/stone_sword.png create mode 100644 assets/textures/weapons/wood_sword.png diff --git a/assets/textures/tools/diamond_axe.png b/assets/textures/tools/diamond_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..7627f87b2a3c3b940e53d4d93d61853d425c0e65 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`MV>B>Ar-fh6Be*P*lhlr|4>S{ zSzWDEkEa>SvdG%YYyRIletkk3!=^NeZzjTj=RZ{cK3|2|!K~Tjbm`RQOkT@(|5e!K zPNbzcdwk+Lb5mhB>Ar-fh6Be*<*c$qi|4>SH z-B&%C9#1otWtHda?*C8MXPJ=3uqjRAn~Ct>`482<&sSk~Fl#nBKl3@)GSeqJ{!f;v zP?$ZDSMj8_L3(peTV-nov%@Uw%U2(sQ`5AXn5$;_PV-vNn>UI{#vBuJjh8Yoyk1b@ U_EE)p2her~Pgg&ebxsLQ0CsFZ6aWAK literal 0 HcmV?d00001 diff --git a/assets/textures/tools/gold_shovel.png b/assets/textures/tools/gold_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..150cbb97e03f9f69aa0d3a2d997ebc6971f7b465 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`iJmTwAr-fh6C{ETTnl?@&og=H z&#Su&4DM~dKi$MRVb=LL4u)*Djh$u;vBn*0Cm94jm#Rz)+Uc|jY+bo((Z-t;MI;^g7#P|VvRBB=oyZNejKR~@&t;ucLK6VN CBQx^= literal 0 HcmV?d00001 diff --git a/assets/textures/tools/iron_axe.png b/assets/textures/tools/iron_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf133e33eff4553e9bff73040e31e41ba9799e5 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%``JOJ0Ar-fh6Be)+6c+yEKa`T) z#yE+$G1IQ%!-N0Q=6Ms+7&fIzd@~XLJO82j_xUQ!4ra|J{s!{#UpB;9#aK z?KCMo;T+pdp3htt*&0mBm#scL*Egs{>9$YNo!~W+H*Y#0NfS`Go#w^JuqUZC>Sg1X QZlKi+p00i_>zopr00!SZg#Z8m literal 0 HcmV?d00001 diff --git a/assets/textures/tools/iron_shovel.png b/assets/textures/tools/iron_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..079b236c71b2588aaac5f70231d85b2a7b0a8623 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`v7RoDAr-fh6C{ET96kEfo@eq> zNj5$?8;@Cv24~Il?l5GtF)reDxX!c4(};n^=B$h6*OZMC5=h5PhRWE;c#V}z|2sWUooS-rYZwy5re0zpUXO@geCwr<}+~s literal 0 HcmV?d00001 diff --git a/assets/textures/tools/stone_axe.png b/assets/textures/tools/stone_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..fb33584a7427d5ed5259cab4b0836044dfb481c0 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`g`O^sAr-fh6Be+4`10is|DlxZ zd8XN75|eW{e2Qyp|NcLB&hHYB!!@46^U@amH~#bF-{cgA6KNBk&6y)(uvYQ--}z4t zFyHLS;mC|@w31FSzN39ais90ond|t<%{(u5<`};$^k12llFlzU+p!^Mwk9jXBCXQ( UE#^*6K+73CUHx3vIVCg!0Gv}n`~Uy| literal 0 HcmV?d00001 diff --git a/assets/textures/tools/stone_shovel.png b/assets/textures/tools/stone_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1c0c282679a5191d27a35d499644dda6581001 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`iJmTwAr-fh6C{ETT)zC-o@esX z%4=&P6Jp}y{bwl}oSi#&Zo*jwvx{sCve_=GNHUlm@tIZA0gTe~DWM4f DfPgpd literal 0 HcmV?d00001 diff --git a/assets/textures/tools/wood_axe.png b/assets/textures/tools/wood_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..3a192033baaf3aeb44a5633bee38fd140884f1c4 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`g`O^sAr-fh6Be)=To?Jle<&q8 z&pVVkc@l49<~hD8|Kp_=ddy-xF)Q)LWuGtgZS(KcPvT*?$#Y5Or4HvZ( Tes}W@&~gS(S3j3^P6?&t;ucLK6U{ C!8d3C literal 0 HcmV?d00001 diff --git a/assets/textures/weapons/diamond_sword.png b/assets/textures/weapons/diamond_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1552d64ac74171eab7a8eca05581cc01d73e0f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`wVp1HAr-fh6BL*~+?@TlJ#mwX z^nSa)@xOmaUE+1P#zopr0O>?VqW}N^ literal 0 HcmV?d00001 diff --git a/assets/textures/weapons/gold_sword.png b/assets/textures/weapons/gold_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..0ddef045a18ed45bbb37cafef4cb3b678d7b60d8 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`wVp1HAr-fh6BL+l+*F0&RLdu3^d zu!e=wO>$~1jmu}g_|Id%^S^=fgu^WwXXn0r_22Z#j{nNXxg4DnxE#$6n+SKs&8bsU gPd}8aaGimns(-WAJ$Wl8phFluUHx3vIVCg!0Ic&wKmY&$ literal 0 HcmV?d00001 diff --git a/assets/textures/weapons/iron_sword.png b/assets/textures/weapons/iron_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..4d49c5aee68088b2429f120bddb0d01a79d22809 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Rh}-6Ar-fh6BL+t?AYr~1}rAGZ`}C9p13KOEwityt4Z2v+GfXD#YII2+9o_rPhmd6 zWl-XL;c!bq$L!93=RZvT&2P+N>CpF literal 0 HcmV?d00001 diff --git a/assets/textures/weapons/wood_sword.png b/assets/textures/weapons/wood_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..c04dc0a8571bce34f3fcd554873100150ff040cd GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`HJ&bxAr-fh6BL+dWOMy#Puyg( zed(&d`n>@vcNtR7D$G)0Zfi)(Wu5n5!Dri9g|qL{lnR_r6q$JxFWIbeLtxXNo*afq z#-NE4L>gTe~DWM4f?&n1a literal 0 HcmV?d00001 diff --git a/imgui.ini b/imgui.ini index 968af1b..6cf6939 100644 --- a/imgui.ini +++ b/imgui.ini @@ -7,11 +7,11 @@ Pos=38,36 Size=253,111 [Window][##MainMenu] -Pos=1030,513 +Pos=710,320 Size=499,350 [Window][##WorldSelect] -Pos=1030,438 +Pos=710,245 Size=500,500 [Window][Debug] @@ -23,7 +23,7 @@ Pos=587,46 Size=192,167 [Window][##PauseMenu] -Pos=1105,538 +Pos=785,345 Size=350,300 [Window][Chat] @@ -35,10 +35,10 @@ Pos=1030,438 Size=500,500 [Window][##Inventory] -Pos=1016,546 +Pos=696,353 Size=528,284 [Window][##CreativeInventory] -Pos=1016,564 -Size=528,248 +Pos=696,315 +Size=528,360 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9b4166a..f8c4ccb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -50,6 +50,25 @@ embed_asset(embed_stone_pickaxe_png "${_TEX}/tools/stone_pickaxe.png") embed_asset(embed_gold_pickaxe_png "${_TEX}/tools/gold_pickaxe.png") embed_asset(embed_iron_pickaxe_png "${_TEX}/tools/iron_pickaxe.png") +embed_asset(embed_diamond_axe_png "${_TEX}/tools/diamond_axe.png") +embed_asset(embed_wood_axe_png "${_TEX}/tools/wood_axe.png") +embed_asset(embed_stone_axe_png "${_TEX}/tools/stone_axe.png") +embed_asset(embed_gold_axe_png "${_TEX}/tools/gold_axe.png") +embed_asset(embed_iron_axe_png "${_TEX}/tools/iron_axe.png") + +embed_asset(embed_diamond_shovel_png "${_TEX}/tools/diamond_shovel.png") +embed_asset(embed_wood_shovel_png "${_TEX}/tools/wood_shovel.png") +embed_asset(embed_stone_shovel_png "${_TEX}/tools/stone_shovel.png") +embed_asset(embed_gold_shovel_png "${_TEX}/tools/gold_shovel.png") +embed_asset(embed_iron_shovel_png "${_TEX}/tools/iron_shovel.png") + +# weapons +embed_asset(embed_diamond_sword_png "${_TEX}/weapons/diamond_sword.png") +embed_asset(embed_wood_sword_png "${_TEX}/weapons/wood_sword.png") +embed_asset(embed_stone_sword_png "${_TEX}/weapons/stone_sword.png") +embed_asset(embed_gold_sword_png "${_TEX}/weapons/gold_sword.png") +embed_asset(embed_iron_sword_png "${_TEX}/weapons/iron_sword.png") + # blocks embed_asset(embed_dirt_png "${_TEX}/dirt.png") diff --git a/src/gameplay/Inventory.cpp b/src/gameplay/Inventory.cpp index 132eb4a..479c157 100644 --- a/src/gameplay/Inventory.cpp +++ b/src/gameplay/Inventory.cpp @@ -30,6 +30,21 @@ const std::vector& getCreativeItems() {TOOL_STONE_PICKAXE, "Stone Pickaxe"}, {TOOL_GOLD_PICKAXE, "Gold Pickaxe"}, {TOOL_IRON_PICKAXE, "Iron Pickaxe"}, + {TOOL_DIAMOND_AXE, "Diamond Axe"}, + {TOOL_WOOD_AXE, "Wood Axe"}, + {TOOL_STONE_AXE, "Stone Axe"}, + {TOOL_GOLD_AXE, "Gold Axe"}, + {TOOL_IRON_AXE, "Iron Axe"}, + {TOOL_DIAMOND_SHOVEL, "Diamond Shovel"}, + {TOOL_WOOD_SHOVEL, "Wood Shovel"}, + {TOOL_STONE_SHOVEL, "Stone Shovel"}, + {TOOL_GOLD_SHOVEL, "Gold Shovel"}, + {TOOL_IRON_SHOVEL, "Iron Shovel"}, + {TOOL_DIAMOND_SWORD, "Diamond Sword"}, + {TOOL_WOOD_SWORD, "Wood Sword"}, + {TOOL_STONE_SWORD, "Stone Sword"}, + {TOOL_GOLD_SWORD, "Gold Sword"}, + {TOOL_IRON_SWORD, "Iron Sword"}, }; return items; } diff --git a/src/rendering/ToolModelGenerator.cpp b/src/rendering/ToolModelGenerator.cpp index 0d2f708..a41a56b 100644 --- a/src/rendering/ToolModelGenerator.cpp +++ b/src/rendering/ToolModelGenerator.cpp @@ -188,6 +188,24 @@ void loadToolModels() {TOOL_STONE_PICKAXE, embed_stone_pickaxe_png_data, embed_stone_pickaxe_png_size}, {TOOL_GOLD_PICKAXE, embed_gold_pickaxe_png_data, embed_gold_pickaxe_png_size}, {TOOL_IRON_PICKAXE, embed_iron_pickaxe_png_data, embed_iron_pickaxe_png_size}, + + {TOOL_DIAMOND_AXE, embed_diamond_axe_png_data, embed_diamond_axe_png_size}, + {TOOL_WOOD_AXE, embed_wood_axe_png_data, embed_wood_axe_png_size}, + {TOOL_STONE_AXE, embed_stone_axe_png_data, embed_stone_axe_png_size}, + {TOOL_GOLD_AXE, embed_gold_axe_png_data, embed_gold_axe_png_size}, + {TOOL_IRON_AXE, embed_iron_axe_png_data, embed_iron_axe_png_size}, + + {TOOL_DIAMOND_SHOVEL, embed_diamond_shovel_png_data, embed_diamond_shovel_png_size}, + {TOOL_WOOD_SHOVEL, embed_wood_shovel_png_data, embed_wood_shovel_png_size}, + {TOOL_STONE_SHOVEL, embed_stone_shovel_png_data, embed_stone_shovel_png_size}, + {TOOL_GOLD_SHOVEL, embed_gold_shovel_png_data, embed_gold_shovel_png_size}, + {TOOL_IRON_SHOVEL, embed_iron_shovel_png_data, embed_iron_shovel_png_size}, + + {TOOL_DIAMOND_SWORD, embed_diamond_sword_png_data, embed_diamond_sword_png_size}, + {TOOL_WOOD_SWORD, embed_wood_sword_png_data, embed_wood_sword_png_size}, + {TOOL_STONE_SWORD, embed_stone_sword_png_data, embed_stone_sword_png_size}, + {TOOL_GOLD_SWORD, embed_gold_sword_png_data, embed_gold_sword_png_size}, + {TOOL_IRON_SWORD, embed_iron_sword_png_data, embed_iron_sword_png_size}, }; for (const auto &tool : tools) diff --git a/src/rendering/ToolModelGenerator.h b/src/rendering/ToolModelGenerator.h index 8b215c1..800fdb9 100644 --- a/src/rendering/ToolModelGenerator.h +++ b/src/rendering/ToolModelGenerator.h @@ -28,6 +28,27 @@ constexpr uint8_t TOOL_STONE_PICKAXE = 130; constexpr uint8_t TOOL_GOLD_PICKAXE = 131; constexpr uint8_t TOOL_IRON_PICKAXE = 132; +// axes +constexpr uint8_t TOOL_DIAMOND_AXE = 133; +constexpr uint8_t TOOL_WOOD_AXE = 134; +constexpr uint8_t TOOL_STONE_AXE = 135; +constexpr uint8_t TOOL_GOLD_AXE = 136; +constexpr uint8_t TOOL_IRON_AXE = 137; + +// shovels +constexpr uint8_t TOOL_DIAMOND_SHOVEL = 138; +constexpr uint8_t TOOL_WOOD_SHOVEL = 139; +constexpr uint8_t TOOL_STONE_SHOVEL = 140; +constexpr uint8_t TOOL_GOLD_SHOVEL = 141; +constexpr uint8_t TOOL_IRON_SHOVEL = 142; + +// swords +constexpr uint8_t TOOL_DIAMOND_SWORD = 143; +constexpr uint8_t TOOL_WOOD_SWORD = 144; +constexpr uint8_t TOOL_STONE_SWORD = 145; +constexpr uint8_t TOOL_GOLD_SWORD = 146; +constexpr uint8_t TOOL_IRON_SWORD = 147; + inline bool isToolItem(uint8_t id) { return id >= TOOL_ID_START; } class ToolModelGenerator { diff --git a/src/utils/BlockTypes.cpp b/src/utils/BlockTypes.cpp index c348386..1cad325 100644 --- a/src/utils/BlockTypes.cpp +++ b/src/utils/BlockTypes.cpp @@ -219,6 +219,14 @@ ToolType getBlockPreferredTool(uint8_t blockId) case 3: //stone case 22: //cobblestone return ToolType::Pickaxe; + case 4: //log + case 5: //planks + return ToolType::Axe; + case 1: //dirt + case 2: //grass + case 6: //sand + case 21: //snow + return ToolType::Shovel; default: return ToolType::None; } @@ -230,13 +238,36 @@ float getToolSpeedMultiplier(uint8_t toolItemId, uint8_t blockId) if (preferred == ToolType::None) return 1.0f; - switch (toolItemId) - { - case TOOL_WOOD_PICKAXE: return 1.0f; - case TOOL_STONE_PICKAXE: return 1.5f; - case TOOL_IRON_PICKAXE: return 1.9f; - case TOOL_GOLD_PICKAXE: return 2.2f; - case TOOL_DIAMOND_PICKAXE: return 3.0f; - default: return 0.3f; + if (preferred == ToolType::Pickaxe) { + switch (toolItemId) + { + case TOOL_WOOD_PICKAXE: return 1.0f; + case TOOL_STONE_PICKAXE: return 1.5f; + case TOOL_IRON_PICKAXE: return 1.9f; + case TOOL_GOLD_PICKAXE: return 2.2f; + case TOOL_DIAMOND_PICKAXE: return 3.0f; + default: return 0.3f; + } + } else if (preferred == ToolType::Axe) { + switch (toolItemId) + { + case TOOL_WOOD_AXE: return 1.0f; + case TOOL_STONE_AXE: return 1.5f; + case TOOL_IRON_AXE: return 1.9f; + case TOOL_GOLD_AXE: return 2.2f; + case TOOL_DIAMOND_AXE: return 3.0f; + default: return 0.3f; + } + } else if (preferred == ToolType::Shovel) { + switch (toolItemId) + { + case TOOL_WOOD_SHOVEL: return 1.0f; + case TOOL_STONE_SHOVEL: return 1.5f; + case TOOL_IRON_SHOVEL: return 1.9f; + case TOOL_GOLD_SHOVEL: return 2.2f; + case TOOL_DIAMOND_SHOVEL: return 3.0f; + default: return 0.3f; + } } + return 0.3f; } diff --git a/src/utils/BlockTypes.h b/src/utils/BlockTypes.h index a3d539f..16622fa 100644 --- a/src/utils/BlockTypes.h +++ b/src/utils/BlockTypes.h @@ -26,7 +26,7 @@ enum BlockTex : int }; float getBlockHardness(uint8_t blockId); -enum class ToolType { None, Pickaxe }; +enum class ToolType { None, Pickaxe, Axe, Shovel, Sword }; ToolType getBlockPreferredTool(uint8_t blockId); float getToolSpeedMultiplier(uint8_t toolItemId, uint8_t blockId);