diff --git a/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftTags.java b/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftTags.java index bbfc7f419..54f741f75 100644 --- a/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftTags.java +++ b/projects/common-api/src/main/java/dan200/computercraft/api/ComputerCraftTags.java @@ -46,6 +46,14 @@ public class ComputerCraftTags { public static final TagKey WIRED_MODEM = make("wired_modem"); public static final TagKey MONITOR = make("monitor"); + /** + * Blocks which should be ignored by a {@code peripheral_hub} peripheral. + *

+ * This should include blocks which themselves expose a peripheral hub (such as {@linkplain #WIRED_MODEM wired + * modems}). + */ + public static final TagKey PERIPHERAL_HUB_IGNORE = make("peripheral_hub_ignore"); + /** * Blocks which can be broken by any turtle tool. */ diff --git a/projects/common/src/main/java/dan200/computercraft/data/TagProvider.java b/projects/common/src/main/java/dan200/computercraft/data/TagProvider.java index 5f0714feb..1d2b59559 100644 --- a/projects/common/src/main/java/dan200/computercraft/data/TagProvider.java +++ b/projects/common/src/main/java/dan200/computercraft/data/TagProvider.java @@ -35,6 +35,8 @@ class TagProvider { tags.tag(ComputerCraftTags.Blocks.WIRED_MODEM).add(ModRegistry.Blocks.CABLE.get(), ModRegistry.Blocks.WIRED_MODEM_FULL.get()); tags.tag(ComputerCraftTags.Blocks.MONITOR).add(ModRegistry.Blocks.MONITOR_NORMAL.get(), ModRegistry.Blocks.MONITOR_ADVANCED.get()); + tags.tag(ComputerCraftTags.Blocks.PERIPHERAL_HUB_IGNORE).addTag(ComputerCraftTags.Blocks.WIRED_MODEM); + tags.tag(ComputerCraftTags.Blocks.TURTLE_ALWAYS_BREAKABLE).addTag(BlockTags.LEAVES).add( Blocks.BAMBOO, Blocks.BAMBOO_SAPLING // Bamboo isn't instabreak for some odd reason. ); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java index 5187ec742..4a806cac2 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/WiredModemLocalPeripheral.java @@ -4,8 +4,8 @@ package dan200.computercraft.shared.peripheral.modem.wired; +import dan200.computercraft.api.ComputerCraftTags; import dan200.computercraft.api.peripheral.IPeripheral; -import dan200.computercraft.shared.ModRegistry; import dan200.computercraft.shared.computer.core.ServerContext; import dan200.computercraft.shared.platform.ComponentAccess; import dan200.computercraft.shared.platform.PlatformHelper; @@ -124,8 +124,7 @@ public final class WiredModemLocalPeripheral { private IPeripheral getPeripheralFrom(Level world, BlockPos pos, Direction direction) { var offset = pos.relative(direction); - var block = world.getBlockState(offset).getBlock(); - if (block == ModRegistry.Blocks.WIRED_MODEM_FULL.get() || block == ModRegistry.Blocks.CABLE.get()) return null; + if (world.getBlockState(offset).is(ComputerCraftTags.Blocks.PERIPHERAL_HUB_IGNORE)) return null; var peripheral = peripherals.get((ServerLevel) world, pos, direction); return peripheral instanceof WiredModemPeripheral ? null : peripheral; diff --git a/projects/fabric/src/generated/resources/data/computercraft/tags/blocks/peripheral_hub_ignore.json b/projects/fabric/src/generated/resources/data/computercraft/tags/blocks/peripheral_hub_ignore.json new file mode 100644 index 000000000..94cd7b2e9 --- /dev/null +++ b/projects/fabric/src/generated/resources/data/computercraft/tags/blocks/peripheral_hub_ignore.json @@ -0,0 +1 @@ +{"replace": false, "values": ["#computercraft:wired_modem"]} diff --git a/projects/forge/src/generated/resources/data/computercraft/tags/blocks/peripheral_hub_ignore.json b/projects/forge/src/generated/resources/data/computercraft/tags/blocks/peripheral_hub_ignore.json new file mode 100644 index 000000000..cc8178826 --- /dev/null +++ b/projects/forge/src/generated/resources/data/computercraft/tags/blocks/peripheral_hub_ignore.json @@ -0,0 +1 @@ +{"values": ["#computercraft:wired_modem"]}