improve documentation (ReadMes)

Add hypixel lobby screenshot
Add task descriptions in Minosoft.java
Improve ReadMe.md and util/ReadMe.md
This commit is contained in:
Bixilon 2020-11-03 18:24:00 +01:00
parent 3b05e7670a
commit 202bd35075
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
5 changed files with 26 additions and 19 deletions

View File

@ -9,8 +9,8 @@ Minosoft is an open source minecraft client, written from scratch in java. It ai
- Rendering (WIP)
- Multi protocol support (1.7 - latest)
- Modding
- Fast performance (start time on my laptop: 3 seconds)
- Free and open source
- Fast performance (incredible start time of 3 - 5 seconds on modern hardware (tested on Intel i7-4800MQ)
- Free (as far as we consider original minecraft as free) and open source
- Multi accounting
- Multi "sessions" (Connections to a server)
- Multi threading
@ -21,11 +21,11 @@ Minosoft is an open source minecraft client, written from scratch in java. It ai
- CPU: Minosoft benefits from multiple cores (at least for most stuff). CPU is kind of important,
but for the rendering clock speed is more important. 4 cores recommended with at least 2 Ghz.
- RAM: Out goal was it to run without compromises on an 8 Gib computer and at least limited on an 4 Gib one.
- Disk space: Minosoft itself is pretty small (2-3 Mib), the libraries are a bit bigger (up to 100 Mib).
You also need to have the "normal" minecraft assets (~ 300 Mib). So a total of 500 Mib is recommended.
- Disk space: Minosoft itself is pretty small (2-3 Mib), the libraries are a bit bigger (up to 100 MB).
You also need to have the "normal" minecraft assets (~ 300 MB). So a total of 500 MB is recommended.
- GPU: Currently only needed for rendering, no clue yet.
- Java 15 (This is really important, we use specific features that are only available in the latest version. Java 8 is **not** supported).
OpenJDK 15 is (of course) also supported.
- Java 15 (This is really important, we use specific (experimental) features that are only available in the latest version. Java 8 is **not** supported).
OpenJDK is (of course) also supported.
## Rendering
@ -34,8 +34,11 @@ Rendering is developed and maintained by Lukas Eisenhauer. It is very WIP, but i
![Rendering](doc/img/rendering.png)
The current result of rendering (taken in 739f861bf62341698abcd58386c353a4831f4818).
![Rendering](doc/img/rendering_hypixel.png)
The Hypixel prototype lobby (taken in 91ab431004fa1ae132a1eb1115550f84c27f48f8).
## Launcher
The "Launcher" is not really a launcher, it is just a (badly designed, but functional) Serverlist with account management functionality.
The "Launcher" is not really a launcher, it is just a (badly designed, but functional) server list with account management functionality.
Launcher is in quotation marks, because it is not really a launcher. It is the game. You click on run and see this window. All downloads, loadings, ... happen async in the background.
If you double-click on the server. you can connect to it. Once connected (= Received spawn location), you can play :)
![Server list](doc/img/server_list.png)
@ -46,7 +49,7 @@ After pushing it, it is supported. Some versions are more complicated and need a
Check out [wiki.vg](https://wiki.vg/Main_Page) for more information.
### Supported versions
Almost all versions are supported, starting with 13w41b (pre 1.7 snapshot) and ending with the newest (1.16.3 as of writing this.)
Almost all versions are supported, starting with 13w41b (pre 1.7 snapshot) and ending with the newest (1.16.4 as of writing this). I plan to maintain Minosoft to at least version 1.20, so stay tuned.
### Unsupported versions
Sadly, we cannot support all versions. We will add support for all major versions (like 1.8.9, 1.9.4, 1.14.4, etc), but it is simply not possible to support all snapshots.

View File

Before

Width:  |  Height:  |  Size: 5.5 MiB

After

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 KiB

View File

@ -16,6 +16,7 @@ package de.bixilon.minosoft;
import com.google.common.collect.HashBiMap;
import de.bixilon.minosoft.config.Configuration;
import de.bixilon.minosoft.config.ConfigurationPaths;
import de.bixilon.minosoft.config.StaticConfiguration;
import de.bixilon.minosoft.data.assets.AssetsManager;
import de.bixilon.minosoft.data.locale.LocaleManager;
import de.bixilon.minosoft.data.locale.minecraft.MinecraftLocaleManager;
@ -114,17 +115,17 @@ public final class Minosoft {
serverList = config.getServers();
progress.countDown();
}, "Configuration", "", Priorities.HIGHEST, TaskImportance.REQUIRED));
}, "Configuration", String.format("Load config file (%s)", StaticConfiguration.CONFIG_FILENAME), Priorities.HIGHEST, TaskImportance.REQUIRED));
taskWorker.addTask(new Task((progress) -> StartProgressWindow.start(), "JavaFx Toolkit", "", Priorities.HIGHEST));
taskWorker.addTask(new Task((progress) -> StartProgressWindow.start(), "JavaFX Toolkit", "Initialize JavaFX", Priorities.HIGHEST));
taskWorker.addTask(new Task((progress) -> StartProgressWindow.show(startStatusLatch), "Progress Window", "", Priorities.HIGH, TaskImportance.OPTIONAL, "JavaFx Toolkit", "Configuration"));
taskWorker.addTask(new Task((progress) -> StartProgressWindow.show(startStatusLatch), "Progress Window", "Display progress window", Priorities.HIGH, TaskImportance.OPTIONAL, "JavaFX Toolkit", "Configuration"));
taskWorker.addTask(new Task(progress -> {
progress.countUp();
LocaleManager.load(config.getString(ConfigurationPaths.GENERAL_LANGUAGE));
progress.countDown();
}, "Minosoft Language", "", Priorities.HIGH, TaskImportance.REQUIRED, "Configuration"));
}, "Minosoft Language", "Load minosoft language files", Priorities.HIGH, TaskImportance.REQUIRED, "Configuration"));
taskWorker.addTask(new Task(progress -> {
progress.countUp();
@ -133,32 +134,32 @@ public final class Minosoft {
Versions.load(Util.readJsonAsset("mapping/versions.json"));
Log.info(String.format("Loaded versions mapping in %dms", (System.currentTimeMillis() - mappingStartLoadingTime)));
progress.countDown();
}, "Version mappings", "", Priorities.NORMAL, TaskImportance.REQUIRED, "Configuration"));
}, "Version mappings", "Load available minecraft versions inclusive mappings", Priorities.NORMAL, TaskImportance.REQUIRED, "Configuration"));
taskWorker.addTask(new Task(progress -> {
Log.debug("Refreshing account token...");
checkClientToken();
accountList = config.getMojangAccounts();
selectAccount(accountList.get(config.getString(ConfigurationPaths.ACCOUNT_SELECTED)));
}, "Token refresh", "", Priorities.LOW, TaskImportance.OPTIONAL, "Configuration"));
}, "Token refresh", "Refresh selected account token", Priorities.LOW, TaskImportance.OPTIONAL, "Configuration"));
taskWorker.addTask(new Task(progress -> {
progress.countUp();
ModLoader.loadMods(progress);
progress.countDown();
}, "ModLoading", "", Priorities.NORMAL, TaskImportance.REQUIRED, "Configuration"));
}, "ModLoading", "Load all minosoft mods", Priorities.NORMAL, TaskImportance.REQUIRED, "Configuration"));
taskWorker.addTask(new Task(progress -> {
progress.countUp();
AssetsManager.downloadAllAssets(progress);
progress.countDown();
}, "Assets", "", Priorities.HIGH, TaskImportance.REQUIRED, "Configuration"));
}, "Assets", "Download and verify all minecraft assets", Priorities.HIGH, TaskImportance.REQUIRED, "Configuration"));
taskWorker.addTask(new Task(progress -> {
progress.countUp();
MinecraftLocaleManager.load(config.getString(ConfigurationPaths.GENERAL_LANGUAGE));
progress.countDown();
}, "Mojang language", "", Priorities.HIGH, TaskImportance.REQUIRED, "Assets"));
}, "Mojang language", "Load minecraft language files", Priorities.HIGH, TaskImportance.REQUIRED, "Assets"));
taskWorker.work(startStatusLatch);
try {

View File

@ -8,7 +8,10 @@ The script asks you for a version of minecraft, you enter it (can be a snapshot)
3. Run the script with `python3 serverWrapper.py`. You can pass the parameter `download-all` and it will create an offline cache for all minecraft versions (latest - first)
## mappingsDownloader
This script creates a modified version of the mappings after the flattening update (1.13). See [Data Generators for more details](https://wiki.vg/Data_Generators). The problem is, that there are some versions that have been "flattened", but there are not data generators or that the old format is getting used (the items.json and not the registries.json). The script downloads all files from apimon.de/mcdata. If the download fails, the script ties do download and create the format based on [Burger](https://pokechu22.github.io/Burger/). This is currently work in progress, it can only generate the registries.json, not the `blocks.json`.
This script creates a modified version of the mappings after the flattening update (1.13). See [Data Generators for more details](https://wiki.vg/Data_Generators).
The problem is, that there are some versions that have been "flattened", but there are not data generators or that the old format is getting used (the items.json and not the registries.json).
The script downloads all files from https://apimon.de/mcdata. If the download fails, the script ties do download and create the format based on [Burger](https://pokechu22.github.io/Burger/).
This is currently work in progress, it can only generate the registries.json, not the `blocks.json`.
#### Installation / Usage
1. Download the script
2. Run the script with `python3 mappingsDownloader.py` and wait for the process to complete. Currently, some versions will fail, because it is difficult to generate the blocks.json. Feel free to make a Pull Request :): ['1.13-pre6', '1.13-pre5', '17w50a', '17w49b', '17w49a', '17w48a', '17w47b', '17w47a']
2. Run the script with `python3 mappingsDownloader.py` and wait for the process to complete. Currently, some versions will fail, because it is difficult to generate the blocks.json. Feel free to make a Pull Request :): ['1.13-pre6', '1.13-pre5', '17w50a', '17w49b', '17w49a', '17w48a', '17w47b', '17w47a']