Make use of builtin LazyOptional of energy impl

This commit is contained in:
DBotThePony 2022-01-30 17:01:57 +07:00
parent 6e02402f06
commit c62836fa04
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -17,7 +17,6 @@ import ru.dbotthepony.mc.otm.set
abstract class BlockEntityMatteryPowered(p_155228_: BlockEntityType<*>, p_155229_: BlockPos, p_155230_: BlockState) : BlockEntityMattery(p_155228_, p_155229_, p_155230_) { abstract class BlockEntityMatteryPowered(p_155228_: BlockEntityType<*>, p_155229_: BlockPos, p_155230_: BlockState) : BlockEntityMattery(p_155228_, p_155229_, p_155230_) {
abstract val energy: EnergyStorageImpl abstract val energy: EnergyStorageImpl
private var resolverEnergy = LazyOptional.of { energy }
private var valid = true private var valid = true
val batteryContainer = MatteryContainer(this::setChangedLight, 1) val batteryContainer = MatteryContainer(this::setChangedLight, 1)
@ -47,19 +46,19 @@ abstract class BlockEntityMatteryPowered(p_155228_: BlockEntityType<*>, p_155229
override fun invalidateCaps() { override fun invalidateCaps() {
super.invalidateCaps() super.invalidateCaps()
energy.invalidate()
valid = false valid = false
resolverEnergy.invalidate()
} }
override fun reviveCaps() { override fun reviveCaps() {
super.reviveCaps() super.reviveCaps()
energy.revive()
valid = true valid = true
resolverEnergy = LazyOptional.of { energy }
} }
override fun <T> getCapability(cap: Capability<T>, side: Direction?): LazyOptional<T> { override fun <T> getCapability(cap: Capability<T>, side: Direction?): LazyOptional<T> {
if (valid && (cap === MatteryCapability.ENERGY || cap === CapabilityEnergy.ENERGY)) if (valid && (cap === MatteryCapability.ENERGY || cap === CapabilityEnergy.ENERGY))
return resolverEnergy.cast() return energy.resolver.cast()
return super.getCapability(cap, side) return super.getCapability(cap, side)
} }