diff --git a/.mvn/jvm.config b/.mvn/jvm.config deleted file mode 100644 index 55822a0b7..000000000 --- a/.mvn/jvm.config +++ /dev/null @@ -1 +0,0 @@ ---enable-preview diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElement.kt index 3f605f2b2..af07889c5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElement.kt @@ -34,16 +34,20 @@ data class UnbakedElement( operator fun invoke(data: Map): UnbakedElement { val faces: MutableSet = mutableSetOf() + val from = data["from"].toVec3() / BLOCK_RESOLUTION + val to = data["to"].toVec3() / BLOCK_RESOLUTION data["faces"].asCompound().let { - for ((direction, faceData) in it) { - faces += UnbakedElementFace(direction = Directions[direction], data = faceData.unsafeCast()) + for ((directionString, faceData) in it) { + val direction = Directions[directionString] + val (fallbackUVStart, fallbackUVEnd) = direction.getSize(from, to) + faces += UnbakedElementFace(direction, faceData.unsafeCast(), fallbackUVStart, fallbackUVEnd) } } return UnbakedElement( - from = data["from"].toVec3() / BLOCK_RESOLUTION, - to = data["to"].toVec3() / BLOCK_RESOLUTION, + from = from, + to = to, rotation = data["rotation"]?.compoundCast()?.let { return@let UnbakedElementRotation(data = it) }, shade = data["shade"]?.toBoolean() ?: true, faces = faces, diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementFace.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementFace.kt index 57a64820f..390624aa1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementFace.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementFace.kt @@ -29,10 +29,10 @@ data class UnbakedElementFace( val tintIndex: Int, ) { companion object { - operator fun invoke(direction: Directions, data: Map): UnbakedElementFace { + operator fun invoke(direction: Directions, data: Map, fallbackUvStart: Vec2, fallbackUvEnd: Vec2): UnbakedElementFace { val uv = data["uv"]?.listCast() - val uvStart = Vec2(uv?.get(0) ?: 0.0f, uv?.get(1) ?: 0.0f) / BLOCK_RESOLUTION - val uvEnd = Vec2(uv?.get(2) ?: 16.0f, uv?.get(3) ?: 16.0f) / BLOCK_RESOLUTION + val uvStart = uv?.let { Vec2(it[0], it[1]) / BLOCK_RESOLUTION } ?: fallbackUvStart + val uvEnd = uv?.let { Vec2(it[2], it[3]) / BLOCK_RESOLUTION } ?: fallbackUvEnd return UnbakedElementFace( direction = direction,