fix mekanism wrapper getting above imatteryenergy, update battery bank

This commit is contained in:
DBotThePony 2022-09-04 20:05:05 +07:00
parent a1405272f5
commit 8c09f72726
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 26 additions and 6 deletions

View File

@ -299,17 +299,25 @@ class BatteryBankBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Matte
val newExtract = energy.extractEnergyInner(diff, true) val newExtract = energy.extractEnergyInner(diff, true)
val newReceive = it.receiveEnergy(newExtract, true) val newReceive = it.receiveEnergy(newExtract, true)
if (newReceive == newExtract) { var pass = newReceive == newExtract
val extracted = energy.extractEnergyInner(diff, false)
if (!pass) {
if (newReceive < newExtract) {
pass = newExtract - newReceive < ImpreciseFraction("0.00001")
}
}
if (pass) {
val extracted = energy.extractEnergyInner(newReceive, false)
val received = it.receiveEnergy(extracted, false) val received = it.receiveEnergy(extracted, false)
if (received != extracted) { //if (received != extracted) {
LOGGER.error("ENERGY DUPE ALERT: Battery Bank at $blockPos extracted $extracted energy from it's batteries, yet $it received only $received of it.") // LOGGER.warn("ENERGY DUPE ALERT: Battery Bank at $blockPos extracted $extracted energy from it's batteries, yet $it received only $received of it.")
if (received < extracted) { if (received < extracted) {
energy.receiveEnergyInner(extracted - received, false) energy.receiveEnergyInner(extracted - received, false)
} }
} //}
} }
} }
} }

View File

@ -65,6 +65,12 @@ val isMekanismLoaded by lazy { ModList.get().isLoaded("mekanism") }
* Shortcut for getting [IEnergyStorage], including wrappers for it * Shortcut for getting [IEnergyStorage], including wrappers for it
*/ */
val ICapabilityProvider.energy: IEnergyStorage? get() { val ICapabilityProvider.energy: IEnergyStorage? get() {
val mattery = getCapability(MatteryCapability.ENERGY)
if (mattery.isPresent) {
return mattery.orNull()
}
if (isMekanismLoaded) { if (isMekanismLoaded) {
val mekanismEnergy = mekanismEnergy val mekanismEnergy = mekanismEnergy
@ -80,6 +86,12 @@ val ICapabilityProvider.energy: IEnergyStorage? get() {
* Shortcut for getting [IMatteryEnergyStorage], including wrappers for it * Shortcut for getting [IMatteryEnergyStorage], including wrappers for it
*/ */
val ICapabilityProvider.matteryEnergy: IMatteryEnergyStorage? get() { val ICapabilityProvider.matteryEnergy: IMatteryEnergyStorage? get() {
val mattery = getCapability(MatteryCapability.ENERGY)
if (mattery.isPresent) {
return mattery.orNull()
}
if (isMekanismLoaded) { if (isMekanismLoaded) {
val mekanismEnergy = mekanismEnergy val mekanismEnergy = mekanismEnergy
@ -88,7 +100,7 @@ val ICapabilityProvider.matteryEnergy: IMatteryEnergyStorage? get() {
} }
} }
return getCapability(MatteryCapability.ENERGY).orNull() return null
} }
/** /**