Zeus 0.0.55 - Server World Class, better calculate sides function

- Server has a world class, containing chunks and MapGen
- GenerateSides now references world class
- Changed "sidesOpaque" property in client chunks to "sides"
master
aurailus 2018-09-26 14:57:32 -07:00
parent ef4c454a57
commit a55bff673d
13 changed files with 525 additions and 517 deletions

View File

@ -6,79 +6,20 @@
</artifacts-to-build>
</component>
<component name="ChangeListManager">
<list default="true" id="47a85fc8-6de5-4c32-9694-f51947b17d86" name="Default Changelist" comment="Zeus 0.0.54 - Move al">
<list default="true" id="47a85fc8-6de5-4c32-9694-f51947b17d86" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/Chunk.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/EncodedChunk.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/World.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/Entity.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Entity.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/GameEngine.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/GameEngine.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/GameLogic.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/GameLogic.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/HudInterface.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/HudInterface.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/MouseInput.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/MouseInput.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/OBJLoader.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/OBJLoader.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/RenderObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/RenderObj.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/Scene.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Scene.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/Window.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Window.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Camera.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Camera.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/ChunkMesh.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/ChunkMesh.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Material.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Material.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Mesh.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Mesh.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Renderer.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Renderer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/ShaderProgram.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/ShaderProgram.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Texture.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Texture.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Transformation.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Transformation.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/light/DirectionalLight.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/light/DirectionalLight.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/light/PointLight.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/light/PointLight.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/light/SceneLight.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/light/SceneLight.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/light/SpotLight.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/light/SpotLight.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/ArrayTrans3D.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/ChunkSerializer.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/FastAccessMap.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/FastAccessSet.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/RLE.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/TextureAtlas.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/TextureAtlas.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/Timer.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Timer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/VecUtils.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/BlockAtlas.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockAtlas.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/BlockChunk.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/BlockDef.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockDef.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/ChunkAtlas.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkAtlas.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/ChunkMeshBuilder.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkMeshBuilder.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/EncodedBlockChunk.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/Game.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Game.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/Hud.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Hud.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/MeshChunk.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/MeshChunk.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/Player.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Player.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/RegFileManip.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/RegFileManip.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexFour.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexFour.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexLifted.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexLifted.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexOne.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexOne.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexPoof.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexPoof.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_PlantLike.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_PlantLike.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BlockModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BlockModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/MeshPart.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/MeshPart.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/network/Bytes.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/Bytes.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/network/ConnMan.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/ConnMan.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/network/PacketData.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/PacketData.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/network/PacketType.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/PacketType.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/network/Pacman.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/Pacman.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/objects/SkyBox.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/objects/SkyBox.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/API_PLACEHOLDER/BaseHeightmap.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/baseApi/BaseHeightmap.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Api/IBlockDecors.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/api/IBlockDecors.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Api/IMapHeightmap.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/api/IMapHeightmap.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/ArrayTrans3D.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ArrayTrans3D.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/Bytes.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/Bytes.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/ChunkSerializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/OpenSimplexNoise.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/OpenSimplexNoise.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/PacketData.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/PacketData.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/PacketType.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/PacketType.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/RLE.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/RLE.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Helpers/VecUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/VecUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Networking/ClientThread.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Networking/Pacman.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/Pacman.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Server/GameServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/GameServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Server/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusServer/Server/MapGen.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/MapGen.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockAtlas.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockAtlas.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockDef.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockDef.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Game.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Game.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/server/baseApi/BaseHeightmap.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/baseApi/BaseHeightmap.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/MapGen.java" beforeDir="false" afterPath="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/MapGen.java" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/../ZeusClient/target/" />
@ -115,7 +56,7 @@
<entry key="fs" value="9" />
<entry key="groovy" value="2" />
<entry key="iml" value="6" />
<entry key="java" value="381" />
<entry key="java" value="410" />
<entry key="png" value="6" />
<entry key="vs" value="6" />
<entry key="xml" value="2" />
@ -128,7 +69,7 @@
<entry key="Groovy" value="2" />
<entry key="IDEA_MODULE" value="6" />
<entry key="Image" value="6" />
<entry key="JAVA" value="381" />
<entry key="JAVA" value="410" />
<entry key="Manifest" value="2" />
<entry key="XML" value="2" />
</counts>
@ -139,8 +80,8 @@
<entry key="dummy" value="62" />
<entry key="fs" value="768" />
<entry key="iml" value="46" />
<entry key="java" value="74600" />
<entry key="txt" value="2601" />
<entry key="java" value="76865" />
<entry key="txt" value="2664" />
<entry key="vs" value="374" />
<entry key="xml" value="42" />
</counts>
@ -150,9 +91,9 @@
<entry key="Android RenderScript" value="768" />
<entry key="C++" value="374" />
<entry key="IDEA_MODULE" value="46" />
<entry key="JAVA" value="74599" />
<entry key="JAVA" value="76864" />
<entry key="Manifest" value="1" />
<entry key="PLAIN_TEXT" value="2663" />
<entry key="PLAIN_TEXT" value="2726" />
<entry key="RegExp" value="1" />
<entry key="XML" value="42" />
</counts>
@ -164,107 +105,11 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/TextureAtlas.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="18" column="13" selection-start-line="18" selection-start-column="13" selection-end-line="18" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Utils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Timer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/MeshChunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="14" selection-start-line="8" selection-start-column="14" selection-end-line="8" selection-end-column="14" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkAtlas.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="162" column="36" selection-start-line="162" selection-start-column="36" selection-end-line="162" selection-end-column="36" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1515">
<caret line="111" column="27" selection-start-line="111" selection-start-column="27" selection-end-line="111" selection-end-column="27" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkMeshBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" selection-start-line="1" selection-end-line="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2">
<caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/ConnMan.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" selection-start-line="1" selection-end-line="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-554">
<caret line="54" column="40" selection-start-line="54" selection-start-column="40" selection-end-line="54" selection-end-column="40" />
<state relative-caret-position="191">
<caret line="137" selection-start-line="137" selection-end-line="137" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -277,8 +122,8 @@
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
<option value="Interface" />
<option value="Class" />
</list>
</option>
</component>
@ -326,17 +171,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/ZeusServer/src/main/java/ZeusServer/Helpers/ChunkSerializer.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BlockModel.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/graphics/Texture.java" />
<option value="$PROJECT_DIR$/ZeusClient/pom.xml" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/Main.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/helpers/AtlasStitcher.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexFour.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexOne.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_PlantLike.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/resources/shaders/terrain_fragment.fs" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/blockmodels/BM_CubeTexPoof.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/engine/Window.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/META-INF/MANIFEST.MF" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/ZeusClient/game/BlockDef.java" />
@ -372,11 +206,22 @@
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Timer.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/MeshChunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/ConnMan.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkAtlas.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkMeshBuilder.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/World.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/EncodedChunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/EncodedChunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/Chunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/MapGen.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/baseApi/BaseHeightmap.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/World.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockDef.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Game.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockAtlas.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java" />
<option value="$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java" />
</list>
</option>
</component>
@ -420,7 +265,7 @@
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectView">
<navigator currentView="Scope" currentSubView="Scope 'Project Files'; set:Project Files; class com.intellij.psi.search.scope.ProjectFilesScope" proportions="" version="1">
<navigator currentView="PackagesPane" proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
@ -545,72 +390,55 @@
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="shaders" type="1f31426a:PackageElementNode" />
<item name="client" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="ZeusClient" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="ZeusClient" type="1f31426a:PackageElementNode" />
<item name="engine" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="ZeusClient" type="1f31426a:PackageElementNode" />
<item name="engine" type="1f31426a:PackageElementNode" />
<item name="graphics" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="ZeusClient" type="1f31426a:PackageElementNode" />
<item name="engine" type="1f31426a:PackageElementNode" />
<item name="helpers" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="ZeusClient" type="1f31426a:PackageElementNode" />
<item name="client" type="1f31426a:PackageElementNode" />
<item name="game" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="ZeusClient" type="1f31426a:PackageElementNode" />
<item name="client" type="1f31426a:PackageElementNode" />
<item name="game" type="1f31426a:PackageElementNode" />
<item name="blockmodels" type="1f31426a:PackageElementNode" />
<item name="network" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="ZeusServer" type="616d4139:PackageViewModuleNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="models" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="ZeusServer" type="616d4139:PackageViewModuleNode" />
<item name="ZeusServer" type="1f31426a:PackageElementNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="server" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="ZeusServer" type="616d4139:PackageViewModuleNode" />
<item name="ZeusServer" type="1f31426a:PackageElementNode" />
<item name="Helpers" type="1f31426a:PackageElementNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="server" type="1f31426a:PackageElementNode" />
<item name="api" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="ZeusServer" type="616d4139:PackageViewModuleNode" />
<item name="ZeusServer" type="1f31426a:PackageElementNode" />
<item name="Networking" type="1f31426a:PackageElementNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="server" type="1f31426a:PackageElementNode" />
<item name="networking" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="ZeusServer" type="616d4139:PackageViewModuleNode" />
<item name="ZeusServer" type="1f31426a:PackageElementNode" />
<item name="Server" type="1f31426a:PackageElementNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="server" type="1f31426a:PackageElementNode" />
<item name="server" type="1f31426a:PackageElementNode" />
</path>
<path>
<item name="Zeus" type="58d84e3e:PackageViewProjectNode" />
<item name="Zeus" type="616d4139:PackageViewModuleNode" />
<item name="server" type="1f31426a:PackageElementNode" />
<item name="server" type="1f31426a:PackageElementNode" />
<item name="world" type="1f31426a:PackageElementNode" />
</path>
</expand>
<select />
@ -619,8 +447,8 @@
</panes>
</component>
<component name="PropertiesComponent">
<property name="SearchEverywhereHistoryKey" value="henlo dog&#9;null&#9;null" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1537939781195" />
<property name="SearchEverywhereHistoryKey" value="&#9;FILE&#9;file:///home/aurailus/IdeaProjects/Zeus/ZeusClient/src/main/java/helpers/ChunkSerializer.java&#10;henlo dog&#9;null&#9;null" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1537998967756" />
<property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrary" value="Groovy JUnit" />
<property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrarySuperClass.Groovy JUnit" value="groovy.util.GroovyTestCase" />
<property name="last_directory_selection" value="$PROJECT_DIR$/ZeusClient/src/main/java" />
@ -640,18 +468,18 @@
<recent name="ZeusServer" />
</key>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="server.server.world" />
<recent name="helpers" />
<recent name="ZeusClient.game.blockmodels" />
<recent name="ZeusClient.engine" />
<recent name="ZeusClient.engine.Utils" />
<recent name="ZeusClient.game.Utils" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="server.server.world" />
<recent name="server.server" />
<recent name="ZeusServer.Helpers" />
<recent name="ZeusClient.engine.helpers" />
<recent name="ZeusClient.game.blockmodels" />
<recent name="ZeusClient.game" />
<recent name="ZeusClient.engine" />
</key>
<key name="CreateTestDialog.Recents.Supers">
<recent name="groovy.util.GroovyTestCase" />
@ -838,7 +666,14 @@
<option name="project" value="LOCAL" />
<updated>1537939119930</updated>
</task>
<option name="localTasksCounter" value="14" />
<task id="LOCAL-00014" summary="Zeus 0.0.54 - Merge helpers folder, conform directory names to camelcase">
<created>1537939896658</created>
<option name="number" value="00014" />
<option name="presentableId" value="LOCAL-00014" />
<option name="project" value="LOCAL" />
<updated>1537939896658</updated>
</task>
<option name="localTasksCounter" value="15" />
<servers />
</component>
<component name="TodoView">
@ -872,7 +707,7 @@
<window_info anchor="bottom" id="Inspection Results" order="9" weight="0.3296582" />
<window_info anchor="bottom" id="Messages" order="10" sideWeight="0.49839914" weight="0.18302095" />
<window_info anchor="bottom" id="Statistic" order="11" weight="0.3296582" />
<window_info active="true" anchor="bottom" x="3197" y="0" width="1922" height="1033" id="Run" order="12" sideWeight="0.4941302" visible="true" weight="0.22932746" />
<window_info active="true" anchor="bottom" x="3197" y="0" width="1922" height="1033" id="Run" order="12" sideWeight="0.4941302" visible="true" weight="0.1719956" />
<window_info anchor="right" id="Commander" order="0" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.2497332" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.2497332" />
@ -882,7 +717,7 @@
<window_info anchor="right" id="Palette&#9;" order="6" />
<window_info anchor="right" id="Maven Projects" order="7" weight="0.1782284" />
<window_info anchor="right" id="Coverage" order="8" sideWeight="0.50496143" side_tool="true" weight="0.27801493" />
<window_info anchor="right" id="Structure" order="9" weight="0.14834578" />
<window_info anchor="right" id="Structure" order="9" weight="0.15314835" />
</layout>
</component>
<component name="Vcs.Log.History.Properties">
@ -917,51 +752,14 @@
<MESSAGE value="Zeus 0.0.51 - Fixed Segfault on ChunkMeshes" />
<MESSAGE value="Zeus 0.0.52 - Merge Repositories, Server has really tall trunks." />
<MESSAGE value="Zeus 0.0.53 - Combine Modules into 1 module" />
<option name="LAST_COMMIT_MESSAGE" value="Zeus 0.0.53 - Combine Modules into 1 module" />
<MESSAGE value="Zeus 0.0.54 - Merge helpers folder, conform directory names to camelcase" />
<option name="LAST_COMMIT_MESSAGE" value="Zeus 0.0.54 - Merge helpers folder, conform directory names to camelcase" />
</component>
<component name="antWorkspaceConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Material.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Mesh.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexFour.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-540">
<caret line="6" column="69" selection-start-line="6" selection-start-column="69" selection-end-line="6" selection-end-column="69" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexOne.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="6" column="31" selection-start-line="6" selection-start-column="31" selection-end-line="6" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusServer/src/main/java/META-INF/MANIFEST.MF">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" lean-forward="true" selection-start-line="3" selection-end-line="3" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/META-INF/MANIFEST.MF">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
@ -969,13 +767,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Window.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="308">
<caret line="93" column="28" selection-start-line="93" selection-start-column="28" selection-end-line="93" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/graphics/Camera.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-110">
@ -983,13 +774,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockDef.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-2">
<caret column="21" selection-start-column="21" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/blockmodels/BM_CubeTexPoof.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="319">
@ -1011,13 +795,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockAtlas.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="18" column="27" lean-forward="true" selection-start-line="18" selection-start-column="27" selection-end-line="18" selection-end-column="27" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/helpers/ChunkSerializer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
@ -1054,17 +831,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/Pacman.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="467">
<caret line="129" column="9" selection-start-line="129" selection-start-column="9" selection-end-line="129" selection-end-column="9" />
<folding>
<element signature="e#3729#3730#0" expanded="true" />
<element signature="e#3802#3803#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/helpers/FastAccessSet.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
@ -1169,25 +935,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/baseApi/BaseHeightmap.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="765">
<caret line="51" column="77" selection-start-line="51" selection-start-column="77" selection-end-line="51" selection-end-column="77" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#3196#3197#0" expanded="true" />
<element signature="e#3234#3235#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Game.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="810">
<caret line="65" column="116" selection-start-line="65" selection-start-column="116" selection-end-line="65" selection-end-column="116" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
@ -1198,26 +945,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="396">
<caret line="31" column="24" selection-start-line="31" selection-start-column="24" selection-end-line="31" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/server/MapGen.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="184">
<caret line="21" column="36" selection-start-line="21" selection-end-line="22" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/api/IBlockDecors.java">
<provider selected="true" editor-type-id="text-editor">
<state>
@ -1277,20 +1004,147 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/ConnMan.java">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/engine/Window.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" selection-start-line="1" selection-end-line="1" />
<state relative-caret-position="308">
<caret line="93" column="28" selection-start-line="93" selection-start-column="28" selection-end-line="93" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/EncodedChunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="26" column="41" selection-start-line="26" selection-start-column="41" selection-end-line="26" selection-end-column="41" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/Pacman.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1755">
<caret line="129" column="9" selection-start-line="129" selection-start-column="9" selection-end-line="129" selection-end-column="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/Chunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="32" column="17" selection-start-line="32" selection-start-column="17" selection-end-line="32" selection-end-column="17" />
<folding>
<element signature="imports" expanded="true" />
<element signature="method#Chunk#1;class#Chunk#0" />
<element signature="method#Chunk#3;class#Chunk#0" />
<element signature="e#753#754#0" expanded="true" />
<element signature="e#814#815#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar:///usr/lib/jvm/java-10-oracle/lib/src.zip!/java.base/java/util/ArrayList.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="241">
<caret line="438" column="13" selection-start-line="438" selection-start-column="13" selection-end-line="438" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockDef.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="38" column="31" selection-start-line="38" selection-start-column="31" selection-end-line="38" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/server/MapGen.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-446">
<caret line="51" column="19" selection-start-line="51" selection-start-column="19" selection-end-line="51" selection-end-column="19" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockAtlas.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="11" column="46" selection-start-line="11" selection-start-column="46" selection-end-line="11" selection-end-column="46" />
<folding>
<element signature="e#691#692#0" expanded="true" />
<element signature="e#731#732#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/baseApi/BaseHeightmap.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="27" column="49" selection-start-line="27" selection-start-column="49" selection-end-line="27" selection-end-column="49" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkMeshBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="62" column="29" selection-start-line="62" selection-start-column="29" selection-end-line="62" selection-end-column="29" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/server/world/World.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="420">
<caret line="28" column="3" selection-start-line="28" selection-start-column="3" selection-end-line="28" selection-end-column="3" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#623#624#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/Game.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="401">
<caret line="66" column="125" selection-start-line="66" selection-start-column="125" selection-end-line="66" selection-end-column="125" />
</state>
</provider>
</entry>
<entry file="jar:///usr/lib/jvm/java-10-oracle/lib/src.zip!/java.base/java/util/function/BiConsumer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="290">
<caret line="52" column="9" selection-start-line="52" selection-start-column="9" selection-end-line="52" selection-end-column="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/BlockChunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-554">
<caret line="54" column="40" selection-start-line="54" selection-start-column="40" selection-end-line="54" selection-end-column="40" />
<state relative-caret-position="491">
<caret line="120" column="18" selection-start-line="120" selection-start-column="18" selection-end-line="120" selection-end-column="18" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#981#982#0" expanded="true" />
<element signature="e#1035#1036#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="692">
<caret line="49" column="63" selection-start-line="49" selection-start-column="63" selection-end-line="49" selection-end-column="63" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/network/ConnMan.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="371">
<caret line="48" column="22" selection-start-line="48" selection-start-column="22" selection-end-line="48" selection-end-column="22" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -1299,8 +1153,8 @@
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkAtlas.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="162" column="36" selection-start-line="162" selection-start-column="36" selection-end-line="162" selection-end-column="36" />
<state relative-caret-position="386">
<caret line="162" column="57" selection-start-line="162" selection-start-column="57" selection-end-line="162" selection-end-column="57" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -1309,25 +1163,15 @@
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/helpers/ChunkSerializer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1515">
<caret line="111" column="27" selection-start-line="111" selection-start-column="27" selection-end-line="111" selection-end-column="27" />
<state relative-caret-position="635">
<caret line="112" column="22" selection-start-line="112" selection-start-column="22" selection-end-line="112" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/ChunkMeshBuilder.java">
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/server/networking/ClientThread.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" selection-start-line="1" selection-end-line="1" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ZeusClient/src/main/java/client/game/EncodedBlockChunk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2">
<caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
<state relative-caret-position="191">
<caret line="137" selection-start-line="137" selection-end-line="137" />
<folding>
<element signature="imports" expanded="true" />
</folding>

View File

@ -9,6 +9,7 @@ public class BlockAtlas {
public BlockAtlas() {
blockDefs = new ArrayList<>();
create("_:unloaded", null, true, false, false);
create("_:air", null, false, false, false);
}

View File

@ -10,18 +10,18 @@ import static helpers.ArrayTrans3D.CHUNK_SIZE;
public class BlockChunk {
short[] blocks;
private boolean[] visible;
ArrayList<boolean[]> sidesOpaque;
ArrayList<short[]> sides;
public BlockChunk(short[] blocks, ArrayList<boolean[]> sidesOpaque) {
public BlockChunk(short[] blocks, ArrayList<short[]> sides) {
this.blocks = blocks;
this.sidesOpaque = sidesOpaque;
this.sides = sides;
}
public BlockChunk(byte[] blocks, ArrayList<byte[]> sidesOpaque) {
this.blocks = RLE.decodeShorts(blocks);
this.sidesOpaque = new ArrayList<>();
this.sides = new ArrayList<>();
for (var i = 0; i < 6; i++) {
this.sidesOpaque.add(RLE.decodeBools(sidesOpaque.get(i)));
this.sides.add(RLE.decodeShorts(sidesOpaque.get(i)));
}
}
@ -106,7 +106,7 @@ public class BlockChunk {
private short getBlockIncludeEdges(Vector3i pos) {
if (pos.x >= 16 || pos.x < 0 || pos.y >= 16 || pos.y < 0 || pos.z >= 16 || pos.z < 0) {
try {
return (short)(getEdgeOpaque(pos) ? 1 : 0);
return getEdgeBlock(pos);
}
catch(Exception e) {
e.printStackTrace();
@ -116,15 +116,15 @@ public class BlockChunk {
return getBlock(pos);
}
private boolean getEdgeOpaque(Vector3i pos) throws Exception {
if (pos.x == 16) return sidesOpaque.get(0)[pos.y * 16 + pos.z];
if (pos.x == -1) return sidesOpaque.get(1)[pos.y * 16 + pos.z];
private short getEdgeBlock(Vector3i pos) throws Exception {
if (pos.x == 16) return sides.get(0)[pos.y * 16 + pos.z];
if (pos.x == -1) return sides.get(1)[pos.y * 16 + pos.z];
if (pos.y == 16) return sidesOpaque.get(2)[pos.x * 16 + pos.z];
if (pos.y == -1) return sidesOpaque.get(3)[pos.x * 16 + pos.z];
if (pos.y == 16) return sides.get(2)[pos.x * 16 + pos.z];
if (pos.y == -1) return sides.get(3)[pos.x * 16 + pos.z];
if (pos.z == 16) return sidesOpaque.get(4)[pos.y * 16 + pos.x];
if (pos.z == -1) return sidesOpaque.get(5)[pos.y * 16 + pos.x];
if (pos.z == 16) return sides.get(4)[pos.y * 16 + pos.x];
if (pos.z == -1) return sides.get(5)[pos.y * 16 + pos.x];
throw new Exception("BAD VALUE");
}

View File

@ -37,7 +37,6 @@ public class BlockDef {
public void setVisible(boolean visible) {
this.visible = visible;
if (!visible) this.culls = false;
}
public void setSolid(boolean solid) {

View File

@ -6,22 +6,22 @@ import java.util.ArrayList;
public class EncodedBlockChunk {
private byte[] blocks;
private ArrayList<byte[]> sidesOpaque;
private ArrayList<byte[]> sides;
public EncodedBlockChunk(BlockChunk blockChunk) {
this.blocks = RLE.encode(blockChunk.blocks);
this.sidesOpaque = new ArrayList<>();
this.sidesOpaque.add(RLE.encode(blockChunk.sidesOpaque.get(0)));
this.sidesOpaque.add(RLE.encode(blockChunk.sidesOpaque.get(1)));
this.sidesOpaque.add(RLE.encode(blockChunk.sidesOpaque.get(2)));
this.sidesOpaque.add(RLE.encode(blockChunk.sidesOpaque.get(3)));
this.sidesOpaque.add(RLE.encode(blockChunk.sidesOpaque.get(4)));
this.sidesOpaque.add(RLE.encode(blockChunk.sidesOpaque.get(5)));
this.sides = new ArrayList<>();
this.sides.add(RLE.encode(blockChunk.sides.get(0)));
this.sides.add(RLE.encode(blockChunk.sides.get(1)));
this.sides.add(RLE.encode(blockChunk.sides.get(2)));
this.sides.add(RLE.encode(blockChunk.sides.get(3)));
this.sides.add(RLE.encode(blockChunk.sides.get(4)));
this.sides.add(RLE.encode(blockChunk.sides.get(5)));
}
public EncodedBlockChunk(byte[] blocks, ArrayList<byte[]> sidesOpaque) {
public EncodedBlockChunk(byte[] blocks, ArrayList<byte[]> sides) {
this.blocks = blocks;
this.sidesOpaque = sidesOpaque;
this.sides = sides;
}
public EncodedBlockChunk(short[] blocks,
@ -30,26 +30,26 @@ public class EncodedBlockChunk {
boolean[] zPosOpaque, boolean[] zNegOpaque) {
this.blocks = RLE.encode(blocks);
this.sidesOpaque = new ArrayList<>();
this.sidesOpaque.add(RLE.encode(xPosOpaque));
this.sidesOpaque.add(RLE.encode(xNegOpaque));
this.sidesOpaque.add(RLE.encode(yPosOpaque));
this.sidesOpaque.add(RLE.encode(yNegOpaque));
this.sidesOpaque.add(RLE.encode(zPosOpaque));
this.sidesOpaque.add(RLE.encode(zNegOpaque));
this.sides = new ArrayList<>();
this.sides.add(RLE.encode(xPosOpaque));
this.sides.add(RLE.encode(xNegOpaque));
this.sides.add(RLE.encode(yPosOpaque));
this.sides.add(RLE.encode(yNegOpaque));
this.sides.add(RLE.encode(zPosOpaque));
this.sides.add(RLE.encode(zNegOpaque));
}
public BlockChunk decode() {
return new BlockChunk(blocks, sidesOpaque);
return new BlockChunk(blocks, sides);
}
public void encode(BlockChunk blockChunk) {
this.blocks = RLE.encode(blockChunk.blocks);
this.sidesOpaque.set(0, RLE.encode(blockChunk.sidesOpaque.get(0)));
this.sidesOpaque.set(1, RLE.encode(blockChunk.sidesOpaque.get(1)));
this.sidesOpaque.set(2, RLE.encode(blockChunk.sidesOpaque.get(2)));
this.sidesOpaque.set(3, RLE.encode(blockChunk.sidesOpaque.get(3)));
this.sidesOpaque.set(4, RLE.encode(blockChunk.sidesOpaque.get(4)));
this.sidesOpaque.set(6, RLE.encode(blockChunk.sidesOpaque.get(5)));
this.sides.set(0, RLE.encode(blockChunk.sides.get(0)));
this.sides.set(1, RLE.encode(blockChunk.sides.get(1)));
this.sides.set(2, RLE.encode(blockChunk.sides.get(2)));
this.sides.set(3, RLE.encode(blockChunk.sides.get(3)));
this.sides.set(4, RLE.encode(blockChunk.sides.get(4)));
this.sides.set(6, RLE.encode(blockChunk.sides.get(5)));
}
}

View File

@ -112,7 +112,7 @@ public class Game implements GameLogic {
player.update(interval, mouseInput);
if (tick % 30 == 0) world.loadChunksAroundPos(player.getPosition(), 4);
if (tick % 30 == 0) world.loadChunksAroundPos(player.getPosition(), 5);
world.update();
hud.rotateCompass(player.getCamera().getRotation().y);

View File

@ -97,7 +97,7 @@ public class ChunkSerializer {
bis.read(mainChunkRLE, 0, size);
short[] chunk = RLE.decodeShorts(mainChunkRLE);
ArrayList<boolean[]> sides = new ArrayList<>();
ArrayList<short[]> sides = new ArrayList<>();
for (var i = 0; i < 6; i++) {
buff = new byte[4];
@ -107,11 +107,7 @@ public class ChunkSerializer {
byte[] adjRLE = new byte[size2];
bis.read(adjRLE, 0, size2);
var shorts = RLE.decodeShorts(adjRLE);
var bools = new boolean[shorts.length];
for (var j = 0; j < shorts.length; j++) {
bools[j] = Game.definitions.getDef(shorts[j]).getCulls();
}
sides.add(bools);
sides.add(shorts);
}
return new BlockChunk(chunk, sides);

View File

@ -3,7 +3,7 @@ package server.baseApi;
import server.api.IMapHeightmap;
import helpers.OpenSimplexNoise;
import static server.server.MapGen.CHUNK_SIZE;
import static helpers.ArrayTrans3D.CHUNK_SIZE;
public class BaseHeightmap implements IMapHeightmap {
long seed;

View File

@ -7,7 +7,10 @@ import helpers.VecUtils;
import server.baseApi.BaseHeightmap;
import server.server.MapGen;
import org.joml.Vector3i;
import server.server.world.Chunk;
import server.server.world.World;
import java.lang.annotation.Retention;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@ -15,11 +18,13 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import static helpers.ArrayTrans3D.CHUNK_SIZE;
public class ClientThread extends Thread implements Runnable {
private Socket socket;
private Pacman pacman;
private boolean alive;
private MapGen mapGen;
private World world;
private ThreadPoolExecutor mapGenPool;
@ -28,11 +33,8 @@ public class ClientThread extends Thread implements Runnable {
}
private void init() {
// long seed = Math.round(Math.random()*1000000);
long seed = 0;
this.pacman = new Pacman(socket);
mapGen = new MapGen(seed, new BaseHeightmap(seed));
pacman = new Pacman(socket);
world = new World();
pacman.start();
alive = true;
@ -68,7 +70,7 @@ public class ClientThread extends Thread implements Runnable {
System.out.println("Generating chunk at position " + position);
var bytes = ChunkSerializer.encodeChunk(mapGen.generateChunk(position), generateSides(position));
var bytes = ChunkSerializer.encodeChunk(world.getChunk(position).getBlockArray(), generateSides(position));
if (bytes == null) return;
s.append(new String(bytes, StandardCharsets.ISO_8859_1));
@ -79,54 +81,75 @@ public class ClientThread extends Thread implements Runnable {
private ArrayList<short[]> generateSides(Vector3i pos) {
ArrayList<short[]> sides = new ArrayList<>();
Vector3i surrogate = new Vector3i();
var array = new short[256];
sides.add(array);
sides.add(array);
sides.add(array);
sides.add(array);
sides.add(array);
sides.add(array);
var empty = new short[256];
Chunk chunk;
// var array = new short[256];
// for (var i = 0; i < 256; i++) {
// array[i] = mapGen.getBlock(pos.x*CHUNK_SIZE + 16, pos.y*CHUNK_SIZE + i/16, pos.z*CHUNK_SIZE + i%16);
// }
// sides.add(array);
//
// array = new short[256];
// for (var i = 0; i < 256; i++) {
// array[i] = mapGen.getBlock(pos.x*CHUNK_SIZE - 1, pos.y*CHUNK_SIZE + i/16, pos.z*CHUNK_SIZE + i%16);
// }
// sides.add(array);
//
// array = new short[256];
// for (var i = 0; i < 256; i++) {
// array[i] = mapGen.getBlock(pos.x*CHUNK_SIZE + i/16, pos.y*CHUNK_SIZE + 16, pos.z*CHUNK_SIZE + i%16);
// }
// sides.add(array);
//
// array = new short[256];
// for (var i = 0; i < 256; i++) {
// array[i] = mapGen.getBlock(pos.x*CHUNK_SIZE + i/16, pos.y*CHUNK_SIZE - 1, pos.z*CHUNK_SIZE + i%16);
// }
// sides.add(array);
//
// array = new short[256];
// for (var i = 0; i < 256; i++) {
// array[i] = mapGen.getBlock(pos.x*CHUNK_SIZE + i%16, pos.y*CHUNK_SIZE + i/16, pos.z*CHUNK_SIZE + 16);
// }
// sides.add(array);
//
// array = new short[256];
// for (var i = 0; i < 256; i++) {
// array[i] = mapGen.getBlock(pos.x*CHUNK_SIZE + i%16, pos.y*CHUNK_SIZE + i/16, pos.z*CHUNK_SIZE - 1);
// }
// sides.add(array);
chunk = world.getChunkRaw(surrogate.set(pos).add(1, 0, 0));
if (chunk == null) sides.add(empty);
else {
var array = new short[256];
for (var i = 0; i < 256; i++) {
array[i] = chunk.getBlock(0, i / 16, i % 16);
}
sides.add(array);
}
chunk = world.getChunkRaw(surrogate.set(pos).add(-1, 0, 0));
if (chunk == null) sides.add(empty);
else {
var array = new short[256];
for (var i = 0; i < 256; i++) {
array[i] = chunk.getBlock(15, i / 16, i % 16);
}
sides.add(array);
}
chunk = world.getChunkRaw(surrogate.set(pos).add(0, 1, 0));
if (chunk == null) sides.add(empty);
else {
var array = new short[256];
for (var i = 0; i < 256; i++) {
array[i] = chunk.getBlock(i / 16, 0, i % 16);
}
sides.add(array);
}
chunk = world.getChunkRaw(surrogate.set(pos).add(0, -1, 0));
if (chunk == null) sides.add(empty);
else {
var array = new short[256];
for (var i = 0; i < 256; i++) {
array[i] = chunk.getBlock(i / 16, 15, i % 16);
}
sides.add(array);
}
chunk = world.getChunkRaw(surrogate.set(pos).add(0, 0, 1));
if (chunk == null) sides.add(empty);
else {
var array = new short[256];
for (var i = 0; i < 256; i++) {
array[i] = chunk.getBlock(i % 16, i / 16, 0);
}
sides.add(array);
}
chunk = world.getChunkRaw(surrogate.set(pos).add(0, 0, -1));
if (chunk == null) sides.add(empty);
else {
var array = new short[256];
for (var i = 0; i < 256; i++) {
array[i] = chunk.getBlock(i % 16, i / 16, 15);
}
sides.add(array);
}
return sides;
}
@Override
public void run() {
init();

View File

@ -5,83 +5,120 @@ import server.api.IMapHeightmap;
import helpers.ArrayTrans3D;
import helpers.OpenSimplexNoise;
import org.joml.Vector3i;
import server.baseApi.BaseHeightmap;
import server.server.world.Chunk;
import server.server.world.World;
import static helpers.ArrayTrans3D.CHUNK_SIZE;
public class MapGen {
public static final int CHUNK_SIZE = 16;
private long seed;
private IMapHeightmap heightmap;
private IBlockDecors blockdecors;
// private IBlockDecors blockdecors;
private OpenSimplexNoise grassNoise;
private OpenSimplexNoise treeNoise;
public MapGen(long seed, IMapHeightmap heightmap) {
this.heightmap = heightmap;
public MapGen(World world) {
seed = 0;
this.heightmap = new BaseHeightmap(0);
// this.blockdecors = blockdecors;
grassNoise = new OpenSimplexNoise(seed);
treeNoise = new OpenSimplexNoise(seed/2);
}
public short[] generateChunk(Vector3i pos) {
var chunk = new short[4096];
public Chunk generate(Vector3i pos, Chunk ungenerated) {
short[] blocks = (ungenerated != null) ? ungenerated.getBlockArray() : new short[4096];
int[][] heightMap = heightmap.getChunkHeightmap(pos.x, pos.z);
for (int i = 0; i < 4096; i++) {
Vector3i iPos = ArrayTrans3D.indToVec(i);
int depth = heightMap[iPos.x][iPos.z] - pos.y * CHUNK_SIZE - iPos.y;
if (blocks[i] == 0) {
chunk[i] = getBlockFromDepth(depth);
Vector3i iPos = ArrayTrans3D.indToVec(i);
if (depth < 0) {
chunk[i] = getBlockDecoration(depth, pos.x * CHUNK_SIZE + iPos.x, pos.z * CHUNK_SIZE + iPos.z);
}
int depth = heightMap[iPos.x][iPos.z] - pos.y * CHUNK_SIZE - iPos.y;
if (treeAtPosition(pos.x * CHUNK_SIZE + iPos.x, pos.z * CHUNK_SIZE + iPos.z)) {
generateTree(chunk, iPos.x, iPos.y, iPos.z);
blocks[i] = getBlockFromDepth(depth);
// if (depth < 0) {
// chunk[i] = getBlockDecoration(depth, pos.x * CHUNK_SIZE + iPos.x, pos.z * CHUNK_SIZE + iPos.z);
// }
//
// if (treeAtPosition(pos.x * CHUNK_SIZE + iPos.x, pos.z * CHUNK_SIZE + iPos.z)) {
// generateTree(chunk, iPos.x, iPos.y, iPos.z);
// }
}
}
return chunk;
}
private void tryPlaceBlock(short[] blocks, short block, int x, int y, int z) {
if (x < 0 || x > 15 || y < 0 || y > 15 || z < 0 || z > 15) return;
ArrayTrans3D.set(blocks, block, x, y, z);
}
private void generateTree(short[] blocks, int x, int y, int z) {
for (var i = 0; i < 10; i++) {
tryPlaceBlock(blocks, (short)11, x, y + i, z);
if (ungenerated == null) ungenerated = new Chunk(blocks, true);
else {
ungenerated.setBlockArray(blocks);
ungenerated.setGenerated(true);
}
return ungenerated;
}
private boolean treeAtPosition(int x, int z) {
float TREE_PRECISION = 0.5f;
return treeNoise.eval(x / TREE_PRECISION, z / TREE_PRECISION) > 0.75f;
}
private short getBlockDecoration(int depth, int x, int z) {
float GRASS_PRECISION = 10f;
if (depth == -1) {
int grass = (int)Math.round(Math.min(4, Math.max(-1, grassNoise.eval(x / GRASS_PRECISION, z / GRASS_PRECISION) * 5 + Math.random() * 2)));
if (grass >= 0) {
return (short)(4 + grass);
}
}
return 0;
}
// public short[] generateChunk(Vector3i pos) {
// var chunk = new short[4096];
//
// int[][] heightMap = heightmap.getChunkHeightmap(pos.x, pos.z);
//
// for (int i = 0; i < 4096; i++) {
// Vector3i iPos = ArrayTrans3D.indToVec(i);
// int depth = heightMap[iPos.x][iPos.z] - pos.y * CHUNK_SIZE - iPos.y;
//
// chunk[i] = getBlockFromDepth(depth);
//
// if (depth < 0) {
// chunk[i] = getBlockDecoration(depth, pos.x * CHUNK_SIZE + iPos.x, pos.z * CHUNK_SIZE + iPos.z);
// }
//
// if (treeAtPosition(pos.x * CHUNK_SIZE + iPos.x, pos.z * CHUNK_SIZE + iPos.z)) {
// generateTree(chunk, iPos.x, iPos.y, iPos.z);
// }
// }
//
// return chunk;
// }
//
// private void tryPlaceBlock(short[] blocks, short block, int x, int y, int z) {
// if (x < 0 || x > 15 || y < 0 || y > 15 || z < 0 || z > 15) return;
//
// ArrayTrans3D.set(blocks, block, x, y, z);
// }
//
// private void generateTree(short[] blocks, int x, int y, int z) {
// for (var i = 0; i < 10; i++) {
// tryPlaceBlock(blocks, (short)11, x, y + i, z);
// }
// }
//
// private boolean treeAtPosition(int x, int z) {
// float TREE_PRECISION = 0.5f;
// return treeNoise.eval(x / TREE_PRECISION, z / TREE_PRECISION) > 0.75f;
// }
//
// private short getBlockDecoration(int depth, int x, int z) {
// float GRASS_PRECISION = 10f;
//
// if (depth == -1) {
// int grass = (int)Math.round(Math.min(4, Math.max(-1, grassNoise.eval(x / GRASS_PRECISION, z / GRASS_PRECISION) * 5 + Math.random() * 2)));
// if (grass >= 0) {
// return (short)(4 + grass);
// }
// }
// return 0;
// }
//
private short getBlockFromDepth(int depth) {
if (depth > 2) return 3;
if (depth > 0) return 2;
if (depth == 0) return 1;
if (depth > 2) return 4;
if (depth > 0) return 3;
if (depth == 0) return 2;
return 0;
return 1;
}
}

View File

@ -0,0 +1,48 @@
package server.server.world;
import helpers.ArrayTrans3D;
import helpers.RLE;
import org.joml.Vector3i;
public class Chunk {
short[] blocks;
boolean generated = false;
public Chunk(short[] blocks) {
this.blocks = blocks;
}
public Chunk(short[] blocks, boolean generated) {
this.blocks = blocks;
this.generated = generated;
}
public Chunk(byte[] blocks) {
this.blocks = RLE.decodeShorts(blocks);
}
public Chunk(byte[] blocks, boolean generated) {
this.blocks = RLE.decodeShorts(blocks);
this.generated = generated;
}
public short getBlock(Vector3i pos) {
return getBlock(pos.x, pos.y, pos.z);
}
public short getBlock(int x, int y, int z) {
return ArrayTrans3D.get(this.blocks, x, y, z);
}
public short[] getBlockArray() {
return blocks;
}
public void setBlockArray(short[] blocks) {
this.blocks = blocks;
}
public void setGenerated(boolean generated) {
this.generated = generated;
}
}

View File

@ -0,0 +1,29 @@
package server.server.world;
import helpers.RLE;
public class EncodedChunk {
private byte[] blocks;
private boolean generated = false;
public EncodedChunk(Chunk blockChunk) {
this.blocks = RLE.encode(blockChunk.blocks);
}
public EncodedChunk(byte[] blocks) {
this.blocks = blocks;
}
public EncodedChunk(short[] blocks) {
this.blocks = RLE.encode(blocks);
}
public Chunk decode() {
return new Chunk(blocks, generated);
}
public void encode(Chunk chunk) {
this.blocks = RLE.encode(chunk.blocks);
this.generated = chunk.generated;
}
}

View File

@ -0,0 +1,31 @@
package server.server.world;
import org.joml.Vector3i;
import server.server.MapGen;
import java.util.HashMap;
public class World {
HashMap<Vector3i, Chunk> chunks;
MapGen mapGen;
public World() {
chunks = new HashMap<>();
mapGen = new MapGen(this);
}
public Chunk getChunk(Vector3i pos) {
var chunk = chunks.get(pos);
if (chunk == null || !chunk.generated) {
chunk = mapGen.generate(pos, chunk);
chunks.put(pos, chunk);
}
return chunk;
}
public Chunk getChunkRaw(Vector3i pos) {
return chunks.get(pos);
}
}