diff --git a/README.md b/README.md index 53cff03..3228c05 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,12 @@ A pre-built `MorriCraft-Windows.zip` is available in the repository root. ## 📜 Version History -### v2.2.6 - Physics & World Management (Current) +### v2.2.7 - Performance & Assets (Current) +- **Lag Fix**: Reverted render distance to 4 and optimized frustum culling to restore high FPS. +- **New Icons**: Added high-quality textures for the Wooden Shovel, Pickaxe, Sword, and Hoe. +- **Physics**: Refined anti-stuck resolution for smoother jumping and landing. + +### v2.2.6 - World Management - **7:00 AM Spawn**: New worlds now start in the morning for immediate daylight. - **Naming System**: Cleaner sequential naming (`World`, `World 1`, `World 2`) instead of nested parentheses. - **Anti-Stuck Physics**: Active collision resolution pushes players out of blocks if they overlap. diff --git a/assets/wooden_hoe.png b/assets/wooden_hoe.png new file mode 100644 index 0000000..24eb874 Binary files /dev/null and b/assets/wooden_hoe.png differ diff --git a/assets/wooden_pickaxe.png b/assets/wooden_pickaxe.png new file mode 100644 index 0000000..e6d2288 Binary files /dev/null and b/assets/wooden_pickaxe.png differ diff --git a/assets/wooden_shovel.png b/assets/wooden_shovel.png new file mode 100644 index 0000000..2e30f49 Binary files /dev/null and b/assets/wooden_shovel.png differ diff --git a/assets/wooden_sword.png b/assets/wooden_sword.png new file mode 100644 index 0000000..17966fc Binary files /dev/null and b/assets/wooden_sword.png differ diff --git a/build-linux/MorriCraft b/build-linux/MorriCraft index 1e6cb8f..bcb4a74 100755 Binary files a/build-linux/MorriCraft and b/build-linux/MorriCraft differ diff --git a/build-linux/assets/version.txt b/build-linux/assets/version.txt index 437a354..d7e8f8b 100644 --- a/build-linux/assets/version.txt +++ b/build-linux/assets/version.txt @@ -1 +1 @@ -v2.2.6 +v2.2.7 diff --git a/build-linux/assets/wooden_hoe.png b/build-linux/assets/wooden_hoe.png new file mode 100644 index 0000000..24eb874 Binary files /dev/null and b/build-linux/assets/wooden_hoe.png differ diff --git a/build-linux/assets/wooden_pickaxe.png b/build-linux/assets/wooden_pickaxe.png new file mode 100644 index 0000000..e6d2288 Binary files /dev/null and b/build-linux/assets/wooden_pickaxe.png differ diff --git a/build-linux/assets/wooden_shovel.png b/build-linux/assets/wooden_shovel.png new file mode 100644 index 0000000..2e30f49 Binary files /dev/null and b/build-linux/assets/wooden_shovel.png differ diff --git a/build-linux/assets/wooden_sword.png b/build-linux/assets/wooden_sword.png new file mode 100644 index 0000000..17966fc Binary files /dev/null and b/build-linux/assets/wooden_sword.png differ diff --git a/build-windows/MorriCraft.exe b/build-windows/MorriCraft.exe index b1702d3..4ef503d 100755 Binary files a/build-windows/MorriCraft.exe and b/build-windows/MorriCraft.exe differ diff --git a/build-windows/assets/version.txt b/build-windows/assets/version.txt index 437a354..d7e8f8b 100644 --- a/build-windows/assets/version.txt +++ b/build-windows/assets/version.txt @@ -1 +1 @@ -v2.2.6 +v2.2.7 diff --git a/build-windows/assets/wooden_hoe.png b/build-windows/assets/wooden_hoe.png new file mode 100644 index 0000000..24eb874 Binary files /dev/null and b/build-windows/assets/wooden_hoe.png differ diff --git a/build-windows/assets/wooden_pickaxe.png b/build-windows/assets/wooden_pickaxe.png new file mode 100644 index 0000000..e6d2288 Binary files /dev/null and b/build-windows/assets/wooden_pickaxe.png differ diff --git a/build-windows/assets/wooden_shovel.png b/build-windows/assets/wooden_shovel.png new file mode 100644 index 0000000..2e30f49 Binary files /dev/null and b/build-windows/assets/wooden_shovel.png differ diff --git a/build-windows/assets/wooden_sword.png b/build-windows/assets/wooden_sword.png new file mode 100644 index 0000000..17966fc Binary files /dev/null and b/build-windows/assets/wooden_sword.png differ diff --git a/src/main.cpp b/src/main.cpp index 23c233c..05cc302 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -636,8 +636,8 @@ void GenerateChunk(int cx, int cz) { bool CheckPlayerCollision(Vector3 pos) { BoundingBox playerBox = { - (Vector3){ pos.x - 0.26f, pos.y - 1.45f, pos.z - 0.26f }, - (Vector3){ pos.x + 0.26f, pos.y + 0.05f, pos.z + 0.26f } + (Vector3){ pos.x - 0.25f, pos.y - 1.45f, pos.z - 0.25f }, + (Vector3){ pos.x + 0.25f, pos.y + 0.05f, pos.z + 0.25f } }; int minX = (int)floorf(playerBox.min.x + 0.5f); @@ -899,7 +899,7 @@ int main(void) // By default, windows have minimize, maximize, and close buttons on the top bar. SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT); - InitWindow(screenWidth, screenHeight, "MorriCraft v2.2.6"); + InitWindow(screenWidth, screenHeight, "MorriCraft v2.2.7"); LoadConfig(); SetExitKey(KEY_NULL); // Prevent ESC from closing the window @@ -1047,6 +1047,10 @@ int main(void) blockTextures[STICK] = LoadTexture("assets/stick.png"); blockTextures[WOOD_AXE] = LoadTexture("assets/wooden_axe.png"); + blockTextures[WOOD_PICKAXE] = LoadTexture("assets/wooden_pickaxe.png"); + blockTextures[WOOD_SWORD] = LoadTexture("assets/wooden_sword.png"); + blockTextures[WOOD_SHOVEL] = LoadTexture("assets/wooden_shovel.png"); + blockTextures[WOOD_HOE] = LoadTexture("assets/wooden_hoe.png"); // Explicitly check for successful load and print warning if fail if (blockTextures[STICK].id == 0) TraceLog(LOG_WARNING, "FAILED TO LOAD STICK TEXTURE"); @@ -1629,7 +1633,12 @@ int main(void) // Handle chat input if (IsKeyPressed(KEY_ENTER)) { - if (isChatting) { + if (!isChatting) { + isChatting = true; + chatInput[0] = '\0'; + while (GetCharPressed() != 0); // Clear buffer + EnableCursor(); + } else { if (strlen(chatInput) > 0) { if (chatInput[0] == '/') { // Command processing - never sent to network @@ -1675,9 +1684,6 @@ int main(void) } isChatting = false; DisableCursor(); - } else { - isChatting = true; - EnableCursor(); } } @@ -1784,9 +1790,11 @@ int main(void) } } - // Resolve any lingering overlap to prevent getting stuck - if (!isFlying && CheckPlayerCollision(camera3D.position)) { - camera3D.position.y += 0.05f; + // Resolve any lingering overlap to prevent getting stuck (Iterative push-out) + if (!isFlying) { + for (int i = 0; i < 5 && CheckPlayerCollision(camera3D.position); i++) { + camera3D.position.y += 0.05f; + } } // Final Camera state @@ -2329,8 +2337,8 @@ int main(void) DrawTexturePro(titleTexture, sourceRec, destRec, origin, 0.0f, WHITE); EndMode2D(); - // Show Version Number (v2.2.6) in Red - DrawTextEx(customFont, "v2.2.6", (Vector2){ (float)currentWidth - 140, (float)currentHeight - 40 }, 22, 1.0f, RED); + // Show Version Number (v2.2.7) in Red + DrawTextEx(customFont, "v2.2.7", (Vector2){ (float)currentWidth - 140, (float)currentHeight - 40 }, 22, 1.0f, RED); // --- PLAYER NAME POPUP (IF MISSING) --- if (playerName == "") { @@ -2888,7 +2896,7 @@ int main(void) Vector3 chunkCenter = { (float)(cx * CHUNK_SIZE + 8), 32.0f, (float)(cz * CHUNK_SIZE + 8) }; Vector3 toChunk = Vector3Normalize(Vector3Subtract(chunkCenter, camera3D.position)); if (Vector3Length(Vector3Subtract(chunkCenter, camera3D.position)) > 24.0f && - Vector3DotProduct(toChunk, camForward) < -0.2f) continue; + Vector3DotProduct(toChunk, camForward) < -0.3f) continue; auto it = worldChunks.find({cx, cz}); if (it == worldChunks.end()) continue; @@ -3305,7 +3313,7 @@ int main(void) // Close hint DrawTextEx(customFont, "Press E or ESC to close", (Vector2){ (float)(invPanelX + 12), (float)(invPanelY + invPanelH - 22) }, 14, 1.0f, (Color){160, 160, 160, 200}); - if (IsKeyPressed(KEY_ESCAPE)) { + if (IsKeyPressed(KEY_ESCAPE) || IsKeyPressed(KEY_E)) { inventoryOpen = false; DisableCursor(); } @@ -3335,7 +3343,7 @@ int main(void) drawInvGrid(guiX + 16, tableStartY + 3*(invSlotSize+invGap) + 40); - if (IsKeyPressed(KEY_ESCAPE)) { + if (IsKeyPressed(KEY_ESCAPE) || IsKeyPressed(KEY_E)) { currentState = GAMEPLAY; DisableCursor(); } diff --git a/version.txt b/version.txt index 437a354..d7e8f8b 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -v2.2.6 +v2.2.7