mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 19:35:00 -04:00
fix FluidFillable blocks
This commit is contained in:
parent
367ad70f5a
commit
426b97263d
@ -21,6 +21,8 @@ import de.bixilon.minosoft.data.registries.blocks.types.portal.NetherPortalBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.redstone.ComparatorBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.redstone.RepeaterBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.wall.LeverBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.water.KelpBlock
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.water.SeagrassBlock
|
||||
import de.bixilon.minosoft.data.registries.factory.clazz.DefaultClassFactory
|
||||
|
||||
object DefaultBlockFactories : DefaultClassFactory<BlockFactory<*>>(
|
||||
@ -40,6 +42,7 @@ object DefaultBlockFactories : DefaultClassFactory<BlockFactory<*>>(
|
||||
RedstoneTorchBlock,
|
||||
HoneyBlock,
|
||||
KelpBlock,
|
||||
SeagrassBlock,
|
||||
StoneButtonBlock,
|
||||
WoodenButtonBlock,
|
||||
LeavesBlock,
|
||||
|
@ -11,10 +11,12 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.registries.blocks.types
|
||||
package de.bixilon.minosoft.data.registries.blocks.types.water
|
||||
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockFactory
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.Block
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.FluidFillable
|
||||
import de.bixilon.minosoft.data.registries.fluid.DefaultFluids
|
||||
import de.bixilon.minosoft.data.registries.fluid.Fluid
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2021 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 <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.registries.blocks.types.water
|
||||
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.registries.blocks.BlockFactory
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.Block
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.FluidFillable
|
||||
import de.bixilon.minosoft.data.registries.factory.clazz.MultiClassFactory
|
||||
import de.bixilon.minosoft.data.registries.fluid.DefaultFluids
|
||||
import de.bixilon.minosoft.data.registries.fluid.Fluid
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
|
||||
open class SeagrassBlock(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>) : Block(resourceLocation, registries, data), FluidFillable {
|
||||
override val fluid: Fluid = registries.fluidRegistry[DefaultFluids.WATER]!!
|
||||
|
||||
companion object : BlockFactory<SeagrassBlock>, MultiClassFactory<SeagrassBlock> {
|
||||
override val ALIASES: Set<String> = setOf("TallSeagrassBlock")
|
||||
|
||||
override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map<String, Any>): SeagrassBlock {
|
||||
return SeagrassBlock(resourceLocation, registries, data)
|
||||
}
|
||||
}
|
||||
}
|
@ -18,6 +18,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
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.items.Item
|
||||
import de.bixilon.minosoft.data.registries.particle.ParticleType
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
@ -61,17 +62,22 @@ open class Fluid(
|
||||
|
||||
open fun matches(other: BlockState?): Boolean {
|
||||
other ?: return false
|
||||
if (other.block is FluidFillable && this === other.block.fluid) {
|
||||
return true
|
||||
}
|
||||
if (other.block !is FluidBlock) {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
|
||||
return matches(other.block.fluid)
|
||||
}
|
||||
|
||||
fun getHeight(blockState: BlockState): Float {
|
||||
val level = blockState.properties[BlockProperties.FLUID_LEVEL]?.unsafeCast<Int>() ?: 8
|
||||
if (level < 0 || level >= 8) {
|
||||
return 1.0f
|
||||
return 0.9f
|
||||
}
|
||||
return (8 - level) / 9.0f
|
||||
}
|
||||
|
@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.player.LocalPlayerEntity
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
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.FluidFillable
|
||||
import de.bixilon.minosoft.data.registries.effects.DefaultStatusEffects
|
||||
import de.bixilon.minosoft.data.registries.effects.StatusEffect
|
||||
import de.bixilon.minosoft.data.registries.enchantment.DefaultEnchantments
|
||||
@ -71,10 +70,6 @@ class WaterFluid(
|
||||
if (other.properties[BlockProperties.WATERLOGGED] == true) {
|
||||
return true
|
||||
}
|
||||
if (other.block is FluidFillable && resourceLocation == other.block.fluid) {
|
||||
return true
|
||||
}
|
||||
|
||||
return super.matches(other)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user