From b442981fbffe638217a2d7e1115eaaf70685ca28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 10 Feb 2014 03:10:30 +0100 Subject: [PATCH] added check to avoid duplicate components when a block next to the adapter already has an environment interface in addition to a peripheral interface --- src/main/java/li/cil/occ/mods/Registry.java | 4 ++-- .../cil/occ/mods/computercraft/DriverPeripheral.java | 11 ++++++++++- src/main/java/li/cil/occ/mods/vanilla/ModVanilla.java | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/li/cil/occ/mods/Registry.java b/src/main/java/li/cil/occ/mods/Registry.java index f9fbd7376..323126aba 100644 --- a/src/main/java/li/cil/occ/mods/Registry.java +++ b/src/main/java/li/cil/occ/mods/Registry.java @@ -17,9 +17,9 @@ public final class Registry { } public static void add(final IMod mod) { - final boolean alwaysEnabled = mod.getModId() == null || mod.getModId().isEmpty(); + final boolean alwaysEnabled = mod.getModId() == null || mod.getModId().isEmpty() || "Minecraft".equals(mod.getModId()); if ((alwaysEnabled || Loader.isModLoaded(mod.getModId())) && handlers.add(mod)) { - OpenComponents.Log.info(String.format("Initializing handler for '%s'.", mod.getModId())); + OpenComponents.Log.info(String.format("Initializing drivers for '%s'.", mod.getModId())); try { mod.initialize(); } catch (Throwable e) { diff --git a/src/main/java/li/cil/occ/mods/computercraft/DriverPeripheral.java b/src/main/java/li/cil/occ/mods/computercraft/DriverPeripheral.java index 7d6c020b3..b8a6938dc 100644 --- a/src/main/java/li/cil/occ/mods/computercraft/DriverPeripheral.java +++ b/src/main/java/li/cil/occ/mods/computercraft/DriverPeripheral.java @@ -1,6 +1,7 @@ package li.cil.occ.mods.computercraft; import dan200.computer.api.IPeripheral; +import li.cil.oc.api.network.Environment; import li.cil.oc.api.network.ManagedEnvironment; import li.cil.oc.api.prefab.DriverTileEntity; import li.cil.oc.api.prefab.ManagedPeripheral; @@ -32,7 +33,15 @@ public final class DriverPeripheral extends DriverTileEntity { @Override public boolean worksWith(final World world, final int x, final int y, final int z) { final TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - return tileEntity != null && !blacklist.contains(tileEntity.getClass()) && super.worksWith(world, x, y, z); + return tileEntity != null + // This ensures we don't get duplicate components, in case the + // tile entity is natively compatible with OpenComputers. + && !Environment.class.isAssignableFrom(tileEntity.getClass()) + // The black list is used to avoid peripherals that are known + // to be incompatible with OpenComputers when used directly. + && !blacklist.contains(tileEntity.getClass()) + // Actual check if it's a peripheral. + && super.worksWith(world, x, y, z); } @Override diff --git a/src/main/java/li/cil/occ/mods/vanilla/ModVanilla.java b/src/main/java/li/cil/occ/mods/vanilla/ModVanilla.java index 5b8e5b9c9..beb0802f8 100644 --- a/src/main/java/li/cil/occ/mods/vanilla/ModVanilla.java +++ b/src/main/java/li/cil/occ/mods/vanilla/ModVanilla.java @@ -9,7 +9,7 @@ import java.util.Map; public final class ModVanilla implements IMod { @Override public String getModId() { - return null; + return "Minecraft"; } @Override