mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
make MovingInteractionBehaviour api
This commit is contained in:
parent
a5c4383eb5
commit
27f8a3adcd
14 changed files with 41 additions and 43 deletions
|
@ -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;
|
||||
|
|
|
@ -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<Block, MovingInteractionBehaviour> 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 <B extends Block> NonNullConsumer<? super B> 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()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,32 @@
|
|||
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<Block, MovingInteractionBehaviour> REGISTRY = SimpleRegistry.create();
|
||||
|
||||
/**
|
||||
* Creates a consumer that will register a behavior to a block. Useful for Registrate.
|
||||
*/
|
||||
public static <B extends Block> NonNullConsumer<? super B> interactionBehaviour(MovingInteractionBehaviour behaviour) {
|
||||
return b -> REGISTRY.register(b, behaviour);
|
||||
}
|
||||
|
||||
protected void setContraptionActorData(AbstractContraptionEntity contraptionEntity, int index,
|
||||
StructureBlockInfo info, MovementContext ctx) {
|
|
@ -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<BlockState> isValidConductor, UpdateScheduleCallback updateScheduleCallback) {
|
||||
BlockBasedTrainConductorInteractionBehaviour behavior = new BlockBasedTrainConductorInteractionBehaviour(isValidConductor, updateScheduleCallback);
|
||||
AllInteractionBehaviours.REGISTRY.register(block, behavior);
|
||||
MovingInteractionBehaviour.REGISTRY.register(block, behavior);
|
||||
registerHandler(isValidConductor::test);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<BlockState> isValidConductor;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue