diff --git a/src/main/java/de/bixilon/minosoft/render/Face/Axis.java b/src/main/java/de/bixilon/minosoft/render/Face/Axis.java
new file mode 100644
index 000000000..f2169641b
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/render/Face/Axis.java
@@ -0,0 +1,18 @@
+/*
+ * Codename Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.render.Face;
+
+public enum Axis {
+ X, Y, Z
+}
diff --git a/src/main/java/de/bixilon/minosoft/render/fullFace/FaceOrientation.java b/src/main/java/de/bixilon/minosoft/render/Face/FaceOrientation.java
similarity index 96%
rename from src/main/java/de/bixilon/minosoft/render/fullFace/FaceOrientation.java
rename to src/main/java/de/bixilon/minosoft/render/Face/FaceOrientation.java
index f61044d41..8ae33205b 100644
--- a/src/main/java/de/bixilon/minosoft/render/fullFace/FaceOrientation.java
+++ b/src/main/java/de/bixilon/minosoft/render/Face/FaceOrientation.java
@@ -11,7 +11,7 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.render.fullFace;
+package de.bixilon.minosoft.render.Face;
public enum FaceOrientation {
EAST(0), WEST(1), UP(2), DOWN(3), SOUTH(4), NORTH(5);
diff --git a/src/main/java/de/bixilon/minosoft/render/fullFace/FullFacePosition.java b/src/main/java/de/bixilon/minosoft/render/Face/FullFacePosition.java
similarity index 95%
rename from src/main/java/de/bixilon/minosoft/render/fullFace/FullFacePosition.java
rename to src/main/java/de/bixilon/minosoft/render/Face/FullFacePosition.java
index 36aeaac61..d9dfa8461 100644
--- a/src/main/java/de/bixilon/minosoft/render/fullFace/FullFacePosition.java
+++ b/src/main/java/de/bixilon/minosoft/render/Face/FullFacePosition.java
@@ -11,13 +11,13 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.render.fullFace;
+package de.bixilon.minosoft.render.Face;
import de.bixilon.minosoft.game.datatypes.world.BlockPosition;
import javafx.util.Pair;
import org.apache.commons.collections.primitives.ArrayFloatList;
-import static de.bixilon.minosoft.render.fullFace.RenderConstants.UV;
+import static de.bixilon.minosoft.render.Face.RenderConstants.UV;
public class FullFacePosition {
private final BlockPosition blockPosition;
diff --git a/src/main/java/de/bixilon/minosoft/render/fullFace/InFaceUV.java b/src/main/java/de/bixilon/minosoft/render/Face/InFaceUV.java
similarity index 96%
rename from src/main/java/de/bixilon/minosoft/render/fullFace/InFaceUV.java
rename to src/main/java/de/bixilon/minosoft/render/Face/InFaceUV.java
index 39b660f01..e062597b5 100644
--- a/src/main/java/de/bixilon/minosoft/render/fullFace/InFaceUV.java
+++ b/src/main/java/de/bixilon/minosoft/render/Face/InFaceUV.java
@@ -11,7 +11,7 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.render.fullFace;
+package de.bixilon.minosoft.render.Face;
import com.google.gson.JsonArray;
diff --git a/src/main/java/de/bixilon/minosoft/render/fullFace/RenderConstants.java b/src/main/java/de/bixilon/minosoft/render/Face/RenderConstants.java
similarity index 98%
rename from src/main/java/de/bixilon/minosoft/render/fullFace/RenderConstants.java
rename to src/main/java/de/bixilon/minosoft/render/Face/RenderConstants.java
index 6a849e45b..2c0189b6f 100644
--- a/src/main/java/de/bixilon/minosoft/render/fullFace/RenderConstants.java
+++ b/src/main/java/de/bixilon/minosoft/render/Face/RenderConstants.java
@@ -11,7 +11,7 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.render.fullFace;
+package de.bixilon.minosoft.render.Face;
public class RenderConstants {
public static final int texturePackRes = 16;
diff --git a/src/main/java/de/bixilon/minosoft/render/WorldRenderer.java b/src/main/java/de/bixilon/minosoft/render/WorldRenderer.java
index 5b2a85228..bad55179f 100644
--- a/src/main/java/de/bixilon/minosoft/render/WorldRenderer.java
+++ b/src/main/java/de/bixilon/minosoft/render/WorldRenderer.java
@@ -17,15 +17,15 @@ import de.bixilon.minosoft.game.datatypes.objectLoader.blocks.Block;
import de.bixilon.minosoft.game.datatypes.objectLoader.blocks.Blocks;
import de.bixilon.minosoft.game.datatypes.world.*;
import de.bixilon.minosoft.logging.Log;
+import de.bixilon.minosoft.render.Face.FaceOrientation;
import de.bixilon.minosoft.render.blockModels.BlockModelLoader;
import de.bixilon.minosoft.render.blockModels.Face;
-import de.bixilon.minosoft.render.fullFace.FaceOrientation;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
-import static de.bixilon.minosoft.render.fullFace.RenderConstants.faceDir;
+import static de.bixilon.minosoft.render.Face.RenderConstants.faceDir;
import static org.lwjgl.opengl.GL11.*;
public class WorldRenderer {
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockDescription.java b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockDescription.java
index 21664470c..fa1cb732a 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockDescription.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockDescription.java
@@ -17,7 +17,8 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import de.bixilon.minosoft.Config;
import de.bixilon.minosoft.game.datatypes.objectLoader.blocks.Block;
-import de.bixilon.minosoft.render.fullFace.FaceOrientation;
+import de.bixilon.minosoft.render.Face.FaceOrientation;
+import de.bixilon.minosoft.render.blockModels.subBlocks.SubBlock;
import de.bixilon.minosoft.render.texture.TextureLoader;
import java.io.IOException;
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelLoader.java b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelLoader.java
index bb33a4b5c..a4258872c 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelLoader.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelLoader.java
@@ -19,7 +19,7 @@ import de.bixilon.minosoft.Config;
import de.bixilon.minosoft.game.datatypes.objectLoader.blocks.Block;
import de.bixilon.minosoft.game.datatypes.objectLoader.blocks.Blocks;
import de.bixilon.minosoft.logging.Log;
-import de.bixilon.minosoft.render.fullFace.FaceOrientation;
+import de.bixilon.minosoft.render.Face.FaceOrientation;
import de.bixilon.minosoft.render.texture.TextureLoader;
import org.apache.commons.collections.primitives.ArrayFloatList;
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/Face.java b/src/main/java/de/bixilon/minosoft/render/blockModels/Face.java
index c47250a35..9c470722d 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/Face.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/Face.java
@@ -14,13 +14,14 @@
package de.bixilon.minosoft.render.blockModels;
import de.bixilon.minosoft.game.datatypes.world.BlockPosition;
+import de.bixilon.minosoft.render.Face.FaceOrientation;
+import de.bixilon.minosoft.render.Face.InFaceUV;
import de.bixilon.minosoft.render.MainWindow;
-import de.bixilon.minosoft.render.fullFace.FaceOrientation;
-import de.bixilon.minosoft.render.fullFace.InFaceUV;
+import de.bixilon.minosoft.render.blockModels.subBlocks.SubBlock;
import javafx.util.Pair;
-import static de.bixilon.minosoft.render.fullFace.RenderConstants.blockRes;
-import static de.bixilon.minosoft.render.fullFace.RenderConstants.texturePackRes;
+import static de.bixilon.minosoft.render.Face.RenderConstants.blockRes;
+import static de.bixilon.minosoft.render.Face.RenderConstants.texturePackRes;
import static org.lwjgl.opengl.GL11.glTexCoord2f;
import static org.lwjgl.opengl.GL11.glVertex3f;
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/SubBlock.java b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java
similarity index 92%
rename from src/main/java/de/bixilon/minosoft/render/blockModels/SubBlock.java
rename to src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java
index 2a198975e..ccb5db550 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/SubBlock.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java
@@ -11,11 +11,12 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.render.blockModels;
+package de.bixilon.minosoft.render.blockModels.subBlocks;
import com.google.gson.JsonObject;
-import de.bixilon.minosoft.render.fullFace.FaceOrientation;
-import de.bixilon.minosoft.render.fullFace.InFaceUV;
+import de.bixilon.minosoft.render.Face.FaceOrientation;
+import de.bixilon.minosoft.render.Face.InFaceUV;
+import de.bixilon.minosoft.render.blockModels.Face;
import de.bixilon.minosoft.render.texture.TextureLoader;
import javafx.util.Pair;
@@ -24,6 +25,7 @@ import java.util.HashSet;
import java.util.Map;
public class SubBlock {
+ SubBlockRotation rotation;
SubBlockPosition pos1; // the most negative Point of the SubBlock
SubBlockPosition pos2; // the most positive Point of the SubBlock
@@ -49,6 +51,9 @@ public class SubBlock {
orientation, variables);
}
}
+ if (json.has("rotation")) {
+ rotation = new SubBlockRotation(json.get("rotation").getAsJsonObject());
+ }
isFull = (pos1.x == 0 && pos1.y == 0 && pos1.z == 0) && (pos2.x == 16 && pos2.y == 16 && pos2.z == 16);
}
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/SubBlockPosition.java b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java
similarity index 72%
rename from src/main/java/de/bixilon/minosoft/render/blockModels/SubBlockPosition.java
rename to src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java
index c004c39ce..ad72a0d29 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/SubBlockPosition.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java
@@ -1,6 +1,6 @@
/*
* Codename Minosoft
- * Copyright (C) 2020 Moritz Zwerger
+ * Copyright (C) 2020 Lukas Eisenhauer
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
@@ -11,22 +11,16 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.render.blockModels;
+package de.bixilon.minosoft.render.blockModels.subBlocks;
import com.google.gson.JsonArray;
public class SubBlockPosition {
- int x, y, z;
-
- public SubBlockPosition(int x, int y, int z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
+ float x, y, z;
public SubBlockPosition(JsonArray json) {
- x = json.get(0).getAsInt();
- y = json.get(1).getAsInt();
- z = json.get(2).getAsInt();
+ x = json.get(0).getAsFloat();
+ y = json.get(1).getAsFloat();
+ z = json.get(2).getAsFloat();
}
}
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockRotation.java b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockRotation.java
new file mode 100644
index 000000000..12945101c
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockRotation.java
@@ -0,0 +1,41 @@
+/*
+ * Codename Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.render.blockModels.subBlocks;
+
+import com.google.gson.JsonObject;
+import de.bixilon.minosoft.render.Face.Axis;
+
+public class SubBlockRotation {
+ SubBlockPosition origin;
+ Axis direction;
+ float angle;
+
+ public SubBlockRotation(JsonObject rotation) {
+ origin = new SubBlockPosition(rotation.get("origin").getAsJsonArray());
+ String axis = rotation.get("axis").getAsString();
+ switch (axis) {
+ case "x":
+ direction = Axis.X;
+ break;
+ case "y":
+ direction = Axis.Y;
+ break;
+ case "z":
+ direction = Axis.Z;
+ }
+ angle = rotation.get("angle").getAsFloat();
+ }
+
+
+}
diff --git a/src/main/java/de/bixilon/minosoft/render/movement/PlayerController.java b/src/main/java/de/bixilon/minosoft/render/movement/PlayerController.java
index f81937510..7d67fcef4 100644
--- a/src/main/java/de/bixilon/minosoft/render/movement/PlayerController.java
+++ b/src/main/java/de/bixilon/minosoft/render/movement/PlayerController.java
@@ -26,7 +26,7 @@ public class PlayerController {
private final float playerWidth = 0.5f;
CameraMovement cameraMovement;
PlayerMovement playerMovement;
- Vec3 playerPos = new Vec3(0, 1, 0); // the feet position of the player
+ Vec3 playerPos = new Vec3(); // the feet position of the player
Vec3 playerVelocity = new Vec3();
float gravity = 9.81f;
boolean onGround;