diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BatteryBackedEnergyStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BatteryBackedEnergyStorage.kt index 3edbd1170..a39770a12 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BatteryBackedEnergyStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BatteryBackedEnergyStorage.kt @@ -39,7 +39,7 @@ class BatteryBackedEnergyStorage( if (ply is ServerPlayer && isAndroid) { AndroidBatteryTrigger.trigger(ply, value) - } else if (ply is ServerPlayer && !isAndroid) { + } else if (ply is ServerPlayer) { ExopackBatterySlotTrigger.trigger(ply, value) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BlockEnergyStorageImpl.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BlockEnergyStorageImpl.kt index cc7a7ed7e..0c9dd586a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BlockEnergyStorageImpl.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/BlockEnergyStorageImpl.kt @@ -76,7 +76,7 @@ sealed class BlockEnergyStorageImpl( return Decimal.ZERO val newLevel = (batteryLevel - howMuch.coerceAtMost(maxOutput ?: Decimal.POSITIVE_INFINITY)).moreThanZero() - val diff = (batteryLevel - newLevel) + val diff = (batteryLevel - newLevel).coerceIn(Decimal.ZERO, howMuch) if (!simulate && batteryLevel != newLevel) { batteryLevel = newLevel @@ -93,7 +93,7 @@ sealed class BlockEnergyStorageImpl( return Decimal.ZERO val newLevel = (batteryLevel + howMuch.coerceAtMost(maxInput ?: Decimal.POSITIVE_INFINITY)).coerceAtMost(maxBatteryLevel) - val diff = (newLevel - batteryLevel) + val diff = (newLevel - batteryLevel).coerceIn(Decimal.ZERO, howMuch) if (!simulate && batteryLevel != newLevel) { batteryLevel = newLevel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/ItemEnergyStorageImpl.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/ItemEnergyStorageImpl.kt index 2867fabd4..86b0916eb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/ItemEnergyStorageImpl.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/ItemEnergyStorageImpl.kt @@ -38,21 +38,13 @@ abstract class ItemEnergyStorageImpl(val itemStack: ItemStack) : IMatteryEnergyS if (!howMuch.isPositive || itemStack.count != 1) return Decimal.ZERO - @Suppress("NAME_SHADOWING") - var howMuch = howMuch - val maxOutput = maxOutput - - if (maxOutput != null) { - howMuch = howMuch.coerceAtMost(maxOutput) - } - val batteryLevel = batteryLevel if (!batteryLevel.isPositive) return Decimal.ZERO - val newLevel = (batteryLevel - howMuch).moreThanZero() - val diff = (batteryLevel - newLevel) + val newLevel = (batteryLevel - howMuch.coerceAtMost(maxOutput ?: Decimal.POSITIVE_INFINITY)).moreThanZero() + val diff = (batteryLevel - newLevel).coerceIn(Decimal.ZERO, howMuch) if (!simulate && batteryLevel != newLevel) { this.batteryLevel = newLevel @@ -70,7 +62,7 @@ abstract class ItemEnergyStorageImpl(val itemStack: ItemStack) : IMatteryEnergyS return Decimal.ZERO val newLevel = (batteryLevel + howMuch.coerceAtMost(maxInput ?: Decimal.POSITIVE_INFINITY)).coerceAtMost(maxBatteryLevel) - val diff = (newLevel - batteryLevel) + val diff = (newLevel - batteryLevel).coerceIn(Decimal.ZERO, howMuch) if (!simulate && batteryLevel != newLevel) { this.batteryLevel = newLevel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/MatteryGUI.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/MatteryGUI.kt index 8886d1969..84912739a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/MatteryGUI.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/MatteryGUI.kt @@ -235,7 +235,7 @@ object MatteryGUI { if (mattery.androidEnergy.maxBatteryLevel.isZero) { level = 0f } else { - level = mattery.androidEnergy.batteryLevel.div(mattery.androidEnergy.maxBatteryLevel).toFloat() + level = mattery.androidEnergy.batteryLevel.percentage(mattery.androidEnergy.maxBatteryLevel) if (level >= 0.98f) level = 1f @@ -308,8 +308,8 @@ object MatteryGUI { if (!gui.shouldDrawSurvivalElements()) return - val level: Float = (ply.health / ply.maxHealth).coerceIn(0.0f .. 1.0f) - val levelAbsorb: Float = (ply.absorptionAmount / ply.maxHealth).coerceIn(0.0f .. 1.0f) + val level: Float = (ply.health / ply.maxHealth).coerceIn(0.0f, 1.0f) + val levelAbsorb: Float = (ply.absorptionAmount / ply.maxHealth).coerceIn(0.0f, 1.0f) gui.setupOverlayRenderState(true, false) RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f) @@ -324,7 +324,7 @@ object MatteryGUI { if (mattery.hasFeature(AndroidFeatures.NANOBOTS_ARMOR)) { val featArmor = mattery.getFeature(AndroidFeatures.NANOBOTS_ARMOR) as NanobotsArmorFeature - val levelArmor: Float = (featArmor.layers.toFloat() / (featArmor.strength + 1).toFloat()).coerceIn(0.0f .. 1.0f) + val levelArmor: Float = (featArmor.layers.toFloat() / (featArmor.strength + 1).toFloat()).coerceIn(0.0f, 1.0f) HEALTH_BG_NANOBOTS.renderPartial(event.guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelArmor * 81f)) }