diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 2d7caf70ac..57ebb19acd 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1,7 +1,7 @@ package com.simibubi.create; -import static com.simibubi.create.AllInteractionBehaviours.interactionBehaviour; import static com.simibubi.create.Create.REGISTRATE; +import static com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour.interactionBehaviour; import static com.simibubi.create.api.behaviour.movement.MovementBehaviour.movementBehaviour; import static com.simibubi.create.api.contraption.storage.MountedStorageTypeRegistries.mountedFluidStorage; import static com.simibubi.create.api.contraption.storage.MountedStorageTypeRegistries.mountedItemStorage; diff --git a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java index d836046b27..e666d1144a 100644 --- a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java +++ b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java @@ -1,39 +1,20 @@ package com.simibubi.create; -import org.jetbrains.annotations.Nullable; - +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.contraptions.behaviour.DoorMovingInteraction; import com.simibubi.create.content.contraptions.behaviour.LeverMovingInteraction; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.behaviour.TrapdoorMovingInteraction; -import com.tterrag.registrate.util.nullness.NonNullConsumer; import net.minecraft.tags.BlockTags; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; public class AllInteractionBehaviours { - public static final SimpleRegistry REGISTRY = SimpleRegistry.create(); - - @Nullable - public static MovingInteractionBehaviour getBehaviour(BlockState state) { - return REGISTRY.get(state.getBlock()); - } - - /** - * Creates a consumer that will register a behavior to a block. Useful for Registrate. - */ - public static NonNullConsumer interactionBehaviour(MovingInteractionBehaviour behaviour) { - return b -> REGISTRY.register(b, behaviour); - } - static void registerDefaults() { - REGISTRY.register(Blocks.LEVER, new LeverMovingInteraction()); + MovingInteractionBehaviour.REGISTRY.register(Blocks.LEVER, new LeverMovingInteraction()); - REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.WOODEN_DOORS, new DoorMovingInteraction())); - REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.WOODEN_TRAPDOORS, new TrapdoorMovingInteraction())); - REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.FENCE_GATES, new TrapdoorMovingInteraction())); + MovingInteractionBehaviour.REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.WOODEN_DOORS, new DoorMovingInteraction())); + MovingInteractionBehaviour.REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.WOODEN_TRAPDOORS, new TrapdoorMovingInteraction())); + MovingInteractionBehaviour.REGISTRY.registerProvider(SimpleRegistry.Provider.forBlockTag(BlockTags.FENCE_GATES, new TrapdoorMovingInteraction())); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/MovingInteractionBehaviour.java b/src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java similarity index 60% rename from src/main/java/com/simibubi/create/content/contraptions/behaviour/MovingInteractionBehaviour.java rename to src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java index 1d0cd6ddbd..570bc98364 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/MovingInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java @@ -1,19 +1,35 @@ -package com.simibubi.create.content.contraptions.behaviour; +package com.simibubi.create.api.behaviour.interaction; import org.apache.commons.lang3.tuple.MutablePair; +import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.behaviour.MovementContext; +import com.tterrag.registrate.util.nullness.NonNullConsumer; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; +/** + * MovingInteractionBehaviors define behavior of blocks on contraptions + * when interacted with by players or collided with by entities. + */ public abstract class MovingInteractionBehaviour { + public static final SimpleRegistry REGISTRY = SimpleRegistry.create(); + + /** + * Creates a consumer that will register a behavior to a block. Useful for Registrate. + */ + public static NonNullConsumer interactionBehaviour(MovingInteractionBehaviour behaviour) { + return b -> REGISTRY.register(b, behaviour); + } protected void setContraptionActorData(AbstractContraptionEntity contraptionEntity, int index, - StructureBlockInfo info, MovementContext ctx) { + StructureBlockInfo info, MovementContext ctx) { contraptionEntity.getContraption().getActors().remove(index); contraptionEntity.getContraption().getActors().add(index, MutablePair.of(info, ctx)); if (contraptionEntity.level().isClientSide) diff --git a/src/main/java/com/simibubi/create/api/contraption/train/TrainConductorHandler.java b/src/main/java/com/simibubi/create/api/contraption/train/TrainConductorHandler.java index 757466f1cd..e51934ef82 100644 --- a/src/main/java/com/simibubi/create/api/contraption/train/TrainConductorHandler.java +++ b/src/main/java/com/simibubi/create/api/contraption/train/TrainConductorHandler.java @@ -3,7 +3,7 @@ package com.simibubi.create.api.contraption.train; import java.util.function.Consumer; import java.util.function.Predicate; -import com.simibubi.create.AllInteractionBehaviours; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.content.processing.burner.BlockBasedTrainConductorInteractionBehaviour; import com.simibubi.create.impl.contraption.train.TrainConductorHandlerImpl; @@ -24,7 +24,7 @@ public interface TrainConductorHandler { static void registerConductor(Block block, Predicate isValidConductor, UpdateScheduleCallback updateScheduleCallback) { BlockBasedTrainConductorInteractionBehaviour behavior = new BlockBasedTrainConductorInteractionBehaviour(isValidConductor, updateScheduleCallback); - AllInteractionBehaviours.REGISTRY.register(block, behavior); + MovingInteractionBehaviour.REGISTRY.register(block, behavior); registerHandler(isValidConductor::test); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java index 2658d107cd..ccbca069d9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java @@ -29,7 +29,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllInteractionBehaviours; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement; import com.simibubi.create.content.contraptions.actors.harvester.HarvesterMovementBehaviour; @@ -41,7 +41,6 @@ import com.simibubi.create.content.contraptions.bearing.StabilizedContraption; import com.simibubi.create.content.contraptions.bearing.WindmillBearingBlock; import com.simibubi.create.content.contraptions.bearing.WindmillBearingBlockEntity; import com.simibubi.create.content.contraptions.behaviour.MovementContext; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.chassis.AbstractChassisBlock; import com.simibubi.create.content.contraptions.chassis.ChassisBlockEntity; import com.simibubi.create.content.contraptions.chassis.StickerBlock; @@ -664,7 +663,7 @@ public abstract class Contraption { if (MovementBehaviour.REGISTRY.get(state) != null) actors.add(MutablePair.of(structureBlockInfo, null)); - MovingInteractionBehaviour interactionBehaviour = AllInteractionBehaviours.getBehaviour(state); + MovingInteractionBehaviour interactionBehaviour = MovingInteractionBehaviour.REGISTRY.get(state); if (interactionBehaviour != null) interactors.put(localPos, interactionBehaviour); @@ -782,7 +781,7 @@ public abstract class Contraption { StructureBlockInfo structureBlockInfo = getBlocks().get(pos); if (structureBlockInfo == null) return; - MovingInteractionBehaviour behaviour = AllInteractionBehaviours.getBehaviour(structureBlockInfo.state()); + MovingInteractionBehaviour behaviour = MovingInteractionBehaviour.REGISTRY.get(structureBlockInfo.state()); if (behaviour != null) interactors.put(pos, behaviour); }); diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java index 99496417d3..abf7b348c4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java @@ -16,11 +16,11 @@ import org.apache.commons.lang3.tuple.MutablePair; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPackets; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import com.simibubi.create.content.contraptions.AbstractContraptionEntity.ContraptionRotationState; import com.simibubi.create.content.contraptions.ContraptionColliderLockPacket.ContraptionColliderLockPacketRequest; import com.simibubi.create.content.contraptions.actors.harvester.HarvesterMovementBehaviour; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.sync.ClientMotionPacket; import com.simibubi.create.content.kinetics.base.BlockBreakingMovementBehaviour; import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java index a838d7b30c..8c5700c37f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java @@ -7,12 +7,12 @@ import org.apache.commons.lang3.tuple.MutablePair; import com.simibubi.create.AllPackets; import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement.ElevatorFloorSelection; import com.simibubi.create.content.contraptions.behaviour.MovementContext; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.elevator.ElevatorContraption; import com.simibubi.create.content.contraptions.elevator.ElevatorTargetFloorPacket; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatInteractionBehaviour.java index 522d0a9b26..81e1cb10a0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatInteractionBehaviour.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.contraptions.actors.seat; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.Contraption; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java index c513097a59..0d3b27dfa1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java @@ -4,12 +4,13 @@ import java.util.UUID; import com.google.common.base.Objects; import com.simibubi.create.AllItems; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; + import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/SimpleBlockMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/SimpleBlockMovingInteraction.java index d3a579e1d8..06c66f9d21 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/SimpleBlockMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/SimpleBlockMovingInteraction.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.behaviour; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.Contraption; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java index 7054753a1e..24ac25f1fc 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java @@ -5,9 +5,9 @@ import java.util.UUID; import org.apache.commons.lang3.tuple.MutablePair; import com.simibubi.create.AllItems; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.behaviour.MovementContext; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.contraptions.mounted.MountedContraption; import net.createmod.catnip.nbt.NBTHelper; diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java index 06cd5d2615..1c97e239a0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java @@ -1,10 +1,10 @@ package com.simibubi.create.content.logistics.depot; import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.api.contraption.storage.item.MountedItemStorage; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.MountedStorageManager; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.logistics.depot.storage.DepotMountedStorage; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlockBasedTrainConductorInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/processing/burner/BlockBasedTrainConductorInteractionBehaviour.java index 6507b4e4c8..7de5c8d031 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlockBasedTrainConductorInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlockBasedTrainConductorInteractionBehaviour.java @@ -1,11 +1,13 @@ package com.simibubi.create.content.processing.burner; +import java.util.function.Predicate; + import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import com.simibubi.create.api.contraption.train.TrainConductorHandler; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.Contraption; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; import com.simibubi.create.content.trains.entity.CarriageContraption; import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.trains.entity.Train; @@ -25,8 +27,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; -import java.util.function.Predicate; - public class BlockBasedTrainConductorInteractionBehaviour extends MovingInteractionBehaviour { private final Predicate isValidConductor; diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 9a813614a8..54f04c8197 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.data; -import static com.simibubi.create.AllInteractionBehaviours.interactionBehaviour; import static com.simibubi.create.Create.REGISTRATE; +import static com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour.interactionBehaviour; import static com.simibubi.create.api.behaviour.movement.MovementBehaviour.movementBehaviour; import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; import static com.simibubi.create.foundation.data.CreateRegistrate.casingConnectivity;