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) }