diff --git a/gradle.properties b/gradle.properties index 25a0f20..27c4163 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,7 +30,7 @@ mod_name=More Red x CC:Tweaked Compat # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=MIT # The mod version. See https://semver.org/ -mod_version=1.2.0 +mod_version=1.3.0 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html diff --git a/src/main/java/ru/yurannnzzz/moreredcccompat/MoreRedCCCompatMod.java b/src/main/java/ru/yurannnzzz/moreredcccompat/MoreRedCCCompatMod.java index 564948e..5f289f8 100644 --- a/src/main/java/ru/yurannnzzz/moreredcccompat/MoreRedCCCompatMod.java +++ b/src/main/java/ru/yurannnzzz/moreredcccompat/MoreRedCCCompatMod.java @@ -3,8 +3,10 @@ package ru.yurannnzzz.moreredcccompat; import commoble.morered.api.MoreRedAPI; import commoble.morered.api.WireConnector; import dan200.computercraft.api.ComputerCraftAPI; -import dan200.computercraft.shared.ModRegistry; +import dan200.computercraft.shared.common.IBundledRedstoneBlock; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; @@ -13,7 +15,9 @@ import ru.yurannnzzz.moreredcccompat.cc.MoreRedBundledRedstoneProvider; import ru.yurannnzzz.moreredcccompat.morered.ComputerChanneledPowerCapability; import ru.yurannnzzz.moreredcccompat.morered.ComputerWireConnector; +import java.util.HashMap; import java.util.Map; +import java.util.Optional; @Mod(MoreRedCCCompatMod.MOD_ID) public class MoreRedCCCompatMod { @@ -26,24 +30,28 @@ public class MoreRedCCCompatMod { ComputerCraftAPI.registerBundledRedstoneProvider(new MoreRedBundledRedstoneProvider()); } + private static final Map> BLOCKS = new HashMap<>(); + private void registerConnectors(final FMLCommonSetupEvent event) { ComputerWireConnector connector = new ComputerWireConnector(); Map registry = MoreRedAPI.getCableConnectabilityRegistry(); - registry.put(ModRegistry.Blocks.COMPUTER_NORMAL.get(), connector); - registry.put(ModRegistry.Blocks.COMPUTER_ADVANCED.get(), connector); - registry.put(ModRegistry.Blocks.COMPUTER_COMMAND.get(), connector); - registry.put(ModRegistry.Blocks.TURTLE_NORMAL.get(), connector); - registry.put(ModRegistry.Blocks.TURTLE_ADVANCED.get(), connector); - registry.put(ModRegistry.Blocks.REDSTONE_RELAY.get(), connector); + for (Block block : BuiltInRegistries.BLOCK) { + if (block instanceof IBundledRedstoneBlock) { + Optional> filter = BuiltInRegistries.BLOCK_ENTITY_TYPE.stream().filter(it -> it.isValid(block.defaultBlockState())).findFirst(); + + filter.ifPresent(blockEntityType -> BLOCKS.put(block, blockEntityType)); + } + } + + for (Map.Entry> entry : BLOCKS.entrySet()) { + registry.put(entry.getKey(), connector); + } } private void registerCapabilities(RegisterCapabilitiesEvent event) { - event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, ModRegistry.BlockEntities.COMPUTER_NORMAL.get(), (be, side) -> new ComputerChanneledPowerCapability(side)); - event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, ModRegistry.BlockEntities.COMPUTER_ADVANCED.get(), (be, side) -> new ComputerChanneledPowerCapability(side)); - event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, ModRegistry.BlockEntities.COMPUTER_COMMAND.get(), (be, side) -> new ComputerChanneledPowerCapability(side)); - event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, ModRegistry.BlockEntities.TURTLE_NORMAL.get(), (be, side) -> new ComputerChanneledPowerCapability(side)); - event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, ModRegistry.BlockEntities.TURTLE_ADVANCED.get(), (be, side) -> new ComputerChanneledPowerCapability(side)); - event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, ModRegistry.BlockEntities.REDSTONE_RELAY.get(), (be, side) -> new ComputerChanneledPowerCapability(side)); + for (Map.Entry> entry : BLOCKS.entrySet()) { + event.registerBlockEntity(MoreRedAPI.CHANNELED_POWER_CAPABILITY, entry.getValue(), (be, side) -> new ComputerChanneledPowerCapability(side)); + } } }