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);