From f82c7977fa506865bf4287b44fdb109fde5ca976 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 29 Mar 2025 14:11:17 +0700 Subject: [PATCH] Fix being unable to drain sub 1-xp point liquid xp --- .../mc/otm/block/entity/ExperienceStorage.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ExperienceStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ExperienceStorage.kt index 43d03cd67..3a0af5351 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ExperienceStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ExperienceStorage.kt @@ -117,6 +117,10 @@ class ExperienceStorage(val maxExperience: DoubleSupplier = DoubleSupplier { Dou experience = (nbt?.asDouble ?: 0.0).coerceAtLeast(0.0) } + private val liquidXPMilliBuckets: Int get() { + return (experience * XP_TO_LIQUID_RATIO).toInt() + } + override fun getTanks(): Int { return 1 } @@ -125,7 +129,7 @@ class ExperienceStorage(val maxExperience: DoubleSupplier = DoubleSupplier { Dou if (tank != 0) return FluidStack.EMPTY - return FluidStack(MFluids.LIQUID_XP, (experience * XP_TO_LIQUID_RATIO).toInt()) + return FluidStack(MFluids.LIQUID_XP, liquidXPMilliBuckets) } override fun getTankCapacity(tank: Int): Int { @@ -148,13 +152,13 @@ class ExperienceStorage(val maxExperience: DoubleSupplier = DoubleSupplier { Dou } override fun drain(maxDrain: Int, action: IFluidHandler.FluidAction): FluidStack { - val actualDrain = maxDrain.coerceAtMost((experience * XP_TO_LIQUID_RATIO).toInt()).let { it / XP_TO_LIQUID_RATIO * XP_TO_LIQUID_RATIO } + val actualDrain = maxDrain.coerceAtMost(liquidXPMilliBuckets) if (actualDrain <= 0) return FluidStack.EMPTY if (action.execute()) - experience -= actualDrain / XP_TO_LIQUID_RATIO + experience -= actualDrain.toDouble() / XP_TO_LIQUID_RATIO return FluidStack(MFluids.LIQUID_XP, actualDrain) }