player save dat
parent
9d477d1304
commit
1d35eef9c0
|
@ -1,5 +1,7 @@
|
||||||
package com.github.halotroop.litecraft;
|
package com.github.halotroop.litecraft;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.joml.Vector4i;
|
import org.joml.Vector4i;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
@ -30,6 +32,7 @@ public class Litecraft extends Game
|
||||||
private LitecraftSave save;
|
private LitecraftSave save;
|
||||||
private Ginger ginger3D;
|
private Ginger ginger3D;
|
||||||
private static Litecraft INSTANCE;
|
private static Litecraft INSTANCE;
|
||||||
|
private static Player player;
|
||||||
//temp stuff to test out fbo fixes
|
//temp stuff to test out fbo fixes
|
||||||
int oldWindowWidth = Window.width;
|
int oldWindowWidth = Window.width;
|
||||||
int oldWindowHeight = Window.height;
|
int oldWindowHeight = Window.height;
|
||||||
|
@ -56,7 +59,7 @@ public class Litecraft extends Game
|
||||||
Window.setBackgroundColour(0.2f, 0.2f, 0.6f);
|
Window.setBackgroundColour(0.2f, 0.2f, 0.6f);
|
||||||
TexturedModel dirtModel = ModelLoader.loadGenericCube("block/cubes/stone/brick/stonebrick.png");
|
TexturedModel dirtModel = ModelLoader.loadGenericCube("block/cubes/stone/brick/stonebrick.png");
|
||||||
StaticCube.scaleCube(1f);
|
StaticCube.scaleCube(1f);
|
||||||
Player player = new Player(dirtModel, new Vector3f(0, 0, -3), 0, 180f, 0, new Vector3f(0.2f, 0.2f, 0.2f));
|
player = new Player(dirtModel, new Vector3f(0, 0, -3), 0, 180f, 0, new Vector3f(0.2f, 0.2f, 0.2f));
|
||||||
Camera camera = new FirstPersonCamera(player);
|
Camera camera = new FirstPersonCamera(player);
|
||||||
player.isVisible = false;
|
player.isVisible = false;
|
||||||
ginger3D = new Ginger();
|
ginger3D = new Ginger();
|
||||||
|
@ -85,7 +88,18 @@ public class Litecraft extends Game
|
||||||
public void exit()
|
public void exit()
|
||||||
{
|
{
|
||||||
if (this.world != null)
|
if (this.world != null)
|
||||||
|
{
|
||||||
this.world.unloadAllChunks();
|
this.world.unloadAllChunks();
|
||||||
|
|
||||||
|
try
|
||||||
|
{ this.save.saveGlobalData(this.world.getSeed(), this.player); }
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
System.err.println("A critical error occurred while trying to save world data!");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ginger3D.cleanup();
|
ginger3D.cleanup();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ import java.util.Random;
|
||||||
|
|
||||||
import com.github.halotroop.litecraft.world.*;
|
import com.github.halotroop.litecraft.world.*;
|
||||||
import com.github.halotroop.litecraft.world.gen.*;
|
import com.github.halotroop.litecraft.world.gen.*;
|
||||||
|
import com.github.hydos.ginger.engine.elements.objects.Player;
|
||||||
|
import com.github.hydos.ginger.engine.math.vectors.Vector3f;
|
||||||
|
|
||||||
import tk.valoeghese.sod.*;
|
import tk.valoeghese.sod.*;
|
||||||
|
|
||||||
|
@ -110,15 +112,7 @@ public final class LitecraftSave
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
globalDataFile.createNewFile(); // create world file
|
globalDataFile.createNewFile(); // create world file
|
||||||
BinaryData data = new BinaryData(); // create empty binary data
|
this.writeGlobalData(globalDataFile, seed, new Vector3f(0, 0, -3)); // write global data with default player pos
|
||||||
DataSection properties = new DataSection(); // create empty data section for properties
|
|
||||||
properties.writeLong(seed); // write seed at index 0
|
|
||||||
DataSection playerData = new DataSection();
|
|
||||||
playerData.writeFloat(0); // default spawn player x/y/z
|
|
||||||
playerData.writeFloat(0);
|
|
||||||
playerData.writeFloat(-3);
|
|
||||||
data.put("properties", properties); // add properties section
|
|
||||||
data.write(globalDataFile); // write to file
|
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
@ -132,5 +126,27 @@ public final class LitecraftSave
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveGlobalData(long seed, Player player) throws IOException
|
||||||
|
{
|
||||||
|
File globalDataFile = new File(this.file.getPath() + "/global_data.sod");
|
||||||
|
globalDataFile.createNewFile(); // create world file if it doesn't exist.
|
||||||
|
|
||||||
|
writeGlobalData(globalDataFile, seed, player.getPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeGlobalData(File globalDataFile, long seed, Vector3f playerPos)
|
||||||
|
{
|
||||||
|
BinaryData data = new BinaryData(); // create empty binary data
|
||||||
|
DataSection properties = new DataSection(); // create empty data section for properties
|
||||||
|
properties.writeLong(seed); // write seed at index 0
|
||||||
|
DataSection playerData = new DataSection();
|
||||||
|
playerData.writeFloat(playerPos.x); // default spawn player x/y/z
|
||||||
|
playerData.writeFloat(playerPos.y);
|
||||||
|
playerData.writeFloat(playerPos.z);
|
||||||
|
data.put("properties", properties); // add properties section to data
|
||||||
|
data.put("player", playerData); // add player section to data
|
||||||
|
data.write(globalDataFile); // write to file
|
||||||
|
}
|
||||||
|
|
||||||
private static final String SAVE_DIR = "./saves/";
|
private static final String SAVE_DIR = "./saves/";
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,6 +152,11 @@ public class World implements BlockAccess, WorldGenConstants
|
||||||
chunkPositions.forEach((LongConsumer) (pos -> this.chunks.remove(pos))); // remove all chunks
|
chunkPositions.forEach((LongConsumer) (pos -> this.chunks.remove(pos))); // remove all chunks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getSeed()
|
||||||
|
{
|
||||||
|
return this.seed;
|
||||||
|
}
|
||||||
|
|
||||||
private static final class GenerationWorld implements BlockAccess, WorldGenConstants
|
private static final class GenerationWorld implements BlockAccess, WorldGenConstants
|
||||||
{
|
{
|
||||||
GenerationWorld(World parent)
|
GenerationWorld(World parent)
|
||||||
|
|
Loading…
Reference in New Issue