# ๐ŸŸฆ MorriCraft ![MorriCraft](assets/TitleImage.png) **MorriCraft** is a high-performance, multiplayer-ready voxel engine built from the ground up using **C++** and **Raylib**. Inspired by classic survival games, it features a custom physics engine, real-time world synchronization, and a deep crafting system. --- ## ๐ŸŒŸ Key Features ### โš”๏ธ Combat & Survival - **PvP Combat**: Real-time melee combat with synchronized hit registration, knockback, and audio feedback. - **Health System**: 8-heart health system with a visual HUD and damage mechanics. - **Survival Mechanics**: Block-breaking progress and material-specific dig times. ### ๐Ÿ‘ฅ Multiplayer & LAN - **P2P Architecture**: Cross-platform networking stack using standard sockets (Windows/Linux). - **Instant LAN Hosting**: Host your world with a single click from the pause menu. - **Skin Personalization**: Built-in skin editor to customize your character's shirt and pants, fully synchronized across the network. - **Global Chat**: Press `Enter` to communicate with other players in real-time. ### ๐Ÿ”จ Crafting & Inventory - **20+ Recipes**: Full crafting tree from logs to tools โ€” wooden & stone tier tools, furnace, chest, doors, fences, ladders, and more. - **Dual Crafting Modes**: 2ร—2 player inventory grid and 3ร—3 Workbench with pattern matching. - **Smart Stacking**: Left-click merges same-type stacks, right-click picks up or places one item at a time. - **Inventory Tooltips**: Hover over any item to see its name. ### ๐ŸŒฒ World & Visuals - **Multi-Texture Blocks**: Oak logs render with bark sides and ringed tops/bottoms. Grass has separate top/side/bottom faces. - **High-Detail Foliage**: Custom leaf textures with natural green tinting. - **Dynamic Lighting**: Full day/night cycle with atmospheric color shifts. - **Optimized Rendering**: Texture batching, neighbor-chunk caching, and frustum culling for 60+ FPS. ### โš™๏ธ Technical - **Dynamic World Gen**: Multi-octave Perlin noise (FBM) with forests, sand beaches, and ore veins. - **Cross-Platform**: Standalone binaries for Windows and Linux with zero external DLL dependencies. - **Auto-Update System**: Built-in version checking and download support. --- ## ๐Ÿš€ Getting Started ### Prerequisites - **Linux**: `libpulse-dev`, `glfw` development headers. - **Windows**: Download the pre-built zip from Releases, or cross-compile with MinGW-w64. ### Build Instructions #### ๐Ÿง Linux ```bash mkdir build-linux && cd build-linux cmake .. make -j$(nproc) ./MorriCraft ``` #### ๐ŸชŸ Windows (Cross-compile) ```bash mkdir build-windows && cd build-windows cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-windows.cmake .. make -j$(nproc) ``` A pre-built `MorriCraft-Windows.zip` is available in the repository root. --- ## ๐ŸŽฎ Controls | Key | Action | |-----|--------| | **WASD** | Movement | | **Space** | Jump | | **Mouse** | Look / Aim | | **Left Click** | Attack / Destroy Block | | **Right Click** | Place Block / Use Workbench | | **E** | Open Inventory | | **Enter** | Open Chat | | **1-9** | Hotbar Selection | | **ESC** | Pause / Menu | --- ## ๐Ÿ“œ Crafting Recipes ### 2ร—2 Player Grid | Input | Output | |-------|--------| | 1 Log | 4 Planks | | 4 Planks (2ร—2) | 1 Crafting Table | | 2 Planks (vertical) | 4 Sticks | ### 3ร—3 Crafting Table | Recipe | Output | Recipe | Output | |--------|--------|--------|--------| | PPP / .S. / .S. | Wooden Pickaxe | CCC / .S. / .S. | Stone Pickaxe | | PP. / PS. / .S. | Wooden Axe | CC. / CS. / .S. | Stone Axe | | .P. / .P. / .S. | Wooden Sword | .C. / .C. / .S. | Stone Sword | | .P. / .S. / .S. | Wooden Shovel | .C. / .S. / .S. | Stone Shovel | | PP. / .S. / .S. | Wooden Hoe | CC. / .S. / .S. | Stone Hoe | | CCC / C.C / CCC | Furnace | PPP / P.P / PPP | Chest | | PP. / PP. / PP. | Door ร—3 | PSP / PSP | Fence ร—3 | | S.S / SSS / S.S | Ladder ร—3 | ... / ... / CCC | Stone Slab ร—6 | *P = Plank, S = Stick, C = Cobblestone. Mirrored variants supported.* --- ## ๐Ÿ“œ Version History ### v2.2.25 - Grass Block & Update System Patch (Current) - **Held Item Rendering**: Fixed grass blocks, logs, and crafting tables showing incorrect textures in the player's hand. - **Update System Overhaul**: Introduced an extraction phase with progress feedback and a "Restart" button for automated relaunch. - **Spawn Stability**: Players now spawn in stable biome centers, avoiding transition edges. ### v2.2.24 - UI & Command Fixes - **'E' Key Bug Fix**: Resolved an issue where the inventory overlay would get out of sync with container/cheat GUIs, preventing the menu from staying open or resulting in a missing cursor. - **/test Command**: Refined the `/test` command to grant exactly 1x Crafting Table and 64x Oak Logs with descriptive feedback. - **Help Command**: Updated `/help` to include all debug commands (`/test`, `/cheat`, `/fly`, `/seed`). - **/fly Command**: Added a simple toggle behavior to the `/fly` command. ### v2.2.23 - Persistence & Viewmodel Fixes ### v2.2.22 - World Generation Polish ### v2.2.21 - Save Fix & Updater Polish ### v2.2.20 - UI Polish & Spawn Fixes ### v2.2.19 - Torch & persistence Overhaul ### v2.2.18 - Persistence & UI Fixes ### 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. - **Build Path**: Windows artifacts are now stored in `build-windows/` for easier deployment. ### v2.2.5 - UX & Inventory Polish - **Shift-Click**: Holding Shift and clicking picks up entire item stacks instantly. - **Scrollable Menus**: Added scroll bars and mouse-wheel support for the "Load World" menu. - **UI Padding**: Increased padding across all panels to ensure text never overlaps borders. ### v2.2.4 - Visual & Update Stability - **X-Ray Fix**: Neighborhood chunk dirtying ensures internal faces are culled immediately. - **Smart Updates**: Client only prompts for updates if the remote version is strictly higher. - **15x15 Pre-Gen**: Expanded spawn area pre-generation (225 chunks) to eliminate horizon drop-offs. ### v2.2.3 - Async Generation & Help - **Loading Screen**: Added a progress bar for asynchronous world generation/loading. - **Help Command**: Added `/help` to chat to display all available console commands. - **Spawn Surface**: Guaranteed surface placement after full chunk pre-generation. ### v2.2.1 - World & Seed Polish - **Cliff Fix**: Resolved issues where new worlds would spawn with missing chunks. - **Render Distance**: Increased default render distance to 4 for a more expansive view. - **Auto-Updater**: Platform-aware updates target Windows vs Linux binaries. ### v2.2.0 - Biome & Generation Update - **Seed Fix**: Proper avalanche-hash for seeds, making every world truly unique. - **Biomes**: Added Grassland, Desert, and Rocky biomes with sand beaches at sea level. - **Commands**: Added `/seed` command to view the world seed in chat. ### v2.1.9 - Crafting Overhaul - **20+ Recipes**: Added Logโ†’Planks and full wooden/stone tool tier crafting. - **Smart Inventory**: Left-click stacks same items, right-click picks up or places one. - **Future Item IDs**: Added furnace, chest, ladder, fence, torch, door, and stone slab types. ### v2.1.8 - Forest Fidelity - **HQ Leaves**: New high-definition leaf texture with proper green tinting. - **Tree Fix**: Corrected log rendering to use multi-texture bark/ring mapping. ### v2.1.7 - Log Realism - **Oak Log Textures**: Dedicated bark (side) and ring (top) textures for logs. ### v2.1.6 - Inventory Insight - **Item Tooltips**: Mouse-over identification for all inventory items. ### v2.1.2 - Combat & Health - **PvP Melee**: Ray-traced hit detection with knockback and audio feedback. - **Heart HUD**: 8-heart health system. ### v2.1.0 - Personalization - **Skin Editor**: Shirt and pants color customization, synced across network. - **Humanoid Models**: Multi-cube player avatars replacing placeholder blobs. ### v2.0.0 - Multiplayer - **P2P Networking**: Cross-platform sockets with direct connect and LAN hosting. - **Chat System**: Real-time text communication between players. --- *Developed by the MorriCraft Team. Built with Raylib 5.0.*