From bcd2fd770729a200089afba387fa10915b64cea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 2 Apr 2017 16:58:02 +0200 Subject: [PATCH] Little bit of cleanup, API refactoring. --- src/main/java/li/cil/oc/api/API.java | 2 +- src/main/java/li/cil/oc/api/Driver.java | 23 +++++------ src/main/java/li/cil/oc/api/IMC.java | 37 +++++++++++------ src/main/java/li/cil/oc/api/Items.java | 29 -------------- .../li/cil/oc/api/component/Keyboard.java | 17 -------- .../li/cil/oc/api/component/TextBuffer.java | 16 -------- .../java/li/cil/oc/api/detail/DriverAPI.java | 18 ++++----- .../java/li/cil/oc/api/detail/ItemAPI.java | 25 ------------ .../{SidedBlock.java => DriverBlock.java} | 2 +- .../api/driver/{Item.java => DriverItem.java} | 2 +- .../cil/oc/api/driver/EnvironmentAware.java | 40 ------------------- .../li/cil/oc/api/driver/EnvironmentHost.java | 7 ---- .../oc/api/driver/EnvironmentProvider.java | 2 +- .../li/cil/oc/api/driver/MethodWhitelist.java | 2 +- .../java/li/cil/oc/api/driver/NamedBlock.java | 2 +- .../li/cil/oc/api/driver/item/Container.java | 4 +- .../li/cil/oc/api/driver/item/HostAware.java | 4 +- .../li/cil/oc/api/driver/item/Inventory.java | 4 +- .../li/cil/oc/api/driver/item/Memory.java | 4 +- .../li/cil/oc/api/driver/item/Processor.java | 4 +- .../li/cil/oc/api/internal/Rotatable.java | 3 +- src/main/java/li/cil/oc/api/network/Node.java | 6 ++- ...t.java => AbstractManagedEnvironment.java} | 3 +- .../java/li/cil/oc/api/prefab/DriverItem.java | 2 +- .../cil/oc/api/prefab/DriverSidedBlock.java | 3 +- .../oc/api/prefab/DriverSidedTileEntity.java | 3 +- .../oc/api/prefab/TileEntityEnvironment.java | 24 ++++------- src/main/scala/li/cil/oc/common/IMC.scala | 27 +++++++------ .../cil/oc/common/component/TextBuffer.scala | 3 +- .../scala/li/cil/oc/common/init/Items.scala | 4 -- .../common/inventory/ComponentInventory.scala | 2 +- .../cil/oc/common/item/traits/Delegate.scala | 3 +- .../li/cil/oc/common/tileentity/Adapter.scala | 3 +- .../traits/ComponentInventory.scala | 4 +- .../ManagedTileEntityEnvironment.java | 4 +- .../minecraft/DriverFluidHandler.java | 3 +- .../oc/integration/opencomputers/Item.scala | 25 ++++++------ .../li/cil/oc/server/component/CPU.scala | 3 +- .../li/cil/oc/server/component/DataCard.scala | 3 +- .../cil/oc/server/component/DebugCard.scala | 3 +- .../server/component/DiskDriveMountable.scala | 7 ++-- .../li/cil/oc/server/component/Drive.scala | 3 +- .../li/cil/oc/server/component/Drone.scala | 3 +- .../li/cil/oc/server/component/EEPROM.scala | 3 +- .../cil/oc/server/component/FileSystem.scala | 3 +- .../li/cil/oc/server/component/Geolyzer.scala | 3 +- .../oc/server/component/GraphicsCard.scala | 3 +- .../oc/server/component/InternetCard.scala | 3 +- .../li/cil/oc/server/component/Keyboard.scala | 3 +- .../cil/oc/server/component/LinkedCard.scala | 3 +- .../li/cil/oc/server/component/Memory.scala | 3 +- .../cil/oc/server/component/NetworkCard.scala | 3 +- .../server/component/RedstoneSignaller.scala | 3 +- .../li/cil/oc/server/component/Robot.scala | 3 +- .../li/cil/oc/server/component/Tablet.scala | 3 +- .../cil/oc/server/component/Transposer.scala | 3 +- .../oc/server/component/UpgradeAngel.scala | 3 +- .../oc/server/component/UpgradeBattery.scala | 3 +- .../server/component/UpgradeChunkloader.scala | 3 +- .../oc/server/component/UpgradeCrafting.scala | 3 +- .../oc/server/component/UpgradeDatabase.scala | 3 +- .../server/component/UpgradeExperience.scala | 3 +- .../server/component/UpgradeGenerator.scala | 3 +- .../UpgradeInventoryController.scala | 7 ++-- .../oc/server/component/UpgradeLeash.scala | 3 +- .../cil/oc/server/component/UpgradeMF.scala | 6 ++- .../server/component/UpgradeNavigation.scala | 3 +- .../oc/server/component/UpgradePiston.scala | 3 +- .../cil/oc/server/component/UpgradeSign.scala | 3 +- .../component/UpgradeSolarGenerator.scala | 3 +- .../cil/oc/server/component/UpgradeTank.scala | 3 +- .../component/UpgradeTankController.scala | 7 ++-- .../server/component/UpgradeTractorBeam.scala | 3 +- .../oc/server/component/UpgradeTrading.scala | 3 +- .../server/driver/CompoundBlockDriver.scala | 3 +- .../li/cil/oc/server/driver/Registry.scala | 20 +++++----- .../li/cil/oc/server/machine/Machine.scala | 3 +- 77 files changed, 217 insertions(+), 301 deletions(-) delete mode 100644 src/main/java/li/cil/oc/api/component/Keyboard.java delete mode 100644 src/main/java/li/cil/oc/api/component/TextBuffer.java rename src/main/java/li/cil/oc/api/driver/{SidedBlock.java => DriverBlock.java} (99%) rename src/main/java/li/cil/oc/api/driver/{Item.java => DriverItem.java} (99%) delete mode 100644 src/main/java/li/cil/oc/api/driver/EnvironmentAware.java delete mode 100644 src/main/java/li/cil/oc/api/driver/EnvironmentHost.java rename src/main/java/li/cil/oc/api/prefab/{ManagedEnvironment.java => AbstractManagedEnvironment.java} (93%) diff --git a/src/main/java/li/cil/oc/api/API.java b/src/main/java/li/cil/oc/api/API.java index f5d511a9c..86b13c598 100644 --- a/src/main/java/li/cil/oc/api/API.java +++ b/src/main/java/li/cil/oc/api/API.java @@ -18,7 +18,7 @@ import li.cil.oc.api.detail.NetworkAPI; */ public class API { public static final String ID_OWNER = "opencomputers|core"; - public static final String VERSION = "6.0.0-alpha"; + public static final String VERSION = "7.0.0-alpha"; // ----------------------------------------------------------------------- // diff --git a/src/main/java/li/cil/oc/api/Driver.java b/src/main/java/li/cil/oc/api/Driver.java index fbbf98ccd..4d8fe319c 100644 --- a/src/main/java/li/cil/oc/api/Driver.java +++ b/src/main/java/li/cil/oc/api/Driver.java @@ -3,11 +3,10 @@ package li.cil.oc.api; import li.cil.oc.api.driver.Converter; import li.cil.oc.api.driver.EnvironmentProvider; import li.cil.oc.api.driver.InventoryProvider; -import li.cil.oc.api.driver.Item; -import li.cil.oc.api.driver.SidedBlock; +import li.cil.oc.api.driver.DriverItem; +import li.cil.oc.api.driver.DriverBlock; import li.cil.oc.api.network.EnvironmentHost; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; @@ -31,8 +30,8 @@ import java.util.Set; * at that time. Only start calling these methods in the init phase or later. * * @see Network - * @see SidedBlock - * @see Item + * @see DriverBlock + * @see DriverItem */ public final class Driver { /** @@ -47,7 +46,7 @@ public final class Driver { * * @param driver the driver to register. */ - public static void add(final SidedBlock driver) { + public static void add(final DriverBlock driver) { if (API.driver != null) API.driver.add(driver); } @@ -63,7 +62,7 @@ public final class Driver { * * @param driver the driver to register. */ - public static void add(final Item driver) { + public static void add(final DriverItem driver) { if (API.driver != null) API.driver.add(driver); } @@ -119,13 +118,13 @@ public final class Driver { * Note that several drivers for a single block can exist. Because of this * block drivers are always encapsulated in a 'compound' driver, which is * what will be returned here. In other words, you will not - * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.SidedBlock)}. + * get actual instances of drivers registered via {@link #add(DriverBlock)}. * * @param world the world containing the block. * @param pos the position of the block. * @return a driver for the block, or null if there is none. */ - public static SidedBlock driverFor(World world, BlockPos pos, EnumFacing side) { + public static DriverBlock driverFor(World world, BlockPos pos, EnumFacing side) { if (API.driver != null) return API.driver.driverFor(world, pos, side); return null; @@ -142,7 +141,7 @@ public final class Driver { * @param host the type that will host the environment created by returned driver. * @return a driver for the item, or null if there is none. */ - public static Item driverFor(ItemStack stack, Class host) { + public static DriverItem driverFor(ItemStack stack, Class host) { if (API.driver != null) return API.driver.driverFor(stack, host); return null; @@ -161,7 +160,7 @@ public final class Driver { * @param stack the item stack to get a driver for. * @return a driver for the item, or null if there is none. */ - public static Item driverFor(ItemStack stack) { + public static DriverItem driverFor(ItemStack stack) { if (API.driver != null) return API.driver.driverFor(stack); return null; @@ -231,7 +230,7 @@ public final class Driver { * * @return the list of all registered item drivers. */ - public static Collection itemDrivers() { + public static Collection itemDrivers() { if (API.driver != null) return API.driver.itemDrivers(); return null; diff --git a/src/main/java/li/cil/oc/api/IMC.java b/src/main/java/li/cil/oc/api/IMC.java index a0e13bf07..218a4d3c8 100644 --- a/src/main/java/li/cil/oc/api/IMC.java +++ b/src/main/java/li/cil/oc/api/IMC.java @@ -23,6 +23,19 @@ import org.apache.commons.lang3.tuple.Pair; */ @SuppressWarnings("unused") public final class IMC { + public static final String REGISTER_ASSEMBLER_FILTER = "registerAssemblerFilter"; + public static final String REGISTER_ASSEMBLER_TEMPLATE = "registerAssemblerTemplate"; + public static final String REGISTER_DISASSEMBLER_TEMPLATE = "registerDisassemblerTemplate"; + public static final String REGISTER_TOOL_DURABILITY_PROVIDER = "registerToolDurabilityProvider"; + public static final String REGISTER_WRENCH_TOOL = "registerWrenchTool"; + public static final String REGISTER_WRENCH_TOOL_CHECK = "registerWrenchToolCheck"; + public static final String REGISTER_ITEM_CHARGE = "registerItemCharge"; + public static final String REGISTER_INK_PROVIDER = "registerInkProvider"; + public static final String BLACKLIST_PERIPHERAL = "blacklistPeripheral"; + public static final String BLACKLIST_HOST = "blacklistHost"; + public static final String REGISTER_CUSTOM_POWER_SYSTEM = "registerCustomPowerSystem"; + public static final String REGISTER_PROGRAM_DISK_LABEL = "registerProgramDiskLabel"; + /** * Register a callback that is used as a filter for assembler templates. * Any templates that require a base item that is rejected by any @@ -40,7 +53,7 @@ public final class IMC { * @param callback the callback to register as a filtering method. */ public static void registerAssemblerFilter(final String callback) { - FMLInterModComms.sendMessage(MOD_ID, "registerAssemblerFilter", callback); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_ASSEMBLER_FILTER, callback); } /** @@ -153,7 +166,7 @@ public final class IMC { nbt.setTag("componentSlots", componentsNbt); } - FMLInterModComms.sendMessage(MOD_ID, "registerAssemblerTemplate", nbt); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_ASSEMBLER_TEMPLATE, nbt); } /** @@ -197,7 +210,7 @@ public final class IMC { nbt.setString("select", select); nbt.setString("disassemble", disassemble); - FMLInterModComms.sendMessage(MOD_ID, "registerDisassemblerTemplate", nbt); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_DISASSEMBLER_TEMPLATE, nbt); } /** @@ -221,7 +234,7 @@ public final class IMC { * @param callback the callback to register as a durability provider. */ public static void registerToolDurabilityProvider(final String callback) { - FMLInterModComms.sendMessage(MOD_ID, "registerToolDurabilityProvider", callback); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_TOOL_DURABILITY_PROVIDER, callback); } /** @@ -245,7 +258,7 @@ public final class IMC { * @param callback the callback to register as a wrench tool handler. */ public static void registerWrenchTool(final String callback) { - FMLInterModComms.sendMessage(MOD_ID, "registerWrenchTool", callback); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_WRENCH_TOOL, callback); } /** @@ -268,7 +281,7 @@ public final class IMC { * @param callback the callback to register as a wrench tool tester. */ public static void registerWrenchToolCheck(final String callback) { - FMLInterModComms.sendMessage(MOD_ID, "registerWrenchToolCheck", callback); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_WRENCH_TOOL_CHECK, callback); } /** @@ -298,7 +311,7 @@ public final class IMC { nbt.setString("name", name); nbt.setString("canCharge", canCharge); nbt.setString("charge", charge); - FMLInterModComms.sendMessage(MOD_ID, "registerItemCharge", nbt); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_ITEM_CHARGE, nbt); } /** @@ -322,7 +335,7 @@ public final class IMC { * @param callback the callback to register as an ink provider. */ public static void registerInkProvider(final String callback) { - FMLInterModComms.sendMessage(MOD_ID, "registerInkProvider", callback); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_INK_PROVIDER, callback); } /** @@ -335,7 +348,7 @@ public final class IMC { * @param peripheral the class of the peripheral to blacklist. */ public static void blacklistPeripheral(final Class peripheral) { - FMLInterModComms.sendMessage(MOD_ID, "blacklistPeripheral", peripheral.getName()); + FMLInterModComms.sendMessage(MOD_ID, BLACKLIST_PERIPHERAL, peripheral.getName()); } /** @@ -360,7 +373,7 @@ public final class IMC { final NBTTagCompound stackNbt = new NBTTagCompound(); stack.writeToNBT(stackNbt); nbt.setTag("item", stackNbt); - FMLInterModComms.sendMessage(MOD_ID, "blacklistHost", nbt); + FMLInterModComms.sendMessage(MOD_ID, BLACKLIST_HOST, nbt); } /** @@ -371,7 +384,7 @@ public final class IMC { * avoid auto-disabling power use. */ public static void registerCustomPowerSystem() { - FMLInterModComms.sendMessage(MOD_ID, "registerCustomPowerSystem", "true"); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_CUSTOM_POWER_SYSTEM, "true"); } /** @@ -409,7 +422,7 @@ public final class IMC { } nbt.setTag("architectures", architecturesNbt); } - FMLInterModComms.sendMessage(MOD_ID, "registerProgramDiskLabel", nbt); + FMLInterModComms.sendMessage(MOD_ID, REGISTER_PROGRAM_DISK_LABEL, nbt); } // ----------------------------------------------------------------------- // diff --git a/src/main/java/li/cil/oc/api/Items.java b/src/main/java/li/cil/oc/api/Items.java index 3a3f55927..ec3758299 100644 --- a/src/main/java/li/cil/oc/api/Items.java +++ b/src/main/java/li/cil/oc/api/Items.java @@ -47,35 +47,6 @@ public final class Items { return null; } - /** - * Register a single loot floppy disk. - *

- * The disk will be listed in the creative tab of OpenComputers. - *

- * The specified factory callable will be used to generate a new file - * system when the loot disk is used as a component. The specified name - * will be used as the label for the loot disk, as well as the identifier - * to select the corresponding factory method, so choose wisely. - *

- * To use some directory in your mod JAR as the directory provided by the - * loot disk, use {@link FileSystem#fromClass} in your callable. - *

- * Call this in the init phase or later, not in pre-init. - * - * @param name the label and identifier to use for the loot disk. - * @param color the color of the disk, as a Minecraft color. - * @param factory the callable to call for creating file system instances. - * @return an item stack representing the registered loot disk, to allow - * adding a recipe for your loot disk, for example. - * @deprecated use {@link #registerFloppy(String, EnumDyeColor, Callable, boolean)} instead. - */ - @Deprecated - public static ItemStack registerFloppy(String name, EnumDyeColor color, Callable factory) { - if (API.items != null) - return API.items.registerFloppy(name, color, factory); - return ItemStack.EMPTY; - } - /** * Register a single loot floppy disk. *

diff --git a/src/main/java/li/cil/oc/api/component/Keyboard.java b/src/main/java/li/cil/oc/api/component/Keyboard.java deleted file mode 100644 index d679c03d5..000000000 --- a/src/main/java/li/cil/oc/api/component/Keyboard.java +++ /dev/null @@ -1,17 +0,0 @@ -package li.cil.oc.api.component; - -/** - * Not meant to be implemented. - * - * @deprecated Use li.cil.oc.api.internal.Keyboard instead. - */ -@Deprecated -public interface Keyboard extends li.cil.oc.api.internal.Keyboard { - /** - * Not meant to be implemented. - * - * @deprecated Use li.cil.oc.api.internal.Keyboard.UsabilityChecker instead. - */ - interface UsabilityChecker extends li.cil.oc.api.internal.Keyboard.UsabilityChecker { - } -} diff --git a/src/main/java/li/cil/oc/api/component/TextBuffer.java b/src/main/java/li/cil/oc/api/component/TextBuffer.java deleted file mode 100644 index a997a00ba..000000000 --- a/src/main/java/li/cil/oc/api/component/TextBuffer.java +++ /dev/null @@ -1,16 +0,0 @@ -package li.cil.oc.api.component; - -import li.cil.oc.api.Persistable; -import li.cil.oc.api.network.ManagedEnvironment; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/** - * Not meant to be implemented. - * - * @deprecated Use li.cil.oc.api.internal.TextBuffer instead. - */ -@Deprecated -public interface TextBuffer extends li.cil.oc.api.internal.TextBuffer { -} diff --git a/src/main/java/li/cil/oc/api/detail/DriverAPI.java b/src/main/java/li/cil/oc/api/detail/DriverAPI.java index 67c53a7a5..ee2bc5fd7 100644 --- a/src/main/java/li/cil/oc/api/detail/DriverAPI.java +++ b/src/main/java/li/cil/oc/api/detail/DriverAPI.java @@ -4,8 +4,8 @@ import jline.internal.Nullable; import li.cil.oc.api.driver.Converter; import li.cil.oc.api.driver.EnvironmentProvider; import li.cil.oc.api.driver.InventoryProvider; -import li.cil.oc.api.driver.Item; -import li.cil.oc.api.driver.SidedBlock; +import li.cil.oc.api.driver.DriverItem; +import li.cil.oc.api.driver.DriverBlock; import li.cil.oc.api.network.EnvironmentHost; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -30,7 +30,7 @@ public interface DriverAPI { * * @param driver the driver to register. */ - void add(SidedBlock driver); + void add(DriverBlock driver); /** * Registers a new driver for an item component. @@ -43,7 +43,7 @@ public interface DriverAPI { * * @param driver the driver for an item component. */ - void add(Item driver); + void add(DriverItem driver); /** * Registers a new type converter. @@ -87,7 +87,7 @@ public interface DriverAPI { * Note that several drivers for a single block can exist. Because of this * block drivers are always encapsulated in a 'compound' driver, which is * what will be returned here. In other words, you should will not - * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.SidedBlock)}. + * get actual instances of drivers registered via {@link #add(DriverBlock)}. * * @param world the world containing the block. * @param pos the position of the block. @@ -95,7 +95,7 @@ public interface DriverAPI { * @return a driver for the block, or null if there is none. */ @Nullable - SidedBlock driverFor(World world, BlockPos pos, EnumFacing side); + DriverBlock driverFor(World world, BlockPos pos, EnumFacing side); /** * Looks up a driver for the specified item stack. @@ -109,7 +109,7 @@ public interface DriverAPI { * @return a driver for the item, or null if there is none. */ @Nullable - Item driverFor(ItemStack stack, Class host); + DriverItem driverFor(ItemStack stack, Class host); /** * Looks up a driver for the specified item stack. @@ -125,7 +125,7 @@ public interface DriverAPI { * @return a driver for the item, or null if there is none. */ @Nullable - Item driverFor(ItemStack stack); + DriverItem driverFor(ItemStack stack); /** * Looks up the environment associated with the specified item stack. @@ -179,5 +179,5 @@ public interface DriverAPI { * * @return the list of all registered item drivers. */ - Collection itemDrivers(); + Collection itemDrivers(); } diff --git a/src/main/java/li/cil/oc/api/detail/ItemAPI.java b/src/main/java/li/cil/oc/api/detail/ItemAPI.java index 847f9fe69..92036a633 100644 --- a/src/main/java/li/cil/oc/api/detail/ItemAPI.java +++ b/src/main/java/li/cil/oc/api/detail/ItemAPI.java @@ -34,31 +34,6 @@ public interface ItemAPI { @Nullable ItemInfo get(ItemStack stack); - /** - * Register a single loot floppy disk. - *

- * The disk will be listed in the creative tab of OpenComputers. - *

- * The specified factory callable will be used to generate a new file - * system when the loot disk is used as a component. The specified name - * will be used as the label for the loot disk, as well as the identifier - * to select the corresponding factory method, so choose wisely. - *

- * To use some directory in your mod JAR as the directory provided by the - * loot disk, use {@link FileSystem#fromClass} in your callable. - *

- * Call this in the init phase or later, not in pre-init. - * - * @param name the label and identifier to use for the loot disk. - * @param color the color of the disk, as a Minecraft color. - * @param factory the callable to call for creating file system instances. - * @return an item stack representing the registered loot disk, to allow - * adding a recipe for your loot disk, for example. - * @deprecated use {@link #registerFloppy(String, EnumDyeColor, Callable, boolean)} instead. - */ - @Deprecated - ItemStack registerFloppy(String name, EnumDyeColor color, Callable factory); - /** * Register a single loot floppy disk. *

diff --git a/src/main/java/li/cil/oc/api/driver/SidedBlock.java b/src/main/java/li/cil/oc/api/driver/DriverBlock.java similarity index 99% rename from src/main/java/li/cil/oc/api/driver/SidedBlock.java rename to src/main/java/li/cil/oc/api/driver/DriverBlock.java index ff6d87e71..9dd7891c2 100644 --- a/src/main/java/li/cil/oc/api/driver/SidedBlock.java +++ b/src/main/java/li/cil/oc/api/driver/DriverBlock.java @@ -26,7 +26,7 @@ import net.minecraft.world.World; * Note that side-aware block drivers are queried before regular block drivers, * because they are more specific. */ -public interface SidedBlock { +public interface DriverBlock { /** * Used to determine the block types this driver handles. *

diff --git a/src/main/java/li/cil/oc/api/driver/Item.java b/src/main/java/li/cil/oc/api/driver/DriverItem.java similarity index 99% rename from src/main/java/li/cil/oc/api/driver/Item.java rename to src/main/java/li/cil/oc/api/driver/DriverItem.java index 5f95e3de3..965d65818 100644 --- a/src/main/java/li/cil/oc/api/driver/Item.java +++ b/src/main/java/li/cil/oc/api/driver/DriverItem.java @@ -22,7 +22,7 @@ import net.minecraft.nbt.NBTTagCompound; * items as you wish. I'd recommend writing one per device (type), though, to * keep things modular. */ -public interface Item { +public interface DriverItem { /** * Used to determine the item types this driver handles. *

diff --git a/src/main/java/li/cil/oc/api/driver/EnvironmentAware.java b/src/main/java/li/cil/oc/api/driver/EnvironmentAware.java deleted file mode 100644 index 10493e6cc..000000000 --- a/src/main/java/li/cil/oc/api/driver/EnvironmentAware.java +++ /dev/null @@ -1,40 +0,0 @@ -package li.cil.oc.api.driver; - -import li.cil.oc.api.network.Environment; -import net.minecraft.item.ItemStack; - -/** - * This interface can be added to either item or block drivers. - *

- * It is used to statically query the type of environment that would be created - * for the block or item represented by an item stack. This is used to provide - * automatically generated ingame help in the NEI usage screen, for example. - *

- * For item drivers this will usually be pretty simple to implement, assuming - * the driver only ever generates one type of environment - just return the - * class of it and you're done. - *

- * For block drivers there is a bit more work involved, since you have to check - * if the item is the item block that corresponds to the supported block type. - * This should usually not be an issue either, though. - * - * @deprecated Use an {@link EnvironmentProvider} instead. - */ -@Deprecated -public interface EnvironmentAware { - /** - * Get the type of environment that would be created for the specified - * block or item. - *

- * Note that for block drivers this is called for any type of item stack. - *

- * For item drivers this is only called if {@link Item#worksWith(net.minecraft.item.ItemStack)} - * returns true. - * - * @param stack the item stack representing a block or item to get the - * related environment type for. - * @return the type of environment this driver would produce, or - * null if the block or item is not supported. - */ - Class providedEnvironment(ItemStack stack); -} diff --git a/src/main/java/li/cil/oc/api/driver/EnvironmentHost.java b/src/main/java/li/cil/oc/api/driver/EnvironmentHost.java deleted file mode 100644 index 6597dc9d1..000000000 --- a/src/main/java/li/cil/oc/api/driver/EnvironmentHost.java +++ /dev/null @@ -1,7 +0,0 @@ -package li.cil.oc.api.driver; - -/** - * @deprecated Use li.cil.oc.api.network.EnvironmentHost directly. - */ -public interface EnvironmentHost extends li.cil.oc.api.network.EnvironmentHost { -} diff --git a/src/main/java/li/cil/oc/api/driver/EnvironmentProvider.java b/src/main/java/li/cil/oc/api/driver/EnvironmentProvider.java index 842c1b33b..8fcf7b4bd 100644 --- a/src/main/java/li/cil/oc/api/driver/EnvironmentProvider.java +++ b/src/main/java/li/cil/oc/api/driver/EnvironmentProvider.java @@ -20,7 +20,7 @@ public interface EnvironmentProvider { * by the class transformer at runtime. *

* For items this will be the type of the environment returned by the - * item driver's {@link Item#createEnvironment} method. + * item driver's {@link DriverItem#createEnvironment} method. * * @param stack the stack to get the environment type for. * @return the environment type for the specified stack. diff --git a/src/main/java/li/cil/oc/api/driver/MethodWhitelist.java b/src/main/java/li/cil/oc/api/driver/MethodWhitelist.java index 3798d2c5d..838f5785a 100644 --- a/src/main/java/li/cil/oc/api/driver/MethodWhitelist.java +++ b/src/main/java/li/cil/oc/api/driver/MethodWhitelist.java @@ -17,7 +17,7 @@ import net.minecraft.util.math.BlockPos; * suppress inventory functionality if your TileEntity implements IInventory. *

* To do so, implement this interface in the environment that you - * return from your driver's {@link SidedBlock#createEnvironment(net.minecraft.world.World, BlockPos, net.minecraft.util.EnumFacing)} + * return from your driver's {@link DriverBlock#createEnvironment(net.minecraft.world.World, BlockPos, net.minecraft.util.EnumFacing)} * method, and provide the names of the allowed methods from {@link #whitelistedMethods()}. *

* Important: if multiple drivers apply to a single block that each diff --git a/src/main/java/li/cil/oc/api/driver/NamedBlock.java b/src/main/java/li/cil/oc/api/driver/NamedBlock.java index a80ee22d8..91796fd1c 100644 --- a/src/main/java/li/cil/oc/api/driver/NamedBlock.java +++ b/src/main/java/li/cil/oc/api/driver/NamedBlock.java @@ -9,7 +9,7 @@ import net.minecraft.util.math.BlockPos; *

* This was previously to be implemented on the driver itself, but that has been * deprecated. Implement it in the environment returned from the block driver's - * {@link SidedBlock#createEnvironment(net.minecraft.world.World, BlockPos, net.minecraft.util.EnumFacing)} + * {@link DriverBlock#createEnvironment(net.minecraft.world.World, BlockPos, net.minecraft.util.EnumFacing)} * method instead. */ public interface NamedBlock { diff --git a/src/main/java/li/cil/oc/api/driver/item/Container.java b/src/main/java/li/cil/oc/api/driver/item/Container.java index 23ae14119..bc987132e 100644 --- a/src/main/java/li/cil/oc/api/driver/item/Container.java +++ b/src/main/java/li/cil/oc/api/driver/item/Container.java @@ -1,6 +1,6 @@ package li.cil.oc.api.driver.item; -import li.cil.oc.api.driver.Item; +import li.cil.oc.api.driver.DriverItem; import net.minecraft.item.ItemStack; /** @@ -12,7 +12,7 @@ import net.minecraft.item.ItemStack; * These drivers will not be queried for environments. The reported tier is the * maximum tier supported in the dynamic slot they provide. */ -public interface Container extends Item { +public interface Container extends DriverItem { /** * The type of slot provided as the dynamic slot. This will usually be * for other upgrades, but may be for any type of item component. diff --git a/src/main/java/li/cil/oc/api/driver/item/HostAware.java b/src/main/java/li/cil/oc/api/driver/item/HostAware.java index 097e46adf..9fcbef398 100644 --- a/src/main/java/li/cil/oc/api/driver/item/HostAware.java +++ b/src/main/java/li/cil/oc/api/driver/item/HostAware.java @@ -1,7 +1,7 @@ package li.cil.oc.api.driver.item; import li.cil.oc.api.network.EnvironmentHost; -import li.cil.oc.api.driver.Item; +import li.cil.oc.api.driver.DriverItem; import net.minecraft.item.ItemStack; /** @@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack; * This is useful for drivers for components that should only go into certain * environments, such as robot specific upgrades. */ -public interface HostAware extends Item { +public interface HostAware extends DriverItem { /** * Used to determine the item types this driver handles. *

diff --git a/src/main/java/li/cil/oc/api/driver/item/Inventory.java b/src/main/java/li/cil/oc/api/driver/item/Inventory.java index 2e0eff061..bfc511ad7 100644 --- a/src/main/java/li/cil/oc/api/driver/item/Inventory.java +++ b/src/main/java/li/cil/oc/api/driver/item/Inventory.java @@ -1,6 +1,6 @@ package li.cil.oc.api.driver.item; -import li.cil.oc.api.driver.Item; +import li.cil.oc.api.driver.DriverItem; import net.minecraft.item.ItemStack; /** @@ -10,7 +10,7 @@ import net.minecraft.item.ItemStack; * can be no hot-swappable inventories - at least none that are represented * in the GUI. */ -public interface Inventory extends Item { +public interface Inventory extends DriverItem { /** * The additional amount of inventory space the specified item provides. * diff --git a/src/main/java/li/cil/oc/api/driver/item/Memory.java b/src/main/java/li/cil/oc/api/driver/item/Memory.java index 3cd72a8f5..ac974e710 100644 --- a/src/main/java/li/cil/oc/api/driver/item/Memory.java +++ b/src/main/java/li/cil/oc/api/driver/item/Memory.java @@ -1,6 +1,6 @@ package li.cil.oc.api.driver.item; -import li.cil.oc.api.driver.Item; +import li.cil.oc.api.driver.DriverItem; import net.minecraft.item.ItemStack; /** @@ -10,7 +10,7 @@ import net.minecraft.item.ItemStack; * work. If it is installed in an external inventory the computer will not * recognize the memory. */ -public interface Memory extends Item { +public interface Memory extends DriverItem { /** * The amount of RAM this component provides, as a generic scaling factor. *

diff --git a/src/main/java/li/cil/oc/api/driver/item/Processor.java b/src/main/java/li/cil/oc/api/driver/item/Processor.java index f222b66cc..51e16a97d 100644 --- a/src/main/java/li/cil/oc/api/driver/item/Processor.java +++ b/src/main/java/li/cil/oc/api/driver/item/Processor.java @@ -1,6 +1,6 @@ package li.cil.oc.api.driver.item; -import li.cil.oc.api.driver.Item; +import li.cil.oc.api.driver.DriverItem; import li.cil.oc.api.machine.Architecture; import net.minecraft.item.ItemStack; @@ -12,7 +12,7 @@ import net.minecraft.item.ItemStack; * work. If it is installed in an external inventory the server will not * recognize the memory. */ -public interface Processor extends Item { +public interface Processor extends DriverItem { /** * The additional number of components supported if this processor is * installed in the server. diff --git a/src/main/java/li/cil/oc/api/internal/Rotatable.java b/src/main/java/li/cil/oc/api/internal/Rotatable.java index 68f1cab0e..2695770f1 100644 --- a/src/main/java/li/cil/oc/api/internal/Rotatable.java +++ b/src/main/java/li/cil/oc/api/internal/Rotatable.java @@ -1,12 +1,13 @@ package li.cil.oc.api.internal; +import li.cil.oc.api.driver.DriverItem; import net.minecraft.util.EnumFacing; /** * This interface is implemented by the computer case and robot tile entities * to allow item components to query the orientation of their host, i.e. to * allow getting the facing of the tile entity passed to their drivers' - * {@link li.cil.oc.api.driver.Item#createEnvironment(net.minecraft.item.ItemStack, li.cil.oc.api.network.EnvironmentHost)} + * {@link DriverItem#createEnvironment(net.minecraft.item.ItemStack, li.cil.oc.api.network.EnvironmentHost)} * method. *

* This interface is not meant to be implemented, just used. diff --git a/src/main/java/li/cil/oc/api/network/Node.java b/src/main/java/li/cil/oc/api/network/Node.java index 505cf6401..f5013938d 100644 --- a/src/main/java/li/cil/oc/api/network/Node.java +++ b/src/main/java/li/cil/oc/api/network/Node.java @@ -1,6 +1,8 @@ package li.cil.oc.api.network; import li.cil.oc.api.Persistable; +import li.cil.oc.api.driver.DriverBlock; +import li.cil.oc.api.driver.DriverItem; /** * A single node in a {@link Network}. @@ -17,9 +19,9 @@ import li.cil.oc.api.Persistable; * All other kinds of nodes you may come up with will also have to be * handled manually. *

- * Items have to be handled by a corresponding {@link li.cil.oc.api.driver.Item}. + * Items have to be handled by a corresponding {@link DriverItem}. * Existing blocks may be interfaced with the adapter block if a - * {@link li.cil.oc.api.driver.SidedBlock} exists that supports the block. + * {@link DriverBlock} exists that supports the block. *

* Important: like the Network interface you must not create * your own implementations of this interface. Use the factory methods in the diff --git a/src/main/java/li/cil/oc/api/prefab/ManagedEnvironment.java b/src/main/java/li/cil/oc/api/prefab/AbstractManagedEnvironment.java similarity index 93% rename from src/main/java/li/cil/oc/api/prefab/ManagedEnvironment.java rename to src/main/java/li/cil/oc/api/prefab/AbstractManagedEnvironment.java index 3841707c6..cb6c39145 100644 --- a/src/main/java/li/cil/oc/api/prefab/ManagedEnvironment.java +++ b/src/main/java/li/cil/oc/api/prefab/AbstractManagedEnvironment.java @@ -1,5 +1,6 @@ package li.cil.oc.api.prefab; +import li.cil.oc.api.network.ManagedEnvironment; import li.cil.oc.api.network.Message; import li.cil.oc.api.network.Node; import net.minecraft.nbt.NBTTagCompound; @@ -8,7 +9,7 @@ import net.minecraft.nbt.NBTTagCompound; * Simple base implementation of the ManagedEnvironment interface, so * unused methods don't clutter the implementing class. */ -public abstract class ManagedEnvironment implements li.cil.oc.api.network.ManagedEnvironment { +public abstract class AbstractManagedEnvironment implements ManagedEnvironment { public static final String NODE_TAG = "node"; // Should be initialized using setNode(api.Network.newNode()). See TileEntityEnvironment. diff --git a/src/main/java/li/cil/oc/api/prefab/DriverItem.java b/src/main/java/li/cil/oc/api/prefab/DriverItem.java index 57001429c..e44e4b779 100644 --- a/src/main/java/li/cil/oc/api/prefab/DriverItem.java +++ b/src/main/java/li/cil/oc/api/prefab/DriverItem.java @@ -19,7 +19,7 @@ import net.minecraft.nbt.NBTTagCompound; * @see li.cil.oc.api.network.ManagedEnvironment */ @SuppressWarnings("UnusedDeclaration") -public abstract class DriverItem implements li.cil.oc.api.driver.Item { +public abstract class DriverItem implements li.cil.oc.api.driver.DriverItem { protected final ItemStack[] items; protected DriverItem(final ItemStack... items) { diff --git a/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java b/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java index 60f2af3c9..40ca7f193 100644 --- a/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java +++ b/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java @@ -1,5 +1,6 @@ package li.cil.oc.api.prefab; +import li.cil.oc.api.driver.DriverBlock; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemBlock; @@ -27,7 +28,7 @@ import net.minecraftforge.oredict.OreDictionary; * @see li.cil.oc.api.network.ManagedEnvironment */ @SuppressWarnings("UnusedDeclaration") -public abstract class DriverSidedBlock implements li.cil.oc.api.driver.SidedBlock { +public abstract class DriverSidedBlock implements DriverBlock { protected final ItemStack[] blocks; protected DriverSidedBlock(final ItemStack... blocks) { diff --git a/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java b/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java index 0b06f2e6b..e17b3b0d8 100644 --- a/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java +++ b/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java @@ -1,5 +1,6 @@ package li.cil.oc.api.prefab; +import li.cil.oc.api.driver.DriverBlock; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.EnumFacing; @@ -9,7 +10,7 @@ import net.minecraft.world.World; * To limit sidedness, I recommend overriding {@link #worksWith(World, BlockPos, EnumFacing)} * and calling super.worksWith in addition to the side check. */ -public abstract class DriverSidedTileEntity implements li.cil.oc.api.driver.SidedBlock { +public abstract class DriverSidedTileEntity implements DriverBlock { public abstract Class getTileEntityClass(); @Override diff --git a/src/main/java/li/cil/oc/api/prefab/TileEntityEnvironment.java b/src/main/java/li/cil/oc/api/prefab/TileEntityEnvironment.java index 531552534..010fd8242 100644 --- a/src/main/java/li/cil/oc/api/prefab/TileEntityEnvironment.java +++ b/src/main/java/li/cil/oc/api/prefab/TileEntityEnvironment.java @@ -7,7 +7,6 @@ import li.cil.oc.api.network.Node; import li.cil.oc.api.network.Visibility; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ITickable; /** * TileEntities can implement the {@link li.cil.oc.api.network.Environment} @@ -18,7 +17,9 @@ import net.minecraft.util.ITickable; * network as an index structure to find other nodes connected to them. */ @SuppressWarnings("UnusedDeclaration") -public abstract class TileEntityEnvironment extends TileEntity implements Environment, ITickable { +public abstract class TileEntityEnvironment extends TileEntity implements Environment { + private static final String TAG_NODE = "oc:node"; + /** * This must be set in subclasses to the node that is used to represent * this tile entity. @@ -56,9 +57,6 @@ public abstract class TileEntityEnvironment extends TileEntity implements Enviro */ protected Node node; - // See updateEntity(). - protected boolean addedToNetwork = false; - // ----------------------------------------------------------------------- // @Override @@ -97,16 +95,8 @@ public abstract class TileEntityEnvironment extends TileEntity implements Enviro // ----------------------------------------------------------------------- // @Override - public void update() { - // On the first update, try to add our node to nearby networks. We do - // this in the update logic, not in validate() because we need to access - // neighboring tile entities, which isn't possible in validate(). - // We could alternatively check node != null && node.network() == null, - // but this has somewhat better performance, and makes it clearer. - if (!addedToNetwork) { - addedToNetwork = true; - Network.joinOrCreateNetwork(this); - } + public void onLoad() { + Network.joinOrCreateNetwork(this); } @Override @@ -139,7 +129,7 @@ public abstract class TileEntityEnvironment extends TileEntity implements Enviro // to continue working without interruption across loads. If the // node is a power connector this is also required to restore the // internal energy buffer of the node. - node.load(nbt.getCompoundTag("oc:node")); + node.load(nbt.getCompoundTag(TAG_NODE)); } } @@ -150,7 +140,7 @@ public abstract class TileEntityEnvironment extends TileEntity implements Enviro if (node != null && node.host() == this) { final NBTTagCompound nodeNbt = new NBTTagCompound(); node.save(nodeNbt); - nbt.setTag("oc:node", nodeNbt); + nbt.setTag(TAG_NODE, nodeNbt); } return nbt; } diff --git a/src/main/scala/li/cil/oc/common/IMC.scala b/src/main/scala/li/cil/oc/common/IMC.scala index 3b52950ca..6f536c9f6 100644 --- a/src/main/scala/li/cil/oc/common/IMC.scala +++ b/src/main/scala/li/cil/oc/common/IMC.scala @@ -5,6 +5,7 @@ import java.lang.reflect.Modifier import li.cil.oc.OpenComputers import li.cil.oc.Settings +import li.cil.oc.api import li.cil.oc.common.item.data.PrintData import li.cil.oc.common.template.AssemblerTemplates import li.cil.oc.common.template.DisassemblerTemplates @@ -25,7 +26,7 @@ import scala.collection.convert.WrapAsScala._ object IMC { def handleEvent(e: IMCEvent): Unit = { for (message <- e.getMessages) { - if (message.key == "registerAssemblerTemplate" && message.isNBTMessage) { + if (message.key == api.IMC.REGISTER_ASSEMBLER_TEMPLATE && message.isNBTMessage) { if (message.getNBTValue.hasKey("name", NBT.TAG_STRING)) OpenComputers.log.info(s"Registering new assembler template '${message.getNBTValue.getString("name")}' from mod ${message.getSender}.") else @@ -34,7 +35,7 @@ object IMC { case t: Throwable => OpenComputers.log.warn("Failed registering assembler template.", t) } } - else if (message.key == "registerDisassemblerTemplate" && message.isNBTMessage) { + else if (message.key == api.IMC.REGISTER_DISASSEMBLER_TEMPLATE && message.isNBTMessage) { if (message.getNBTValue.hasKey("name", NBT.TAG_STRING)) OpenComputers.log.info(s"Registering new disassembler template '${message.getNBTValue.getString("name")}' from mod ${message.getSender}.") else @@ -43,25 +44,25 @@ object IMC { case t: Throwable => OpenComputers.log.warn("Failed registering disassembler template.", t) } } - else if (message.key == "registerToolDurabilityProvider" && message.isStringMessage) { + else if (message.key == api.IMC.REGISTER_TOOL_DURABILITY_PROVIDER && message.isStringMessage) { OpenComputers.log.info(s"Registering new tool durability provider '${message.getStringValue}' from mod ${message.getSender}.") try ToolDurabilityProviders.add(getStaticMethod(message.getStringValue, classOf[ItemStack])) catch { case t: Throwable => OpenComputers.log.warn("Failed registering tool durability provider.", t) } } - else if (message.key == "registerWrenchTool" && message.isStringMessage) { + else if (message.key == api.IMC.REGISTER_WRENCH_TOOL && message.isStringMessage) { OpenComputers.log.info(s"Registering new wrench usage '${message.getStringValue}' from mod ${message.getSender}.") try Wrench.addUsage(getStaticMethod(message.getStringValue, classOf[EntityPlayer], classOf[BlockPos], classOf[Boolean])) catch { case t: Throwable => OpenComputers.log.warn("Failed registering wrench usage.", t) } } - else if (message.key == "registerWrenchToolCheck" && message.isStringMessage) { + else if (message.key == api.IMC.REGISTER_WRENCH_TOOL_CHECK && message.isStringMessage) { OpenComputers.log.info(s"Registering new wrench tool check '${message.getStringValue}' from mod ${message.getSender}.") try Wrench.addCheck(getStaticMethod(message.getStringValue, classOf[ItemStack])) catch { case t: Throwable => OpenComputers.log.warn("Failed registering wrench check.", t) } } - else if (message.key == "registerItemCharge" && message.isNBTMessage) { + else if (message.key == api.IMC.REGISTER_ITEM_CHARGE && message.isNBTMessage) { OpenComputers.log.info(s"Registering new item charge implementation '${message.getNBTValue.getString("name")}' from mod ${message.getSender}.") try ItemCharge.add( getStaticMethod(message.getNBTValue.getString("canCharge"), classOf[ItemStack]), @@ -70,35 +71,35 @@ object IMC { case t: Throwable => OpenComputers.log.warn("Failed registering item charge implementation.", t) } } - else if (message.key == "blacklistPeripheral" && message.isStringMessage) { + else if (message.key == api.IMC.BLACKLIST_PERIPHERAL && message.isStringMessage) { OpenComputers.log.info(s"Blacklisting CC peripheral '${message.getStringValue}' as requested by mod ${message.getSender}.") if (!Settings.get.peripheralBlacklist.contains(message.getStringValue)) { Settings.get.peripheralBlacklist.add(message.getStringValue) } } - else if (message.key == "blacklistHost" && message.isNBTMessage) { + else if (message.key == api.IMC.BLACKLIST_HOST && message.isNBTMessage) { OpenComputers.log.info(s"Blacklisting component '${message.getNBTValue.getString("name")}' for host '${message.getNBTValue.getString("host")}' as requested by mod ${message.getSender}.") try Registry.blacklistHost(new ItemStack(message.getNBTValue.getCompoundTag("item")), Class.forName(message.getNBTValue.getString("host"))) catch { case t: Throwable => OpenComputers.log.warn("Failed blacklisting component.", t) } } - else if (message.key == "registerAssemblerFilter" && message.isStringMessage) { + else if (message.key == api.IMC.REGISTER_ASSEMBLER_FILTER && message.isStringMessage) { OpenComputers.log.info(s"Registering new assembler template filter '${message.getStringValue}' from mod ${message.getSender}.") try AssemblerTemplates.addFilter(message.getStringValue) catch { case t: Throwable => OpenComputers.log.warn("Failed registering assembler template filter.", t) } } - else if (message.key == "registerInkProvider" && message.isStringMessage) { + else if (message.key == api.IMC.REGISTER_INK_PROVIDER && message.isStringMessage) { OpenComputers.log.info(s"Registering new ink provider '${message.getStringValue}' from mod ${message.getSender}.") try PrintData.addInkProvider(getStaticMethod(message.getStringValue, classOf[ItemStack])) catch { case t: Throwable => OpenComputers.log.warn("Failed registering ink provider.", t) } } - else if (message.key == "registerCustomPowerSystem" && message.isStringMessage) { + else if (message.key == api.IMC.REGISTER_CUSTOM_POWER_SYSTEM && message.isStringMessage) { OpenComputers.log.info(s"Was told there is an unknown power system present by mod ${message.getSender}.") Settings.get.is3rdPartyPowerSystemPresent = message.getStringValue == "true" } - else if (message.key == "registerProgramDiskLabel" && message.isNBTMessage) { + else if (message.key == api.IMC.REGISTER_PROGRAM_DISK_LABEL && message.isNBTMessage) { OpenComputers.log.info(s"Registering new program location mapping for program '${message.getNBTValue.getString("program")}' being on disk '${message.getNBTValue.getString("label")}' from mod ${message.getSender}.") ProgramLocations.addMapping(message.getNBTValue.getString("program"), message.getNBTValue.getString("label"), message.getNBTValue.getTagList("architectures", NBT.TAG_STRING).map((tag: NBTTagString) => tag.getString()).toArray: _*) } @@ -108,7 +109,7 @@ object IMC { } } - def getStaticMethod(name: String, signature: Class[_]*) = { + def getStaticMethod(name: String, signature: Class[_]*): Method = { val nameSplit = name.lastIndexOf('.') val className = name.substring(0, nameSplit) val methodName = name.substring(nameSplit + 1) diff --git a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala index aecfdaf95..4d429ca2f 100644 --- a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala +++ b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.client.renderer.TextBufferRenderCache import li.cil.oc.client.renderer.font.TextBufferRenderData import li.cil.oc.client.{ComponentTracker => ClientComponentTracker} @@ -41,7 +42,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class TextBuffer(val host: EnvironmentHost) extends prefab.ManagedEnvironment with api.internal.TextBuffer with DeviceInfo { +class TextBuffer(val host: EnvironmentHost) extends AbstractManagedEnvironment with api.internal.TextBuffer with DeviceInfo { override val node = api.Network.newNode(this, Visibility.Network). withComponent("screen"). withConnector(). diff --git a/src/main/scala/li/cil/oc/common/init/Items.scala b/src/main/scala/li/cil/oc/common/init/Items.scala index be082bfc3..13bf04329 100644 --- a/src/main/scala/li/cil/oc/common/init/Items.scala +++ b/src/main/scala/li/cil/oc/common/init/Items.scala @@ -157,10 +157,6 @@ object Items extends ItemAPI { val registeredItems: ArrayBuffer[ItemStack] = mutable.ArrayBuffer.empty[ItemStack] - @Deprecated - override def registerFloppy(name: String, color: EnumDyeColor, factory: Callable[FileSystem]): ItemStack = - registerFloppy(name, color, factory, doRecipeCycling = false) - override def registerFloppy(name: String, color: EnumDyeColor, factory: Callable[FileSystem], doRecipeCycling: Boolean): ItemStack = { val stack = Loot.registerLootDisk(name, color, factory, doRecipeCycling) diff --git a/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala b/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala index aa0b84227..6e801639f 100644 --- a/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala +++ b/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala @@ -3,7 +3,7 @@ package li.cil.oc.common.inventory import li.cil.oc.OpenComputers import li.cil.oc.api import li.cil.oc.api.Driver -import li.cil.oc.api.driver.{Item => ItemDriver} +import li.cil.oc.api.driver.{DriverItem => ItemDriver} import li.cil.oc.api.network import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.ManagedEnvironment diff --git a/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala b/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala index fe91ec26e..3fa0685e6 100644 --- a/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala +++ b/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala @@ -2,6 +2,7 @@ package li.cil.oc.common.item.traits import li.cil.oc.Settings import li.cil.oc.api +import li.cil.oc.api.driver.DriverItem import li.cil.oc.common.item.Delegator import li.cil.oc.util.BlockPosition import li.cil.oc.util.Rarity @@ -64,7 +65,7 @@ trait Delegate { protected def tierFromDriver(stack: ItemStack): Int = api.Driver.driverFor(stack) match { - case driver: api.driver.Item => driver.tier(stack) + case driver: DriverItem => driver.tier(stack) case _ => 0 } diff --git a/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala b/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala index 69834c25a..c848cca54 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala @@ -9,6 +9,7 @@ import li.cil.oc.api.Driver import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.driver.DeviceInfo.DeviceAttribute import li.cil.oc.api.driver.DeviceInfo.DeviceClass +import li.cil.oc.api.driver.DriverBlock import li.cil.oc.api.internal import li.cil.oc.api.network.Analyzable import li.cil.oc.api.network._ @@ -29,7 +30,7 @@ import scala.collection.mutable class Adapter extends traits.Environment with traits.ComponentInventory with traits.Tickable with traits.OpenSides with Analyzable with internal.Adapter with DeviceInfo { val node = api.Network.newNode(this, Visibility.Network).create() - private val blocks = Array.fill[Option[(ManagedEnvironment, api.driver.SidedBlock)]](6)(None) + private val blocks = Array.fill[Option[(ManagedEnvironment, DriverBlock)]](6)(None) private val updatingBlocks = mutable.ArrayBuffer.empty[ManagedEnvironment] diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/ComponentInventory.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/ComponentInventory.scala index e285e91e4..a61d12e5c 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/ComponentInventory.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/ComponentInventory.scala @@ -1,6 +1,6 @@ package li.cil.oc.common.tileentity.traits -import li.cil.oc.api.driver.Item +import li.cil.oc.api.driver.DriverItem import li.cil.oc.api.network.ManagedEnvironment import li.cil.oc.api.network.Node import li.cil.oc.common.EventHandler @@ -115,7 +115,7 @@ trait ComponentInventory extends Environment with Inventory with inventory.Compo } } - override protected def save(component: ManagedEnvironment, driver: Item, stack: ItemStack): Unit = { + override protected def save(component: ManagedEnvironment, driver: DriverItem, stack: ItemStack): Unit = { if (isServer) { super.save(component, driver, stack) } diff --git a/src/main/scala/li/cil/oc/integration/ManagedTileEntityEnvironment.java b/src/main/scala/li/cil/oc/integration/ManagedTileEntityEnvironment.java index 7c27ce507..4d17b0bc4 100644 --- a/src/main/scala/li/cil/oc/integration/ManagedTileEntityEnvironment.java +++ b/src/main/scala/li/cil/oc/integration/ManagedTileEntityEnvironment.java @@ -2,9 +2,9 @@ package li.cil.oc.integration; import li.cil.oc.api.Network; import li.cil.oc.api.network.Visibility; -import li.cil.oc.api.prefab.ManagedEnvironment; +import li.cil.oc.api.prefab.AbstractManagedEnvironment; -public class ManagedTileEntityEnvironment extends ManagedEnvironment { +public class ManagedTileEntityEnvironment extends AbstractManagedEnvironment { protected final T tileEntity; public ManagedTileEntityEnvironment(final T tileEntity, final String name) { diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverFluidHandler.java b/src/main/scala/li/cil/oc/integration/minecraft/DriverFluidHandler.java index 99c4bb740..505ac64a5 100644 --- a/src/main/scala/li/cil/oc/integration/minecraft/DriverFluidHandler.java +++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverFluidHandler.java @@ -1,5 +1,6 @@ package li.cil.oc.integration.minecraft; +import li.cil.oc.api.driver.DriverBlock; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -12,7 +13,7 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; -public final class DriverFluidHandler implements li.cil.oc.api.driver.SidedBlock { +public final class DriverFluidHandler implements DriverBlock { @Override public boolean worksWith(final World world, final BlockPos pos, final EnumFacing side) { final TileEntity tileEntity = world.getTileEntity(pos); diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/Item.scala b/src/main/scala/li/cil/oc/integration/opencomputers/Item.scala index 6962cc7e2..b19ad979e 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/Item.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/Item.scala @@ -3,6 +3,7 @@ package li.cil.oc.integration.opencomputers import li.cil.oc.Settings import li.cil.oc.api import li.cil.oc.api.driver +import li.cil.oc.api.driver.DriverItem import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.internal import li.cil.oc.common.Tier @@ -10,7 +11,7 @@ import li.cil.oc.server.driver.Registry import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound -trait Item extends driver.Item { +trait Item extends DriverItem { def worksWith(stack: ItemStack, host: Class[_ <: EnvironmentHost]): Boolean = worksWith(stack) && !Registry.blacklist.exists { case (blacklistedStack, blacklistedHost) => @@ -20,29 +21,29 @@ trait Item extends driver.Item { override def tier(stack: ItemStack) = Tier.One - override def dataTag(stack: ItemStack) = Item.dataTag(stack) + override def dataTag(stack: ItemStack): NBTTagCompound = Item.dataTag(stack) - protected def isOneOf(stack: ItemStack, items: api.detail.ItemInfo*) = items.filter(_ != null).contains(api.Items.get(stack)) + protected def isOneOf(stack: ItemStack, items: api.detail.ItemInfo*): Boolean = items.filter(_ != null).contains(api.Items.get(stack)) - protected def isAdapter(host: Class[_ <: EnvironmentHost]) = classOf[internal.Adapter].isAssignableFrom(host) + protected def isAdapter(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Adapter].isAssignableFrom(host) - protected def isComputer(host: Class[_ <: EnvironmentHost]) = classOf[internal.Case].isAssignableFrom(host) + protected def isComputer(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Case].isAssignableFrom(host) - protected def isRobot(host: Class[_ <: EnvironmentHost]) = classOf[internal.Robot].isAssignableFrom(host) + protected def isRobot(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Robot].isAssignableFrom(host) - protected def isRotatable(host: Class[_ <: EnvironmentHost]) = classOf[internal.Rotatable].isAssignableFrom(host) + protected def isRotatable(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Rotatable].isAssignableFrom(host) - protected def isServer(host: Class[_ <: EnvironmentHost]) = classOf[internal.Server].isAssignableFrom(host) + protected def isServer(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Server].isAssignableFrom(host) - protected def isTablet(host: Class[_ <: EnvironmentHost]) = classOf[internal.Tablet].isAssignableFrom(host) + protected def isTablet(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Tablet].isAssignableFrom(host) - protected def isMicrocontroller(host: Class[_ <: EnvironmentHost]) = classOf[internal.Microcontroller].isAssignableFrom(host) + protected def isMicrocontroller(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Microcontroller].isAssignableFrom(host) - protected def isDrone(host: Class[_ <: EnvironmentHost]) = classOf[internal.Drone].isAssignableFrom(host) + protected def isDrone(host: Class[_ <: EnvironmentHost]): Boolean = classOf[internal.Drone].isAssignableFrom(host) } object Item { - def dataTag(stack: ItemStack) = { + def dataTag(stack: ItemStack): NBTTagCompound = { if (!stack.hasTagCompound) { stack.setTagCompound(new NBTTagCompound()) } diff --git a/src/main/scala/li/cil/oc/server/component/CPU.scala b/src/main/scala/li/cil/oc/server/component/CPU.scala index 185d95e5b..ecaef6491 100644 --- a/src/main/scala/li/cil/oc/server/component/CPU.scala +++ b/src/main/scala/li/cil/oc/server/component/CPU.scala @@ -10,10 +10,11 @@ import li.cil.oc.api.Network import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import scala.collection.convert.WrapAsJava._ -class CPU(val tier: Int) extends prefab.ManagedEnvironment with DeviceInfo { +class CPU(val tier: Int) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Neighbors). create() diff --git a/src/main/scala/li/cil/oc/server/component/DataCard.scala b/src/main/scala/li/cil/oc/server/component/DataCard.scala index dc1efecd0..d7388906d 100644 --- a/src/main/scala/li/cil/oc/server/component/DataCard.scala +++ b/src/main/scala/li/cil/oc/server/component/DataCard.scala @@ -24,13 +24,14 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.nbt.NBTTagCompound import org.apache.commons.codec.binary.Base64 import org.apache.commons.io.output.ByteArrayOutputStream import scala.collection.convert.WrapAsJava._ -abstract class DataCard extends prefab.ManagedEnvironment with DeviceInfo { +abstract class DataCard extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Neighbors). withComponent("data", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/DebugCard.scala b/src/main/scala/li/cil/oc/server/component/DebugCard.scala index cce4c144a..18ed801e0 100644 --- a/src/main/scala/li/cil/oc/server/component/DebugCard.scala +++ b/src/main/scala/li/cil/oc/server/component/DebugCard.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.network.Packet import li.cil.oc.api.network.SidedEnvironment import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.api.prefab.AbstractValue import li.cil.oc.server.PacketSender import li.cil.oc.server.network.DebugNetwork @@ -56,7 +57,7 @@ import net.minecraftforge.fml.common.ModAPIManager import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class DebugCard(host: EnvironmentHost) extends prefab.ManagedEnvironment with DebugNode { +class DebugCard(host: EnvironmentHost) extends AbstractManagedEnvironment with DebugNode { override val node: ComponentConnector = Network.newNode(this, Visibility.Neighbors). withComponent("debug"). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala b/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala index e96f02907..b312b410d 100644 --- a/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala +++ b/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala @@ -19,6 +19,7 @@ import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Node import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.Slot import li.cil.oc.common.Sound import li.cil.oc.common.inventory.ComponentInventory @@ -34,7 +35,7 @@ import net.minecraft.util.EnumHand import scala.collection.convert.WrapAsJava._ -class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends prefab.ManagedEnvironment with ItemStackInventory with ComponentInventory with RackMountable with Analyzable with DeviceInfo { +class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends AbstractManagedEnvironment with ItemStackInventory with ComponentInventory with RackMountable with Analyzable with DeviceInfo { // Stored for filling data packet when queried. var lastAccess = 0L @@ -142,13 +143,13 @@ class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends pre // Persistable override def load(nbt: NBTTagCompound) { - super[ManagedEnvironment].load(nbt) + super[AbstractManagedEnvironment].load(nbt) super[ComponentInventory].load(nbt) connectComponents() } override def save(nbt: NBTTagCompound) { - super[ManagedEnvironment].save(nbt) + super[AbstractManagedEnvironment].save(nbt) super[ComponentInventory].save(nbt) } diff --git a/src/main/scala/li/cil/oc/server/component/Drive.scala b/src/main/scala/li/cil/oc/server/component/Drive.scala index 76fb9116e..d0e3ab33d 100644 --- a/src/main/scala/li/cil/oc/server/component/Drive.scala +++ b/src/main/scala/li/cil/oc/server/component/Drive.scala @@ -22,13 +22,14 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.server.{PacketSender => ServerPacketSender} import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.DimensionManager import scala.collection.convert.WrapAsJava._ -class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Option[EnvironmentHost], val sound: Option[String], val speed: Int) extends prefab.ManagedEnvironment with DeviceInfo { +class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Option[EnvironmentHost], val sound: Option[String], val speed: Int) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("drive", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/Drone.scala b/src/main/scala/li/cil/oc/server/component/Drone.scala index b64b1940d..93183a524 100644 --- a/src/main/scala/li/cil/oc/server/component/Drone.scala +++ b/src/main/scala/li/cil/oc/server/component/Drone.scala @@ -13,6 +13,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.entity import li.cil.oc.util.ExtendedArguments._ import li.cil.oc.util.InventoryUtils @@ -24,7 +25,7 @@ import net.minecraft.util.SoundCategory import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ -class Drone(val agent: entity.Drone) extends prefab.ManagedEnvironment with Agent with DeviceInfo { +class Drone(val agent: entity.Drone) extends AbstractManagedEnvironment with Agent with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("drone"). withConnector(Settings.get.bufferDrone). diff --git a/src/main/scala/li/cil/oc/server/component/EEPROM.scala b/src/main/scala/li/cil/oc/server/component/EEPROM.scala index 80167edbe..1367527e6 100644 --- a/src/main/scala/li/cil/oc/server/component/EEPROM.scala +++ b/src/main/scala/li/cil/oc/server/component/EEPROM.scala @@ -14,11 +14,12 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.nbt.NBTTagCompound import scala.collection.convert.WrapAsJava._ -class EEPROM extends prefab.ManagedEnvironment with DeviceInfo { +class EEPROM extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Neighbors). withComponent("eeprom", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/FileSystem.scala b/src/main/scala/li/cil/oc/server/component/FileSystem.scala index 4b8011a7d..a724b925f 100644 --- a/src/main/scala/li/cil/oc/server/component/FileSystem.scala +++ b/src/main/scala/li/cil/oc/server/component/FileSystem.scala @@ -19,6 +19,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.api.prefab.AbstractValue import li.cil.oc.common.SaveHandler import li.cil.oc.server.{PacketSender => ServerPacketSender} @@ -31,7 +32,7 @@ import net.minecraftforge.common.util.Constants.NBT import scala.collection.convert.WrapAsJava._ import scala.collection.mutable -class FileSystem(val fileSystem: IFileSystem, var label: Label, val host: Option[EnvironmentHost], val sound: Option[String], val speed: Int) extends prefab.ManagedEnvironment with DeviceInfo { +class FileSystem(val fileSystem: IFileSystem, var label: Label, val host: Option[EnvironmentHost], val sound: Option[String], val speed: Int) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("filesystem", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/Geolyzer.scala b/src/main/scala/li/cil/oc/server/component/Geolyzer.scala index f21423b19..3d004cf6a 100644 --- a/src/main/scala/li/cil/oc/server/component/Geolyzer.scala +++ b/src/main/scala/li/cil/oc/server/component/Geolyzer.scala @@ -18,6 +18,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Message import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.BlockPosition import li.cil.oc.util.DatabaseAccess import li.cil.oc.util.ExtendedArguments._ @@ -33,7 +34,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ import scala.language.existentials -class Geolyzer(val host: EnvironmentHost) extends prefab.ManagedEnvironment with DeviceInfo { +class Geolyzer(val host: EnvironmentHost) extends AbstractManagedEnvironment with DeviceInfo { override val node = api.Network.newNode(this, Visibility.Network). withComponent("geolyzer"). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala index d7f3530f2..f38820ccc 100644 --- a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala +++ b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.PackedColor import net.minecraft.nbt.NBTTagCompound @@ -33,7 +34,7 @@ import scala.util.matching.Regex // saved, but before the computer was saved, leading to mismatching states in // the save file - a Bad Thing (TM). -class GraphicsCard(val tier: Int) extends prefab.ManagedEnvironment with DeviceInfo { +class GraphicsCard(val tier: Int) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Neighbors). withComponent("gpu"). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/InternetCard.scala b/src/main/scala/li/cil/oc/server/component/InternetCard.scala index 463ec21ce..a3827e443 100644 --- a/src/main/scala/li/cil/oc/server/component/InternetCard.scala +++ b/src/main/scala/li/cil/oc/server/component/InternetCard.scala @@ -28,6 +28,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.api.prefab.AbstractValue import li.cil.oc.util.ThreadPoolFactory import net.minecraft.server.MinecraftServer @@ -37,7 +38,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class InternetCard extends prefab.ManagedEnvironment with DeviceInfo { +class InternetCard extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("internet", Visibility.Neighbors). create() diff --git a/src/main/scala/li/cil/oc/server/component/Keyboard.scala b/src/main/scala/li/cil/oc/server/component/Keyboard.scala index 3d8dee200..78c6a8a42 100644 --- a/src/main/scala/li/cil/oc/server/component/Keyboard.scala +++ b/src/main/scala/li/cil/oc/server/component/Keyboard.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Message import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.entity.player.EntityPlayer import scala.collection.convert.WrapAsJava._ @@ -22,7 +23,7 @@ import scala.collection.mutable // TODO key up when screen is disconnected from which the key down came // TODO key up after load for anything that was pressed -class Keyboard(val host: EnvironmentHost) extends prefab.ManagedEnvironment with api.internal.Keyboard with DeviceInfo { +class Keyboard(val host: EnvironmentHost) extends AbstractManagedEnvironment with api.internal.Keyboard with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("keyboard"). create() diff --git a/src/main/scala/li/cil/oc/server/component/LinkedCard.scala b/src/main/scala/li/cil/oc/server/component/LinkedCard.scala index 467cdb8ad..408993e47 100644 --- a/src/main/scala/li/cil/oc/server/component/LinkedCard.scala +++ b/src/main/scala/li/cil/oc/server/component/LinkedCard.scala @@ -13,13 +13,14 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network._ import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.server.network.QuantumNetwork import net.minecraft.nbt.NBTTagCompound import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ -class LinkedCard extends prefab.ManagedEnvironment with QuantumNetwork.QuantumNode with DeviceInfo { +class LinkedCard extends AbstractManagedEnvironment with QuantumNetwork.QuantumNode with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("tunnel", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/Memory.scala b/src/main/scala/li/cil/oc/server/component/Memory.scala index 64b63d5a0..ae0b16713 100644 --- a/src/main/scala/li/cil/oc/server/component/Memory.scala +++ b/src/main/scala/li/cil/oc/server/component/Memory.scala @@ -10,10 +10,11 @@ import li.cil.oc.api.Network import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import scala.collection.convert.WrapAsJava._ -class Memory(val tier: Int) extends prefab.ManagedEnvironment with DeviceInfo { +class Memory(val tier: Int) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Neighbors). create() diff --git a/src/main/scala/li/cil/oc/server/component/NetworkCard.scala b/src/main/scala/li/cil/oc/server/component/NetworkCard.scala index 933e17e9f..4d08deb22 100644 --- a/src/main/scala/li/cil/oc/server/component/NetworkCard.scala +++ b/src/main/scala/li/cil/oc/server/component/NetworkCard.scala @@ -18,6 +18,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.server.{PacketSender => ServerPacketSender} import net.minecraft.nbt._ @@ -25,7 +26,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment with RackBusConnectable with DeviceInfo { +class NetworkCard(val host: EnvironmentHost) extends AbstractManagedEnvironment with RackBusConnectable with DeviceInfo { protected val visibility: Visibility = host match { case _: Rack => Visibility.Neighbors case _ => Visibility.Network diff --git a/src/main/scala/li/cil/oc/server/component/RedstoneSignaller.scala b/src/main/scala/li/cil/oc/server/component/RedstoneSignaller.scala index e49ed739c..26cfc2e82 100644 --- a/src/main/scala/li/cil/oc/server/component/RedstoneSignaller.scala +++ b/src/main/scala/li/cil/oc/server/component/RedstoneSignaller.scala @@ -6,9 +6,10 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.nbt.NBTTagCompound -trait RedstoneSignaller extends prefab.ManagedEnvironment { +trait RedstoneSignaller extends AbstractManagedEnvironment { override val node = Network.newNode(this, Visibility.Network). withComponent("redstone", Visibility.Neighbors). create() diff --git a/src/main/scala/li/cil/oc/server/component/Robot.scala b/src/main/scala/li/cil/oc/server/component/Robot.scala index e8c4463ae..2c38af741 100644 --- a/src/main/scala/li/cil/oc/server/component/Robot.scala +++ b/src/main/scala/li/cil/oc/server/component/Robot.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.ToolDurabilityProviders import li.cil.oc.common.tileentity import li.cil.oc.server.PacketSender @@ -26,7 +27,7 @@ import net.minecraft.util.EnumParticleTypes import scala.collection.convert.WrapAsJava._ -class Robot(val agent: tileentity.Robot) extends prefab.ManagedEnvironment with Agent with DeviceInfo { +class Robot(val agent: tileentity.Robot) extends AbstractManagedEnvironment with Agent with DeviceInfo { override val node = api.Network.newNode(this, Visibility.Network). withComponent("robot"). withConnector(Settings.get.bufferRobot). diff --git a/src/main/scala/li/cil/oc/server/component/Tablet.scala b/src/main/scala/li/cil/oc/server/component/Tablet.scala index bb9aae736..d400b828a 100644 --- a/src/main/scala/li/cil/oc/server/component/Tablet.scala +++ b/src/main/scala/li/cil/oc/server/component/Tablet.scala @@ -13,11 +13,12 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.item.TabletWrapper import scala.collection.convert.WrapAsJava._ -class Tablet(val tablet: TabletWrapper) extends prefab.ManagedEnvironment with DeviceInfo { +class Tablet(val tablet: TabletWrapper) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("tablet"). withConnector(Settings.get.bufferTablet). diff --git a/src/main/scala/li/cil/oc/server/component/Transposer.scala b/src/main/scala/li/cil/oc/server/component/Transposer.scala index 2340b4bbb..ee91d6b4d 100644 --- a/src/main/scala/li/cil/oc/server/component/Transposer.scala +++ b/src/main/scala/li/cil/oc/server/component/Transposer.scala @@ -12,6 +12,7 @@ import li.cil.oc.api.machine.Arguments import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.tileentity import li.cil.oc.server.{PacketSender => ServerPacketSender} import li.cil.oc.util.BlockPosition @@ -22,7 +23,7 @@ import scala.language.existentials object Transposer { - abstract class Common extends prefab.ManagedEnvironment with traits.WorldInventoryAnalytics with traits.WorldTankAnalytics with traits.InventoryTransfer with DeviceInfo { + abstract class Common extends AbstractManagedEnvironment with traits.WorldInventoryAnalytics with traits.WorldTankAnalytics with traits.InventoryTransfer with DeviceInfo { override val node = api.Network.newNode(this, Visibility.Network). withComponent("transposer"). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeAngel.scala b/src/main/scala/li/cil/oc/server/component/UpgradeAngel.scala index 25f661139..c11a0e778 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeAngel.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeAngel.scala @@ -11,12 +11,13 @@ import li.cil.oc.api.driver.DeviceInfo.DeviceClass import li.cil.oc.api.network.Node import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import scala.collection.convert.WrapAsJava._ // Note-to-self: this has a component to allow the robot telling it has the // upgrade. -class UpgradeAngel extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeAngel extends AbstractManagedEnvironment with DeviceInfo { override val node: Node = Network.newNode(this, Visibility.Network). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeBattery.scala b/src/main/scala/li/cil/oc/server/component/UpgradeBattery.scala index 6932f4009..8f3d3ceb7 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeBattery.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeBattery.scala @@ -10,10 +10,11 @@ import li.cil.oc.api.Network import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import scala.collection.convert.WrapAsJava._ -class UpgradeBattery(val tier: Int) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeBattery(val tier: Int) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withConnector(Settings.get.bufferCapacitorUpgrades(tier)). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeChunkloader.scala b/src/main/scala/li/cil/oc/server/component/UpgradeChunkloader.scala index c8e4419ee..b3c81b428 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeChunkloader.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeChunkloader.scala @@ -15,13 +15,14 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.event.ChunkloaderUpgradeHandler import net.minecraftforge.common.ForgeChunkManager import net.minecraftforge.common.ForgeChunkManager.Ticket import scala.collection.convert.WrapAsJava._ -class UpgradeChunkloader(val host: EnvironmentHost) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeChunkloader(val host: EnvironmentHost) extends AbstractManagedEnvironment with DeviceInfo { override val node = api.Network.newNode(this, Visibility.Network). withComponent("chunkloader"). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala b/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala index 25189b991..09375493f 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.InventoryUtils import net.minecraft.entity.player.EntityPlayer import net.minecraft.inventory @@ -27,7 +28,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.mutable import scala.util.control.Breaks._ -class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("crafting"). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala b/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala index 5598dc5ab..187f22e4e 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.DatabaseAccess import li.cil.oc.util.ExtendedArguments._ import li.cil.oc.util.ItemUtils @@ -22,7 +23,7 @@ import net.minecraft.item.ItemStack import scala.collection.convert.WrapAsJava._ -class UpgradeDatabase(val data: IInventory) extends prefab.ManagedEnvironment with internal.Database with DeviceInfo { +class UpgradeDatabase(val data: IInventory) extends AbstractManagedEnvironment with internal.Database with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("database"). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala b/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala index 2ddf940c8..dd83ca348 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.enchantment.Enchantment import net.minecraft.enchantment.EnchantmentHelper import net.minecraft.init.Items @@ -23,7 +24,7 @@ import net.minecraft.nbt.NBTTagCompound import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ -class UpgradeExperience(val host: EnvironmentHost with internal.Agent) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeExperience(val host: EnvironmentHost with internal.Agent) extends AbstractManagedEnvironment with DeviceInfo { final val MaxLevel = 30 override val node = api.Network.newNode(this, Visibility.Network). diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala b/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala index f84585ba9..c3fa28a10 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.ExtendedNBT._ import net.minecraft.entity.item.EntityItem import net.minecraft.item.ItemStack @@ -23,7 +24,7 @@ import net.minecraft.tileentity.TileEntityFurnace import scala.collection.convert.WrapAsJava._ -class UpgradeGenerator(val host: EnvironmentHost with internal.Agent) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeGenerator(val host: EnvironmentHost with internal.Agent) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("generator", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeInventoryController.scala b/src/main/scala/li/cil/oc/server/component/UpgradeInventoryController.scala index f7c7818ab..56ad8c71c 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeInventoryController.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeInventoryController.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.tileentity import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedArguments._ @@ -33,7 +34,7 @@ object UpgradeInventoryController { override def getDeviceInfo: util.Map[String, String] = deviceInfo } - class Adapter(val host: EnvironmentHost) extends prefab.ManagedEnvironment with traits.WorldInventoryAnalytics with Common { + class Adapter(val host: EnvironmentHost) extends AbstractManagedEnvironment with traits.WorldInventoryAnalytics with Common { override val node = Network.newNode(this, Visibility.Network). withComponent("inventory_controller", Visibility.Network). create() @@ -45,7 +46,7 @@ object UpgradeInventoryController { override protected def checkSideForAction(args: Arguments, n: Int) = args.checkSideAny(n) } - class Drone(val host: EnvironmentHost with internal.Agent) extends prefab.ManagedEnvironment with traits.InventoryAnalytics with traits.InventoryWorldControlMk2 with traits.WorldInventoryAnalytics with traits.ItemInventoryControl with Common { + class Drone(val host: EnvironmentHost with internal.Agent) extends AbstractManagedEnvironment with traits.InventoryAnalytics with traits.InventoryWorldControlMk2 with traits.WorldInventoryAnalytics with traits.ItemInventoryControl with Common { override val node = Network.newNode(this, Visibility.Network). withComponent("inventory_controller", Visibility.Neighbors). create() @@ -63,7 +64,7 @@ object UpgradeInventoryController { override protected def checkSideForAction(args: Arguments, n: Int) = args.checkSideAny(n) } - class Robot(val host: EnvironmentHost with tileentity.Robot) extends prefab.ManagedEnvironment with traits.InventoryAnalytics with traits.InventoryWorldControlMk2 with traits.WorldInventoryAnalytics with traits.ItemInventoryControl with Common { + class Robot(val host: EnvironmentHost with tileentity.Robot) extends AbstractManagedEnvironment with traits.InventoryAnalytics with traits.InventoryWorldControlMk2 with traits.WorldInventoryAnalytics with traits.ItemInventoryControl with Common { override val node = Network.newNode(this, Visibility.Network). withComponent("inventory_controller", Visibility.Neighbors). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeLeash.scala b/src/main/scala/li/cil/oc/server/component/UpgradeLeash.scala index f5433902b..a2f3bae86 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeLeash.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeLeash.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Node import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.EventHandler import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedArguments._ @@ -29,7 +30,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class UpgradeLeash(val host: Entity) extends prefab.ManagedEnvironment with traits.WorldAware with DeviceInfo { +class UpgradeLeash(val host: Entity) extends AbstractManagedEnvironment with traits.WorldAware with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("leash"). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeMF.scala b/src/main/scala/li/cil/oc/server/component/UpgradeMF.scala index 3d79f3a07..b64ded5a1 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeMF.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeMF.scala @@ -15,6 +15,8 @@ import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedWorld._ import li.cil.oc.Settings import li.cil.oc.api +import li.cil.oc.api.driver.DriverBlock +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.nbt.NBTTagCompound import net.minecraft.tileentity.TileEntity import net.minecraft.util.EnumFacing @@ -27,13 +29,13 @@ import scala.collection.convert.WrapAsJava._ * * @author Sangar, Vexatos */ -class UpgradeMF(val host: EnvironmentHost, val coord: BlockPosition, val dir: EnumFacing) extends prefab.ManagedEnvironment with ChangeListener with DeviceInfo { +class UpgradeMF(val host: EnvironmentHost, val coord: BlockPosition, val dir: EnumFacing) extends AbstractManagedEnvironment with ChangeListener with DeviceInfo { override val node = api.Network.newNode(this, Visibility.None). withConnector(). create() private var otherEnv: Option[api.network.Environment] = None - private var otherDrv: Option[(ManagedEnvironment, api.driver.SidedBlock)] = None + private var otherDrv: Option[(ManagedEnvironment, DriverBlock)] = None private var blockData: Option[BlockData] = None override val canUpdate = true diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala b/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala index c862781b7..454e34042 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala @@ -17,6 +17,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.item.data.NavigationUpgradeData import li.cil.oc.server.network.Waypoints import li.cil.oc.util.BlockPosition @@ -27,7 +28,7 @@ import net.minecraft.util.EnumFacing import scala.collection.convert.WrapAsJava._ -class UpgradeNavigation(val host: EnvironmentHost with Rotatable) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeNavigation(val host: EnvironmentHost with Rotatable) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("navigation", Visibility.Neighbors). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala b/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala index 2c8358525..af990c35a 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradePiston.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedArguments._ import li.cil.oc.util.ExtendedWorld._ @@ -25,7 +26,7 @@ import net.minecraft.util.SoundCategory import scala.collection.convert.WrapAsJava._ -abstract class UpgradePiston(val host: EnvironmentHost) extends prefab.ManagedEnvironment with DeviceInfo { +abstract class UpgradePiston(val host: EnvironmentHost) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("piston"). withConnector(). diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeSign.scala b/src/main/scala/li/cil/oc/server/component/UpgradeSign.scala index d0d17b337..3b70e3057 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeSign.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeSign.scala @@ -13,6 +13,7 @@ import li.cil.oc.api.internal import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Message import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedWorld._ import net.minecraft.entity.player.EntityPlayer @@ -29,7 +30,7 @@ import net.minecraftforge.fml.common.eventhandler.Event import scala.collection.convert.WrapAsJava._ -abstract class UpgradeSign extends prefab.ManagedEnvironment with DeviceInfo { +abstract class UpgradeSign extends AbstractManagedEnvironment with DeviceInfo { private final lazy val deviceInfo = Map( DeviceAttribute.Class -> DeviceClass.Generic, DeviceAttribute.Description -> "Sign upgrade", diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeSolarGenerator.scala b/src/main/scala/li/cil/oc/server/component/UpgradeSolarGenerator.scala index 2d57034a0..062663ba7 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeSolarGenerator.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeSolarGenerator.scala @@ -11,12 +11,13 @@ import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.BlockPosition import net.minecraft.util.EnumFacing import scala.collection.convert.WrapAsJava._ -class UpgradeSolarGenerator(val host: EnvironmentHost) extends prefab.ManagedEnvironment with DeviceInfo { +class UpgradeSolarGenerator(val host: EnvironmentHost) extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withConnector(). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeTank.scala b/src/main/scala/li/cil/oc/server/component/UpgradeTank.scala index 46a5caa8a..fec4a7b17 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeTank.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeTank.scala @@ -10,6 +10,7 @@ import li.cil.oc.api.driver.DeviceInfo import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.fluids.FluidStack import net.minecraftforge.fluids.FluidTank @@ -17,7 +18,7 @@ import net.minecraftforge.fluids.IFluidTank import scala.collection.convert.WrapAsJava._ -class UpgradeTank(val owner: EnvironmentHost, val capacity: Int) extends prefab.ManagedEnvironment with IFluidTank with DeviceInfo { +class UpgradeTank(val owner: EnvironmentHost, val capacity: Int) extends AbstractManagedEnvironment with IFluidTank with DeviceInfo { override val node = Network.newNode(this, Visibility.None).create() private final lazy val deviceInfo = Map( diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeTankController.scala b/src/main/scala/li/cil/oc/server/component/UpgradeTankController.scala index 620e50cb5..12e8517b6 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeTankController.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeTankController.scala @@ -12,6 +12,7 @@ import li.cil.oc.api.internal import li.cil.oc.api.machine.Arguments import li.cil.oc.api.network._ import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.tileentity import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedArguments._ @@ -31,7 +32,7 @@ object UpgradeTankController { override def getDeviceInfo: util.Map[String, String] = deviceInfo } - class Adapter(val host: EnvironmentHost) extends prefab.ManagedEnvironment with traits.WorldTankAnalytics with Common { + class Adapter(val host: EnvironmentHost) extends AbstractManagedEnvironment with traits.WorldTankAnalytics with Common { override val node = Network.newNode(this, Visibility.Network). withComponent("tank_controller", Visibility.Network). create() @@ -43,7 +44,7 @@ object UpgradeTankController { override protected def checkSideForAction(args: Arguments, n: Int) = args.checkSideAny(n) } - class Drone(val host: EnvironmentHost with internal.Agent) extends prefab.ManagedEnvironment with traits.TankInventoryControl with traits.WorldTankAnalytics with Common { + class Drone(val host: EnvironmentHost with internal.Agent) extends AbstractManagedEnvironment with traits.TankInventoryControl with traits.WorldTankAnalytics with Common { override val node = Network.newNode(this, Visibility.Network). withComponent("tank_controller", Visibility.Neighbors). create() @@ -65,7 +66,7 @@ object UpgradeTankController { override protected def checkSideForAction(args: Arguments, n: Int) = args.checkSideAny(n) } - class Robot(val host: EnvironmentHost with tileentity.Robot) extends prefab.ManagedEnvironment with traits.TankInventoryControl with traits.WorldTankAnalytics with Common { + class Robot(val host: EnvironmentHost with tileentity.Robot) extends AbstractManagedEnvironment with traits.TankInventoryControl with traits.WorldTankAnalytics with Common { override val node = Network.newNode(this, Visibility.Network). withComponent("tank_controller", Visibility.Neighbors). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeTractorBeam.scala b/src/main/scala/li/cil/oc/server/component/UpgradeTractorBeam.scala index 9f608938c..e04f1e74c 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeTractorBeam.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeTractorBeam.scala @@ -15,6 +15,7 @@ import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Context import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.BlockPosition import li.cil.oc.util.InventoryUtils import net.minecraft.entity.item.EntityItem @@ -26,7 +27,7 @@ import scala.collection.convert.WrapAsScala._ object UpgradeTractorBeam { - abstract class Common extends prefab.ManagedEnvironment with DeviceInfo { + abstract class Common extends AbstractManagedEnvironment with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("tractor_beam"). create() diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeTrading.scala b/src/main/scala/li/cil/oc/server/component/UpgradeTrading.scala index 4e9d4259d..646cd25a7 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeTrading.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeTrading.scala @@ -14,6 +14,7 @@ import li.cil.oc.api.machine.Context import li.cil.oc.api.network.EnvironmentHost import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.util.BlockPosition import net.minecraft.entity.Entity import net.minecraft.entity.IMerchant @@ -22,7 +23,7 @@ import net.minecraft.util.math.Vec3d import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ -class UpgradeTrading(val host: EnvironmentHost) extends prefab.ManagedEnvironment with traits.WorldAware with DeviceInfo { +class UpgradeTrading(val host: EnvironmentHost) extends AbstractManagedEnvironment with traits.WorldAware with DeviceInfo { override val node = Network.newNode(this, Visibility.Network). withComponent("trading"). create() diff --git a/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala b/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala index ff6ac345e..b7be2887c 100644 --- a/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala +++ b/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala @@ -2,6 +2,7 @@ package li.cil.oc.server.driver import com.google.common.base.Strings import li.cil.oc.api.driver +import li.cil.oc.api.driver.DriverBlock import li.cil.oc.api.driver.NamedBlock import li.cil.oc.api.network.ManagedEnvironment import net.minecraft.inventory.IInventory @@ -12,7 +13,7 @@ import net.minecraft.util.EnumFacing import net.minecraft.util.math.BlockPos import net.minecraft.world.World -class CompoundBlockDriver(val sidedBlocks: Array[driver.SidedBlock]) extends driver.SidedBlock { +class CompoundBlockDriver(val sidedBlocks: Array[DriverBlock]) extends DriverBlock { override def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): CompoundBlockEnvironment = { val list = sidedBlocks.map { driver => Option(driver.createEnvironment(world, pos, side)) match { diff --git a/src/main/scala/li/cil/oc/server/driver/Registry.scala b/src/main/scala/li/cil/oc/server/driver/Registry.scala index 319a4269d..4a8e21c4b 100644 --- a/src/main/scala/li/cil/oc/server/driver/Registry.scala +++ b/src/main/scala/li/cil/oc/server/driver/Registry.scala @@ -5,10 +5,10 @@ import java.util import li.cil.oc.OpenComputers import li.cil.oc.api import li.cil.oc.api.driver.Converter +import li.cil.oc.api.driver.DriverBlock +import li.cil.oc.api.driver.DriverItem import li.cil.oc.api.driver.EnvironmentProvider import li.cil.oc.api.driver.InventoryProvider -import li.cil.oc.api.driver.Item -import li.cil.oc.api.driver.SidedBlock import li.cil.oc.api.driver.item.HostAware import li.cil.oc.api.machine.Value import li.cil.oc.api.network.EnvironmentHost @@ -43,9 +43,9 @@ import scala.math.ScalaNumber * the computer, but may also provide context-free functions. */ private[oc] object Registry extends api.detail.DriverAPI { - val sidedBlocks: ArrayBuffer[SidedBlock] = mutable.ArrayBuffer.empty[api.driver.SidedBlock] + val sidedBlocks: ArrayBuffer[DriverBlock] = mutable.ArrayBuffer.empty[DriverBlock] - val items: ArrayBuffer[Item] = mutable.ArrayBuffer.empty[api.driver.Item] + val items: ArrayBuffer[DriverItem] = mutable.ArrayBuffer.empty[DriverItem] val converters: ArrayBuffer[Converter] = mutable.ArrayBuffer.empty[api.driver.Converter] @@ -58,7 +58,7 @@ private[oc] object Registry extends api.detail.DriverAPI { /** Used to keep track of whether we're past the init phase. */ var locked = false - override def add(driver: api.driver.SidedBlock) { + override def add(driver: DriverBlock) { if (locked) throw new IllegalStateException("Please register all drivers in the init phase.") if (!sidedBlocks.contains(driver)) { OpenComputers.log.debug(s"Registering block driver ${driver.getClass.getName}.") @@ -66,7 +66,7 @@ private[oc] object Registry extends api.detail.DriverAPI { } } - override def add(driver: api.driver.Item) { + override def add(driver: DriverItem) { if (locked) throw new IllegalStateException("Please register all drivers in the init phase.") if (!items.contains(driver)) { OpenComputers.log.debug(s"Registering item driver ${driver.getClass.getName}.") @@ -98,13 +98,13 @@ private[oc] object Registry extends api.detail.DriverAPI { } } - override def driverFor(world: World, pos: BlockPos, side: EnumFacing): api.driver.SidedBlock = + override def driverFor(world: World, pos: BlockPos, side: EnumFacing): DriverBlock = sidedBlocks.filter(_.worksWith(world, pos, side)) match { case sidedDrivers if sidedDrivers.nonEmpty => new CompoundBlockDriver(sidedDrivers.toArray) case _ => null } - override def driverFor(stack: ItemStack, host: Class[_ <: EnvironmentHost]): Item = + override def driverFor(stack: ItemStack, host: Class[_ <: EnvironmentHost]): DriverItem = if (!stack.isEmpty) { val hostAware = items.collect { case driver: HostAware if driver.worksWith(stack) => driver @@ -116,7 +116,7 @@ private[oc] object Registry extends api.detail.DriverAPI { } else null - override def driverFor(stack: ItemStack): Item = + override def driverFor(stack: ItemStack): DriverItem = if (!stack.isEmpty) items.find(_.worksWith(stack)).orNull else null @@ -139,7 +139,7 @@ private[oc] object Registry extends api.detail.DriverAPI { } } - override def itemDrivers: util.List[Item] = items.toSeq + override def itemDrivers: util.List[DriverItem] = items.toSeq def blacklistHost(stack: ItemStack, host: Class[_]) { blacklist.find(_._1.isItemEqual(stack)) match { diff --git a/src/main/scala/li/cil/oc/server/machine/Machine.scala b/src/main/scala/li/cil/oc/server/machine/Machine.scala index dd015b98c..4be49eb65 100644 --- a/src/main/scala/li/cil/oc/server/machine/Machine.scala +++ b/src/main/scala/li/cil/oc/server/machine/Machine.scala @@ -26,6 +26,7 @@ import li.cil.oc.api.network.Message import li.cil.oc.api.network.Node import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractManagedEnvironment import li.cil.oc.common.EventHandler import li.cil.oc.common.SaveHandler import li.cil.oc.common.Slot @@ -49,7 +50,7 @@ import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class Machine(val host: MachineHost) extends prefab.ManagedEnvironment with machine.Machine with Runnable with DeviceInfo { +class Machine(val host: MachineHost) extends AbstractManagedEnvironment with machine.Machine with Runnable with DeviceInfo { override val node: ComponentConnector = Network.newNode(this, Visibility.Network). withComponent("computer", Visibility.Neighbors). withConnector(Settings.get.bufferComputer).