YuRaNnNzZZ — Сегодня, в 19:51
ну так раздюпай
This commit is contained in:
parent
2f59edd606
commit
f08635e192
@ -22,13 +22,13 @@ object MekanismHooks {
|
|||||||
val androidEnergy = entity.matteryPlayer!!.androidEnergy
|
val androidEnergy = entity.matteryPlayer!!.androidEnergy
|
||||||
|
|
||||||
val expectedAmount = container.energyPerTick
|
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)) {
|
if (remaining.smallerThan(expectedAmount)) {
|
||||||
val extracted = container.extract(expectedAmount.subtract(remaining), Action.EXECUTE, AutomationType.INTERNAL)
|
val extracted = container.extract(expectedAmount.subtract(remaining), Action.EXECUTE, AutomationType.INTERNAL)
|
||||||
|
|
||||||
if (!extracted.isZero) {
|
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 {
|
try {
|
||||||
val conf = MekanismConfig.general
|
val conf = MekanismConfig.general
|
||||||
return@lazy LazyCache(conf.forgeConversionRate::get) { Decimal.ONE / it.toDecimal() }
|
return@lazy LazyCache(conf.forgeConversionRate::get) { Decimal.ONE / it.toDecimal() }
|
||||||
@ -58,27 +60,16 @@ private val mekanism2MtJ by DoubleLazy lazy@{
|
|||||||
}
|
}
|
||||||
|
|
||||||
return@lazy lazyOf(Decimal.ONE)
|
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 {
|
override fun extractEnergy(howMuch: Decimal, simulate: Boolean): Decimal {
|
||||||
val action = when (simulate) {
|
val action = when (simulate) {
|
||||||
true -> Action.SIMULATE
|
true -> Action.SIMULATE
|
||||||
false -> Action.EXECUTE
|
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 {
|
override fun receiveEnergy(howMuch: Decimal, simulate: Boolean): Decimal {
|
||||||
@ -87,7 +78,7 @@ class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, pri
|
|||||||
false -> Action.EXECUTE
|
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
|
override val canSetBatteryLevel: Boolean
|
||||||
@ -107,7 +98,7 @@ class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, pri
|
|||||||
if (power.energyContainerCount != 1)
|
if (power.energyContainerCount != 1)
|
||||||
throw UnsupportedOperationException("Can set power only when we have 1 energy container, ${power.energyContainerCount} present")
|
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
|
override val maxBatteryLevel: Decimal
|
||||||
@ -126,6 +117,19 @@ class Mekanism2MatteryEnergyWrapper(private val power: IStrictEnergyHandler, pri
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Mattery2MekanismEnergyWrapper(private val power: IMatteryEnergyStorage) : IStrictEnergyHandler {
|
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 getEnergyContainerCount(): Int = 1
|
||||||
|
|
||||||
override fun getEnergy(container: Int): FloatingLong {
|
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 {
|
override fun insertEnergy(container: Int, howMuch: FloatingLong, action: Action): FloatingLong {
|
||||||
val copy = howMuch.copy()
|
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 {
|
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