Giter Club home page Giter Club logo

delta-client's Introduction

Delta Client - Changing the meaning of speed

Discord

An open source rewrite of the Minecraft: Java Edition client, written in Swift for macOS and iOS (experimental). Currently Delta Client only supports connecting to 1.16.1 servers.

Disclaimers

This client is not finished yet. If you're looking for a client to use to play Minecraft today, then this is not for you. I am NOT responsible for anti-cheat bans, the client has not been thoroughly tested yet and is still deep in development.

This software is not affiliated with Mojang AB, the original developer of Minecraft.

Overview

The main focus of this project is to create a highly efficient Java Edition compatible client written in Swift for macOS. The client also has experimental support for iOS, and is in the process of getting ported to Linux using SwiftCrossUI and eventually Kinzoku (once it is ready).

If you want to have a say in the development of the client or have any questions, feel free to join the community on Discord.

Playing with Delta Client in a Hypixel lobby

Performance

One of the biggest advantages of Delta Client is its performance. Epic comparison graphs are in progress, but for now have some dot-points.

  • Start-up time:
    • M2 MacBook Air: 0.9 seconds (vanilla takes 43 seconds)
    • i5 MacBook Air: 2.7 seconds (vanilla takes ~60 seconds)
  • FPS on 10 render distance in the mountains (bad for fps):
    • M2 MacBook Air (on 1080p monitor): ~120 fps (vanilla gets ~75 fps)
    • i5 MacBook Air: ~70 fps (vanilla gets ~35fps)

Installation

Prebuilt

  1. Visit Delta Client's downloads page and download the latest build from the main branch.
  2. Unzip the downloaded zip archive and open the app inside
  3. You will get a security alert, click ok
  4. Right click the app in finder and select open
  5. You should get another pop-up, click 'Open'
  6. Delta Client will now open and start downloading the required assets (this only has to happen once and should take around 40s with a mediocre internet speed)
  7. You can move Delta Client to your Applications folder for ease of use if you want

To view application logs, click View > Logs in the menu bar while Delta Client is open.

Building from source

To build Delta Client you'll first need to install Xcode 14 and the latest version of Swift Bundler. Please note that using Xcode 13 is ok but you may run into some weird memory corruption issues, so test with Xcode 14 before assuming that it's a Delta Client bug. Once you've installed the requirements, run the following commands in terminal;

# Clone Delta Client
git clone https://github.com/stackotter/delta-client
cd delta-client

# Perform a release build and output the bundled app to the current directory
sh ./build.sh

# If you want to develop Delta Client using Xcode, run the following command
swift bundler generate-xcode-support
# And then open Package.swift with Xcode and you'll be able to build it from Xcode too

Minecraft version support

At the moment the client only supports joining 1.16.1 servers. In the future I plan to support more versions.

Not every version will be perfectly supported but I will try and have the most polished support for the following versions;

  • 1.8.9
  • the latest speedrunning version (currently 1.16.1)
  • the latest stable version

Features

  • Networking
    • Basic networking
    • Server list ping
    • Encryption (for non-offline mode servers)
      • Mojang accounts
      • Microsoft accounts
    • LAN server detection
  • Basic config system
    • Multi-accounting
  • Rendering
    • World
      • Basic block rendering
      • Basic chunk rendering
      • Block culling
      • Block models
      • Multipart structures (e.g. fences)
      • Multiple chunks
      • Lighting
      • Animated textures (e.g. lava)
      • Translucency
      • Fluids (lava and water)
      • Chunk frustum culling
      • Biome blending (mostly)
      • Sky box
    • Entities
      • Basic entity rendering (just coloured cubes)
      • Render entity models
      • Entity animations
      • Block entities (e.g. chests)
      • Item entities
    • GUI
      • Chat
      • F3-style stuff
      • Bossbars
      • Scoreboard
      • Health, hunger and experience
      • Hotbar
      • Inventory
        • Basic inventory
        • Basic crafting
        • Inventory actions
        • Using recipe blocks (like crafting tables and stuff)
        • Creative inventory
  • Sound
    • Basic sounds system
  • Physics
    • Physics loop
    • Input system
    • Collision system
  • Interaction
    • Block placing
    • Block breaking
    • Block entity interaction
    • Entity interaction
  • Particles
    • Basic particle system
    • Block break particles
    • Ambient particles
    • Hit particles
    • Particles from server

Contributing

First, please check out the contributing guidelines. Then you can checkout the issues for a place to get started. Make sure to leave a comment on the issue you choose so that people know that someone's already working on it.

Servers

We now have an official testing server (play.deltaclient.app)! However, if you want to mess around to your hearts content you can run a server on your computer for full control (see below).

To start a test server, download a 1.16.1 server jar from here. Then in Terminal type java -jar and then drag the downloaded .jar file onto the terminal window and then hit enter. Wait for the server to start up. Now add a new server with the address localhost in Delta Client and you should be able to connect to it. Keep in mind the server may use a significant amount of resources and slow down Delta Client.

More screenshots

Delta Client being used to view a survival world from a vantage point on a mountain

Delta Client's server selection UI

delta-client's People

Contributors

albertosamele avatar gracien-app avatar jwhitmore1 avatar jxhug avatar mattg42 avatar ninjadev64 avatar notdap avatar obvgab avatar stackotter avatar thegail avatar

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

delta-client's Issues

Redesign proposal

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Delta client redesign proposal

Additional context
Just a restyling propostal that in my opinion would make the client look better, you can find all the screenshots in the link down below

https://imgur.com/a/ADhtXXy

Chunks randomly render black.

Chunks randomly render fully black. It seems that placing a light source in the chunk updates the lighting correctly for nearest blocks, but dark overlay stays the whole time. Happens randomly for all kinds of geometry.

Steps to reproduce the behavior:

  1. Join the game
  2. Play for some time, black chunks should start randomly appearing.

Expected behavior
No black chunks.

Screenshots
bug

Extra information (please complete the following information

  • OS: macOS 12.1
  • Hardware: M1 MacBook Air
  • Build: commit 6838c9a

Additional context
Good luck.

Translucent objects are rendered in the wrong order sometimes

See the image below for an example. The water should be rendered behind the stained glass but the stained glass is rendered first so the water gets discarded behind the glass. This only happens when standing in certain chunks. Either the sorting is used incorrectly so it's just chance when it gets the right order, or maybe the sorting is incorrect?

Screen Shot 2021-11-13 at 22 30 01

The image below is how it looks if I move over the chunk border towards the fluids.

Screen Shot 2021-11-13 at 22 30 05

Microsoft accounts

Minecraft has been migrating to a new authentication system that is linked to Microsoft/XboxLive. It is a lot more complicated than the old Mojang system and currently, there is no working implementation of it other than the one in the vanilla launcher. All other implementations get errors unless the account owner is over 18 (which is rather restrictive given that the age of a significant proportion of Minecraft players is below 18).

This issue will probably require you to have some API reverse engineering skills. I gave it a go for a day but couldn't quite figure out all the parts required to completely replicate the vanilla authentication flow. However, I did document my progress and I can send you what I've figured out so far on discord or something if you want.

Currently, there is a dodgy prototype of Microsoft authentication in the client, but it has the issues outlined above. It was created using information from wiki.vg (an incredibly helpful resource for everything Minecraft development) and the implementation in Minosoft (another open source Minecraft client project, made with java and kotlin).

Nexus crash

Describe the bug
Nexus crashed. See logs below for more detail.

To Reproduce

  1. Join a world and wait? ¯\_(ツ)_/¯ seems really random as for when it happens

Expected behavior
Not crash

Extra information

  • OS: macOS 12.1
  • Hardware: M1 Max MacBook Pro
  • Build: commit 6838c9a

Additional context

Thread 12 Crashed:
0   libDeltaCore.dylib            	       0x102f7cd5c Nexus.get(unsafe:for:) + 52
1   libDeltaCore.dylib            	       0x102f7cd58 Nexus.get(unsafe:for:) + 48
2   libDeltaCore.dylib            	       0x102f73db8 static Requires2.components(nexus:entityId:) + 52
3   libDeltaCore.dylib            	       0x102f73f54 protocol witness for static FamilyRequirementsManaging.components(nexus:entityId:) in conformance Requires2<A, B> + 32
4   libDeltaCore.dylib            	       0x102f71628 Family.ComponentsIterator.next() + 164
5   libDeltaCore.dylib            	       0x1031d78c4 PhysicsSystem.update(_:) + 1272
6   libDeltaCore.dylib            	       0x1032d1e28 TickScheduler.tick() + 284
7   libDeltaCore.dylib            	       0x1032d1b64 closure #1 in closure #1 in TickScheduler.startTickLoop() + 304
8   libDeltaCore.dylib            	       0x1032d212c partial apply for thunk for @callee_guaranteed () -> (@error @owned Error) + 20
9   libswiftObjectiveC.dylib      	       0x1cecbbacc autoreleasepool<A>(invoking:) + 64
10  libDeltaCore.dylib            	       0x1032d1a24 closure #1 in TickScheduler.startTickLoop() + 60
11  libDeltaCore.dylib            	       0x1032d15e0 thunk for @escaping @callee_guaranteed () -> () + 20
12  Foundation                    	       0x1bb5938f8 __NSThread__block_start__ + 76
13  libsystem_pthread.dylib       	       0x1ba421240 _pthread_start + 148
14  libsystem_pthread.dylib       	       0x1ba41c024 thread_start + 8

Input settings screen

People like to customise their input settings (key mappings and mouse sensitivity), including me, so it'd be very nice to have a settings panel for customising that.

  • Custom key mappings
  • Mouse sensitivity

Make caching more convenient to implement

The main reason the registries aren't cached is because caching is annoying to do at the moment. It'd be really nice if there was a tool to create the required protobuf definitions to cache swift structs just by parsing the swift source files.

Rework block, block state and fluid data format

Delta Client currently stores all the data about blocks in a way similar to vanilla and pixlyzer while also trying to be efficient and avoid too much dynamism and object oriented overhead. This issue will involve me sitting down and coming up with a smarter format. And then of course refactoring Delta Client to use that new way. This should also speed up chunk section mesh building because it will decrease the amount of lookups required hopefully. The new format will likely just revolve around 'blocks' where blocks refer to what are currently called block states by Delta Client and vanilla. I am excited to complete this cause it should improve development a lot, but it may take some time.

(I'm working on this by the way, no one else should)

Improve block model loading speed

The slowest step in resource pack loading is block model loading. The block model loading process is quite complicated and has many intermediate steps. This is because lots of data is pre-calculated at block model loading time so that it only needs to be calculated once. Once block models are cached on the first launch, subsequent launches are much faster. However, this issue is only about the initial block model loading speed.

Block model loading speed is important because it is quite a significant step in the first launch and also, optimising it may even result in nicer code in the end! (the current implementation is pretty messy).

How block model loading currently works

  1. Block model json files are loaded as JSONBlockModels using Swift's Codable feature.
  2. They are then flattened into an intermediate representation (IntermediateBlockModelPalette). The JSON models can reference parents and are mostly incomplete because they rely on data from parent models. Flattening them vastly simplifies processing of them.
  3. The intermediate representations are finally converted into a BlockModelPalette.

Here's some more information about the json format of block models in resource packs. The protobuf message definitions for block model caching are in the Cache directory.

Edit

I have optimised the code for loading the JSON (not processing it) and I found a library called ZippyJSON. It is about 3x faster than the built in JSONDecoder and it implements the same API so it could just be swapped in easily. I also found that reading the files in and combining them into one large json object to decode all at once was the best approach. The biggest bottleneck for JSONBlockModel.loadModels is now reading the files in (which takes about 500ms total on my laptop).

Side note: I implemented JSONBlockModel.loadModels in Rust (while learning Rust) and it is 10x faster (0.06 seconds vs 0.6 seconds).

Server connection screen isn't verbose enough

The screen displayed while connecting to a server just says Downloading terrain even before it's technically downloading terrain. This makes it confusing to figure out why server connection isn't working when it breaks.

  • Add more connection phases and display messages for them
  • Check that the new messages are helpful by direct connecting to a minecraft server that doesn't exist (e.g. play.stackotter.dev:12345. At the moment it just says Downloading terrain and after solving this problem it should be pretty obvious that connecting to the server has failed.

Extra information

The way updates are sent from the networking thread (in DeltaCore) to the UI (in DeltaClient) is through the event bus. To add an event create a struct that conforms to Event. See the existing events as reference. Then in the networking or wherever required, you can use eventBus.dispatch(YourNewEvent(...)) to notify listeners of the event. Then add handling code for the event to PlayServerView.handleClientEvent.

Can I be a long-term contributor?

Unfortunately I cannot help with development because I am clueless with Swift, but I would love to help in any way I can!
I’d like to make a website, Discord server, issue templates, bug test etc. And be around for the long term.

edit: sheesh that was a long time ago

Join world hangs on chunk download with github actions build

Describe the bug
see title

To Reproduce
Steps to reproduce the behavior:

  1. launch world

Expected behavior
world opens

Extra information (please complete the following information

  • OS: macOS 11.6
  • Hardware: M1 MacBook Air
  • Build: d96c3ff
27-12-2021 21:15:39.8790 n/a [info ] Loading plugins
27-12-2021 21:15:39.8870 n/a [info ] Loading registries
27-12-2021 21:15:39.8870 n/a [info ] Loading cached block registry
27-12-2021 21:15:39.9830 n/a [info ] Loading cached biome registry
27-12-2021 21:15:39.9850 n/a [info ] Loading cached fluid registry
27-12-2021 21:15:39.9860 n/a [info ] Loading cached entity registry
27-12-2021 21:15:39.9870 n/a [info ] Loading resource pack
27-12-2021 21:15:39.9880 n/a [debug] Loading resources from 'realms' namespace
27-12-2021 21:15:39.9880 n/a [debug] Loading textures
27-12-2021 21:15:39.9880 n/a [debug] Loading biome colors
27-12-2021 21:15:39.9880 n/a [debug] Loading cached block models
27-12-2021 21:15:39.9890 n/a [debug] Loading resources from 'minecraft' namespace
27-12-2021 21:15:39.9890 n/a [debug] Loading textures
27-12-2021 21:15:40.1300 n/a [debug] Loading biome colors
27-12-2021 21:15:40.1330 n/a [debug] Loading cached block models
27-12-2021 21:15:40.3460 n/a [info ] Done (572.47ms)
27-12-2021 21:15:41.8870 n/a [debug] Packet received, id=0x00
27-12-2021 21:15:41.8880 n/a [debug] Received ping response from play.stackotter.dev:36112
27-12-2021 21:15:45.1630 n/a [debug] Packet received, id=0x03
27-12-2021 21:15:45.1640 n/a [debug] Packet received, id=0x02
27-12-2021 21:15:45.1670 n/a [debug] Packet received, id=0x25
27-12-2021 21:15:45.1670 n/a [debug] Packet received, id=0x18
27-12-2021 21:15:45.1670 n/a [debug] plugin message received with channel: minecraft:brand
27-12-2021 21:15:45.1670 n/a [debug] Packet received, id=0x0d
27-12-2021 21:15:45.1670 n/a [debug] Packet received, id=0x31
27-12-2021 21:15:45.1670 n/a [debug] Packet received, id=0x3f

Fix water logging for seagrass

When I fixed rendering of waterlogged blocks (#21), it turns out I never tested seagrass and for some reason it's behaving differently. And by differently, I mean it's not being treated as waterlogged at all (perhaps because it's supposed to be permanently waterlogged and vanilla minecraft just hardcodes that it's waterlogged.

LAN server discovery

This is the last thing to do for networking apart from Microsoft accounts. It would include making LANServerEnumerator in Delta Core which can find servers on the local network. And then display that somewhere in the UI, possibly in the server list below a divider.

Basic F3 debug screen

Vanilla Minecraft has the 'f3' debug screen which Delta Client will eventually copy. But for now it would be very useful just to have an FPS meter, the player's coordinates, the player's compass bearing (just N, E, S or W) and the position of the player's current chunk section. Make the debug screen toggle when the player hits f3 in-game (just like in vanilla).

Screen_Shot_2019-02-01_at_2 14 21_PM

  • FPS meter
  • Player's coordinates
  • Player's compass bearing
  • Player's yaw and pitch (head direction)
  • Position of chunk section player is in
  • Player's position relative to the chunk section
  • Biome
  • Light level
  • Any other things in the example f3 screen above that you think you could add (maybe block position too? which is the player's position rounded down to integers)

Add a way to view logs in-app

This would be a super useful feature for troubleshooting. It would probably make the most sense to have the option located in the menu bar and the troubleshooting menu (#24 , will be finished by @AlbertoSamele soon). It'd probably be best if it opened in a separate window so that the logs can be viewed while using the app. It should also have an option to auto scroll down when new messages are logged. And being able to filter by verbosity level would be handy too.

Incorrect color tint

Grass blocks and leaf blocks have the wrong colour tint.

Screenshots
Screenshot 2021-10-27 at 13 15 16

Extra information (please complete the following information

  • OS: macOS 11.6
  • Hardware: Intel i7-7700k, Radeon Pro 580
  • Build: Version 0.1.0 (9)

Discord rich presence

It'd be nice to have proper Discord integration (Discord rich presence). There is a Swift library for Discord rich presence called SwordRPC that should have everything required to add support. Join the Discord and we can chat to decide what statuses should be displayed and so on.

Improve texture loading speed

The slowest resource pack loading steps are loading textures and loading block models. Texture loading is likely slow because of the processing pass I apply to transparent textures to improve the way their mipmaps look. Most fully transparent pixels are set to black, so as the texture gets down scaled the visible parts get darker because their colours blend with that of the transparent pixels (black). The processing pass I made just 'drags' the colour from the opaque pixels to the transparent pixels. But it does so extremely inefficiently. The easy solution would be to just save the 'fixed' textures to the resource pack caching directory and then load them from there on subsequent launches. The other options are writing a custom mipmapper (probably not too difficult), or optimising the 'fixing' algorithm.

Custom mipmapper

If you were to create a custom mipmapper to solve this issue, that would be the best solution. Here's some information about mipmaps. The mipmapper would be just like a normal one, except if a pixel is fully transparent and is getting blended with a coloured pixel, only the colour of the coloured pixel is used.

Creating a custom mipmapper would also fix an issue that is currently happening with animated textures. Whenever one texture changes, the mipmaps are regenerated for every single texture because Metal doesn't expose an API that allows one to selectively create mipmaps for slices of a texture.

The alternative solutions

Although the custom mipmapper is technically the best solution, any of the solutions I described are completely acceptable :) the custom mipmapper just hits multiple birds with one stone. And if you have another solution in mind, I'm open to discussion.

Clean up API in regards to plugins

This task should not be started until the plugin system pull request is merged.

In its current state, Delta Core would be pretty horrible to interface with from a plugin. For example, Player's only initialiser is for initialising it from a JoinGamePacket (whereas in reality, most plugins that want to create a player will want to make one from scratch with their own properties). As well as this, Swift's autogenerated initialisers for structs are only accessible from within Delta Core. To make them accessible to plugins that import Delta Core, you need to right click the struct's name in its declaration, and then refactor > generate memberwise initialiser and then change internal to public, and then move the initialiser to a sensible place in the struct declaration.

The best way to figure out whether an API is nice to use from a plugin is to create a plugin that uses that API. Part of this task will be to create an example plugin that implements a few common things that plugins might want to do. This would be for the benefit of plugin developers trying to learn the API but it would also provide guidance for contributors trying to improve the API (including whoever completes this issue).

If you want to complete this issue please join the discord server and we can chat about how the plugin API should feel, and we can decide on some basic guiding principles for the design of the plugin API.

Support animated texture interpolation

Some animated textures (mostly the glowing ones such as the coals under a camp fire) are meant to be interpolated. Meaning that before rendering each frame, any interpolated textures should be updated to a linearly interpolated frame between the current frame of the texture animation and the next frame of the texture animation. If that explanation didn't make sense feel free to clarify.

Add tests

When I started this project I had no knowledge of Swift and had no idea how to do unit testing. And I'm still a bit lost on the latter. So if you have knowledge of unit testing with Swift please feel free to add a few for a system :)

Systems to test

  • Network stack
  • Mesh building
  • World
  • Config system?
  • I honestly don't really know what sorts of things should be tested so you can add anything else.

Don't feel like you have to do all of those, just choose one or two.

All fluids are treated as translucent

At the moment lava is treated as a translucent block by the mesh preparation system because fluids are all added to the translucent mesh. However, lava is not translucent and having more translucent blocks than necessary hurts performance (because of mesh sorting).

  • Dynamically decide which mesh to add a fluid to based on the nature of its textures

Improve launch screen

Currently the launch screen is pretty dismal and uninformative. For an example of a SwiftUI progress bar for both downloads and extracting zip see the code for the in-app updater.

  • Add progress bars for downloading and extracting the client jar on first launch
  • Make loading messages more detailed and informative for both the first launch and subsequent launches

Improve registry loading speed

The slowest step of start up is currently registry loading. To speed up registry loading you likely need to cache them using protobuf like I have for block models. If that works well I can probably even create a repository that contains all the data needed from Pixlyzer except in protobuf form (since unlike resource packs it's all static). Currently, the 3 registries loaded from Pixlyzer are, biomes, blocks and fluids.

Pixlyzer data

All registry data is currently loaded from json files generated by the great tool pixlyzer. I am soon going to make registries even more generic so it would be appreciated if you could make the caching as easy to set up as possible.

Sticky encoding

An alternative to using protobuf for caching would be using sticky encoding. It basically allows fast binary serialisation of any Codable structs. However, for block model caching I found that it was significantly slower than protobuf. But for registries maybe it's fast enough that the convenience is worth it? It'd be great if both protobuf and sticky encoding are tested out.

Controls menu doesn't apply changes

Describe the bug
The controls config menu doesn't apply the changes until the player disconnects and rejoins a game.

To Reproduce
Steps to reproduce the behavior:

  1. Join server
  2. Open in game config menu
  3. Change a keybinding
  4. Exit the in game settings
  5. Observe that the new key bindings have not been applied

Expected behavior
The new key bindings should be applied.

Extra information (please complete the following information

  • OS: macOS 12.0.1
  • Hardware: M1 MacBook Air 2020
  • Build: 8d1223c

Check update availability

The in-app updater currently always allows users to update even if they are already up-to-date and even if updating would in fact 'downdate'. Perhaps GitHub actions builds can insert a file into the .app containing the commit hash so that the app can know which commit it was built from?

Colour codes in disconnect messages

When servers kick/ban/don't let you connect with a custom plugin, they often use colour codes and maybe text formatting. Delta currently doesn't have this

I just think that'd be a cool cosmetic feature.

Fix fluid mesh generation

When I made the initial implementation of fluid rendering I tried my best to emulate vanilla as closely as possible. However, vanilla Minecraft's fluid mesh generation is very complicated and I couldn't figure out exactly what logic it follows to figure out how high each corner should be (I even looked at the decompiled jar and couldn't figure it out).

Below are some examples of the differences. Delta Client looks particularly different when the water is flowing down a hill.

Example 1

Screen Shot 2021-11-13 at 17 04 18

Screen Shot 2021-11-13 at 17 20 17

Example 2

Screen Shot 2021-11-13 at 17 04 34

Screen Shot 2021-11-13 at 17 24 23

Example 3

Screen Shot 2021-11-13 at 17 04 42

Screen Shot 2021-11-13 at 17 24 17

Smooth mouse input

Currently mouse input is used raw and this results in noticeably 'unsmooth' mouse movement at higher sensitivities. The smoothing would probably work similarly to smoothing in EntityPosition. Just add similar functionality to EntityRotation and set the delay to something pretty low, like 0.05 or 0.03 (you'll have to find a balance between smooth enough but also snappy because no-one wants the cursor to be lagging behind).

Improve first launch speed

The first launch is an important part of the user experience and some of these changes will even speed up other aspects of the app (such as updating and loading new resource packs).

  • Cache registries and resource pack in the background to allow the app to finish loading without waiting for caches to be created (and potentially warn users if they try to quit the app before caching is finished). This will save a significant amount of time because resource pack caching is kinda slow (I think, profiling required).
  • Figure out which zip library is the fastest (unzipping assets can take a while).
  • Potentially preprocess Pixlyzer data into the format Delta Client likes so that no reformatting is required at runtime (the app could just download the preprocessed files from git or something).

Waterlogged blocks don't render

Describe the bug
Waterlogged blocks do not show water

To Reproduce
Open a world and view a waterlogged block. The block renders as it would if it weren't waterlogged.

Expected behavior
The block displays as a waterlogged block would in vanilla.

Screenshots
Screen Shot 2021-10-10 at 10 04 02 PM

Extra information (please complete the following information

  • OS: macOS 11.3.1 Big Sur
  • Hardware: 2020 M1 MacBook Air
  • Build: Release configuration, branch dev at f49536f

Themeable UI

Having a themable UI is a feature that some users want, and with SwiftUI this could be sort of annoying to make (theming would be quite limited to what parameters we link to a theming system). One idea I've had for making a more themable UI is to use WebViews along with html/css (not too far from what Electron apps do). This would mean loading a theme would be as simple as including a CSS file. The WebView-based UI would most likely be offered as an alternative to the SwiftUI UI, because WebViews would only really make sense on desktop (for example, on tvOS there are a lot of constraints designs should follow due to the controller, and SwiftUI will automatically restyle our SwiftUI UI to fit right in).

Tokamak

One option is to use Tokamak instead of SwiftUI for the UI. It is designed to have exactly the same API as SwiftUI although it is missing quite a few things. It'd be nice to use because for iOS and tvOS import TokamakShim can just be replaced with import SwiftUI (pretty cool). And I think there's probably a way to include arbitrary css in views too, which would be how themes work. Tokamak does seem to want a different build tool though which I don't really want to use. So a way to use it with the current build system would have to be found. And it looks like it's more intended for wasm purposes than desktop app purposes. It's worth a look though.

Custom solution

If there doesn't seem to be a good existing solution out there. We can always create our own or adapt fork an existing one and repurpose it for our use case.

As always, you're welcome to do your own research and thinking and use a completely different solution! But it's best to pass it past me first so I can give some feedback :)

Fluids render on top of all blocks

Describe the bug
Fluids and stained glass panes render on top of all blocks, even when they are obstructed by those blocks

To Reproduce
Open a world with a fluid or stained glass pane obstructed by an opaque block. The fluid is still visible.

Expected behavior
The fluid or stained glass pane should be hidden where obscured by an opaque block.

Screenshots

Screen Shot 2021-10-10 at 10 08 09 PM

Extra information

  • OS: macOS 11.3.1 Big Sur
  • Hardware: 2020 M1 MacBook Air
  • Build: Configuration release at f49536f

Error when Building (Catalina) Cannot find file "delta-core"

Error log:

CpResource /Users/guest/Downloads/delta-core /Users/guest/Library/Developer/Xcode/DerivedData/DeltaClient-chttwycariivqtechoycnufudlgi/Build/Products/Release/DeltaClient.app/Contents/Resources/delta-core (in target 'DeltaClient (macOS)' from project 'DeltaClient')
cd /Users/guest/Downloads/delta-client-main
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks /Users/guest/Downloads/delta-core /Users/guest/Library/Developer/Xcode/DerivedData/DeltaClient-chttwycariivqtechoycnufudlgi/Build/Products/Release/DeltaClient.app/Contents/Resources

error: /Users/guest/Downloads/delta-core: No such file or directory (in target 'DeltaClient (macOS)' from project 'DeltaClient')

Running MacOS 10.15.7, 16GB Memory

Add string descriptions for all `LocalizedError`s

Currently, the default error description is used which is basically just the enum case printed out. Having more human readable and less scary looking descriptions would help regular users troubleshoot a bit better.

Crash when performing many movement events in a relatively short time. M1 Mac

Program crashes when too many event inputs are provided in a relatively short amount of time

Steps to reproduce the behavior:

  1. Enter the game
  2. Start rapidly providing user control inputs (movement keys) preferably with some double or triple pressing
  3. Repeat for some time
  4. With four tries, issue happened 3 out of 4 times within a time frame of 3 to 20 seconds

Expected behavior
No crash

Extra information (please complete the following information

  • OS: macOS 12.0.1
  • Hardware: M1 MacBook Air
  • Build: commit e4d0459
0   DeltaClient                              0x1027e78b0 specialized Set.contains(_:) + 20
1   DeltaClient                              0x1027e75cc Player.updateVelocity() + 188 (Player.swift:172)
2   DeltaClient                              0x1027e75cc Player.updateVelocity() + 188 (Player.swift:172)
3   DeltaClient                              0x10287ff38 RenderCoordinator.updatePhysics() + 92 (RenderCoordinator.swift:116)
4   DeltaClient                              0x10287f6cc RenderCoordinator.draw(in:) + 1000 (RenderCoordinator.swift:77)
5   DeltaClient                              0x10287feb8 @objc RenderCoordinator.draw(in:) + 48
6   MetalKit                                 0x1b68b9ff4 -[MTKView draw] + 288
7   MetalKit                                 0x1b68b9eb4 __23-[MTKView __initCommon]_block_invoke + 48

Add branch picker to in-app updater

Currently, when the 'unstable' update option is chosen, the app is hardcoded to update to the latest successful workflow run from the dev branch. It would be nice if users got shown a drop down list and could select which branch to update to. This would be achieved by using the GitHub API.

GitHub API

https://api.github.com/repos/stackotter/delta-client/branches returns a list of all branches on the repo.

The rest of this issue just requires a basic knowledge of SwiftUI to show a dropdown picker in a way that makes it clear that it is for choosing which branch the unstable update will use.

Styled text

Minecraft supports two kinds of styled text. A legacy way that uses a strange unicode character as a delimiter, and the new way sometimes referred to as raw json text. Currently Delta Client can parse json text and output the text content of it with no styling. Delta Client doesn't support legacy text at the moment (it just outputs it as is with the weird unicode characters and everything).

Displaying styled text

Delta Client needs to be able to display both kinds of styled text in two ways; as SwiftUI text, and as ansi styled text in the logs (the latter is not quite as important and it's ok if that isn't solved for now).

  • Display json text in SwiftUI
  • Parse legacy text
  • Display legacy text in SwiftUI
  • Update existing UI code to use the new styled text system (solves #14)
  • Display json text as styled ANSI text in terminal
  • Display legacy text as styled ANSI text in terminal

The JSON text parsing system is currently pretty bad and could do with a refactor (which shouldn't take too long anyway because it's not a big system).

M1 game crash after joining world

Describe the bug
After joining a server and after all the terrain chunks are loaded, the game immediately crashes

To Reproduce
Steps to reproduce the behavior:

  1. Connect to any server
  2. Start playing
  3. Wait for the terrain to be rendered
  4. The game will immediately crash

Expected behavior
The game should not crash

Screenshots
N.A.

Extra information (please complete the following information

  • OS: macOS 11.6
  • Hardware: MacBook Pro (13-inch, M1, 2020)
  • Build: v0.1.0-snapshot.9

Additional context

The issue is likely due to M1 compatibility issues.
A temporary workaround is running the Delta-Client app with Rosetta, but even then, although the game doesn't crash anymore, the terrain doesn't properly render (some ground blocks appear to be transparent, see screenshots here below).

Screenshot 2021-10-25 at 20 52 23

Screenshot 2021-10-25 at 20 52 30

The crash seems to happen consistently in the getSkyLightLevel(atIndex:, inSectionAt:) method in the ChunkLighting.swift file.

The error that appears is Thread 12: EXC_BAD_ACCESS (code=1, address=0x10).

The values of the function parameters are blockIndex: 2397, sectionIndex: 3, skyLightArray: 0 values.

The call-stack is:

Thread 12 Queue : dev.stackotter.meshPreparationQue
<img width="1440" alt="Screenshot 2021-10-25 at 20 52 23" src="https://user-images.githubusercontent.com/51241132/138756791-609573af-e1eb-4251-b6ef-069fe1b28d92.png">
ue (serial)
0	0x00000001986fb240 in objc_msgSend ()

1	0x00000001a45c4b9c in Dictionary._Variant.subscript.getter ()

2	0x00000001008af4b8 in ChunkLighting.getSkyLightLevel(atIndex:inSectionAt:) at /Users/albie/delta-client/Sources/DeltaCore/World/Light/ChunkLighting.swift:99

3	0x00000001008afacc in ChunkLighting.getSkyLightLevel(atIndex:) at /Users/albie/delta-client/Sources/DeltaCore/World/Light/ChunkLighting.swift:94

4	0x00000001008af7b0 in ChunkLighting.getLightLevel(at:) at /Users/albie/delta-client/Sources/DeltaCore/World/Light/ChunkLighting.swift:73

5	0x00000001007cc708 in ChunkSectionMeshBuilder.getNeighbourLightLevels(neighbourIndices:visibleFaces:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Mesh/ChunkSectionMeshBuilder.swift:774

6	0x00000001007c33d8 in ChunkSectionMeshBuilder.addBlock(at:atBlockIndex:with:transparentAndOpaqueGeometry:translucentMesh:indexToNeighbourIndices:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Mesh/ChunkSectionMeshBuilder.swift:175

7	0x00000001007c2124 in ChunkSectionMeshBuilder.build(reusing:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Mesh/ChunkSectionMeshBuilder.swift:85

8	0x00000001007e4060 in closure #2 in ChunkRenderer.prepareSectionAsync(at:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Renderer/ChunkRenderer.swift:93

15	0x000000010183bd34 in _pthread_wqthread ()
Enqueued from com.apple.main-thread (Thread 1) Queue : com.apple.main-thread (serial)

0	0x0000000101cb7c68 in dispatch_async ()

1	0x00000001a8f767dc in OS_dispatch_queue.async(group:qos:flags:execute:) ()

2	0x00000001007e3588 in ChunkRenderer.prepareSectionAsync(at:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Renderer/ChunkRenderer.swift:86

3	0x00000001007e49b4 in ChunkRenderer.handleSectionUpdate(at:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Renderer/ChunkRenderer.swift:120

4	0x00000001007ec150 in closure #2 in WorldRenderer.handle(_:) at /Users/albie/d
<img width="1440" alt="Screenshot 2021-10-25 at 20 52 23" src="https://user-images.githubusercontent.com/51241132/138756775-9b44dde4-2afe-40b7-b695-07492a0ebf8b.png">
<img width="1440" alt="Screenshot 2021-10-25 at 20 52 30" src="https://user-images.githubusercontent.com/51241132/138756833-7ba568cb-60d9-40fe-b111-6f5d51abaef6.png">
<img width="1440" alt="Screenshot 2021-10-25 at 20 52 30" src="https://user-images.githubusercontent.com/51241132/138756848-fc9705b5-f142-4fb6-87ba-567678e48321.png">
elta-client/Sources/DeltaCore/Render/Renderer/WorldRenderer.swift:161

7	0x00000001a45cf344 in Sequence.forEach(_:) ()

8	0x00000001007ebb80 in WorldRenderer.handle(_:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Renderer/WorldRenderer.swift:159

9	0x00000001007ee834 in WorldRenderer.getVisibleChunkRenderers(camera:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Renderer/WorldRenderer.swift:360

10	0x00000001007f0de0 in WorldRenderer.draw(device:view:transparentAndOpaqueCommandBuffer:translucentCommandBuffer:camera:commandQueue:) at /Users/albie/delta-client/Sources/DeltaCore/Render/Renderer/WorldRenderer.swift:469

11	0x00000001007ddb04 in RenderCoordinator.draw(in:) at /Users/albie/delta-client/Sources/DeltaCore/Render/RenderCoordinator.swift:89

The run log is:

25-10-2021 20:53:25.5880 n/a [info ] Loading registries
25-10-2021 20:53:26.9650 n/a [info ] Loading resource pack
25-10-2021 20:53:26.9650 n/a [debug] Loading resources from 'realms' namespace
25-10-2021 20:53:26.9660 n/a [debug] Loading textures
25-10-2021 20:53:26.9660 n/a [debug] Loading biome colors
25-10-2021 20:53:26.9660 n/a [debug] Loading cached block models
25-10-2021 20:53:26.9660 n/a [debug] Loading resources from 'minecraft' namespace
25-10-2021 20:53:26.9660 n/a [debug] Loading textures
25-10-2021 20:53:28.3260 n/a [debug] Loading biome colors
25-10-2021 20:53:28.4480 n/a [debug] Loading cached block models
25-10-2021 20:53:30.3440 n/a [info ] Done
2021-10-25 20:53:30.346294+0200 DeltaClient[1570:18253] [si_destination_compare] send failed: Invalid argument
2021-10-25 20:53:30.346339+0200 DeltaClient[1570:18253] [si_destination_compare] send failed: Undefined error: 0
2021-10-25 20:53:30.496536+0200 DeltaClient[1570:18253] [connection] nw_endpoint_handler_set_adaptive_read_handler [C2.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for read_timeout failed
2021-10-25 20:53:30.497013+0200 DeltaClient[1570:18253] [connection] nw_endpoint_handler_set_adaptive_write_handler [C2.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for write_timeout failed
25-10-2021 20:53:30.5860 n/a [debug] Received ping response from play.stackotter.dev:25565
2021-10-25 20:53:34.308866+0200 DeltaClient[1570:17915] [si_destination_compare] send failed: Invalid argument
2021-10-25 20:53:34.422637+0200 DeltaClient[1570:18246] [connection] nw_endpoint_handler_set_adaptive_read_handler [C4.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for read_timeout failed
2021-10-25 20:53:34.422708+0200 DeltaClient[1570:18246] [connection] nw_endpoint_handler_set_adaptive_write_handler [C4.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for write_timeout failed
2021-10-25 20:53:37.650024+0200 DeltaClient[1570:18248] [connection] nw_flow_add_read_request [C4.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] already delivered final read, cannot accept read requests
2021-10-25 20:53:37.650208+0200 DeltaClient[1570:18248] [connection] nw_read_request_report [C4] Receive failed with error "No message available on STREAM"
2021-10-25 20:53:41.442285+0200 DeltaClient[1570:18253] [si_destination_compare] send failed: Invalid argument
2021-10-25 20:53:41.530382+0200 DeltaClient[1570:18253] [connection] nw_endpoint_handler_set_adaptive_read_handler [C6.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for read_timeout failed
2021-10-25 20:53:41.530428+0200 DeltaClient[1570:18253] [connection] nw_endpoint_handler_set_adaptive_write_handler [C6.1 185.116.158.193:25565 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for write_timeout failed
25-10-2021 20:53:41.6080 n/a [debug] Received ping response from play.stackotter.dev:25565
2021-10-25 20:53:43.759365+0200 DeltaClient[1570:17915] Metal GPU Frame Capture Enabled
2021-10-25 20:53:43.759529+0200 DeltaClient[1570:17915] Metal API Validation Enabled
2021-10-25 20:53:43.784446+0200 DeltaClient[1570:17915] Errors found! Invalidating cache...
2021-10-25 20:53:43.844423+0200 DeltaClient[1570:17915] +[MTLIOAccelDevice registerDevices]: Zero Metal services found
2021-10-25 20:53:43.860509+0200 DeltaClient[1570:18248] Errors found! Invalidating cache...
2021-10-25 20:53:49.077335+0200 DeltaClient[1570:18248] [connection] nw_endpoint_handler_set_adaptive_read_handler [C8.1 185.116.158.193:36112 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for read_timeout failed
2021-10-25 20:53:49.077414+0200 DeltaClient[1570:18248] [connection] nw_endpoint_handler_set_adaptive_write_handler [C8.1 185.116.158.193:36112 ready socket-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for write_timeout failed
25-10-2021 20:53:49.2480 n/a [debug] plugin message received with channel: minecraft:brand
25-10-2021 20:53:49.3560 n/a [info ] chunk unpack: 8.41296ms, total: 8.41296ms
25-10-2021 20:53:49.3700 n/a [info ] chunk unpack: 8.79297ms, total: 8.79297ms
25-10-2021 20:53:49.3820 n/a [info ] chunk unpack: 7.98499ms, total: 7.98499ms
25-10-2021 20:53:49.3920 n/a [info ] chunk unpack: 6.50195ms, total: 6.50195ms
25-10-2021 20:53:49.4030 n/a [info ] chunk unpack: 6.47986ms, total: 6.47986ms
25-10-2021 20:53:49.4130 n/a [info ] chunk unpack: 6.41296ms, total: 6.41296ms
25-10-2021 20:53:49.4220 n/a [info ] chunk unpack: 6.56006ms, total: 6.56006ms
25-10-2021 20:53:49.4300 n/a [info ] chunk unpack: 6.38391ms, total: 6.38391ms
25-10-2021 20:53:49.4400 n/a [info ] chunk unpack: 6.37500ms, total: 6.37500ms
25-10-2021 20:53:49.4480 n/a [info ] chunk unpack: 6.34497ms, total: 6.34497ms
25-10-2021 20:53:49.4550 n/a [info ] chunk unpack: 6.36609ms, total: 6.36609ms
25-10-2021 20:53:49.4630 n/a [info ] chunk unpack: 6.32690ms, total: 6.32690ms
25-10-2021 20:53:49.4720 n/a [info ] chunk unpack: 6.33105ms, total: 6.33105ms
25-10-2021 20:53:49.4800 n/a [info ] chunk unpack: 6.32996ms, total: 6.32996ms
25-10-2021 20:53:49.4880 n/a [info ] chunk unpack: 6.50391ms, total: 6.50391ms
25-10-2021 20:53:49.4990 n/a [info ] chunk unpack: 7.51904ms, total: 7.51904ms
25-10-2021 20:53:49.5100 n/a [info ] chunk unpack: 7.53296ms, total: 7.53296ms
25-10-2021 20:53:49.5210 n/a [info ] chunk unpack: 7.46704ms, total: 7.46704ms
25-10-2021 20:53:49.5320 n/a [info ] chunk unpack: 7.49695ms, total: 7.49695ms
25-10-2021 20:53:49.5430 n/a [info ] chunk unpack: 7.59912ms, total: 7.59912ms
25-10-2021 20:53:49.5530 n/a [info ] chunk unpack: 6.43604ms, total: 6.43604ms
25-10-2021 20:53:49.5630 n/a [info ] chunk unpack: 6.35400ms, total: 6.35400ms
25-10-2021 20:53:49.5710 n/a [info ] chunk unpack: 6.31702ms, total: 6.31702ms
25-10-2021 20:53:49.5800 n/a [info ] chunk unpack: 6.37305ms, total: 6.37305ms
25-10-2021 20:53:49.5890 n/a [info ] chunk unpack: 6.35400ms, total: 6.35400ms
25-10-2021 20:53:49.5980 n/a [info ] chunk unpack: 6.44214ms, total: 6.44214ms
25-10-2021 20:53:49.6080 n/a [info ] chunk unpack: 6.45801ms, total: 6.45801ms
25-10-2021 20:53:49.6180 n/a [info ] chunk unpack: 6.49194ms, total: 6.49194ms
25-10-2021 20:53:49.6260 n/a [info ] chunk unpack: 6.45801ms, total: 6.45801ms
25-10-2021 20:53:49.6350 n/a [info ] chunk unpack: 6.47510ms, total: 6.47510ms
25-10-2021 20:53:49.6440 n/a [info ] chunk unpack: 6.37500ms, total: 6.37500ms
25-10-2021 20:53:49.6550 n/a [info ] chunk unpack: 7.52405ms, total: 7.52405ms
25-10-2021 20:53:49.6660 n/a [info ] chunk unpack: 6.49402ms, total: 6.49402ms
25-10-2021 20:53:49.6760 n/a [info ] chunk unpack: 6.44812ms, total: 6.44812ms
25-10-2021 20:53:49.6870 n/a [info ] chunk unpack: 6.56299ms, total: 6.56299ms
25-10-2021 20:53:49.6990 n/a [info ] chunk unpack: 6.46497ms, total: 6.46497ms
25-10-2021 20:53:49.7080 n/a [info ] chunk unpack: 6.44507ms, total: 6.44507ms
25-10-2021 20:53:49.7170 n/a [info ] chunk unpack: 6.42493ms, total: 6.42493ms
25-10-2021 20:53:49.7250 n/a [info ] chunk unpack: 6.32190ms, total: 6.32190ms
25-10-2021 20:53:49.7370 n/a [info ] chunk unpack: 6.43396ms, total: 6.43396ms
25-10-2021 20:53:49.7470 n/a [info ] chunk unpack: 6.51306ms, total: 6.51306ms
25-10-2021 20:53:49.7560 n/a [info ] chunk unpack: 6.35706ms, total: 6.35706ms
25-10-2021 20:53:49.7660 n/a [info ] chunk unpack: 6.50500ms, total: 6.50500ms
25-10-2021 20:53:49.7750 n/a [info ] chunk unpack: 6.56311ms, total: 6.56311ms
25-10-2021 20:53:49.7830 n/a [info ] chunk unpack: 6.60095ms, total: 6.60095ms
25-10-2021 20:53:49.7920 n/a [info ] chunk unpack: 6.46704ms, total: 6.46704ms
25-10-2021 20:53:49.8010 n/a [info ] chunk unpack: 6.56995ms, total: 6.56995ms
25-10-2021 20:53:49.8110 n/a [info ] chunk unpack: 6.49402ms, total: 6.49402ms
25-10-2021 20:53:49.8220 n/a [info ] chunk unpack: 6.50793ms, total: 6.50793ms
25-10-2021 20:53:49.8320 n/a [info ] chunk unpack: 6.53101ms, total: 6.53101ms
25-10-2021 20:53:49.8410 n/a [info ] chunk unpack: 6.58105ms, total: 6.58105ms
25-10-2021 20:53:49.8500 n/a [info ] chunk unpack: 6.56506ms, total: 6.56506ms
25-10-2021 20:53:49.8590 n/a [info ] chunk unpack: 6.50916ms, total: 6.50916ms
25-10-2021 20:53:49.8680 n/a [info ] chunk unpack: 6.51196ms, total: 6.51196ms
25-10-2021 20:53:49.8790 n/a [info ] chunk unpack: 6.59888ms, total: 6.59888ms
25-10-2021 20:53:49.8890 n/a [info ] chunk unpack: 6.58496ms, total: 6.58496ms
25-10-2021 20:53:49.8980 n/a [info ] chunk unpack: 6.64111ms, total: 6.64111ms
25-10-2021 20:53:49.9080 n/a [info ] chunk unpack: 6.52002ms, total: 6.52002ms
25-10-2021 20:53:49.9180 n/a [info ] chunk unpack: 6.52100ms, total: 6.52100ms
25-10-2021 20:53:49.9270 n/a [info ] chunk unpack: 6.70605ms, total: 6.70605ms
25-10-2021 20:53:49.9360 n/a [info ] chunk unpack: 6.49805ms, total: 6.49805ms
25-10-2021 20:53:49.9450 n/a [info ] chunk unpack: 6.54810ms, total: 6.54810ms
25-10-2021 20:53:49.9530 n/a [info ] chunk unpack: 6.54504ms, total: 6.54504ms
25-10-2021 20:53:49.9620 n/a [info ] chunk unpack: 6.48584ms, total: 6.48584ms
25-10-2021 20:53:49.9740 n/a [info ] chunk unpack: 6.62500ms, total: 6.62500ms
25-10-2021 20:53:49.9840 n/a [info ] chunk unpack: 6.56396ms, total: 6.56396ms
25-10-2021 20:53:49.9950 n/a [info ] chunk unpack: 6.57898ms, total: 6.57898ms
25-10-2021 20:53:50.0040 n/a [info ] chunk unpack: 6.43896ms, total: 6.43896ms
25-10-2021 20:53:50.0120 n/a [info ] chunk unpack: 5.40002ms, total: 5.40002ms
25-10-2021 20:53:50.0210 n/a [info ] chunk unpack: 6.51807ms, total: 6.51807ms
25-10-2021 20:53:50.0300 n/a [info ] chunk unpack: 6.53015ms, total: 6.53015ms
25-10-2021 20:53:50.0380 n/a [info ] chunk unpack: 6.56787ms, total: 6.56787ms
25-10-2021 20:53:50.0480 n/a [info ] chunk unpack: 6.58093ms, total: 6.58093ms
25-10-2021 20:53:50.0570 n/a [info ] chunk unpack: 6.45410ms, total: 6.45410ms
25-10-2021 20:53:50.0660 n/a [info ] chunk unpack: 6.47791ms, total: 6.47791ms
25-10-2021 20:53:50.0740 n/a [info ] chunk unpack: 6.49292ms, total: 6.49292ms
25-10-2021 20:53:50.0840 n/a [info ] chunk unpack: 6.45496ms, total: 6.45496ms
25-10-2021 20:53:50.0920 n/a [info ] chunk unpack: 6.48999ms, total: 6.48999ms
25-10-2021 20:53:50.1010 n/a [info ] chunk unpack: 6.48499ms, total: 6.48499ms
25-10-2021 20:53:50.1120 n/a [info ] chunk unpack: 6.49316ms, total: 6.49316ms
25-10-2021 20:53:50.1210 n/a [info ] chunk unpack: 6.50891ms, total: 6.50891ms
25-10-2021 20:53:50.1310 n/a [info ] chunk unpack: 6.48096ms, total: 6.48096ms
25-10-2021 20:53:50.1410 n/a [info ] chunk unpack: 6.47302ms, total: 6.47302ms
25-10-2021 20:53:50.1510 n/a [info ] chunk unpack: 6.52515ms, total: 6.52515ms
25-10-2021 20:53:50.1620 n/a [info ] chunk unpack: 6.60413ms, total: 6.60413ms
25-10-2021 20:53:50.1710 n/a [info ] chunk unpack: 6.50708ms, total: 6.50708ms
25-10-2021 20:53:50.1790 n/a [info ] chunk unpack: 6.51709ms, total: 6.51709ms
25-10-2021 20:53:50.1900 n/a [info ] chunk unpack: 6.55518ms, total: 6.55518ms
25-10-2021 20:53:50.2010 n/a [info ] chunk unpack: 6.75500ms, total: 6.75500ms
25-10-2021 20:53:50.2110 n/a [info ] chunk unpack: 6.55603ms, total: 6.55603ms
25-10-2021 20:53:50.2190 n/a [info ] chunk unpack: 6.51892ms, total: 6.51892ms
25-10-2021 20:53:50.2280 n/a [info ] chunk unpack: 6.58386ms, total: 6.58386ms
25-10-2021 20:53:50.2360 n/a [info ] chunk unpack: 6.50989ms, total: 6.50989ms
25-10-2021 20:53:50.2450 n/a [info ] chunk unpack: 6.51099ms, total: 6.51099ms
25-10-2021 20:53:50.2540 n/a [info ] chunk unpack: 6.50891ms, total: 6.50891ms
25-10-2021 20:53:50.2630 n/a [info ] chunk unpack: 6.58997ms, total: 6.58997ms
25-10-2021 20:53:50.2750 n/a [info ] chunk unpack: 6.50195ms, total: 6.50195ms
25-10-2021 20:53:50.2860 n/a [info ] chunk unpack: 6.56311ms, total: 6.56311ms
25-10-2021 20:53:50.2970 n/a [info ] chunk unpack: 6.56396ms, total: 6.56396ms
25-10-2021 20:53:50.3090 n/a [info ] chunk unpack: 6.53198ms, total: 6.53198ms
25-10-2021 20:53:50.3200 n/a [info ] chunk unpack: 6.50000ms, total: 6.50000ms
25-10-2021 20:53:50.3280 n/a [info ] chunk unpack: 6.45312ms, total: 6.45312ms
25-10-2021 20:53:50.3380 n/a [info ] chunk unpack: 6.58704ms, total: 6.58704ms
25-10-2021 20:53:50.3480 n/a [info ] chunk unpack: 6.53906ms, total: 6.53906ms
25-10-2021 20:53:50.3560 n/a [info ] chunk unpack: 6.48901ms, total: 6.48901ms
25-10-2021 20:53:50.3660 n/a [info ] chunk unpack: 6.46313ms, total: 6.46313ms
25-10-2021 20:53:50.3760 n/a [info ] chunk unpack: 6.49500ms, total: 6.49500ms
25-10-2021 20:53:50.3850 n/a [info ] chunk unpack: 6.74902ms, total: 6.74902ms
25-10-2021 20:53:50.3950 n/a [info ] chunk unpack: 6.43896ms, total: 6.43896ms
25-10-2021 20:53:50.4070 n/a [info ] chunk unpack: 7.09705ms, total: 7.09705ms
25-10-2021 20:53:50.4180 n/a [info ] chunk unpack: 6.53198ms, total: 6.53198ms
25-10-2021 20:53:50.4320 n/a [info ] chunk unpack: 6.58594ms, total: 6.58594ms
25-10-2021 20:53:50.4450 n/a [info ] chunk unpack: 6.62292ms, total: 6.62292ms
25-10-2021 20:53:50.4550 n/a [info ] chunk unpack: 6.49902ms, total: 6.49902ms
25-10-2021 20:53:50.4660 n/a [info ] chunk unpack: 6.60205ms, total: 6.60205ms
25-10-2021 20:53:50.4760 n/a [info ] chunk unpack: 6.44299ms, total: 6.44299ms
25-10-2021 20:53:50.4870 n/a [info ] chunk unpack: 6.65991ms, total: 6.65991ms
25-10-2021 20:53:50.4970 n/a [info ] chunk unpack: 6.47107ms, total: 6.47107ms
25-10-2021 20:53:50.5070 n/a [info ] chunk unpack: 6.49097ms, total: 6.49097ms
25-10-2021 20:53:50.5160 n/a [info ] chunk unpack: 6.36389ms, total: 6.36389ms
25-10-2021 20:53:50.5260 n/a [info ] chunk unpack: 6.33093ms, total: 6.33093ms
25-10-2021 20:53:50.5350 n/a [info ] chunk unpack: 5.20398ms, total: 5.20398ms
25-10-2021 20:53:50.5450 n/a [info ] chunk unpack: 6.34094ms, total: 6.34094ms
25-10-2021 20:53:50.5540 n/a [info ] chunk unpack: 6.33691ms, total: 6.33691ms
25-10-2021 20:53:50.5670 n/a [info ] chunk unpack: 6.54407ms, total: 6.54407ms
25-10-2021 20:53:50.5750 n/a [info ] chunk unpack: 6.36902ms, total: 6.36902ms
25-10-2021 20:53:50.5860 n/a [info ] chunk unpack: 6.35400ms, total: 6.35400ms
25-10-2021 20:53:50.5970 n/a [info ] chunk unpack: 6.40210ms, total: 6.40210ms
25-10-2021 20:53:50.6070 n/a [info ] chunk unpack: 6.39905ms, total: 6.39905ms
25-10-2021 20:53:50.6190 n/a [info ] chunk unpack: 6.45898ms, total: 6.45898ms
25-10-2021 20:53:50.6300 n/a [info ] chunk unpack: 6.42798ms, total: 6.42798ms
25-10-2021 20:53:50.6410 n/a [info ] chunk unpack: 6.41296ms, total: 6.41296ms
25-10-2021 20:53:50.6520 n/a [info ] chunk unpack: 6.37695ms, total: 6.37695ms
25-10-2021 20:53:50.6620 n/a [info ] chunk unpack: 6.47192ms, total: 6.47192ms
25-10-2021 20:53:50.6730 n/a [info ] chunk unpack: 6.48499ms, total: 6.48499ms
25-10-2021 20:53:50.6810 n/a [info ] chunk unpack: 5.26099ms, total: 5.26099ms
25-10-2021 20:53:50.6900 n/a [info ] chunk unpack: 5.32104ms, total: 5.32104ms
25-10-2021 20:53:50.7010 n/a [info ] chunk unpack: 6.49597ms, total: 6.49597ms
25-10-2021 20:53:50.7110 n/a [info ] chunk unpack: 6.50293ms, total: 6.50293ms
25-10-2021 20:53:50.7220 n/a [info ] chunk unpack: 6.59900ms, total: 6.59900ms
25-10-2021 20:53:50.7310 n/a [info ] chunk unpack: 6.40405ms, total: 6.40405ms
25-10-2021 20:53:50.7400 n/a [info ] chunk unpack: 6.33911ms, total: 6.33911ms
25-10-2021 20:53:50.7510 n/a [info ] chunk unpack: 6.42786ms, total: 6.42786ms
25-10-2021 20:53:50.7600 n/a [info ] chunk unpack: 6.49695ms, total: 6.49695ms
25-10-2021 20:53:50.7710 n/a [info ] chunk unpack: 6.51013ms, total: 6.51013ms
25-10-2021 20:53:50.7810 n/a [info ] chunk unpack: 6.47595ms, total: 6.47595ms
25-10-2021 20:53:50.7910 n/a [info ] chunk unpack: 6.32800ms, total: 6.32800ms
25-10-2021 20:53:50.8010 n/a [info ] chunk unpack: 6.62793ms, total: 6.62793ms
25-10-2021 20:53:50.8120 n/a [info ] chunk unpack: 6.45898ms, total: 6.45898ms
25-10-2021 20:53:50.8240 n/a [info ] chunk unpack: 6.56396ms, total: 6.56396ms
25-10-2021 20:53:50.8320 n/a [info ] chunk unpack: 5.29602ms, total: 5.29602ms
25-10-2021 20:53:50.8410 n/a [info ] chunk unpack: 6.30505ms, total: 6.30505ms
25-10-2021 20:53:50.8510 n/a [info ] chunk unpack: 6.49097ms, total: 6.49097ms
25-10-2021 20:53:50.8610 n/a [info ] chunk unpack: 6.51196ms, total: 6.51196ms
25-10-2021 20:53:50.8730 n/a [info ] chunk unpack: 6.47290ms, total: 6.47290ms
25-10-2021 20:53:50.8820 n/a [info ] chunk unpack: 6.54102ms, total: 6.54102ms
25-10-2021 20:53:50.8910 n/a [info ] chunk unpack: 6.42004ms, total: 6.42004ms
25-10-2021 20:53:50.9030 n/a [info ] chunk unpack: 6.49292ms, total: 6.49292ms
25-10-2021 20:53:50.9120 n/a [info ] chunk unpack: 6.35486ms, total: 6.35486ms
25-10-2021 20:53:50.9230 n/a [info ] chunk unpack: 6.59485ms, total: 6.59485ms
25-10-2021 20:53:50.9330 n/a [info ] chunk unpack: 6.65491ms, total: 6.65491ms
25-10-2021 20:53:50.9440 n/a [info ] chunk unpack: 6.63989ms, total: 6.63989ms
25-10-2021 20:53:50.9550 n/a [info ] chunk unpack: 6.65405ms, total: 6.65405ms
25-10-2021 20:53:50.9660 n/a [info ] chunk unpack: 6.61194ms, total: 6.61194ms
25-10-2021 20:53:50.9780 n/a [info ] chunk unpack: 6.72192ms, total: 6.72192ms
25-10-2021 20:53:50.9870 n/a [info ] chunk unpack: 5.35498ms, total: 5.35498ms
25-10-2021 20:53:50.9960 n/a [info ] chunk unpack: 6.51294ms, total: 6.51294ms
25-10-2021 20:53:51.0060 n/a [info ] chunk unpack: 6.51807ms, total: 6.51807ms
25-10-2021 20:53:51.0160 n/a [info ] chunk unpack: 6.50903ms, total: 6.50903ms
25-10-2021 20:53:51.0250 n/a [info ] chunk unpack: 6.43616ms, total: 6.43616ms
25-10-2021 20:53:51.0350 n/a [info ] chunk unpack: 6.53699ms, total: 6.53699ms
25-10-2021 20:53:51.0440 n/a [info ] chunk unpack: 6.43591ms, total: 6.43591ms
25-10-2021 20:53:51.0550 n/a [info ] chunk unpack: 6.51501ms, total: 6.51501ms
25-10-2021 20:53:51.0650 n/a [info ] chunk unpack: 6.55701ms, total: 6.55701ms
25-10-2021 20:53:51.0750 n/a [info ] chunk unpack: 6.53284ms, total: 6.53284ms
25-10-2021 20:53:51.0840 n/a [info ] chunk unpack: 6.54395ms, total: 6.54395ms
25-10-2021 20:53:51.0950 n/a [info ] chunk unpack: 6.43994ms, total: 6.43994ms
25-10-2021 20:53:51.1070 n/a [info ] chunk unpack: 6.64197ms, total: 6.64197ms
25-10-2021 20:53:51.1170 n/a [info ] chunk unpack: 6.50000ms, total: 6.50000ms
25-10-2021 20:53:51.1270 n/a [info ] chunk unpack: 6.68604ms, total: 6.68604ms
25-10-2021 20:53:51.1360 n/a [info ] chunk unpack: 5.39807ms, total: 5.39807ms
25-10-2021 20:53:51.1460 n/a [info ] chunk unpack: 6.48193ms, total: 6.48193ms
25-10-2021 20:53:51.1550 n/a [info ] chunk unpack: 6.46301ms, total: 6.46301ms
25-10-2021 20:53:51.1650 n/a [info ] chunk unpack: 6.48401ms, total: 6.48401ms
25-10-2021 20:53:51.1740 n/a [info ] chunk unpack: 6.49402ms, total: 6.49402ms
25-10-2021 20:53:51.1850 n/a [info ] chunk unpack: 6.55005ms, total: 6.55005ms
25-10-2021 20:53:51.1950 n/a [info ] chunk unpack: 6.45703ms, total: 6.45703ms
25-10-2021 20:53:51.2040 n/a [info ] chunk unpack: 6.43896ms, total: 6.43896ms
25-10-2021 20:53:51.2130 n/a [info ] chunk unpack: 6.54907ms, total: 6.54907ms
25-10-2021 20:53:51.2220 n/a [info ] chunk unpack: 6.46606ms, total: 6.46606ms
25-10-2021 20:53:51.2300 n/a [info ] chunk unpack: 6.46497ms, total: 6.46497ms
25-10-2021 20:53:51.2380 n/a [info ] chunk unpack: 6.47095ms, total: 6.47095ms
25-10-2021 20:53:51.2480 n/a [info ] chunk unpack: 6.53296ms, total: 6.53296ms
25-10-2021 20:53:51.2570 n/a [info ] chunk unpack: 6.47791ms, total: 6.47791ms
25-10-2021 20:53:51.2660 n/a [info ] chunk unpack: 6.55408ms, total: 6.55408ms
25-10-2021 20:53:51.2740 n/a [info ] chunk unpack: 5.42200ms, total: 5.42200ms
25-10-2021 20:53:51.2820 n/a [info ] chunk unpack: 5.45093ms, total: 5.45093ms
25-10-2021 20:53:51.2900 n/a [info ] chunk unpack: 5.37891ms, total: 5.37891ms
25-10-2021 20:53:51.2980 n/a [info ] chunk unpack: 6.45007ms, total: 6.45007ms
25-10-2021 20:53:51.3080 n/a [info ] chunk unpack: 6.48303ms, total: 6.48303ms
25-10-2021 20:53:51.3180 n/a [info ] chunk unpack: 6.61096ms, total: 6.61096ms
25-10-2021 20:53:51.3270 n/a [info ] chunk unpack: 6.56494ms, total: 6.56494ms
25-10-2021 20:53:51.3360 n/a [info ] chunk unpack: 6.53003ms, total: 6.53003ms
25-10-2021 20:53:51.3450 n/a [info ] chunk unpack: 6.57800ms, total: 6.57800ms
25-10-2021 20:53:51.3530 n/a [info ] chunk unpack: 6.50500ms, total: 6.50500ms
25-10-2021 20:53:51.3610 n/a [info ] chunk unpack: 6.47705ms, total: 6.47705ms
25-10-2021 20:53:51.3700 n/a [info ] chunk unpack: 6.50610ms, total: 6.50610ms
25-10-2021 20:53:51.3780 n/a [info ] chunk unpack: 6.44409ms, total: 6.44409ms
25-10-2021 20:53:51.3860 n/a [info ] chunk unpack: 6.46802ms, total: 6.46802ms
25-10-2021 20:53:51.3950 n/a [info ] chunk unpack: 6.50305ms, total: 6.50305ms
25-10-2021 20:53:51.4050 n/a [info ] chunk unpack: 6.50891ms, total: 6.50891ms
25-10-2021 20:53:51.4140 n/a [info ] chunk unpack: 5.36096ms, total: 5.36096ms
25-10-2021 20:53:51.4240 n/a [info ] chunk unpack: 6.57312ms, total: 6.57312ms
25-10-2021 20:53:51.4340 n/a [info ] chunk unpack: 6.58398ms, total: 6.58398ms
25-10-2021 20:53:51.4440 n/a [info ] chunk unpack: 6.46594ms, total: 6.46594ms
25-10-2021 20:53:51.4560 n/a [info ] chunk unpack: 6.56506ms, total: 6.56506ms
25-10-2021 20:53:51.4630 n/a [info ] chunk unpack: 5.37610ms, total: 5.37610ms
25-10-2021 20:53:51.4720 n/a [info ] chunk unpack: 6.43298ms, total: 6.43298ms
25-10-2021 20:53:51.4810 n/a [info ] chunk unpack: 6.53503ms, total: 6.53503ms
25-10-2021 20:53:51.4900 n/a [info ] chunk unpack: 6.50000ms, total: 6.50000ms
25-10-2021 20:53:51.4980 n/a [info ] chunk unpack: 6.51294ms, total: 6.51294ms
25-10-2021 20:53:51.5060 n/a [info ] chunk unpack: 6.49902ms, total: 6.49902ms
25-10-2021 20:53:51.5150 n/a [info ] chunk unpack: 6.50891ms, total: 6.50891ms
25-10-2021 20:53:51.5230 n/a [info ] chunk unpack: 6.46899ms, total: 6.46899ms
25-10-2021 20:53:51.5320 n/a [info ] chunk unpack: 6.53003ms, total: 6.53003ms
25-10-2021 20:53:51.5320 n/a [info ] Finished downloading terrain
25-10-2021 20:53:51.5370 n/a [info ] Loading shaders
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: -2)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: -1)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 0)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 1)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 2)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 3)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 4)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 5)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 6)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 7)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 8)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 9)
25-10-2021 20:53:51.5900 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -8, chunkZ: 10)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: -2)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: -1)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 0)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 1)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 2)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 3)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 4)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 5)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 6)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 7)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 8)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 9)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -7, chunkZ: 10)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: -2)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: -1)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 0)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 1)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 2)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 3)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 4)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 5)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 6)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 7)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 8)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 9)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -6, chunkZ: 10)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: -2)
25-10-2021 20:53:51.5910 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: -1)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 0)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 1)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 2)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 3)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 4)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 5)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 6)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 7)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 8)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 9)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -5, chunkZ: 10)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: -2)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: -1)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 0)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 1)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 2)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 3)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 4)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 5)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 6)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 7)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 8)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 9)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -4, chunkZ: 10)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: -2)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: -1)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 0)
25-10-2021 20:53:51.5920 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 1)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 2)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 3)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 4)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 5)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 6)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 7)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 8)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 9)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -3, chunkZ: 10)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: -2)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: -1)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 0)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 1)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 2)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 3)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 4)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 5)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 6)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 7)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 8)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 9)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -2, chunkZ: 10)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: -2)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: -1)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 0)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 1)
25-10-2021 20:53:51.5930 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 2)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 3)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 4)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 5)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 6)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 7)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 8)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 9)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: -1, chunkZ: 10)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: -2)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: -1)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 0)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 1)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 2)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 3)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 4)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 5)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 6)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 7)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 8)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 9)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 0, chunkZ: 10)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: -2)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: -1)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 0)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 1)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 2)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 3)
25-10-2021 20:53:51.5940 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 4)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 5)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 6)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 7)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 8)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 9)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 1, chunkZ: 10)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: -2)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: -1)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 0)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 1)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 2)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 3)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 4)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 5)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 6)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 7)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 8)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 9)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 2, chunkZ: 10)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: -2)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: -1)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 0)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 1)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 2)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 3)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 4)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 5)
25-10-2021 20:53:51.5950 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 6)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 7)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 8)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 9)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 3, chunkZ: 10)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: -2)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: -1)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 0)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 1)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 2)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 3)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 4)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 5)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 6)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 7)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 8)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 9)
25-10-2021 20:53:51.5960 n/a [debug] Created chunk renderer for chunk at ChunkPosition(chunkX: 4, chunkZ: 10)
25-10-2021 20:53:51.6090 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 4)
25-10-2021 20:53:51.6090 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 5)
25-10-2021 20:53:51.6090 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 4)
25-10-2021 20:53:51.6250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 5)
25-10-2021 20:53:51.6250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 4)
25-10-2021 20:53:51.6250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 5)
25-10-2021 20:53:51.6410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 6)
25-10-2021 20:53:51.6410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 6)
25-10-2021 20:53:51.6410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 5)
25-10-2021 20:53:51.6580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 6)
25-10-2021 20:53:51.6580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 6)
25-10-2021 20:53:51.6580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 5)
25-10-2021 20:53:51.6740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 7)
25-10-2021 20:53:51.6740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 7)
25-10-2021 20:53:51.6750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 6)
25-10-2021 20:53:51.6910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 7)
25-10-2021 20:53:51.6910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 7)
25-10-2021 20:53:51.6910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 6)
25-10-2021 20:53:51.7080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 7)
25-10-2021 20:53:51.7080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 8)
25-10-2021 20:53:51.7080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 8)
25-10-2021 20:53:51.7240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 6)
25-10-2021 20:53:51.7240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 7)
25-10-2021 20:53:51.7250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 8)
25-10-2021 20:53:51.7410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 8)
25-10-2021 20:53:51.7410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 7)
25-10-2021 20:53:51.7410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 8)
25-10-2021 20:53:51.7580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 8)
25-10-2021 20:53:51.7580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 7)
25-10-2021 20:53:51.7580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 9)
25-10-2021 20:53:51.7740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 9)
25-10-2021 20:53:51.7740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 9)
25-10-2021 20:53:51.7750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 9)
25-10-2021 20:53:51.7910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 8)
25-10-2021 20:53:51.7910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 7)
25-10-2021 20:53:51.7910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 8)
25-10-2021 20:53:51.8080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 9)
25-10-2021 20:53:51.8080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 9)
25-10-2021 20:53:51.8080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 10)
25-10-2021 20:53:51.8240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 10)
25-10-2021 20:53:51.8240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 8)
25-10-2021 20:53:51.8240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 9)
25-10-2021 20:53:51.8410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 10)
25-10-2021 20:53:51.8410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 10)
25-10-2021 20:53:51.8410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 9)
25-10-2021 20:53:51.8580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 8)
25-10-2021 20:53:51.8580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 10)
25-10-2021 20:53:51.8580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 10)
25-10-2021 20:53:51.8740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 9)
25-10-2021 20:53:51.8740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 8)
25-10-2021 20:53:51.8740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 10)
25-10-2021 20:53:51.8900 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 9)
25-10-2021 20:53:51.9200 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 10)
25-10-2021 20:53:51.9200 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 9)
25-10-2021 20:53:51.9330 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 10)
25-10-2021 20:53:51.9330 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 10)
25-10-2021 20:53:51.9330 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 9)
25-10-2021 20:53:51.9510 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 10)
25-10-2021 20:53:51.9520 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 9)
25-10-2021 20:53:51.9520 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 10)
25-10-2021 20:53:51.9690 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 10)
25-10-2021 20:53:51.9690 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 3)
25-10-2021 20:53:51.9690 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 3)
25-10-2021 20:53:51.9940 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 4)
25-10-2021 20:53:51.9950 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 3)
25-10-2021 20:53:51.9950 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 3)
25-10-2021 20:53:52.0080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 4)
25-10-2021 20:53:52.0080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 2)
25-10-2021 20:53:52.0080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 2)
25-10-2021 20:53:52.0240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 4)
25-10-2021 20:53:52.0240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 5)
25-10-2021 20:53:52.0240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 3)
25-10-2021 20:53:52.0410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 2)
25-10-2021 20:53:52.0410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 2)
25-10-2021 20:53:52.0410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 3)
25-10-2021 20:53:52.0580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 2)
25-10-2021 20:53:52.0580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 4)
25-10-2021 20:53:52.0580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 5)
25-10-2021 20:53:52.0800 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 1)
25-10-2021 20:53:52.0800 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 1)
25-10-2021 20:53:52.0800 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 2)
25-10-2021 20:53:52.0930 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 3)
25-10-2021 20:53:52.0930 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 1)
25-10-2021 20:53:52.0930 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 4)
25-10-2021 20:53:52.1080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 5)
25-10-2021 20:53:52.1080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 1)
25-10-2021 20:53:52.1080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 3)
25-10-2021 20:53:52.1240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 6)
25-10-2021 20:53:52.1250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 2)
25-10-2021 20:53:52.1250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 1)
25-10-2021 20:53:52.1400 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 1)
25-10-2021 20:53:52.1400 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 4)
25-10-2021 20:53:52.1400 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 2)
25-10-2021 20:53:52.1570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 5)
25-10-2021 20:53:52.1570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: 0)
25-10-2021 20:53:52.1570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: 0)
25-10-2021 20:53:52.1740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 3)
25-10-2021 20:53:52.1750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: 0)
25-10-2021 20:53:52.1750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 6)
25-10-2021 20:53:52.1910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 4)
25-10-2021 20:53:52.1910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 5)
25-10-2021 20:53:52.1910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: 0)
25-10-2021 20:53:52.2080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 1)
25-10-2021 20:53:52.2080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 3)
25-10-2021 20:53:52.2080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 6)
25-10-2021 20:53:52.2240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 2)
25-10-2021 20:53:52.2250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: 0)
25-10-2021 20:53:52.2250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 1)
25-10-2021 20:53:52.2400 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: 0)
25-10-2021 20:53:52.2400 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 2)
25-10-2021 20:53:52.2400 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 7)
25-10-2021 20:53:52.2570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 4)
25-10-2021 20:53:52.2570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 5)
25-10-2021 20:53:52.2570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: -1)
25-10-2021 20:53:52.2760 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: -1)
25-10-2021 20:53:52.2760 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 1)
25-10-2021 20:53:52.2760 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 3)
25-10-2021 20:53:52.2900 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: 0)
25-10-2021 20:53:52.2900 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: -1)
25-10-2021 20:53:52.2900 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 6)
25-10-2021 20:53:52.3080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: -1)
25-10-2021 20:53:52.3080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 4)
25-10-2021 20:53:52.3080 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 5)
25-10-2021 20:53:52.3240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: 0)
25-10-2021 20:53:52.3250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 1)
25-10-2021 20:53:52.3250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 3)
25-10-2021 20:53:52.3410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 2)
25-10-2021 20:53:52.3410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 6)
25-10-2021 20:53:52.3410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: -1)
25-10-2021 20:53:52.3580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 7)
25-10-2021 20:53:52.3580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: -1)
25-10-2021 20:53:52.3580 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 2)
25-10-2021 20:53:52.3750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: 0)
25-10-2021 20:53:52.3750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 7)
25-10-2021 20:53:52.3750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 1)
25-10-2021 20:53:52.3910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 4)
25-10-2021 20:53:52.3910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: -1)
25-10-2021 20:53:52.3910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 5)
25-10-2021 20:53:52.4070 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: 0)
25-10-2021 20:53:52.4070 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -2, chunkZ: -2)
25-10-2021 20:53:52.4070 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -1, chunkZ: -2)
25-10-2021 20:53:52.4240 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 3)
25-10-2021 20:53:52.4340 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: -1)
25-10-2021 20:53:52.4340 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 6)
25-10-2021 20:53:52.4480 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -3, chunkZ: -2)
25-10-2021 20:53:52.4480 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 1)
25-10-2021 20:53:52.4480 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 0, chunkZ: -2)
25-10-2021 20:53:52.4610 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 8)
25-10-2021 20:53:52.4610 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 2)
25-10-2021 20:53:52.4620 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -4, chunkZ: -2)
25-10-2021 20:53:52.4750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 7)
25-10-2021 20:53:52.4750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: 0)
25-10-2021 20:53:52.4750 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: -1)
25-10-2021 20:53:52.4910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 1, chunkZ: -2)
25-10-2021 20:53:52.4910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: -1)
25-10-2021 20:53:52.4910 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: 0)
25-10-2021 20:53:52.5090 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 1)
25-10-2021 20:53:52.5090 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -5, chunkZ: -2)
25-10-2021 20:53:52.5090 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 8)
25-10-2021 20:53:52.5250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 2, chunkZ: -2)
25-10-2021 20:53:52.5250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: -1)
25-10-2021 20:53:52.5250 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: 0)
25-10-2021 20:53:52.5410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -6, chunkZ: -2)
25-10-2021 20:53:52.5410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: -1)
25-10-2021 20:53:52.5410 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 3, chunkZ: -2)
25-10-2021 20:53:52.5570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: -1)
25-10-2021 20:53:52.5570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -7, chunkZ: -2)
25-10-2021 20:53:52.5570 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: 4, chunkZ: -2)
25-10-2021 20:53:52.5740 n/a [debug] Preparing all sections in chunk at ChunkPosition(chunkX: -8, chunkZ: -2)
25-10-2021 20:53:53.2920 n/a [info ] update texture: 0.04116ms, total: 0.04116ms
25-10-2021 20:53:53.2930 n/a [info ] world renderer: 14.39035ms, total: 14.39035ms
25-10-2021 20:53:53.2930 n/a [info ] whole frame: 14.46812ms, total: 14.32344ms
25-10-2021 20:53:53.2930 n/a [info ] encode: 0.04903ms, total: 0.04903ms
25-10-2021 20:53:53.2930 n/a [info ] get visible chunks: 14.16228ms, total: 14.16228ms

25-10-2021 20:53:54.9590 n/a [info ] get visible chunks: 13.11175ms, total: 13.11175ms
25-10-2021 20:53:54.9590 n/a [info ] world renderer: 13.34801ms, total: 13.34801ms
25-10-2021 20:53:54.9590 n/a [info ] whole frame: 13.40260ms, total: 13.26858ms
25-10-2021 20:53:54.9590 n/a [info ] encode: 0.13016ms, total: 0.13016ms
25-10-2021 20:53:54.9590 n/a [info ] update texture: 0.03127ms, total: 0.03127ms

25-10-2021 20:53:56.7260 n/a [info ] whole frame: 15.11957ms, total: 14.96837ms
25-10-2021 20:53:56.7260 n/a [info ] get visible chunks: 13.43809ms, total: 13.43809ms
25-10-2021 20:53:56.7260 n/a [info ] encode: 0.56872ms, total: 0.56872ms
25-10-2021 20:53:56.7260 n/a [info ] update texture: 0.03196ms, total: 0.03196ms
25-10-2021 20:53:56.7260 n/a [info ] world renderer: 14.12297ms, total: 14.12297ms

25-10-2021 20:53:58.3940 n/a [info ] world renderer: 14.86057ms, total: 14.86057ms
25-10-2021 20:53:58.3940 n/a [info ] update texture: 0.02910ms, total: 0.02910ms
25-10-2021 20:53:58.3940 n/a [info ] get visible chunks: 13.56639ms, total: 13.56639ms
25-10-2021 20:53:58.3940 n/a [info ] encode: 1.17921ms, total: 1.17921ms
25-10-2021 20:53:58.3940 n/a [info ] whole frame: 14.91457ms, total: 14.76543ms

25-10-2021 20:54:00.0610 n/a [info ] get visible chunks: 13.65020ms, total: 13.65020ms
25-10-2021 20:54:00.0610 n/a [info ] world renderer: 14.97942ms, total: 14.97942ms
25-10-2021 20:54:00.0610 n/a [info ] whole frame: 15.03265ms, total: 14.88232ms
25-10-2021 20:54:00.0610 n/a [info ] encode: 1.22162ms, total: 1.22162ms
25-10-2021 20:54:00.0610 n/a [info ] update texture: 0.02686ms, total: 0.02686ms

25-10-2021 20:54:01.7420 n/a [info ] world renderer: 16.19900ms, total: 16.19900ms
25-10-2021 20:54:01.7420 n/a [info ] whole frame: 16.24785ms, total: 16.08537ms
25-10-2021 20:54:01.7420 n/a [info ] update texture: 0.03771ms, total: 0.03771ms
25-10-2021 20:54:01.7420 n/a [info ] encode: 2.14899ms, total: 2.14899ms
25-10-2021 20:54:01.7430 n/a [info ] get visible chunks: 13.92775ms, total: 13.92775ms

25-10-2021 20:54:03.4540 n/a [info ] whole frame: 17.06187ms, total: 16.89125ms
25-10-2021 20:54:03.4540 n/a [info ] update texture: 0.04232ms, total: 0.04232ms
25-10-2021 20:54:03.4540 n/a [info ] get visible chunks: 14.32428ms, total: 14.32428ms
25-10-2021 20:54:03.4540 n/a [info ] encode: 2.54919ms, total: 2.54919ms
25-10-2021 20:54:03.4540 n/a [info ] world renderer: 17.00412ms, total: 17.00412ms

25-10-2021 20:54:05.1850 n/a [info ] world renderer: 17.20413ms, total: 17.20413ms
25-10-2021 20:54:05.1850 n/a [info ] encode: 2.70127ms, total: 2.70127ms
25-10-2021 20:54:05.1850 n/a [info ] update texture: 0.04031ms, total: 0.04031ms
25-10-2021 20:54:05.1850 n/a [info ] whole frame: 17.25708ms, total: 17.08450ms
25-10-2021 20:54:05.1850 n/a [info ] get visible chunks: 14.37745ms, total: 14.37745ms

25-10-2021 20:54:07.0090 n/a [info ] whole frame: 18.16955ms, total: 17.98785ms
25-10-2021 20:54:07.0090 n/a [info ] world renderer: 18.10911ms, total: 18.10911ms
25-10-2021 20:54:07.0090 n/a [info ] get visible chunks: 14.74555ms, total: 14.74555ms
25-10-2021 20:54:07.0090 n/a [info ] encode: 3.22702ms, total: 3.22702ms
25-10-2021 20:54:07.0090 n/a [info ] update texture: 0.04454ms, total: 0.04454ms

25-10-2021 20:54:08.9100 n/a [info ] get visible chunks: 15.16307ms, total: 15.16307ms
25-10-2021 20:54:08.9100 n/a [info ] encode: 3.56414ms, total: 3.56414ms
25-10-2021 20:54:08.9110 n/a [info ] world renderer: 18.87317ms, total: 18.87317ms
25-10-2021 20:54:08.9110 n/a [info ] update texture: 0.04861ms, total: 0.04861ms
25-10-2021 20:54:08.9110 n/a [info ] whole frame: 18.93462ms, total: 18.74527ms

25-10-2021 20:54:11.0150 n/a [info ] world renderer: 20.86620ms, total: 20.86620ms
25-10-2021 20:54:11.0150 n/a [info ] update texture: 0.05087ms, total: 0.05087ms
25-10-2021 20:54:11.0150 n/a [info ] get visible chunks: 14.83002ms, total: 14.83002ms
25-10-2021 20:54:11.0150 n/a [info ] whole frame: 20.94605ms, total: 20.73659ms
25-10-2021 20:54:11.0150 n/a [info ] encode: 5.88106ms, total: 5.88106ms

Some things to maybe change in the README

In the README:

Under Installation, guide users to right click the app and click Open then Open, it’s easier than going into security and privacy settings

Under Troubleshooting, deleting ~/Library/Application Support/DeltaClient/ could also help sometimes

Still water rendering incorrectly

Describe the bug
Water only renders correctly within a certain radius of the player (also changes with the angle you look at the water, see video below). Beyond that radius it flickers in and out.

Screenshots

https://user-images.githubusercontent.com/43332061/139068756-7bdebd89-0815-429e-9f82-bc644c062c28.mp4
(I've had to cut it, speed it up and lower the resolution to get it under 10MB)

Extra information (please complete the following information

  • OS: macOS 11.6
  • Hardware: Intel i7-7700k, Radeon Pro 580
  • Build: Version 0.1.0 (9)

Additional context
For a frame you can see everything goes black outside the radius where water renders.

Add troubleshooting menu

Add an easy way to clear the cache, reset the config, and perform a fresh install, because it's currently a little involved for a non terminal-user to perform those actions. This menu would be displayed as a tab in settings and it would also be displayed when a 'fatal' error occurs during startup. Fatal referring to an error displayed via DeltaClientApp.fatalError not an actual fatal runtime error.

Add texture interpolation

Animated textures are just a series of frames and each tick the client swaps to the next frame for any texture animations that need updating. Some textures such as magma blocks are supposed to have a thing called texture interpolation. Each frame that the client renders, it should update the texture to be an interpolation between the previous frame and the next frame. This makes the animation smoother. Not all textures have this though. Whether a texture should be interpolated is stored in a Texture.Animation instance in the TexturePalette.

  • Interpolate between texture frames for interpolated textures.

It might also be necessary to optimise texture animation a bit. Another method for texture animation could be to put all the animation frames into the texture array, and then add to each vertex an animation id. If the animation id isn't 0, then it can look up which frame the animation is currently on in some sort of uniforms, and then use that texture index instead of the actual texture index. The animation id could probably even be stored in the upper unused bits of the texture index or something (depending on how many textures there are. If that explanation didn't make sense just ask me on Discord for a better one.

iOS support

Due to the fact that the client uses SwiftUI, almost the entire client could be ported to iOS pretty easily. There are just a few things such as file storage, input (touch screen), and the way the renderer is integrated into SwiftUI that would need iOS specific implementations. swift-bundler would also need to have iOS build support added. If you wanna try implementing this one you can hop on the Discord server and we can chat about how best to integrate iOS builds into swift-bundler. The best way would probably be building using swiftpm and then creating an ipa (iOS app file) just like for macOS apps (as opposed to delegating the ipa creation to Xcode).

EDIT

I managed to get Delta Client running on iOS with the latest sponsor-only version of Swift Bundler. Now a better iOS-specific UI just needs to be implemented.

Chunk loading issues

Describe the bug
Packet handling errors

To Reproduce
Attepmt to join hypixel.net or bedwarspractice.club

Expected behavior
I load into the server

Console logs
For hypixel:

20-11-2021 11:15:12.1890 n/a [info ] Finished downloading terrain
20-11-2021 11:15:12.1910 n/a [info ] Chat message received:
20-11-2021 11:15:12.3900 n/a [warn ] Failed to unpack chunk: failedToGetTag
20-11-2021 11:15:12.3900 n/a [warn ] Failed to decode packet with id 21: failedToGetTag

For BWP:

20-11-2021 11:17:51.9040 n/a [info ] Finished downloading terrain
20-11-2021 11:17:52.2550 n/a [error] @ UpdateLightPacket.swift:63:handle(for:), Invalid sky light mask sent. 18 bits set but 16 sections received
20-11-2021 11:17:52.2560 n/a [error] @ Client.swift:80:handlePacket(_:), Failed to handle packet: invalidSkyLightMask

Extra information (please complete the following information

  • OS: macOS 11.5.2
  • Hardware: Intel Macbook Pro
  • Build: commit 8d1223c

Additional context
I'm not sure if the client is trying to join the servers on 1.8 or 1.16 (both servers support new versions but run on 1.8)

Too swag...

This project is too swag and wont run on my unswag computer

Steps to reproduce the behavior:

  1. run the compiled release
  2. too much swag - won't work

Expected behavior: Should run just fine

From terminal run /path/to/applications/directory/DeltaClient.app/Contents/MacOS/DeltaClient error code 420: too swag

tl;dr, this project is too swagy for the average user, pls fix

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.