YuRaNnNzZZ — Сегодня, в 19:51
ну так раздюпай
This commit is contained in:
parent
2f59edd606
commit
f08635e192
@ -22,13 +22,13 @@ object MekanismHooks {
|
||||
val androidEnergy = entity.matteryPlayer!!.androidEnergy
|
||||
|
||||
val expectedAmount = container.energyPerTick
|
||||
val remaining = androidEnergy.receiveEnergy(expectedAmount.toDecimal(), true).toFloatingLong()
|
||||
val remaining = (androidEnergy.receiveEnergy(expectedAmount.toDecimal() * Mekanism2MatteryEnergyWrapper.mekanism2MtJ, true) * Mattery2MekanismEnergyWrapper.mtj2Mekanism).toFloatingLong()
|
||||
|
||||
if (remaining.smallerThan(expectedAmount)) {
|
||||
val extracted = container.extract(expectedAmount.subtract(remaining), Action.EXECUTE, AutomationType.INTERNAL)
|
||||
|
||||
if (!extracted.isZero) {
|
||||
androidEnergy.receiveEnergy(extracted.toDecimal(), false)
|
||||
androidEnergy.receiveEnergy(extracted.toDecimal() * Mekanism2MatteryEnergyWrapper.mekanism2MtJ, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -49,7 +49,9 @@ private class DoubleLazy<T>(onion: () -> Lazy<T>) : Lazy<T> {
|
||||
}
|
||||
}
|
||||
|
||||
private val mekanism2MtJ by DoubleLazy lazy@{
|
||||
class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, private val forgePower: IEnergyStorage? = null) : IMatteryEnergyStorage {
|
||||
companion object {
|
||||
val mekanism2MtJ by DoubleLazy lazy@{
|
||||
try {
|
||||
val conf = MekanismConfig.general
|
||||
return@lazy LazyCache(conf.forgeConversionRate::get) { Decimal.ONE / it.toDecimal() }
|
||||
@ -59,26 +61,15 @@ private val mekanism2MtJ by DoubleLazy lazy@{
|
||||
|
||||
return@lazy lazyOf(Decimal.ONE)
|
||||
}
|
||||
|
||||
private val mtj2Mekanism by DoubleLazy lazy@{
|
||||
try {
|
||||
val conf = MekanismConfig.general
|
||||
return@lazy LazyCache(conf.forgeConversionRate::get) { it.toDecimal() }
|
||||
} catch(err: Throwable) {
|
||||
LOGGER.error("Unable to get Mekanism Joules's to Forge Energy conversion rate! Expect issues", err)
|
||||
}
|
||||
|
||||
return@lazy lazyOf(Decimal.ONE)
|
||||
}
|
||||
|
||||
class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, private val forgePower: IEnergyStorage? = null) : IMatteryEnergyStorage {
|
||||
override fun extractEnergy(howMuch: Decimal, simulate: Boolean): Decimal {
|
||||
val action = when (simulate) {
|
||||
true -> Action.SIMULATE
|
||||
false -> Action.EXECUTE
|
||||
}
|
||||
|
||||
return power.extractEnergy((howMuch * mtj2Mekanism).toFloatingLong(), action).toDecimal() * mekanism2MtJ
|
||||
return power.extractEnergy((howMuch * Mattery2MekanismEnergyWrapper.mtj2Mekanism).toFloatingLong(), action).toDecimal() * mekanism2MtJ
|
||||
}
|
||||
|
||||
override fun receiveEnergy(howMuch: Decimal, simulate: Boolean): Decimal {
|
||||
@ -87,7 +78,7 @@ class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, pri
|
||||
false -> Action.EXECUTE
|
||||
}
|
||||
|
||||
return howMuch - power.insertEnergy((howMuch * mtj2Mekanism).toFloatingLong(), action).toDecimal() * mekanism2MtJ
|
||||
return howMuch - power.insertEnergy((howMuch * Mattery2MekanismEnergyWrapper.mtj2Mekanism).toFloatingLong(), action).toDecimal() * mekanism2MtJ
|
||||
}
|
||||
|
||||
override val canSetBatteryLevel: Boolean
|
||||
@ -107,7 +98,7 @@ class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, pri
|
||||
if (power.energyContainerCount != 1)
|
||||
throw UnsupportedOperationException("Can set power only when we have 1 energy container, ${power.energyContainerCount} present")
|
||||
|
||||
power.setEnergy(0, (value * mtj2Mekanism).toFloatingLong())
|
||||
power.setEnergy(0, (value * Mattery2MekanismEnergyWrapper.mtj2Mekanism).toFloatingLong())
|
||||
}
|
||||
|
||||
override val maxBatteryLevel: Decimal
|
||||
@ -126,6 +117,19 @@ class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, pri
|
||||
}
|
||||
|
||||
class Mattery2MekanismEnergyWrapper(private val power: IMatteryEnergyStorage) : IStrictEnergyHandler {
|
||||
companion object {
|
||||
val mtj2Mekanism by DoubleLazy lazy@{
|
||||
try {
|
||||
val conf = MekanismConfig.general
|
||||
return@lazy LazyCache(conf.forgeConversionRate::get) { it.toDecimal() }
|
||||
} catch(err: Throwable) {
|
||||
LOGGER.error("Unable to get Mekanism Joules's to Forge Energy conversion rate! Expect issues", err)
|
||||
}
|
||||
|
||||
return@lazy lazyOf(Decimal.ONE)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getEnergyContainerCount(): Int = 1
|
||||
|
||||
override fun getEnergy(container: Int): FloatingLong {
|
||||
@ -158,11 +162,11 @@ class Mattery2MekanismEnergyWrapper(private val power: IMatteryEnergyStorage) :
|
||||
|
||||
override fun insertEnergy(container: Int, howMuch: FloatingLong, action: Action): FloatingLong {
|
||||
val copy = howMuch.copy()
|
||||
return copy.minusEqual((power.receiveEnergy(howMuch.toDecimal() * mekanism2MtJ, action.simulate()) * mtj2Mekanism).toFloatingLong())
|
||||
return copy.minusEqual((power.receiveEnergy(howMuch.toDecimal() * Mekanism2MatteryEnergyWrapper.mekanism2MtJ, action.simulate()) * mtj2Mekanism).toFloatingLong())
|
||||
}
|
||||
|
||||
override fun extractEnergy(container: Int, howMuch: FloatingLong, action: Action): FloatingLong {
|
||||
return (power.extractEnergy(howMuch.toDecimal() * mekanism2MtJ, action.simulate()) * mtj2Mekanism).toFloatingLong()
|
||||
return (power.extractEnergy(howMuch.toDecimal() * Mekanism2MatteryEnergyWrapper.mekanism2MtJ, action.simulate()) * mtj2Mekanism).toFloatingLong()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user