diff --git a/pom.xml b/pom.xml
index dfc86f357..742aa0dd9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,15 +25,9 @@
maven-compiler-plugin
3.8.1
-
- 14
-
-
- 14
-
-
- --enable-preview
-
+ 15
+ 15
+ --enable-preview
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModel.java b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModel.java
index 3a4ac2065..3b189727c 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModel.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModel.java
@@ -53,7 +53,7 @@ public class BlockModel implements BlockModelInterface {
for (Axis axis : Axis.values()) {
String lowercase = axis.name().toLowerCase();
if (state.has(lowercase)) {
- BlockModelInterface.rotateModel(model, axis, state.get(lowercase).getAsInt());
+ BlockModelInterface.rotateModel(model, axis, state.get(lowercase).getAsDouble());
}
}
stateMap.put(properties, model);
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelInterface.java b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelInterface.java
index 0b172e5b8..2b7404d6e 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelInterface.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/BlockModelInterface.java
@@ -58,7 +58,7 @@ public interface BlockModelInterface {
return load(json, allModels, new HashMap<>());
}
- static void rotateModel(HashSet subBlocks, Axis axis, int rotation) {
+ static void rotateModel(HashSet subBlocks, Axis axis, double rotation) {
for (SubBlock subBlock : subBlocks) {
subBlock.rotate(axis, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/ConditionalModel.java b/src/main/java/de/bixilon/minosoft/render/blockModels/ConditionalModel.java
index ef611b364..c30306206 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/ConditionalModel.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/ConditionalModel.java
@@ -18,6 +18,7 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import de.bixilon.minosoft.data.mappings.blocks.Block;
import de.bixilon.minosoft.data.world.BlockPosition;
+import de.bixilon.minosoft.render.blockModels.Face.Axis;
import de.bixilon.minosoft.render.blockModels.Face.FaceOrientation;
import de.bixilon.minosoft.render.blockModels.subBlocks.SubBlock;
import org.apache.commons.collections.primitives.ArrayFloatList;
@@ -25,6 +26,7 @@ import org.apache.commons.collections.primitives.ArrayFloatList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.stream.Collectors;
public class ConditionalModel implements BlockModelInterface {
HashMap> conditionMap;
@@ -39,7 +41,13 @@ public class ConditionalModel implements BlockModelInterface {
} else {
condition = BlockCondition.trueCondition;
}
- HashSet model = blockModels.get(block.get("model").getAsString());
+ HashSet model = blockModels.get(block.get("model").getAsString()).stream().map(SubBlock::new).collect(Collectors.toCollection(HashSet::new));
+ for (Axis axis : Axis.values()) {
+ String lowercase = axis.name().toLowerCase();
+ if (block.has(lowercase)) {
+ BlockModelInterface.rotateModel(model, axis, block.get(lowercase).getAsDouble());
+ }
+ }
conditionMap.put(condition, model);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/Cuboid.java b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/Cuboid.java
index 5fca08544..895866c08 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/Cuboid.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/Cuboid.java
@@ -75,7 +75,7 @@ public class Cuboid {
};
}
- public void rotate(Axis axis, int rotation) {
+ public void rotate(Axis axis, double rotation) {
for (int i = 0; i < positions.length; i++) {
positions[i] = positions[i].rotated(axis, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java
index b2629dec5..5370bac8e 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlock.java
@@ -155,7 +155,7 @@ public class SubBlock {
return result;
}
- public void rotate(Axis axis, int rotation) {
+ public void rotate(Axis axis, double rotation) {
cuboid.rotate(axis, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java
index 95cbe69c9..705fae1b6 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockPosition.java
@@ -45,7 +45,7 @@ public class SubBlockPosition {
vector = new Vec3(position.vector);
}
- public SubBlockPosition rotated(Axis axis, int rotation) {
+ public SubBlockPosition rotated(Axis axis, double rotation) {
return new SubBlockRotation(middlePos, axis, rotation).apply(this);
}
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
index 11e951ed5..2efb02065 100644
--- a/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockRotation.java
+++ b/src/main/java/de/bixilon/minosoft/render/blockModels/subBlocks/SubBlockRotation.java
@@ -24,7 +24,7 @@ public class SubBlockRotation {
private final double sin;
private final double cos;
- public SubBlockRotation(SubBlockPosition origin, Axis axis, float angle) {
+ public SubBlockRotation(SubBlockPosition origin, Axis axis, double angle) {
this.origin = origin.getVector();
this.axis = axis;
double angleRad = Math.toRadians(angle);