Skip to content

Commit

Permalink
Fix trying to dereference a null MjReceiver
Browse files Browse the repository at this point in the history
It's now initialized lazily and the capabilities are stored in a
companion object
  • Loading branch information
vaartis committed Dec 1, 2019
1 parent b03c7cb commit 4cce640
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ import net.minecraftforge.energy.IEnergyStorage
*
*/
class MjReceiverImpl(private val backingStorage: IEnergyStorage) : IMjReceiver {
val capConnector = MjAPI.CAP_RECEIVER
val capReceiver = MjAPI.CAP_CONNECTOR
companion object {
val capConnector = MjAPI.CAP_RECEIVER
val capReceiver = MjAPI.CAP_CONNECTOR
}

override fun canConnect(other: IMjConnector) = true

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,12 @@ class KuarryTileEntity : TileEntity(), ITickable {
private val energyStorage = EnergyStorage(100000, 2000, 5000)

/** IMjReceiver implementation for BuildCraft compatibility */
private lateinit var mjEnergyStorage: MjReceiverImpl
private val mjEnergyStorage: MjReceiverImpl? by lazy {
if (Loader.isModLoaded("buildcraftcore"))
MjReceiverImpl(energyStorage)
else
null
}

/** A chest-sized inventory for inner item storage */
internal val inventory = object : ItemStackHandler(inventorySize) {
Expand Down Expand Up @@ -130,9 +135,6 @@ class KuarryTileEntity : TileEntity(), ITickable {

override fun onLoad() {
if (world.isRemote) {
if (Loader.isModLoaded("buildcraftcore")) {
mjEnergyStorage = MjReceiverImpl(energyStorage)
}

approxResourcesLeft = countAllMinable(calculateMinedChunks())
}
Expand All @@ -143,7 +145,7 @@ class KuarryTileEntity : TileEntity(), ITickable {
CapabilityEnergy.ENERGY, CapabilityItemHandler.ITEM_HANDLER_CAPABILITY -> true
else -> when {
Loader.isModLoaded("buildcraftcore") &&
(capability == mjEnergyStorage.capConnector || capability == mjEnergyStorage.capReceiver) -> true
(capability == MjReceiverImpl.capConnector || capability == MjReceiverImpl.capReceiver) -> true
else -> super.hasCapability(capability, facing)
}

Expand All @@ -159,7 +161,7 @@ class KuarryTileEntity : TileEntity(), ITickable {
inventory as T
else -> when {
Loader.isModLoaded("buildcraftcore") &&
(capability == mjEnergyStorage.capConnector || capability == mjEnergyStorage.capReceiver) ->
(capability == MjReceiverImpl.capConnector || capability == MjReceiverImpl.capReceiver) ->
mjEnergyStorage as T
else -> super.getCapability(capability, facing)
}
Expand Down

0 comments on commit 4cce640

Please sign in to comment.