This *should* fix the NPE in AE2 integration with versions 20 and up. Can't fully test it because it crashes when I interact with terminals. Closes #978. Again.

This commit is contained in:
Florian Nücke 2015-03-31 01:57:39 +02:00
parent b021641efe
commit ff85880a96

View File

@ -11,6 +11,8 @@ import appeng.me.helpers.IGridProxyable
import appeng.tile.misc.TileInterface
import appeng.util.item.AEItemStack
import com.google.common.collect.ImmutableSet
import cpw.mods.fml.common.Loader
import cpw.mods.fml.common.versioning.VersionRange
import li.cil.oc.OpenComputers
import li.cil.oc.api.driver.EnvironmentAware
import li.cil.oc.api.driver.NamedBlock
@ -22,6 +24,7 @@ import li.cil.oc.api.prefab.AbstractValue
import li.cil.oc.api.prefab.DriverTileEntity
import li.cil.oc.common.EventHandler
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.Mods
import li.cil.oc.util.ExtendedNBT._
import li.cil.oc.util.ResultWrapper._
import net.minecraft.block.Block
@ -44,8 +47,16 @@ import scala.language.existentials
object DriverController extends DriverTileEntity with EnvironmentAware {
private type AETile = TileEntity with IGridProxyable with IActionHost
val versionsWithNewItemDefinitionAPI = VersionRange.createFromVersionSpec("[rv2-beta-20,)")
def getTileEntityClass: Class[_] = {
if (AEApi.instance != null && AEApi.instance.blocks != null) {
if (versionsWithNewItemDefinitionAPI.containsVersion(Loader.instance.getIndexedModList.get(Mods.AppliedEnergistics2.id).getProcessedVersion)) {
if (AEApi.instance.definitions.blocks.controller.maybeStack(0).isPresent)
AEApi.instance.definitions.blocks.controller.maybeEntity.orNull
else
AEApi.instance.definitions.blocks.iface.maybeEntity.orNull
}
else if (AEApi.instance != null && AEApi.instance.blocks != null) {
if (AEApi.instance.blocks.blockController != null && AEApi.instance.blocks.blockController.item != null)
// Not classOf[TileController] because that derps the compiler when it tries to resolve the class (says can't find API classes from RotaryCraft).
Class.forName("appeng.tile.networking.TileController")