make FluidBlock a FluidFillable

This commit is contained in:
Bixilon 2022-08-31 22:08:38 +02:00
parent 2853078abe
commit f9e779e6ee
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 9 additions and 7 deletions

View File

@ -26,8 +26,8 @@ import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
import kotlin.random.Random
open class FluidBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : Block(resourceLocation, registries, data) {
open val fluid: Fluid = registries.fluidRegistry[data["still_fluid"]]!!
open class FluidBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : Block(resourceLocation, registries, data), FluidFillable {
override val fluid: Fluid = registries.fluidRegistry[data["still_fluid"]]!!
override fun getOutlineShape(connection: PlayConnection, blockState: BlockState, blockPosition: Vec3i): VoxelShape {
return VoxelShape(mutableListOf(AABB(Vec3.EMPTY, Vec3(1.0f, fluid.getHeight(blockState), 1.0f))))

View File

@ -23,7 +23,6 @@ import de.bixilon.kutil.exception.Broken
import de.bixilon.minosoft.data.direction.Directions
import de.bixilon.minosoft.data.registries.blocks.BlockState
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock
import de.bixilon.minosoft.data.registries.blocks.types.FluidFillable
import de.bixilon.minosoft.data.registries.fluid.DefaultFluids
import de.bixilon.minosoft.data.registries.fluid.FlowableFluid
@ -81,9 +80,8 @@ class FluidCullSectionPreparer(
blockState = blocks.unsafeGet(x, y, z) ?: continue
val block = blockState.block
val fluid = when {
block is FluidBlock -> (blockState.block as FluidBlock).fluid
blockState.properties[BlockProperties.WATERLOGGED] == true && water != null -> water
block is FluidFillable -> block.fluid
blockState.properties[BlockProperties.WATERLOGGED] == true && water != null -> water
else -> continue
}
val stillTexture = fluid.stillTexture ?: continue
@ -233,10 +231,10 @@ class FluidCullSectionPreparer(
Vec3(position.x + faceXEnd, position.y + v2, position.z + faceZEnd),
)
val texturePositions = arrayOf(
Vec2(0.0f, 0.5f),
TEXTURE_1,
Vec2(0.0f, (1 - v1) / 2),
Vec2(0.5f, (1 - v2) / 2),
Vec2(0.5f, 0.5f),
TEXTURE_2,
)
val meshToUse = flowingTexture.transparency.getMesh(mesh)
@ -332,6 +330,10 @@ class FluidCullSectionPreparer(
private companion object {
private const val TEXTURE_CENTER = 1.0f / 2.0f
private const val FLUID_TINT_INDEX = 0
private val TEXTURE_1 = Vec2(0.0f, 0.5f)
private val TEXTURE_2 = Vec2(0.5f, 0.5f)
private val FLUID_FACE_PROPERTY = FaceProperties(
Vec2.EMPTY,
Vec2(1.0f, 1.0f),