Minosoft is an open source minecraft client, written from scratch in kotlin (and java).

Overview

Minosoft

Minosoft is an open source minecraft client, written from scratch in kotlin (and java). It aims to bring more functionality and stability.

pipeline status

Notice: I am not responsible for anti cheat banned accounts, this project is heavily in development!

Feature overview

  • Rendering
  • Multi protocol support (1.7 - latest)
  • Stable modding API + Unstable modding API
  • Bleeding edge performance (incredible start time of 3 - 5 seconds on modern hardware)
  • Free (as far as we consider original minecraft as free) and open source
  • Multi accounting (also multiple account vendors: Offline, Mojang, Microsoft)
  • Multi "sessions" (Connections to a server)
  • Multi threading and asynchronous loading
  • Debugging on protocol layer
  • LAN servers
  • Independent, We'd accept almost all types of patches (except explicit server support)
  • Way more stuff

System requirements

  • CPU: Minosoft works mostly asynchronous, so multiple cores are good. For FPS more clock speed is better.
  • RAM: ~500Mib. With overhead, etc 2Gib recommended
  • Disk space: Minosoft itself is pretty small (2-3 Mib), the libraries are a bit bigger. You also need to have the "normal" minecraft assets (~ 300 MB for one version).
  • GPU: OpenGL 3.3+. Every moden GPU works and is recommended.
  • Java 14+, 16 recommended (This is really important, we use features that are only available in this version. Java 8 is currently not supported).

Rendering

Features

  • Block rendering
  • Particles
  • Basic light
  • Block place, break, mining
  • Item and block interaction
  • (almost) Original physics

Works. Still missing many features, but heavily developed.

Rendering
The Hypixel skyblock hub

Rendering
AFK Pooling, Hit boxes, particles, ...

Rendering
Lighting demo.

Rendering
Old picture with bugs

Rendering
Picture with hotbar, biomes, biome blending, lighting, fluids, ...

Rendering
Particles. (ignore the numbers on the campfire, I've used them to debug animations)

Eros
Eros is the main gui. You can select your account/favorite server and then connect to it. Once everything is prepared, the rendering will start.

Version support

I always try to add support for the newest version of minecraft. Mostly it is pretty easy, just declaring it and generate all data. After pushing it, it is supported. Some versions are more complicated and need a bit of coding. I always try it as fast as possible, but sometimes I just need time.

Supported versions

Almost all versions (and snapshots!) between 1.7 and the latest one (1.17 as of writing this). I plan to maintain Minosoft to at least version 1.20, so stay tuned. Support for older protocols will not be dropped as newer protocols are added. And can still only recommend using the latest stable version, should be the most stable one.

Unsupported versions

Minosoft uses PixLyzer as data source for all kind of data (like block ids, item ids, ...). PixLyzer currently works for 19w12a+ (1.14 snapshot) and 1.12.2 (these mappings are used for 1.7 - 1.12). 1.13 is currently unsupported and won't be in near future.

Modding

Minosoft is modding friendly. A decent and stable API was introduced with !17. It is pretty final, but some things might still change. See Modding.md for more details. The code is pretty dynamic (all blocks, items, entities, etc are stored in json files). It is pretty easy to load custom entities, etc, so adding custom blocks, etc is easily possible. Spoiler: Forge mods are NOT compatible. Feel free to write a compatibility layer (This is a really hard thing, we do things completely different).

Botting

On the ToDo List

Contribution or helping out

You're welcome, but feel free to take a look at Contributing.md.

Tools and generators

We wrote some tools to help out, see Utility.

Credits

See Credits.

Releases and beta

I invested (until now!) a couple of thousand hours in this project: https://www.reddit.com/r/git/comments/np9yo7/finally_i_can_say_that_i_have_no_life/

I'll push a beta, once I think Minosoft is ready. It will still take some time, but I don't want to make a release and get a thousand issues. We know there are a ton of bugs, and I want to solve at least a couple of them. Also, a big topic is code quality. Before Minosoft, I just had a barely networking experience, no clue about the internals of minecraft, nor of kotlin or opengl. I learned so much, and you can see much code as "first draft". I'll need to do a ton of refactoring, otherwise I can't think of PRs (they are still welcome). If you want to get current developer news, take a look in our telegram channel @MinosoftDevNews.

Downloads / Installation

Because we have no releases or tags yet, we don't build any versions ourselves. This will change soon™.

Linux

Ubuntu / Debian

TBD

Arch

Thanks to @jugendhacker we are in the arch user repository (AUR): https://aur.archlinux.org/packages/minosoft-git/

Windows

TBD

MacOS

Not compatible (yet)

Building

  1. Install Maven and java 14+ (On Ubuntu based distributions: sudo apt install maven openjdk-14-jdk). For Windows users, download and install java from oracle or openjdk. Also download maven and follow along.
  2. Clone this repo (git clone https://gitlab.bixilon.de/bixilon/minosoft.git).
  3. Change directory (cd minosoft).
  4. Checkout the branch (git checkout ). Eventually rendering or development.
  5. Build and run Minosoft with mvn clean verify exec:java. If any errors occur, feel free to open an issue. In this early stage it might be helpful to delete the AppData folder (only of minosoft).
  6. (Optional) Build a fat jar with mvn package. You'll find the jar with all dependencies in target/. Then you don't need to recompile everytime.

Code mirrors

This readme is work in progress, things may change over time.

Comments
  • Multiple bugs I found

    Multiple bugs I found

    While playing hypixel, theres two bugs I noticed, screen is... yellow... all yellow. entering a gui then changing that gui after that clicking on anything in second gui doesnt work

    • [x] PlayerProperties: extraData
    • [x] 1.18: Fix chunk packet reading on hypixel: ArrayOutOfBoundsException
    • [x] Fix container second gui
    bug 
    opened by ilkerbey-01 28
  • Some questions about initialization

    Some questions about initialization

    Verifying and downloading missing assets. This might take a while...

    I found that on my computer, initialization (entering the game from the server) takes a long time (30 minutes and more) I would like to know if there is a way to make this process faster.

    Additional info: It didn't take me that long to reinstall Minecraft using the launcher and start vanilla Minecraft.

    Thanks.

    bug 
    opened by wifi-left 14
  •  no zstd-jni-1.5.2-2 in java.library.path error

    no zstd-jni-1.5.2-2 in java.library.path error

    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL] java.lang.UnsatisfiedLinkError: no zstd-jni-1.5.2-2 in java.library.path: C:\Program Files\Eclipse Adoptium\jdk-18.0.1.10-hotspot\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Eclipse Adoptium\jdk-18.0.1.10-hotspot\bin;C:\Program Files\Eclipse Adoptium\jdk-8.0.312.7-hotspot\bin;C:\Program Files\Eclipse Adoptium\jdk-17.0.3.7-hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\Crawen\AppData\Local\Microsoft\WindowsApps;;.
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL] Unsupported OS/arch, cannot find /win/amd64/libzstd-jni-1.5.2-2.dll or load zstd-jni-1.5.2-2 from system libraries. Please try building from source the jar or providing libzstd-jni-1.5.2-2 in your system.
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2434)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:848)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at java.base/java.lang.System.loadLibrary(System.java:2015)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at com.github.luben.zstd.util.Native.load(Native.java:87)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at com.github.luben.zstd.util.Native.load(Native.java:55)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at com.github.luben.zstd.ZstdOutputStreamNoFinalizer.<clinit>(ZstdOutputStreamNoFinalizer.java:18)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at com.github.luben.zstd.ZstdOutputStream.<init>(ZstdOutputStream.java:75)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at com.github.luben.zstd.ZstdOutputStream.<init>(ZstdOutputStream.java:46)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.assets.util.FileAssetsUtil.saveAndGet(FileAssetsUtil.kt:69)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.assets.util.FileAssetsUtil.saveAndGet$default(FileAssetsUtil.kt:50)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.data.player.properties.textures.PlayerTexture.read(PlayerTexture.kt:57)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.gui.eros.util.JavaFXAccountUtil.getAvatar(JavaFXAccountUtil.kt:25)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.gui.eros.main.MainErosController$init$7.invoke(MainErosController.kt:136)
    [2022-05-06 20:52:39.968] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.gui.eros.main.MainErosController$init$7.invoke(MainErosController.kt:125)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher$Companion$profileWatchFX$1.invoke$lambda-0(SimpleProfileDelegateWatcher.kt:55)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
    [2022-05-06 20:52:39.969] [JavaFX Application Thread] [OTHER] [FATAL]   at java.base/java.lang.Thread.run(Thread.java:833)
    
    opened by ilkerbey-01 11
  • [work/light] Build Failed

    [work/light] Build Failed

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------< de.bixilon:Minosoft >-------------------------
    [INFO] Building Minosoft 0.1-pre
    [INFO] --------------------------------[ jar ]---------------------------------
    [WARNING] The POM for de.bixilon:kutil:jar:1.15 is missing, no dependency information available
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  0.998 s
    [INFO] Finished at: 2022-08-29T13:39:51+08:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project Minosoft: Could not resolve dependencies for project de.bixilon:Minosoft:jar:0.1-pre: de.bixilon:kutil:jar:1.15 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
    
    opened by wifi-left 2
  • Kicked: Too long to log in

    Kicked: Too long to log in

    When attempting to join a server, I get kicked with the message: too long to log in. A vanilla client works fine. IP is mc.isxander.dev, runs fabric 1.19.2 with no content mods. Minosoft 1d948bc

    opened by isXander 1
  • riding horses / other entites does not work

    riding horses / other entites does not work

    when attempting to ride a horse, even with a saddle on, the only thing that happens is that the client moves very slowly when walking, and its movement is not recognized on the server, meaning you cant use horses

    opened by JanCantCode 2
Owner
Not active here. Take a look at https://gitlab.bixilon.de/Bixilon :)
null
A light-weight Android client for Polyhoot! Written in Kotlin and made with Material 3 and Dynamic Colors support.

A light-weight Android client for Polyhoot! Written in Kotlin and made with Material 3 and Dynamic Colors support.

Polyhoot! 2 May 31, 2022
Sample source code for Android Pride Rainbow Bounding Box written in Kotlin and OpenGL 🏳️‍🌈

Sample Code for Animated Rainbow Bounding Box in OpenGL A sample app showing how to draw a rainbow bounding box on Android with OpenGL and Kotlin. Blo

Rebecca Franks 28 May 24, 2022
An easy open source Android Native Game FrameWork.

JustWeEngine - Android Game FrameWork An easy open source Android Native Game FrameWork. Engine Flow Chart How To Use? Import Engine's module as Libra

JustWe 767 Dec 8, 2022
Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.

cocos2d-x Win32 Others cocos2d-x is a multi-platform framework for building 2d games, interactive books, demos and other graphical applications. It is

cocos2d 16.7k Dec 31, 2022
Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.

cocos2d-x Win32 Others cocos2d-x is a multi-platform framework for building 2d games, interactive books, demos and other graphical applications. It is

cocos2d 16.7k Jan 7, 2023
An open-source, mod-friendly Android+Desktop remake of Civ V, made with LibGDX

Unciv - FOSS Civ V for Android+Desktop What is this? An open-source, mod-friendly Android+Desktop remake of Civ V, made with LibGDX Is this any good?

Yair Morgenstern 4.7k Jan 5, 2023
a 2d Java physics engine, native java port of the C++ physics engines Box2D and LiquidFun

jbox2d Please see the project's BountySource page to vote on issues that matter to you. Commenting/voting on issues helps me prioritize the small amou

jbox2d 1k Jan 2, 2023
Application for downloading and installing mods for minecraft

Mods Rainbow Application for downloading and installing mods for minecraft. Also user can choose favourites mods. Table of Contents Screenshots Genera

Vladyslav 3 May 8, 2022
Radio - a Minecraft Servers plugin for providing the best experience of interaction with broadcasting

Radio Radio is a Minecraft Servers plugin for providing the best experience of interaction with broadcasting. Installation Download required version f

Viktor 3 Dec 14, 2022
Item-Attribute Framework for Minecraft Server

Item-Attribute Framework for Minecraft Server

Rain 10 Dec 26, 2022
RPG written in Kotlin using Korge engine

TheAlchemist RPG written in Kotlin using the Korge engine Based on the template https://github.com/korlibs/korge-starter-kit-rpg, this is a simple pix

Liam 2 Jan 16, 2022
A Tetris game written in Kotlin using JOGL.

A Fast Tetris Game Written in Kotlin Using JOGL. Note: This game is unfinished. Controls Arrow Key Left / Right -> Move the tetromino along the x-axis

Jordan 0 Dec 29, 2021
Wordle game clone written in Kotlin & using Compose UI Toolkit.

Wordle Compose Wordle game clone written in Kotlin & using Compose UI Toolkit. Screenshots Compose for Desktop Main screens Playing Victory End of gam

Olivier Patry 37 Nov 3, 2022
Extensive game framework written in Kotlin

CGS is a minigame framework I wrote in December of 2021. This project was closed-source, but unfortunately, a series of events led me to decide to open-source it.

Subham 9 Aug 22, 2022
A minimalist Android physics game written in Kotlin & libGDX

A minimalist Android physics game with 400.000+ downloads, written in Kotlin & libGDX

Luca1152 2 Dec 19, 2022
Korjector is a KorGE game engine-based multiplatform client for Projector.

Korjector is a KorGE game engine-based multiplatform client for Projector. An internal JetBrains Hackathon 2021 project to demonstrate that a Projector client can be created in less than 48 hours for any OS that supports decent canvas 2D API.

Sergei Bulgakov 10 Nov 20, 2021
Desktop/Android/HTML5/iOS Java game development framework

Cross-platform Game Development Framework libGDX is a cross-platform Java game development framework based on OpenGL (ES) that works on Windows, Linux

libgdx 20.9k Jan 8, 2023
A cross-platform Java game Engine (Framework) , support JavaFX / Android / IOS / HTML5 / Linux / MAC / Windows

Loon Game Engine (Java Game Framework) EN / KR Free Game Resources Links Download Loon Game Engine Only Android-studio Template : androidstudio-templa

cping 502 Jan 4, 2023
Desktop/Android/HTML5/iOS Java game development framework

Cross-platform Game Development Framework libGDX is a cross-platform Java game development framework based on OpenGL (ES) that works on Windows, Linux

libgdx 20.9k Dec 28, 2022