mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-24 04:50:30 -04:00
Accept capability for IBasicEnergyContainer & IGregTechDeviceInformation (#151)
This commit is contained in:
parent
e420c61b1f
commit
1647ff6597
@ -20,7 +20,7 @@ dependencies {
|
||||
compileOnly("com.github.GTNewHorizons:ForgeMultipart:1.6.2:dev") {transitive = false}
|
||||
compileOnly("com.github.GTNewHorizons:Galacticraft:3.3.4-GTNH:dev") {transitive = false}
|
||||
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.51.153:dev") {transitive = false}
|
||||
compileOnly("com.github.GTNewHorizons:GTNHLib:0.6.11:dev") { transitive = false }
|
||||
compileOnly("com.github.GTNewHorizons:GTNHLib:0.6.11:dev") {transitive = false}
|
||||
compileOnly("com.github.GTNewHorizons:ModularUI:1.2.18:dev") {transitive = false}
|
||||
compileOnly("com.github.GTNewHorizons:NotEnoughItems:2.7.29-GTNH:dev") {transitive = false}
|
||||
compileOnly("com.github.GTNewHorizons:ProjectRed:4.11.1-GTNH:dev") {transitive = false}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package li.cil.oc.api.prefab;
|
||||
|
||||
import li.cil.oc.util.CapabilityUtil;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
@ -20,6 +21,6 @@ public abstract class DriverSidedTileEntity implements li.cil.oc.api.driver.Side
|
||||
return false;
|
||||
}
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
return tileEntity != null && filter.isAssignableFrom(tileEntity.getClass());
|
||||
return CapabilityUtil.hasCapability(tileEntity, filter);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package li.cil.oc.api.prefab;
|
||||
|
||||
import li.cil.oc.util.CapabilityUtil;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -19,6 +20,6 @@ public abstract class DriverTileEntity implements li.cil.oc.api.driver.Block {
|
||||
return false;
|
||||
}
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
return tileEntity != null && filter.isAssignableFrom(tileEntity.getClass());
|
||||
return CapabilityUtil.hasCapability(tileEntity, filter);
|
||||
}
|
||||
}
|
||||
|
30
src/main/java/li/cil/oc/util/CapabilityUtil.java
Normal file
30
src/main/java/li/cil/oc/util/CapabilityUtil.java
Normal file
@ -0,0 +1,30 @@
|
||||
package li.cil.oc.util;
|
||||
|
||||
import com.gtnewhorizon.gtnhlib.capability.Capabilities;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public final class CapabilityUtil {
|
||||
|
||||
private static final boolean isGTNHLibLoaded = Loader.isModLoaded("gtnhlib");
|
||||
|
||||
public static <T> boolean hasCapability(TileEntity tileEntity, Class<T> capability) {
|
||||
if (isGTNHLibLoaded) {
|
||||
return Capabilities.getCapability(tileEntity, capability) != null;
|
||||
} else {
|
||||
return tileEntity != null && capability.isAssignableFrom(tileEntity.getClass());
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> T getCapability(TileEntity tileEntity, Class<T> capability) {
|
||||
if (isGTNHLibLoaded) {
|
||||
return Capabilities.getCapability(tileEntity, capability);
|
||||
} else {
|
||||
if (tileEntity != null && capability.isAssignableFrom(tileEntity.getClass())) {
|
||||
return capability.cast(tileEntity);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package li.cil.oc.integration.gregtech;
|
||||
|
||||
import com.gtnewhorizon.gtnhlib.capability.Capabilities;
|
||||
import gregtech.api.interfaces.tileentity.IBasicEnergyContainer;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Callback;
|
||||
@ -19,7 +20,7 @@ public final class DriverEnergyContainer extends DriverSidedTileEntity {
|
||||
@Override
|
||||
public ManagedEnvironment createEnvironment(
|
||||
final World world, final int x, final int y, final int z, final ForgeDirection side) {
|
||||
return new Environment((IBasicEnergyContainer) world.getTileEntity(x, y, z));
|
||||
return new Environment(Capabilities.getCapability(world.getTileEntity(x, y, z), IBasicEnergyContainer.class, side));
|
||||
}
|
||||
|
||||
public static final class Environment extends ManagedTileEntityEnvironment<IBasicEnergyContainer> {
|
||||
|
@ -1,24 +1,29 @@
|
||||
package li.cil.oc.integration.gregtech
|
||||
|
||||
import com.gtnewhorizon.gtnhlib.capability.Capabilities
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
||||
import gregtech.api.interfaces.IDamagableItem
|
||||
import gregtech.api.interfaces.tileentity.IGregTechTileEntity
|
||||
import gregtech.api.interfaces.tileentity.{IGregTechDeviceInformation, IGregTechTileEntity, ITurnable}
|
||||
import gregtech.api.items.MetaGeneratedTool
|
||||
import li.cil.oc.api.event.{GeolyzerEvent, RobotUsedToolEvent}
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraftforge.common.util.ForgeDirection
|
||||
|
||||
import scala.collection.convert.WrapAsScala._
|
||||
|
||||
object EventHandlerGregTech {
|
||||
@SubscribeEvent
|
||||
def onGeolyzerAnalyze(e: GeolyzerEvent.Analyze) {
|
||||
val world = e.host.world
|
||||
world.getTileEntity(e.x, e.y, e.z) match {
|
||||
case tile : IGregTechTileEntity =>
|
||||
e.data += "facing" -> tile.getFrontFacing.name
|
||||
e.data += "sensorInformation" -> tile.getInfoData()
|
||||
val te = world.getTileEntity(e.x, e.y, e.z)
|
||||
te match {
|
||||
case turnable : ITurnable =>
|
||||
e.data += "facing" -> turnable.getFrontFacing.name
|
||||
case _ =>
|
||||
}
|
||||
val infoDevice = Capabilities.getCapability(te, classOf[IGregTechDeviceInformation])
|
||||
if (infoDevice != null) {
|
||||
e.data += "sensorInformation" -> infoDevice.getInfoData
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
Loading…
x
Reference in New Issue
Block a user