From 374848f978cf0cc1d91ff0b98a8bd506f1b81130 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 12 May 2023 13:22:29 +0200 Subject: [PATCH] Compilation dependency toggle --- build.gradle | 12 ++- gradle.properties | 2 + src/main/java/com/simibubi/create/Create.java | 2 + ...ur.java => AbstractComputerBehaviour.java} | 44 ++++------- .../computercraft/AttachedComputerPacket.java | 3 +- .../computercraft/ComputerCraftProxy.java | 30 ++++++++ .../FallbackComputerBehaviour.java | 16 ++++ .../implementation/ComputerBehaviour.java | 74 +++++++++++++++++++ .../{ => implementation}/CreateLuaTable.java | 2 +- .../peripherals/DisplayLinkPeripheral.java | 2 +- .../SequencedGearshiftPeripheral.java | 2 +- .../SpeedControllerPeripheral.java | 2 +- .../peripherals/SpeedGaugePeripheral.java | 2 +- .../peripherals/StationPeripheral.java | 4 +- .../peripherals/StressGaugePeripheral.java | 2 +- .../peripherals/SyncedPeripheral.java | 4 +- .../advanced/SpeedControllerTileEntity.java | 13 ++-- .../SequencedGearshiftTileEntity.java | 11 ++- .../relays/gauge/SpeedGaugeTileEntity.java | 11 ++- .../relays/gauge/StressGaugeTileEntity.java | 12 +-- .../block/display/DisplayLinkTileEntity.java | 11 ++- .../edgePoint/station/StationTileEntity.java | 12 ++- 22 files changed, 191 insertions(+), 82 deletions(-) rename src/main/java/com/simibubi/create/compat/computercraft/{ComputerBehaviour.java => AbstractComputerBehaviour.java} (50%) create mode 100644 src/main/java/com/simibubi/create/compat/computercraft/ComputerCraftProxy.java create mode 100644 src/main/java/com/simibubi/create/compat/computercraft/FallbackComputerBehaviour.java create mode 100644 src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerBehaviour.java rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/CreateLuaTable.java (98%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/DisplayLinkPeripheral.java (97%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/SequencedGearshiftPeripheral.java (95%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/SpeedControllerPeripheral.java (92%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/SpeedGaugePeripheral.java (86%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/StationPeripheral.java (98%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/StressGaugePeripheral.java (88%) rename src/main/java/com/simibubi/create/compat/computercraft/{ => implementation}/peripherals/SyncedPeripheral.java (89%) diff --git a/build.gradle b/build.gradle index a3fe4ca39..2b357cd67 100644 --- a/build.gradle +++ b/build.gradle @@ -170,8 +170,10 @@ dependencies { compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_minecraft_version}-${curios_version}:api") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_minecraft_version}-${curios_version}") - compileOnly fg.deobf("org.squiddev:cc-tweaked-${cc_tweaked_minecraft_version}:${cc_tweaked_version}:api") - runtimeOnly fg.deobf("org.squiddev:cc-tweaked-${cc_tweaked_minecraft_version}:${cc_tweaked_version}") + if (cc_tweaked_enable.toBoolean()) { + compileOnly fg.deobf("org.squiddev:cc-tweaked-${cc_tweaked_minecraft_version}:${cc_tweaked_version}:api") + runtimeOnly fg.deobf("org.squiddev:cc-tweaked-${cc_tweaked_minecraft_version}:${cc_tweaked_version}") + } // implementation fg.deobf("curse.maven:druidcraft-340991:3101903") // implementation fg.deobf("com.ferreusveritas.dynamictrees:DynamicTrees-1.16.5:0.10.0-Beta25") @@ -189,6 +191,12 @@ dependencies { } } +sourceSets.main.java { + if (!cc_tweaked_enable.toBoolean()) { + exclude 'com/simibubi/create/compat/computercraft/implementation/**' + } +} + sourceSets.main.resources { srcDir 'src/generated/resources' exclude '.cache/' diff --git a/gradle.properties b/gradle.properties index b0959bb38..160d5f40f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,6 +26,8 @@ jei_minecraft_version = 1.18.2 jei_version = 9.7.0.209 curios_minecraft_version = 1.18.2 curios_version = 5.0.7.0 + +cc_tweaked_enable = true cc_tweaked_minecraft_version = 1.18.2 cc_tweaked_version = 1.100.10 diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 99ee30c01..16a49f0b1 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -9,6 +9,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.simibubi.create.api.behaviour.BlockSpoutingBehaviour; import com.simibubi.create.compat.Mods; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.compat.curios.Curios; import com.simibubi.create.content.CreateItemGroup; import com.simibubi.create.content.contraptions.TorquePropagator; @@ -126,6 +127,7 @@ public class Create { ContraptionMovementSetting.registerDefaults(); AllArmInteractionPointTypes.register(); BlockSpoutingBehaviour.registerDefaults(); + ComputerCraftProxy.register(); ForgeMod.enableMilkFluid(); CopperRegistries.inject(); diff --git a/src/main/java/com/simibubi/create/compat/computercraft/ComputerBehaviour.java b/src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java similarity index 50% rename from src/main/java/com/simibubi/create/compat/computercraft/ComputerBehaviour.java rename to src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java index 86c4c19b7..a8620450b 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/ComputerBehaviour.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java @@ -1,52 +1,24 @@ package com.simibubi.create.compat.computercraft; -import org.jetbrains.annotations.NotNull; - import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import dan200.computercraft.api.peripheral.IPeripheral; import net.minecraft.nbt.CompoundTag; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.common.util.NonNullSupplier; -public class ComputerBehaviour extends TileEntityBehaviour { +public class AbstractComputerBehaviour extends TileEntityBehaviour { - public static final BehaviourType TYPE = new BehaviourType<>(); - protected static final Capability PERIPHERAL_CAPABILITY = CapabilityManager.get(new CapabilityToken<>() {}); - - LazyOptional peripheral; - NonNullSupplier peripheralSupplier; + public static final BehaviourType TYPE = new BehaviourType<>(); boolean hasAttachedComputer; - public ComputerBehaviour(SmartTileEntity te, NonNullSupplier peripheralSupplier) { + public AbstractComputerBehaviour(SmartTileEntity te) { super(te); - this.peripheralSupplier = peripheralSupplier; this.hasAttachedComputer = false; } - public static boolean isPeripheralCap(@NotNull Capability cap) { - return cap == PERIPHERAL_CAPABILITY; - } - - public LazyOptional getPeripheralCapability() { - if (peripheral == null || !peripheral.isPresent()) - peripheral = LazyOptional.of(peripheralSupplier); - - return peripheral.cast(); - } - - public void removePeripheral() { - if (peripheral != null) { - peripheral.invalidate(); - } - } - @Override public void read(CompoundTag nbt, boolean clientPacket) { hasAttachedComputer = nbt.getBoolean("HasAttachedComputer"); @@ -59,6 +31,16 @@ public class ComputerBehaviour extends TileEntityBehaviour { super.write(nbt, clientPacket); } + public boolean isPeripheralCap(Capability cap) { + return false; + } + + public LazyOptional getPeripheralCapability() { + return LazyOptional.empty(); + } + + public void removePeripheral() {} + public void setHasAttachedComputer(boolean hasAttachedComputer) { this.hasAttachedComputer = hasAttachedComputer; } diff --git a/src/main/java/com/simibubi/create/compat/computercraft/AttachedComputerPacket.java b/src/main/java/com/simibubi/create/compat/computercraft/AttachedComputerPacket.java index 696d175f7..3181217fe 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/AttachedComputerPacket.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/AttachedComputerPacket.java @@ -29,7 +29,8 @@ public class AttachedComputerPacket extends TileEntityDataPacket ComputerCraftProxy::registerWithDependency); + } + + private static void registerWithDependency() { + /* Comment if computercraft.implementation is not in the source set */ + computerFactory = ComputerBehaviour::new; + } + + private static Function fallbackFactory; + private static Function computerFactory; + + public static AbstractComputerBehaviour behaviour(SmartTileEntity ste) { + if (computerFactory == null) + return fallbackFactory.apply(ste); + return computerFactory.apply(ste); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/computercraft/FallbackComputerBehaviour.java b/src/main/java/com/simibubi/create/compat/computercraft/FallbackComputerBehaviour.java new file mode 100644 index 000000000..2e1a3da77 --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/computercraft/FallbackComputerBehaviour.java @@ -0,0 +1,16 @@ +package com.simibubi.create.compat.computercraft; + +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; + +public class FallbackComputerBehaviour extends AbstractComputerBehaviour { + + public FallbackComputerBehaviour(SmartTileEntity te) { + super(te); + } + + @Override + public boolean hasAttachedComputer() { + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerBehaviour.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerBehaviour.java new file mode 100644 index 000000000..dfe1f504d --- /dev/null +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerBehaviour.java @@ -0,0 +1,74 @@ +package com.simibubi.create.compat.computercraft.implementation; + +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.implementation.peripherals.DisplayLinkPeripheral; +import com.simibubi.create.compat.computercraft.implementation.peripherals.SequencedGearshiftPeripheral; +import com.simibubi.create.compat.computercraft.implementation.peripherals.SpeedControllerPeripheral; +import com.simibubi.create.compat.computercraft.implementation.peripherals.SpeedGaugePeripheral; +import com.simibubi.create.compat.computercraft.implementation.peripherals.StationPeripheral; +import com.simibubi.create.compat.computercraft.implementation.peripherals.StressGaugePeripheral; +import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerTileEntity; +import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftTileEntity; +import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; +import com.simibubi.create.content.contraptions.relays.gauge.StressGaugeTileEntity; +import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity; +import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; + +import dan200.computercraft.api.peripheral.IPeripheral; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityToken; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.util.NonNullSupplier; + +public class ComputerBehaviour extends AbstractComputerBehaviour { + + protected static final Capability PERIPHERAL_CAPABILITY = + CapabilityManager.get(new CapabilityToken<>() { + }); + LazyOptional peripheral; + NonNullSupplier peripheralSupplier; + + public ComputerBehaviour(SmartTileEntity te) { + super(te); + this.peripheralSupplier = getPeripheralFor(te); + } + + public static NonNullSupplier getPeripheralFor(SmartTileEntity te) { + if (te instanceof SpeedControllerTileEntity scte) + return () -> new SpeedControllerPeripheral(scte, scte.targetSpeed); + if (te instanceof DisplayLinkTileEntity dlte) + return () -> new DisplayLinkPeripheral(dlte); + if (te instanceof SequencedGearshiftTileEntity sgte) + return () -> new SequencedGearshiftPeripheral(sgte); + if (te instanceof SpeedGaugeTileEntity sgte) + return () -> new SpeedGaugePeripheral(sgte); + if (te instanceof StressGaugeTileEntity sgte) + return () -> new StressGaugePeripheral(sgte); + if (te instanceof StationTileEntity ste) + return () -> new StationPeripheral(ste); + + throw new IllegalArgumentException("No peripheral available for " + te.getType() + .getRegistryName()); + } + + @Override + public boolean isPeripheralCap(Capability cap) { + return cap == PERIPHERAL_CAPABILITY; + } + + @Override + public LazyOptional getPeripheralCapability() { + if (peripheral == null || !peripheral.isPresent()) + peripheral = LazyOptional.of(peripheralSupplier); + return peripheral.cast(); + } + + @Override + public void removePeripheral() { + if (peripheral != null) + peripheral.invalidate(); + } + +} diff --git a/src/main/java/com/simibubi/create/compat/computercraft/CreateLuaTable.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/CreateLuaTable.java similarity index 98% rename from src/main/java/com/simibubi/create/compat/computercraft/CreateLuaTable.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/CreateLuaTable.java index 46ca3addb..3c957274e 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/CreateLuaTable.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/CreateLuaTable.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft; +package com.simibubi.create.compat.computercraft.implementation; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/DisplayLinkPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java similarity index 97% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/DisplayLinkPeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java index eb783666d..0e9275227 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/DisplayLinkPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SequencedGearshiftPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SequencedGearshiftPeripheral.java similarity index 95% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/SequencedGearshiftPeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SequencedGearshiftPeripheral.java index e8edcc188..8addb181e 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SequencedGearshiftPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SequencedGearshiftPeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SpeedControllerPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SpeedControllerPeripheral.java similarity index 92% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/SpeedControllerPeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SpeedControllerPeripheral.java index 60370b094..2aba811f0 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SpeedControllerPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SpeedControllerPeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SpeedGaugePeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SpeedGaugePeripheral.java similarity index 86% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/SpeedGaugePeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SpeedGaugePeripheral.java index f7c73ab12..a13b02cd5 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SpeedGaugePeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SpeedGaugePeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/StationPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java similarity index 98% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/StationPeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java index 2d9915d59..3de8e979b 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/StationPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import java.util.Map; @@ -6,7 +6,7 @@ import javax.annotation.Nullable; import org.jetbrains.annotations.NotNull; -import com.simibubi.create.compat.computercraft.CreateLuaTable; +import com.simibubi.create.compat.computercraft.implementation.CreateLuaTable; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.GlobalStation; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/StressGaugePeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StressGaugePeripheral.java similarity index 88% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/StressGaugePeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StressGaugePeripheral.java index 938c8872f..b712bd6da 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/StressGaugePeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StressGaugePeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SyncedPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java similarity index 89% rename from src/main/java/com/simibubi/create/compat/computercraft/peripherals/SyncedPeripheral.java rename to src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java index bdb9b95a8..a6371063d 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/peripherals/SyncedPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java @@ -1,4 +1,4 @@ -package com.simibubi.create.compat.computercraft.peripherals; +package com.simibubi.create.compat.computercraft.implementation.peripherals; import java.util.concurrent.atomic.AtomicInteger; @@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import com.simibubi.create.compat.computercraft.AttachedComputerPacket; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; +import com.simibubi.create.compat.computercraft.implementation.ComputerBehaviour; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java index 2206517f2..37385e92b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java @@ -5,8 +5,8 @@ import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; -import com.simibubi.create.compat.computercraft.peripherals.SpeedControllerPeripheral; +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.contraptions.RotationPropagator; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.motor.CreativeMotorTileEntity; @@ -31,8 +31,8 @@ import net.minecraftforge.common.util.LazyOptional; public class SpeedControllerTileEntity extends KineticTileEntity { public static final int DEFAULT_SPEED = 16; - protected ScrollValueBehaviour targetSpeed; - ComputerBehaviour computerBehaviour; + public ScrollValueBehaviour targetSpeed; + public AbstractComputerBehaviour computerBehaviour; boolean hasBracket; @@ -61,7 +61,7 @@ public class SpeedControllerTileEntity extends KineticTileEntity { targetSpeed.withCallback(i -> this.updateTargetRotation()); targetSpeed.withStepFunction(CreativeMotorTileEntity::step); behaviours.add(targetSpeed); - behaviours.add(computerBehaviour = new ComputerBehaviour(this, () -> new SpeedControllerPeripheral(this, targetSpeed))); + behaviours.add(computerBehaviour = ComputerCraftProxy.behaviour(this)); registerAwardables(behaviours, AllAdvancements.SPEED_CONTROLLER); } @@ -139,9 +139,8 @@ public class SpeedControllerTileEntity extends KineticTileEntity { @NotNull @Override public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (ComputerBehaviour.isPeripheralCap(cap)) + if (computerBehaviour.isPeripheralCap(cap)) return computerBehaviour.getPeripheralCapability(); - return super.getCapability(cap, side); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java index c0e97bff3..2fd02b095 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java @@ -6,8 +6,8 @@ import java.util.Vector; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; -import com.simibubi.create.compat.computercraft.peripherals.SequencedGearshiftPeripheral; +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -29,7 +29,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { int timer; boolean poweredPreviously; - ComputerBehaviour computerBehaviour; + public AbstractComputerBehaviour computerBehaviour; public SequencedGearshiftTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -44,7 +44,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); - behaviours.add(computerBehaviour = new ComputerBehaviour(this, () -> new SequencedGearshiftPeripheral(this))); + behaviours.add(computerBehaviour = ComputerCraftProxy.behaviour(this)); } @Override @@ -178,9 +178,8 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { @NotNull @Override public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (ComputerBehaviour.isPeripheralCap(cap)) + if (computerBehaviour.isPeripheralCap(cap)) return computerBehaviour.getPeripheralCapability(); - return super.getCapability(cap, side); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java index 86b11ea65..5f853e7d9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java @@ -5,8 +5,8 @@ import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; -import com.simibubi.create.compat.computercraft.peripherals.SpeedGaugePeripheral; +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -25,7 +25,7 @@ import net.minecraftforge.common.util.LazyOptional; public class SpeedGaugeTileEntity extends GaugeTileEntity { - ComputerBehaviour computerBehaviour; + public AbstractComputerBehaviour computerBehaviour; public SpeedGaugeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -34,7 +34,7 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity { @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); - behaviours.add(computerBehaviour = new ComputerBehaviour(this, () -> new SpeedGaugePeripheral(this))); + behaviours.add(computerBehaviour = ComputerCraftProxy.behaviour(this)); } @Override @@ -83,9 +83,8 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity { @NotNull @Override public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (ComputerBehaviour.isPeripheralCap(cap)) + if (computerBehaviour.isPeripheralCap(cap)) return computerBehaviour.getPeripheralCapability(); - return super.getCapability(cap, side); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java index 9304bcc03..8eb5c9d0e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java @@ -5,8 +5,8 @@ import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; -import com.simibubi.create.compat.computercraft.peripherals.StressGaugePeripheral; +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.item.ItemDescription; @@ -29,7 +29,8 @@ import net.minecraftforge.common.util.LazyOptional; public class StressGaugeTileEntity extends GaugeTileEntity { - ComputerBehaviour computerBehaviour; + public AbstractComputerBehaviour computerBehaviour; + static BlockPos lastSent; public StressGaugeTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { @@ -39,7 +40,7 @@ public class StressGaugeTileEntity extends GaugeTileEntity { @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); - behaviours.add(computerBehaviour = new ComputerBehaviour(this, () -> new StressGaugePeripheral(this))); + behaviours.add(computerBehaviour = ComputerCraftProxy.behaviour(this)); registerAwardables(behaviours, AllAdvancements.STRESSOMETER, AllAdvancements.STRESSOMETER_MAXED); } @@ -154,9 +155,8 @@ public class StressGaugeTileEntity extends GaugeTileEntity { @NotNull @Override public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (ComputerBehaviour.isPeripheralCap(cap)) + if (computerBehaviour.isPeripheralCap(cap)) return computerBehaviour.getPeripheralCapability(); - return super.getCapability(cap, side); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java index 9b3bcf5b9..448afed55 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java @@ -5,8 +5,8 @@ import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; -import com.simibubi.create.compat.computercraft.peripherals.DisplayLinkPeripheral; +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.logistics.block.display.source.DisplaySource; import com.simibubi.create.content.logistics.block.display.target.DisplayTarget; import com.simibubi.create.foundation.advancement.AllAdvancements; @@ -41,7 +41,7 @@ public class DisplayLinkTileEntity extends SmartTileEntity { public int refreshTicks; - ComputerBehaviour computerBehaviour; + public AbstractComputerBehaviour computerBehaviour; public DisplayLinkTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -55,8 +55,7 @@ public class DisplayLinkTileEntity extends SmartTileEntity { @Override public void addBehaviours(List behaviours) { - behaviours.add(computerBehaviour = new ComputerBehaviour(this, () -> new DisplayLinkPeripheral(this))); - + behaviours.add(computerBehaviour = ComputerCraftProxy.behaviour(this)); registerAwardables(behaviours, AllAdvancements.DISPLAY_LINK, AllAdvancements.DISPLAY_BOARD); } @@ -187,7 +186,7 @@ public class DisplayLinkTileEntity extends SmartTileEntity { @NotNull @Override public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (ComputerBehaviour.isPeripheralCap(cap)) + if (computerBehaviour.isPeripheralCap(cap)) return computerBehaviour.getPeripheralCapability(); return super.getCapability(cap, side); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java index 6ea5622d6..25bfad9ed 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationTileEntity.java @@ -19,8 +19,8 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; -import com.simibubi.create.compat.computercraft.ComputerBehaviour; -import com.simibubi.create.compat.computercraft.peripherals.StationPeripheral; +import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; +import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableTE; import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; @@ -94,7 +94,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable protected int failedCarriageIndex; protected AssemblyException lastException; protected DepotBehaviour depotBehaviour; - ComputerBehaviour computerBehaviour; + public AbstractComputerBehaviour computerBehaviour; // for display UUID imminentTrain; @@ -126,7 +126,7 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable depotBehaviour.addSubBehaviours(behaviours); registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS, AllAdvancements.TRAIN, AllAdvancements.LONG_TRAIN, AllAdvancements.CONDUCTOR); - behaviours.add(computerBehaviour = new ComputerBehaviour(this, () -> new StationPeripheral(this))); + behaviours.add(computerBehaviour = ComputerCraftProxy.behaviour(this)); } @Override @@ -814,10 +814,8 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable public @NotNull LazyOptional getCapability(@NotNull Capability cap, Direction side) { if (isItemHandlerCap(cap)) return depotBehaviour.getItemCapability(cap, side); - - if (ComputerBehaviour.isPeripheralCap(cap)) + if (computerBehaviour.isPeripheralCap(cap)) return computerBehaviour.getPeripheralCapability(); - return super.getCapability(cap, side); }