diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlockFactories.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlockFactories.kt index 00c0b912d..b7d10441b 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlockFactories.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/DefaultBlockFactories.kt @@ -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>( @@ -40,6 +42,7 @@ object DefaultBlockFactories : DefaultClassFactory>( RedstoneTorchBlock, HoneyBlock, KelpBlock, + SeagrassBlock, StoneButtonBlock, WoodenButtonBlock, LeavesBlock, diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/KelpBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/water/KelpBlock.kt similarity index 89% rename from src/main/java/de/bixilon/minosoft/data/registries/blocks/types/KelpBlock.kt rename to src/main/java/de/bixilon/minosoft/data/registries/blocks/types/water/KelpBlock.kt index e518286e2..ba2825470 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/KelpBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/water/KelpBlock.kt @@ -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 diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/water/SeagrassBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/water/SeagrassBlock.kt new file mode 100644 index 000000000..2e85702ad --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/water/SeagrassBlock.kt @@ -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 . + * + * 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) : Block(resourceLocation, registries, data), FluidFillable { + override val fluid: Fluid = registries.fluidRegistry[DefaultFluids.WATER]!! + + companion object : BlockFactory, MultiClassFactory { + override val ALIASES: Set = setOf("TallSeagrassBlock") + + override fun build(resourceLocation: ResourceLocation, registries: Registries, data: Map): SeagrassBlock { + return SeagrassBlock(resourceLocation, registries, data) + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/data/registries/fluid/Fluid.kt b/src/main/java/de/bixilon/minosoft/data/registries/fluid/Fluid.kt index d8b1d12cf..321e77efe 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/fluid/Fluid.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/fluid/Fluid.kt @@ -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() ?: 8 if (level < 0 || level >= 8) { - return 1.0f + return 0.9f } return (8 - level) / 9.0f } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/fluid/water/WaterFluid.kt b/src/main/java/de/bixilon/minosoft/data/registries/fluid/water/WaterFluid.kt index d69525344..b5e0ca7fc 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/fluid/water/WaterFluid.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/fluid/water/WaterFluid.kt @@ -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) }