mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-18 03:36:47 -04:00
Minor API change, added methods to query list of all block/item drivers. Mainly to allow third-party mods to make any use at all of the EnvironmentAware interface.
This commit is contained in:
parent
febcabdde9
commit
4f953d3277
@ -11,7 +11,7 @@ import li.cil.oc.api.detail.*;
|
|||||||
*/
|
*/
|
||||||
public class API {
|
public class API {
|
||||||
public static final String ID_OWNER = "OpenComputers|Core";
|
public static final String ID_OWNER = "OpenComputers|Core";
|
||||||
public static final String VERSION = "3.1.0";
|
public static final String VERSION = "3.1.1";
|
||||||
|
|
||||||
public static DriverAPI driver = null;
|
public static DriverAPI driver = null;
|
||||||
public static FileSystemAPI fileSystem = null;
|
public static FileSystemAPI fileSystem = null;
|
||||||
|
@ -7,6 +7,8 @@ import li.cil.oc.api.driver.Item;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This API allows registering new drivers with the mod.
|
* This API allows registering new drivers with the mod.
|
||||||
* <p/>
|
* <p/>
|
||||||
@ -131,6 +133,40 @@ public final class Driver {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all registered block drivers.
|
||||||
|
* <p/>
|
||||||
|
* This is intended to allow checking for particular drivers using more
|
||||||
|
* customized logic, and in particular to check for drivers with the
|
||||||
|
* {@link li.cil.oc.api.driver.EnvironmentAware} interface.
|
||||||
|
* <p/>
|
||||||
|
* The returned collection is read-only.
|
||||||
|
*
|
||||||
|
* @return the list of all registered block drivers.
|
||||||
|
*/
|
||||||
|
public static Collection<Block> blockDrivers() {
|
||||||
|
if (API.driver != null)
|
||||||
|
return API.driver.blockDrivers();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all registered item drivers.
|
||||||
|
* <p/>
|
||||||
|
* This is intended to allow checking for particular drivers using more
|
||||||
|
* customized logic, and in particular to check for drivers with the
|
||||||
|
* {@link li.cil.oc.api.driver.EnvironmentAware} interface.
|
||||||
|
* <p/>
|
||||||
|
* The returned collection is read-only.
|
||||||
|
*
|
||||||
|
* @return the list of all registered item drivers.
|
||||||
|
*/
|
||||||
|
public static Collection<Item> itemDrivers() {
|
||||||
|
if (API.driver != null)
|
||||||
|
return API.driver.itemDrivers();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
private Driver() {
|
private Driver() {
|
||||||
|
@ -3,6 +3,7 @@ package li.cil.oc.api;
|
|||||||
import li.cil.oc.api.machine.Architecture;
|
import li.cil.oc.api.machine.Architecture;
|
||||||
import li.cil.oc.api.machine.MachineHost;
|
import li.cil.oc.api.machine.MachineHost;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,7 +39,7 @@ public final class Machine {
|
|||||||
/**
|
/**
|
||||||
* A list of all <em>registered</em> architectures.
|
* A list of all <em>registered</em> architectures.
|
||||||
*/
|
*/
|
||||||
public static Iterable<Class<? extends Architecture>> architectures() {
|
public static Collection<Class<? extends Architecture>> architectures() {
|
||||||
if (API.machine != null)
|
if (API.machine != null)
|
||||||
return API.machine.architectures();
|
return API.machine.architectures();
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
@ -7,6 +7,8 @@ import li.cil.oc.api.driver.Item;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public interface DriverAPI {
|
public interface DriverAPI {
|
||||||
/**
|
/**
|
||||||
* Registers a new driver for a block component.
|
* Registers a new driver for a block component.
|
||||||
@ -92,4 +94,26 @@ public interface DriverAPI {
|
|||||||
* @return a driver for the item, or <tt>null</tt> if there is none.
|
* @return a driver for the item, or <tt>null</tt> if there is none.
|
||||||
*/
|
*/
|
||||||
Item driverFor(ItemStack stack);
|
Item driverFor(ItemStack stack);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all registered block drivers.
|
||||||
|
* <p/>
|
||||||
|
* This is intended to allow checking for particular drivers using more
|
||||||
|
* customized logic, and in particular to check for drivers with the
|
||||||
|
* {@link li.cil.oc.api.driver.EnvironmentAware} interface.
|
||||||
|
*
|
||||||
|
* @return the list of all registered block drivers.
|
||||||
|
*/
|
||||||
|
Collection<Block> blockDrivers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all registered item drivers.
|
||||||
|
* <p/>
|
||||||
|
* This is intended to allow checking for particular drivers using more
|
||||||
|
* customized logic, and in particular to check for drivers with the
|
||||||
|
* {@link li.cil.oc.api.driver.EnvironmentAware} interface.
|
||||||
|
*
|
||||||
|
* @return the list of all registered item drivers.
|
||||||
|
*/
|
||||||
|
Collection<Item> itemDrivers();
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ import li.cil.oc.api.machine.Architecture;
|
|||||||
import li.cil.oc.api.machine.Machine;
|
import li.cil.oc.api.machine.Machine;
|
||||||
import li.cil.oc.api.machine.MachineHost;
|
import li.cil.oc.api.machine.MachineHost;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public interface MachineAPI {
|
public interface MachineAPI {
|
||||||
/**
|
/**
|
||||||
* Register an architecture that can be used to create new machines.
|
* Register an architecture that can be used to create new machines.
|
||||||
@ -25,7 +27,7 @@ public interface MachineAPI {
|
|||||||
* a custom architecture also registers it, you may not see it in this list
|
* a custom architecture also registers it, you may not see it in this list
|
||||||
* until it also created a new machine using that architecture.
|
* until it also created a new machine using that architecture.
|
||||||
*/
|
*/
|
||||||
Iterable<Class<? extends Architecture>> architectures();
|
Collection<Class<? extends Architecture>> architectures();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new machine for the specified host.
|
* Creates a new machine for the specified host.
|
||||||
|
@ -3,6 +3,8 @@ package li.cil.oc.api.network;
|
|||||||
import li.cil.oc.api.machine.Callback;
|
import li.cil.oc.api.machine.Callback;
|
||||||
import li.cil.oc.api.machine.Context;
|
import li.cil.oc.api.machine.Context;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Components are nodes that can be addressed computers via drivers.
|
* Components are nodes that can be addressed computers via drivers.
|
||||||
* <p/>
|
* <p/>
|
||||||
@ -68,11 +70,13 @@ public interface Component extends Node {
|
|||||||
/**
|
/**
|
||||||
* The list of names of methods exposed by this component.
|
* The list of names of methods exposed by this component.
|
||||||
* <p/>
|
* <p/>
|
||||||
* Note: this does not return the callback annotations directly, because
|
* This does not return the callback annotations directly, because those
|
||||||
* those may not contain the method's name (as it defaults to the name of
|
* may not contain the method's name (as it defaults to the name of the
|
||||||
* the annotated method).
|
* annotated method).
|
||||||
|
* <p/>
|
||||||
|
* The returned collection is read-only.
|
||||||
*/
|
*/
|
||||||
Iterable<String> methods();
|
Collection<String> methods();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the annotation information of a method.
|
* Get the annotation information of a method.
|
||||||
|
@ -11,6 +11,7 @@ import li.cil.oc.api.machine.Value
|
|||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.world.World
|
import net.minecraft.world.World
|
||||||
|
|
||||||
|
import scala.collection.convert.WrapAsJava._
|
||||||
import scala.collection.convert.WrapAsScala._
|
import scala.collection.convert.WrapAsScala._
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
import scala.math.ScalaNumber
|
import scala.math.ScalaNumber
|
||||||
@ -76,6 +77,10 @@ private[oc] object Registry extends api.detail.DriverAPI {
|
|||||||
if (stack != null) items.find(_.worksWith(stack)).orNull
|
if (stack != null) items.find(_.worksWith(stack)).orNull
|
||||||
else null
|
else null
|
||||||
|
|
||||||
|
override def blockDrivers = blocks.toSeq
|
||||||
|
|
||||||
|
override def itemDrivers = items.toSeq
|
||||||
|
|
||||||
def convert(value: Array[AnyRef]) = if (value != null) value.map(arg => convertRecursively(arg, new util.IdentityHashMap())) else null
|
def convert(value: Array[AnyRef]) = if (value != null) value.map(arg => convertRecursively(arg, new util.IdentityHashMap())) else null
|
||||||
|
|
||||||
def convertRecursively(value: Any, memo: util.IdentityHashMap[AnyRef, AnyRef], force: Boolean = false): AnyRef = {
|
def convertRecursively(value: Any, memo: util.IdentityHashMap[AnyRef, AnyRef], force: Boolean = false): AnyRef = {
|
||||||
|
@ -889,7 +889,7 @@ object Machine extends MachineAPI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override def architectures = scala.collection.convert.WrapAsJava.asJavaIterable(checked)
|
override def architectures = checked.toSeq
|
||||||
|
|
||||||
override def create(host: MachineHost) = new Machine(host)
|
override def create(host: MachineHost) = new Machine(host)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user