Code Monkey home page Code Monkey logo

leafish's Introduction

Leafish logo Leafish

Multi-version Minecraft-compatible client written in Rust, forked from Stevenarella.

Installer: https://github.com/Lea-fish/Leafish/releases/tag/v0.0.1-alpha


Screenshot showing the main menu


Chat

Chat takes place on Matrix and Discord. The channels are bridged to each other so you won't need an account on both services.

If you want to help make and improve the game, join the developer room.

If you're a user and need help or want to ask some questions then join the general room.

Announcements are made in the announcement room and joining it is a good way to keep up-to-date with the project.

General Development Announcements
Matrix Matrix Matrix
Discord Discord Discord

Aside from the individual rooms you can also join the Matrix space to have all rooms grouped together nicely.

Contents

Introduction

Leafish is an open-source re-implementation of Minecraft. The game is a open-world sandbox where players explore a blocky, procedurally-generated 3D world with virtually infinite terrain, and may discover and extract raw materials, craft tools and items, and build structures or earthworks. The game has various game modes including survival mode, in which players must acquire resources to build the world and maintain health, and a creative mode, where players have unlimited resources and access to flight.

Minecraft is originally written by Mojang in Java for PC, but nowadays also has a so-called "Bedrock edition" which has ports to various alternative platforms. Leafish attempts to provide everything from the Java-edition and tries to be compatible with it so you can join regular servers and play alongside people using the official Java-based clients. Being written in Rust with support for modern graphic API's like Vulkan means performance improvements and enhancements that are not possible in the original game. It's also completely community driven!

Note that currently not everything from the original game is supported yet so Leafish can't currently be seen as a fully fledged alternative. A list of missing features is available on the issues page.

Version support

Symbol Meaning
โœ“ All features supported
- Protocol supported (so the client can join servers using the version) but various missing features
Game version Protocol version Supported?
1.16.5 754 -
1.16.4 754 -
1.16.3 753 -
1.16.2 751 -
1.16.1 736 -
1.16 735 -
1.15.2 578 -
1.15.1 575 -
1.14.4 498 -
1.14.3 490 -
1.14.2 485 -
1.14.1 480 -
1.14 477 -
1.13.2 404 -
1.12.2 340 -
1.11.2 316 -
1.11 315 -
1.10.2 210 -
1.9.2 109 -
1.9 107 -
1.8.9 47 -
1.7.10 5 -

Leafish is designed to support multiple protocol versions, so that client development is not in lock-step with the server version. The level of support varies, but the goal is to support major versions from 1.7.10 up to the current latest major version. Occasionally, snapshots are also supported.

Forge servers are supported on 1.7.10 - 1.12.2 (FML) and 1.13.2 - 1.16.5 (FML2).

Support for older protocols will not be dropped as newer protocols are added.

Getting the game

Using the installer

The easiest way to use Leafish is by using the official cross-platform installer: https://github.com/Lea-fish/Leafish/releases/tag/v0.0.1-alpha It works for Windows, Linux and MacOS and can install into Mojang's official launcher and Prism Launcher. If you encounter any issues during the installation process, you might want to try using a different java version to run the installer (java 8 should work).

Downloading a pre-built version

Since there currently is no release yet, pre-built binaries have to be downloaded from Github Actions. The latest actions can always be seen here. Click on a workflow run from the main branch and download the artifact for your platform.

Building the game

Dependencies

Rust stable version 1.53.0 or newer is required.

Debian/Ubuntu

As current Debian stable (Bullseye) has a rust version below the required one, you need to either update from an external source, or consider using Debian Testing (Bookworm) for example.
For Ubuntu you might want to use the -updates repository for your version.

# apt install cargo libssl-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libgtk-3-dev

Alpine Linux

You have to enable the community repository for cargo.

# apk add cargo openssl-dev xcb-util-dev gtk+3.0-dev

Arch Linux and derivates

# pacman -S rust python3 pkgconf openssl xcb-util gtk3

Building

Make sure you're in the root of the Git repository before running the following commands.

Compile and run:

$ cargo run --release

Just compile:

$ cargo build --release

Running

Double-clicking the game should be enough to run Leafish, which will bring up a login screen followed by a server list from which you can select a server. If nothing happens consider running the executable from the command-line, ./leafish and see if any errors come up.

Contributing

A list of bugs and missing features can be found on the issue tracker. Feel free to work on any bug and submit a pull request to the main branch with the fix. Mentioning that you intend to fix a bug on the issue will prevent other people from trying as well and makes sure no duplicated work is done. Note that all contributions are will be dual-licensed under MIT and ApacheV2

New features

Please talk to the Leafish team first before starting to develop a new feature. We first and foremost try to make the game feature complete compared to the vanilla Java edition and except for very specific things these should be prioritized. Therefor contacting us will allow us to help you or prevent you from wasting any time. You can talk to us via Matrix and/or Discord, see links at the top of this page.

Credits

Thanks to @thinkofname for the original Steven (Rust) and @iceiix for taking up development with Stevenarella.

License

Dual-licensed MIT and ApacheV2

leafish's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leafish's Issues

Minecraftify nametags

Our current nametags look a bit awkward if you come too close, so we should minecraftify them:
remove shadow from nametag text and add black, transparent box around text

Taking screenshots (F2)

Taking screenshots with F2, maybe add options for it in settings menu like resolution/including chat in ss/including F3 menus etc.

Implement animations for HUD

Currently there are no animations for the HUD like the regeneration effect animation, the hunger bar animation or damage animations

Debug/performance statistics menu (F3)

Debug/performance statistics menu under F3 button. I should make another issue about customising it, because it's gonna be more work than "just" implementing F3 menu.

Implement chat

A chat is also necessary in order for this game to be playable.

Fix rejoining

When you try to rejoin the same server you joined before, the client crashes, figure out why and fix it!

Implement tablist

A tablist is also necessary in order for this client to be playable

Minecraftify movement

In order for this client to be playable on servers with anticheats such as hypixel we need to have exactly the same movement as vanilla/optifine does

Implement velocity

We need to implement velocity in order for this client to be playable

Implement other inventories

Currently there is only an implementation for the player's inventory, but we need other inventories as well (chest, enchanter, anvil, etc.)

Implement inventory interaction

Currently we can render inventories, but we can't interact with them, implement interactions with inventories (moving of items, dropping of items etc)

  • Left click
  • Right click
  • Dragging
  • Click outside of window
  • Mouse middle click
  • Slot 1-9 swap
  • Shift clicking

Benchmarks in the readme?

right now we can't measure fps during a "normal" gameplay because there is none, however it would be nice to at least show that chunk loading is faster than in java vanila/optifine/sodium or even bedrock edition.

Implement entities

Entities are a necessity for a minecraft-like client, which is why we should implement them

Switch to WGPU/Vulkan

We should switch from OpenGL to WGPU as it supports multiple render backends such as OpenGL, Vulkan and Metal

Fix alex(slim) skins

Slim skins have a black box on their arms, we have to make their arms more slim

Expand the settings menu

Expanding the settings menu (keybinds, skin parts, render, language, etc.) is also desirable for better user experience

Fix misassignment of skins

On a multiplayer server the skins of people get mixed up such that one player ends up with no skin or the skin of another player

Implement our own capes in the client

This is a nice to have, low prio feature as well:
Implement capes and distribute them via client settings (especially the skin layer or other stuff if it gets sent to other clients)

Expand the settings menu

Expanding the settings menu (keybinds, skin parts, render, etc.) is also desirable for better user experience

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.