Directory structure:
└── bluestaggo-voxelthingjava/
├── README.md
├── gradle.properties
├── gradlew
├── gradlew.bat
├── LICENSE.md
├── settings.gradle.kts
├── TODO.md
├── client/
│ ├── build.gradle.kts
│ └── src/
│ └── main/
│ ├── java/
│ │ └── io/
│ │ └── bluestaggo/
│ │ └── voxelthing/
│ │ ├── Game.java
│ │ ├── assets/
│ │ │ ├── FontManager.java
│ │ │ ├── MipmappedTexture.java
│ │ │ ├── Texture.java
│ │ │ └── TextureManager.java
│ │ ├── gui/
│ │ │ ├── Icon.java
│ │ │ ├── control/
│ │ │ │ ├── BaseButton.java
│ │ │ │ ├── Container.java
│ │ │ │ ├── Control.java
│ │ │ │ ├── FocusableControl.java
│ │ │ │ ├── IconButton.java
│ │ │ │ ├── Label.java
│ │ │ │ ├── LabeledButton.java
│ │ │ │ ├── ScrollContainer.java
│ │ │ │ ├── Slider.java
│ │ │ │ ├── TextBox.java
│ │ │ │ └── WorldPanel.java
│ │ │ └── screen/
│ │ │ ├── BlockInventory.java
│ │ │ ├── CreateWorld.java
│ │ │ ├── DebugGui.java
│ │ │ ├── DeleteWorld.java
│ │ │ ├── GuiScreen.java
│ │ │ ├── IngameGui.java
│ │ │ ├── MainMenu.java
│ │ │ ├── PauseMenu.java
│ │ │ ├── SaveSelect.java
│ │ │ └── SettingsMenu.java
│ │ ├── renderer/
│ │ │ ├── Framebuffer.java
│ │ │ ├── GLState.java
│ │ │ ├── MainRenderer.java
│ │ │ ├── draw/
│ │ │ │ ├── Billboard.java
│ │ │ │ ├── Draw2D.java
│ │ │ │ ├── Draw3D.java
│ │ │ │ └── Quad.java
│ │ │ ├── screen/
│ │ │ │ ├── Font.java
│ │ │ │ └── Screen.java
│ │ │ ├── shader/
│ │ │ │ ├── BillboardShader.java
│ │ │ │ ├── CloudShader.java
│ │ │ │ ├── QuadShader.java
│ │ │ │ ├── ScreenShader.java
│ │ │ │ ├── Shader.java
│ │ │ │ ├── SkyShader.java
│ │ │ │ ├── WorldShader.java
│ │ │ │ ├── modules/
│ │ │ │ │ └── FogInfo.java
│ │ │ │ └── uniform/
│ │ │ │ ├── Uniform1b.java
│ │ │ │ ├── Uniform1f.java
│ │ │ │ ├── Uniform1i.java
│ │ │ │ ├── Uniform2f.java
│ │ │ │ ├── Uniform3f.java
│ │ │ │ ├── Uniform4f.java
│ │ │ │ ├── UniformBase.java
│ │ │ │ └── UniformMatrix4fv.java
│ │ │ ├── util/
│ │ │ │ ├── Primitives.java
│ │ │ │ ├── Vector3fPrimitives.java
│ │ │ │ └── WorldPrimitives.java
│ │ │ ├── vertices/
│ │ │ │ ├── Bindings.java
│ │ │ │ ├── FloatBindings.java
│ │ │ │ ├── MixedBindings.java
│ │ │ │ ├── RenderBuffers.java
│ │ │ │ ├── VertexLayout.java
│ │ │ │ └── VertexType.java
│ │ │ └── world/
│ │ │ ├── BlockRenderer.java
│ │ │ ├── Camera.java
│ │ │ ├── ChunkRenderer.java
│ │ │ ├── EntityRenderer.java
│ │ │ └── WorldRenderer.java
│ │ ├── settings/
│ │ │ ├── ChoiceSetting.java
│ │ │ ├── FloatSliderSetting.java
│ │ │ ├── IntSliderSetting.java
│ │ │ ├── Setting.java
│ │ │ ├── Settings.java
│ │ │ ├── TextBoxSetting.java
│ │ │ └── ToggleSetting.java
│ │ ├── window/
│ │ │ ├── ClientPlayerController.java
│ │ │ ├── KeyState.java
│ │ │ └── Window.java
│ │ └── world/
│ │ ├── ChunkCache.java
│ │ └── ClientWorld.java
│ └── resources/
│ ├── splashes.txt
│ └── assets/
│ └── shaders/
│ ├── billboard.fsh
│ ├── billboard.vsh
│ ├── cloud.fsh
│ ├── cloud.vsh
│ ├── quad.fsh
│ ├── quad.vsh
│ ├── screen.fsh
│ ├── screen.vsh
│ ├── sky.fsh
│ ├── sky.vsh
│ ├── world.fsh
│ ├── world.vsh
│ └── modules/
│ └── fog.fsh
├── doc/
│ └── devcard.ase
├── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── pds/
│ ├── build.gradle.kts
│ └── src/
│ └── main/
│ └── java/
│ └── io/
│ └── bluestaggo/
│ └── pds/
│ ├── ByteArrayItem.java
│ ├── ByteItem.java
│ ├── CompoundItem.java
│ ├── DoubleItem.java
│ ├── FloatItem.java
│ ├── IntArrayItem.java
│ ├── IntItem.java
│ ├── ListItem.java
│ ├── LongArrayItem.java
│ ├── LongItem.java
│ ├── ShortArrayItem.java
│ ├── ShortItem.java
│ ├── StringItem.java
│ └── StructureItem.java
├── shared/
│ ├── build.gradle.kts
│ └── src/
│ └── main/
│ └── java/
│ └── io/
│ └── bluestaggo/
│ └── voxelthing/
│ ├── Identifier.java
│ ├── math/
│ │ ├── AABB.java
│ │ ├── MathUtil.java
│ │ ├── OpenSimplex2.java
│ │ └── OpenSimplex2Octaves.java
│ ├── util/
│ │ ├── FloatList.java
│ │ ├── IntList.java
│ │ ├── OperatingSystem.java
│ │ └── Pair.java
│ └── world/
│ ├── BlockRaycast.java
│ ├── Direction.java
│ ├── IBlockAccess.java
│ ├── World.java
│ ├── WorldInfo.java
│ ├── block/
│ │ ├── Block.java
│ │ ├── BlockTransparency.java
│ │ └── texture/
│ │ ├── AllSidesTexture.java
│ │ ├── BlockTexture.java
│ │ ├── ColumnTexture.java
│ │ ├── GrassTexture.java
│ │ └── SideTopBottomTexture.java
│ ├── chunk/
│ │ ├── Chunk.java
│ │ ├── ChunkCullDirection.java
│ │ ├── EmptyChunk.java
│ │ ├── FloodFillStatus.java
│ │ └── layer/
│ │ ├── BlockLayer.java
│ │ ├── BlockStorage.java
│ │ ├── ByteBlockLayer.java
│ │ ├── EmptyBlockLayer.java
│ │ ├── NibbleBlockLayer.java
│ │ ├── ShortBlockLayer.java
│ │ └── SingleBlockLayer.java
│ ├── entity/
│ │ ├── Entity.java
│ │ ├── IPlayerController.java
│ │ └── Player.java
│ ├── generation/
│ │ ├── GenCache.java
│ │ └── GenerationInfo.java
│ └── storage/
│ ├── ChunkStorage.java
│ ├── EmptySaveHandler.java
│ ├── FolderSaveHandler.java
│ └── ISaveHandler.java
└── .github/
└── workflows/
└── build.yml