diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c64a3af7a..6c3e81ff7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -46,7 +46,7 @@ oculus = "1.2.5" rei = "12.0.626" rubidium = "0.6.1" sodium = "mc1.20-0.4.10" -create-forge = "0.5.1.f-33" +create-forge = "6.0.0-9" create-fabric = "0.5.1-f-build.1467+mc1.20.1" # Testing diff --git a/projects/common/build.gradle.kts b/projects/common/build.gradle.kts index 20e74493d..0c1a2c7ae 100644 --- a/projects/common/build.gradle.kts +++ b/projects/common/build.gradle.kts @@ -37,7 +37,6 @@ dependencies { clientApi(clientClasses(project(":common-api"))) compileOnly(libs.bundles.externalMods.common) - compileOnly(variantOf(libs.create.forge) { classifier("slim") }) { isTransitive = false } clientCompileOnly(variantOf(libs.emi) { classifier("api") }) annotationProcessorEverywhere(libs.autoService) diff --git a/projects/common/src/main/java/dan200/computercraft/shared/integration/ExternalModTags.java b/projects/common/src/main/java/dan200/computercraft/shared/integration/ExternalModTags.java index cf8aaba93..3908d010c 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/integration/ExternalModTags.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/integration/ExternalModTags.java @@ -27,9 +27,9 @@ public final class ExternalModTags { /** * Create's "brittle" tag, used to determine if this block needs to be moved before its neighbours. * - * @see com.simibubi.create.content.contraptions.BlockMovementChecks#isBrittle(BlockState) + * @see com.simibubi.create.api.contraption.BlockMovementChecks#isBrittle(BlockState) */ - public static final TagKey CREATE_BRITTLE = make(CreateIntegration.ID, "brittle"); + public static final TagKey CREATE_BRITTLE = make("create", "brittle"); private static TagKey make(String mod, String name) { return TagKey.create(Registries.BLOCK, new ResourceLocation(mod, name)); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java b/projects/fabric/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java similarity index 100% rename from projects/common/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java rename to projects/fabric/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java diff --git a/projects/forge/build.gradle.kts b/projects/forge/build.gradle.kts index 0e24739f1..97cc0725d 100644 --- a/projects/forge/build.gradle.kts +++ b/projects/forge/build.gradle.kts @@ -155,7 +155,7 @@ dependencies { clientCompileOnly(variantOf(libs.emi) { classifier("api") }) modCompileOnly(libs.bundles.externalMods.forge.compile) modRuntimeOnly(libs.bundles.externalMods.forge.runtime) - modCompileOnly(variantOf(libs.create.forge) { classifier("slim") }) + modCompileOnly(variantOf(libs.create.forge) { classifier("slim") }) { isTransitive = false } // Depend on our other projects. "localImplementation"(project(":core")) diff --git a/projects/forge/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java b/projects/forge/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java new file mode 100644 index 000000000..a606f9376 --- /dev/null +++ b/projects/forge/src/main/java/dan200/computercraft/shared/integration/CreateIntegration.java @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 The CC: Tweaked Developers +// +// SPDX-License-Identifier: MPL-2.0 + +package dan200.computercraft.shared.integration; + +import com.simibubi.create.api.contraption.BlockMovementChecks; +import com.simibubi.create.api.contraption.BlockMovementChecks.CheckResult; +import dan200.computercraft.shared.peripheral.modem.wired.CableBlock; +import dan200.computercraft.shared.peripheral.modem.wireless.WirelessModemBlock; + +/** + * Integration with Create. + */ +public final class CreateIntegration { + public static final String ID = "create"; + + private CreateIntegration() { + } + + public static void setup() { + // Allow modems to be treated as "attached" to their adjacent block. + BlockMovementChecks.registerAttachedCheck((state, world, pos, direction) -> { + var block = state.getBlock(); + if (block instanceof WirelessModemBlock) { + return CheckResult.of(state.getValue(WirelessModemBlock.FACING) == direction); + } else if (block instanceof CableBlock) { + return CheckResult.of(state.getValue(CableBlock.MODEM).getFacing() == direction); + } else { + return CheckResult.PASS; + } + }); + } +}