diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 5c78071350..27c1de362d 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -17,7 +17,6 @@ import static com.simibubi.create.foundation.data.TagGen.tagBlockAndItem; import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.AllTags.AllItemTags; -import com.simibubi.create.api.contraption.train.TrainConductorHandler; import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsBlock; import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement; import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovingInteraction; @@ -291,6 +290,7 @@ import com.simibubi.create.foundation.item.UncontainableBlockItem; import com.simibubi.create.foundation.mixin.accessor.BlockLootSubProviderAccessor; import com.simibubi.create.foundation.utility.ColorHandlers; import com.simibubi.create.foundation.utility.DyeHelper; +import com.simibubi.create.impl.contraption.train.TrainConductorHandlerImpl; import com.tterrag.registrate.providers.RegistrateRecipeProvider; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; @@ -772,7 +772,7 @@ public class AllBlocks { .loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable())) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour())) - .onRegister(block -> TrainConductorHandler.registerBlazeBurner()) + .onRegister(block -> TrainConductorHandlerImpl.registerBlazeBurner()) .item(BlazeBurnerBlockItem::withBlaze) .model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze")) .build() 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 05cd1e09e3..5acadf6c4c 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 @@ -1,37 +1,24 @@ package com.simibubi.create.api.contraption.train; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllInteractionBehaviours; -import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; +import java.util.function.Consumer; +import java.util.function.Predicate; +import com.simibubi.create.AllInteractionBehaviours; import com.simibubi.create.content.processing.burner.BlockBasedTrainConductorInteractionBehaviour; +import com.simibubi.create.impl.contraption.train.TrainConductorHandlerImpl; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; -import org.jetbrains.annotations.ApiStatus; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.Predicate; - - /** * All required methods to make your block a train conductor similar to the blaze burner */ public interface TrainConductorHandler { - - @ApiStatus.Internal - List CONDUCTOR_HANDLERS = new ArrayList<>(); - - - boolean isValidConductor(BlockState state); private static void registerHandler(TrainConductorHandler handler) { - CONDUCTOR_HANDLERS.add(handler); + TrainConductorHandlerImpl.CONDUCTOR_HANDLERS.add(handler); } static void registerConductor(ResourceLocation blockRl, Predicate isValidConductor, UpdateScheduleCallback updateScheduleCallback) { @@ -39,14 +26,7 @@ public interface TrainConductorHandler { registerHandler(isValidConductor::test); } - @ApiStatus.Internal - static void registerBlazeBurner() { - registerConductor(AllBlocks.BLAZE_BURNER.getId(), blockState -> AllBlocks.BLAZE_BURNER.has(blockState) - && blockState.getValue(BlazeBurnerBlock.HEAT_LEVEL) != BlazeBurnerBlock.HeatLevel.NONE, UpdateScheduleCallback.EMPTY); - } - interface UpdateScheduleCallback { - UpdateScheduleCallback EMPTY = (hasSchedule, blockState, blockStateSetter) -> {}; void update(boolean hasSchedule, BlockState currentBlockState, Consumer blockStateSetter); diff --git a/src/main/java/com/simibubi/create/api/contraption/transformable/ContraptionTransformableRegistry.java b/src/main/java/com/simibubi/create/api/contraption/transformable/ContraptionTransformableRegistry.java index 15456daa18..33588d9aee 100644 --- a/src/main/java/com/simibubi/create/api/contraption/transformable/ContraptionTransformableRegistry.java +++ b/src/main/java/com/simibubi/create/api/contraption/transformable/ContraptionTransformableRegistry.java @@ -1,12 +1,9 @@ package com.simibubi.create.api.contraption.transformable; -import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.impl.contraption.transformable.ContraptionTransformableRegistryImpl; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; /** * Registry for registering new contraption transformations @@ -34,16 +31,4 @@ public class ContraptionTransformableRegistry { public static void registerForBlockEntity(BlockEntityType blockEntityType, TransformableBlockEntity transformableBlockEntity) { ContraptionTransformableRegistryImpl.registerForBlockEntity(blockEntityType, transformableBlockEntity); } - - // --- Interfaces that provide the context that would be accessible if you implemented the ITransformable* interfaces --- - - @FunctionalInterface - public interface TransformableBlock { - BlockState transform(Block block, BlockState state, StructureTransform transform); - } - - @FunctionalInterface - public interface TransformableBlockEntity { - void transform(BlockEntity blockEntity, StructureTransform transform); - } } diff --git a/src/main/java/com/simibubi/create/api/contraption/transformable/ITransformableBlockEntity.java b/src/main/java/com/simibubi/create/api/contraption/transformable/ITransformableBlockEntity.java deleted file mode 100644 index 59ca6fadc8..0000000000 --- a/src/main/java/com/simibubi/create/api/contraption/transformable/ITransformableBlockEntity.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.simibubi.create.api.contraption.transformable; - -import com.simibubi.create.content.contraptions.StructureTransform; - -public interface ITransformableBlockEntity { - void transform(StructureTransform transform); -} diff --git a/src/main/java/com/simibubi/create/api/contraption/transformable/ITransformableBlock.java b/src/main/java/com/simibubi/create/api/contraption/transformable/TransformableBlock.java similarity index 81% rename from src/main/java/com/simibubi/create/api/contraption/transformable/ITransformableBlock.java rename to src/main/java/com/simibubi/create/api/contraption/transformable/TransformableBlock.java index 5bdcdf1b0a..15d7d5fa26 100644 --- a/src/main/java/com/simibubi/create/api/contraption/transformable/ITransformableBlock.java +++ b/src/main/java/com/simibubi/create/api/contraption/transformable/TransformableBlock.java @@ -4,6 +4,7 @@ import com.simibubi.create.content.contraptions.StructureTransform; import net.minecraft.world.level.block.state.BlockState; -public interface ITransformableBlock { +@FunctionalInterface +public interface TransformableBlock { BlockState transform(BlockState state, StructureTransform transform); } diff --git a/src/main/java/com/simibubi/create/api/contraption/transformable/TransformableBlockEntity.java b/src/main/java/com/simibubi/create/api/contraption/transformable/TransformableBlockEntity.java new file mode 100644 index 0000000000..d7182381b4 --- /dev/null +++ b/src/main/java/com/simibubi/create/api/contraption/transformable/TransformableBlockEntity.java @@ -0,0 +1,9 @@ +package com.simibubi.create.api.contraption.transformable; + +import com.simibubi.create.content.contraptions.StructureTransform; + +import net.minecraft.world.level.block.entity.BlockEntity; + +public interface TransformableBlockEntity { + void transform(BlockEntity blockEntity, StructureTransform transform); +} diff --git a/src/main/java/com/simibubi/create/api/schematic/nbt/IPartialSafeNBT.java b/src/main/java/com/simibubi/create/api/schematic/nbt/PartialSafeNBT.java similarity index 88% rename from src/main/java/com/simibubi/create/api/schematic/nbt/IPartialSafeNBT.java rename to src/main/java/com/simibubi/create/api/schematic/nbt/PartialSafeNBT.java index 0830a43646..80a125b344 100644 --- a/src/main/java/com/simibubi/create/api/schematic/nbt/IPartialSafeNBT.java +++ b/src/main/java/com/simibubi/create/api/schematic/nbt/PartialSafeNBT.java @@ -3,7 +3,7 @@ package com.simibubi.create.api.schematic.nbt; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -public interface IPartialSafeNBT { +public interface PartialSafeNBT { /** * This will always be called from the logical server */ diff --git a/src/main/java/com/simibubi/create/api/schematic/requirement/SchematicRequirementsRegistry.java b/src/main/java/com/simibubi/create/api/schematic/requirement/SchematicRequirementsRegistry.java index 3df156e6bd..19a8ce9387 100644 --- a/src/main/java/com/simibubi/create/api/schematic/requirement/SchematicRequirementsRegistry.java +++ b/src/main/java/com/simibubi/create/api/schematic/requirement/SchematicRequirementsRegistry.java @@ -20,95 +20,97 @@ public class SchematicRequirementsRegistry { /** * Register a new special requirement for a specified block * - * @param block The block you want to register a {@link BlockRequirement} for + * @param block The block you want to register a {@link ContextProvidingBlockRequirement} for * @param requirement The requirement you would like to add to this block, - * the {@link BlockRequirement#getRequiredItems(Block, BlockState, BlockEntity)} - * method will be called on the {@link BlockRequirement} you have provided, + * the {@link ContextProvidingBlockRequirement#getRequiredItems(BlockState, BlockEntity)} + * method will be called on the {@link ContextProvidingBlockRequirement} you have provided, * and you will be able to insert requirements based off the context that is given */ - public static void registerForBlock(Block block, BlockRequirement requirement) { + public static void registerForBlock(Block block, ContextProvidingBlockRequirement requirement) { SchematicRequirementsRegistryImpl.registerForBlock(block, requirement); } /** * Register a new special requirement for a specified block * - * @param block The id of the block you want to register a {@link BlockRequirement} for + * @param block The id of the block you want to register a {@link ContextProvidingBlockRequirement} for * @param requirement The requirement you would like to add to this block, - * the {@link BlockRequirement#getRequiredItems(Block, BlockState, BlockEntity)} - * method will be called on the {@link BlockRequirement} you have provided, + * the {@link ContextProvidingBlockRequirement#getRequiredItems(BlockState, BlockEntity)} + * method will be called on the {@link ContextProvidingBlockRequirement} you have provided, * and you will be able to insert requirements based off the context that is given */ - public static void registerForBlock(ResourceLocation block, BlockRequirement requirement) { + public static void registerForBlock(ResourceLocation block, ContextProvidingBlockRequirement requirement) { SchematicRequirementsRegistryImpl.registerForBlock(block, requirement); } /** * Register a new special requirement for a specified block entity type * - * @param blockEntityType The blockEntityType you want to register a {@link BlockEntityRequirement} for + * @param blockEntityType The blockEntityType you want to register a {@link ContextProvidingBlockEntityRequirement} for * @param requirement The requirement you would like to add to this block entity type, - * the {@link BlockEntityRequirement#getRequiredItems(BlockEntity, BlockState)} - * method will be called on the {@link BlockEntityRequirement} you have provided, + * the {@link ContextProvidingBlockEntityRequirement#getRequiredItems(BlockEntity)} + * method will be called on the + * {@link ContextProvidingBlockEntityRequirement} you have provided, * and you will be able to insert requirements based off the context that is given */ - public static void registerForBlockEntity(BlockEntityType blockEntityType, BlockEntityRequirement requirement) { + public static void registerForBlockEntity(BlockEntityType blockEntityType, ContextProvidingBlockEntityRequirement requirement) { SchematicRequirementsRegistryImpl.registerForBlockEntity(blockEntityType, requirement); } /** * Register a new special requirement for a specified block entity type * - * @param blockEntityType The id of the blockEntityType you want to register a {@link BlockEntityRequirement} for + * @param blockEntityType The id of the blockEntityType you want to register a {@link ContextProvidingBlockEntityRequirement} for * @param requirement The requirement you would like to add to this block entity type, - * the {@link BlockEntityRequirement#getRequiredItems(BlockEntity, BlockState)} - * method will be called on the {@link BlockEntityRequirement} you have provided, + * the {@link ContextProvidingBlockEntityRequirement#getRequiredItems(BlockEntity)} + * method will be called on the + * {@link ContextProvidingBlockEntityRequirement} you have provided, * and you will be able to insert requirements based off the context that is given */ - public static void registerForBlockEntity(ResourceLocation blockEntityType, BlockEntityRequirement requirement) { + public static void registerForBlockEntity(ResourceLocation blockEntityType, ContextProvidingBlockEntityRequirement requirement) { SchematicRequirementsRegistryImpl.registerForBlockEntity(blockEntityType, requirement); } /** * Register a new special requirement for a specified entity type * - * @param entityType The entityType you want to register a {@link EntityRequirement} for + * @param entityType The entityType you want to register a {@link ContextProvidingEntityRequirement} for * @param requirement The requirement you would like to add to this entity type, - * the {@link EntityRequirement#getRequiredItems(Entity)} - * method will be called on the {@link EntityRequirement} you have provided, + * the {@link ContextProvidingEntityRequirement#getRequiredItems(Entity)} + * method will be called on the {@link ContextProvidingEntityRequirement} you have provided, * and you will be able to insert requirements based off the context that is given */ - public static void registerForEntity(EntityType entityType, EntityRequirement requirement) { + public static void registerForEntity(EntityType entityType, ContextProvidingEntityRequirement requirement) { SchematicRequirementsRegistryImpl.registerForEntity(entityType, requirement); } /** * Register a new special requirement for a specified entity type * - * @param entityType The id of the entityType you want to register a {@link EntityRequirement} for + * @param entityType The id of the entityType you want to register a {@link ContextProvidingEntityRequirement} for * @param requirement The requirement you would like to add to this entity type, - * the {@link EntityRequirement#getRequiredItems(Entity)} - * method will be called on the {@link EntityRequirement} you have provided, + * the {@link ContextProvidingEntityRequirement#getRequiredItems(Entity)} + * method will be called on the {@link ContextProvidingEntityRequirement} you have provided, * and you will be able to insert requirements based off the context that is given */ - public static void registerForEntity(ResourceLocation entityType, EntityRequirement requirement) { + public static void registerForEntity(ResourceLocation entityType, ContextProvidingEntityRequirement requirement) { SchematicRequirementsRegistryImpl.registerForEntity(entityType, requirement); } // --- Interfaces that provide the context that would be accessible if you implemented the ISpecial* interfaces --- @FunctionalInterface - public interface BlockRequirement { - ItemRequirement getRequiredItems(Block block, BlockState state, @Nullable BlockEntity blockEntity); + public interface ContextProvidingBlockRequirement { + ItemRequirement getRequiredItems(BlockState state, @Nullable BlockEntity blockEntity); } @FunctionalInterface - public interface BlockEntityRequirement { - ItemRequirement getRequiredItems(BlockEntity blockEntity, BlockState state); + public interface ContextProvidingBlockEntityRequirement { + ItemRequirement getRequiredItems(BlockEntity blockEntity); } @FunctionalInterface - public interface EntityRequirement { + public interface ContextProvidingEntityRequirement { ItemRequirement getRequiredItems(Entity entity); } } diff --git a/src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialBlockEntityItemRequirement.java b/src/main/java/com/simibubi/create/api/schematic/requirement/SpecialBlockEntityItemRequirement.java similarity index 81% rename from src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialBlockEntityItemRequirement.java rename to src/main/java/com/simibubi/create/api/schematic/requirement/SpecialBlockEntityItemRequirement.java index de6e29561b..9d8764d012 100644 --- a/src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialBlockEntityItemRequirement.java +++ b/src/main/java/com/simibubi/create/api/schematic/requirement/SpecialBlockEntityItemRequirement.java @@ -4,6 +4,6 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement; import net.minecraft.world.level.block.state.BlockState; -public interface ISpecialBlockEntityItemRequirement { +public interface SpecialBlockEntityItemRequirement { ItemRequirement getRequiredItems(BlockState state); } diff --git a/src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialBlockItemRequirement.java b/src/main/java/com/simibubi/create/api/schematic/requirement/SpecialBlockItemRequirement.java similarity index 58% rename from src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialBlockItemRequirement.java rename to src/main/java/com/simibubi/create/api/schematic/requirement/SpecialBlockItemRequirement.java index dc89bd0f49..39ca485dfb 100644 --- a/src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialBlockItemRequirement.java +++ b/src/main/java/com/simibubi/create/api/schematic/requirement/SpecialBlockItemRequirement.java @@ -1,10 +1,12 @@ package com.simibubi.create.api.schematic.requirement; +import org.jetbrains.annotations.Nullable; + import com.simibubi.create.content.schematics.requirement.ItemRequirement; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -public interface ISpecialBlockItemRequirement { - ItemRequirement getRequiredItems(BlockState state, BlockEntity blockEntity); +public interface SpecialBlockItemRequirement { + ItemRequirement getRequiredItems(BlockState state, @Nullable BlockEntity blockEntity); } diff --git a/src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialEntityItemRequirement.java b/src/main/java/com/simibubi/create/api/schematic/requirement/SpecialEntityItemRequirement.java similarity index 77% rename from src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialEntityItemRequirement.java rename to src/main/java/com/simibubi/create/api/schematic/requirement/SpecialEntityItemRequirement.java index 38bb16f779..9623dd4147 100644 --- a/src/main/java/com/simibubi/create/api/schematic/requirement/ISpecialEntityItemRequirement.java +++ b/src/main/java/com/simibubi/create/api/schematic/requirement/SpecialEntityItemRequirement.java @@ -2,6 +2,6 @@ package com.simibubi.create.api.schematic.requirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; -public interface ISpecialEntityItemRequirement { +public interface SpecialEntityItemRequirement { ItemRequirement getRequiredItems(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java index 2dfa1aab9c..386a53f558 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java @@ -6,9 +6,8 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert import org.jetbrains.annotations.Nullable; -import com.simibubi.create.api.contraption.transformable.ContraptionTransformableRegistry; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.impl.contraption.transformable.ContraptionTransformableRegistryImpl; import io.netty.buffer.ByteBuf; @@ -150,11 +149,11 @@ public class StructureTransform { } public void apply(BlockEntity be) { - ContraptionTransformableRegistry.TransformableBlockEntity transformableBlockEntity = ContraptionTransformableRegistryImpl.get(be.getType()); + TransformableBlockEntity transformableBlockEntity = ContraptionTransformableRegistryImpl.get(be.getType()); if (transformableBlockEntity != null) { transformableBlockEntity.transform(be, this); - } else if (be instanceof ITransformableBlockEntity itbe) { - itbe.transform(this); + } else if (be instanceof TransformableBlockEntity itbe) { + itbe.transform(be, this); } } @@ -165,10 +164,10 @@ public class StructureTransform { */ public BlockState apply(BlockState state) { Block block = state.getBlock(); - ContraptionTransformableRegistry.TransformableBlock transformableBlock = ContraptionTransformableRegistryImpl.get(block); + TransformableBlock transformableBlock = ContraptionTransformableRegistryImpl.get(block); if (transformableBlock != null) { - return transformableBlock.transform(block, state, this); - } else if (block instanceof ITransformableBlock transformable) { + return transformableBlock.transform(state, this); + } else if (block instanceof TransformableBlock transformable) { return transformable.transform(state, this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java index ea85aa4f17..e7ca3f6b89 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.chassis; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.foundation.block.IBE; @@ -29,7 +29,7 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.common.Tags; -public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable, IBE, ITransformableBlock { +public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable, IBE, TransformableBlock { public AbstractChassisBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java index 09e56db198..8350eb5b15 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java @@ -10,7 +10,7 @@ import com.mojang.serialization.MapCodec; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.contraptions.elevator.ElevatorColumn.ColumnCoords; import com.simibubi.create.content.redstone.contact.RedstoneContactBlock; import com.simibubi.create.content.redstone.diodes.BrassDiodeBlock; @@ -52,7 +52,7 @@ import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; public class ElevatorContactBlock extends WrenchableDirectionalBlock - implements IBE, ISpecialBlockItemRequirement { + implements IBE, SpecialBlockItemRequirement { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty CALLING = BooleanProperty.create("calling"); diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java index 69ba28bbcb..17f8a8a1aa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java @@ -12,7 +12,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.api.schematic.requirement.ISpecialEntityItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialEntityItemRequirement; import com.simibubi.create.content.contraptions.BlockMovementChecks; import com.simibubi.create.content.contraptions.bearing.BearingBlock; import com.simibubi.create.content.contraptions.chassis.AbstractChassisBlock; @@ -55,7 +55,7 @@ import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class SuperGlueEntity extends Entity implements IEntityWithComplexSpawn, ISpecialEntityItemRequirement { +public class SuperGlueEntity extends Entity implements IEntityWithComplexSpawn, SpecialEntityItemRequirement { public static AABB span(BlockPos startPos, BlockPos endPos) { return new AABB(Vec3.atLowerCornerOf(startPos), Vec3.atLowerCornerOf(endPos)).expandTowards(1, 1, 1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java index 284a84fc7a..dc80d6a520 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java @@ -12,9 +12,9 @@ import com.mojang.serialization.MapCodec; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.redstone.rail.ControllerRailBlock; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.IBE; @@ -64,7 +64,7 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; public class CartAssemblerBlock extends BaseRailBlock - implements IBE, IWrenchable, ISpecialBlockItemRequirement { + implements IBE, IWrenchable, SpecialBlockItemRequirement { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards"); diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java index e539e514e9..ffac824090 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java @@ -3,9 +3,9 @@ package com.simibubi.create.content.decoration.copycat; import java.util.List; import com.simibubi.create.AllBlocks; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; -import com.simibubi.create.api.schematic.nbt.IPartialSafeNBT; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockEntityItemRequirement; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; +import com.simibubi.create.api.schematic.nbt.PartialSafeNBT; +import com.simibubi.create.api.schematic.requirement.SpecialBlockEntityItemRequirement; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.redstone.RoseQuartzLampBlock; import com.simibubi.create.content.schematics.requirement.ItemRequirement; @@ -22,6 +22,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.TrapDoorBlock; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -29,7 +30,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.neoforged.neoforge.client.model.data.ModelData; public class CopycatBlockEntity extends SmartBlockEntity - implements ISpecialBlockEntityItemRequirement, ITransformableBlockEntity, IPartialSafeNBT { + implements SpecialBlockEntityItemRequirement, TransformableBlockEntity, PartialSafeNBT { private BlockState material; private ItemStack consumedItem; @@ -129,7 +130,7 @@ public class CopycatBlockEntity extends SmartBlockEntity } @Override - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { material = transform.apply(material); notifyUpdate(); } diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java index 6b04d80e81..6f9bd783ae 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java @@ -5,10 +5,10 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.kinetics.base.HorizontalAxisKineticBlock; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; @@ -37,7 +37,7 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; public class GirderEncasedShaftBlock extends HorizontalAxisKineticBlock - implements IBE, SimpleWaterloggedBlock, IWrenchable, ISpecialBlockItemRequirement { + implements IBE, SimpleWaterloggedBlock, IWrenchable, SpecialBlockItemRequirement { public static final BooleanProperty TOP = GirderBlock.TOP; public static final BooleanProperty BOTTOM = GirderBlock.BOTTOM; diff --git a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java index d441f7c8f3..e80c5926ca 100644 --- a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java @@ -7,10 +7,10 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.logistics.filter.FilterItem; import com.simibubi.create.content.logistics.filter.FilterItemStack; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.IBE; @@ -43,12 +43,13 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; + import net.neoforged.neoforge.items.ItemHandlerHelper; import org.jetbrains.annotations.NotNull; public class PlacardBlock extends FaceAttachedHorizontalDirectionalBlock - implements ProperWaterloggedBlock, IBE, ISpecialBlockItemRequirement, IWrenchable { + implements ProperWaterloggedBlock, IBE, SpecialBlockItemRequirement, IWrenchable { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java index 2456f14e00..98b419d5d3 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java @@ -7,7 +7,7 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllShapes; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; @@ -51,7 +51,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.neoforge.common.util.FakePlayer; -public class BacktankBlock extends HorizontalKineticBlock implements IBE, SimpleWaterloggedBlock, ISpecialBlockItemRequirement { +public class BacktankBlock extends HorizontalKineticBlock implements IBE, SimpleWaterloggedBlock, SpecialBlockItemRequirement { public BacktankBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java index 4cc4520bb5..ade7fc2870 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java @@ -10,8 +10,8 @@ import javax.annotation.Nullable; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.AllItems; +import com.simibubi.create.api.schematic.requirement.SpecialEntityItemRequirement; import com.simibubi.create.content.logistics.filter.FilterItemStack; -import com.simibubi.create.api.schematic.requirement.ISpecialEntityItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.networking.ISyncPersistentData; @@ -58,6 +58,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; + import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.common.CommonHooks; @@ -69,7 +70,7 @@ import net.neoforged.neoforge.items.ItemStackHandler; import net.neoforged.neoforge.items.wrapper.InvWrapper; public class BlueprintEntity extends HangingEntity - implements IEntityWithComplexSpawn, ISpecialEntityItemRequirement, ISyncPersistentData, IInteractionChecker { + implements IEntityWithComplexSpawn, SpecialEntityItemRequirement, ISyncPersistentData, IInteractionChecker { protected int size; protected Direction verticalOrientation; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java index 33a42254c8..172a777ffa 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java @@ -12,13 +12,13 @@ import java.util.function.Supplier; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.decoration.encasing.EncasedBlock; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.fluids.FluidPropagator; import com.simibubi.create.content.fluids.FluidTransportBehaviour; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.IBE; @@ -51,7 +51,7 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.ticks.TickPriority; public class EncasedPipeBlock extends Block - implements IWrenchable, ISpecialBlockItemRequirement, IBE, EncasedBlock, ITransformableBlock { + implements IWrenchable, SpecialBlockItemRequirement, IBE, EncasedBlock, TransformableBlock { public static final Map FACING_TO_PROPERTY_MAP = PipeBlock.PROPERTY_BY_DIRECTION; private final Supplier casing; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java index b55ead2d0b..6b4931d5a4 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; import com.mojang.serialization.MapCodec; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour; import com.simibubi.create.content.decoration.encasing.EncasableBlock; @@ -60,7 +60,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.ticks.TickPriority; public class FluidPipeBlock extends PipeBlock implements SimpleWaterloggedBlock, IWrenchableWithBracket, - IBE, EncasableBlock, ITransformableBlock { + IBE, EncasableBlock, TransformableBlock { private static final VoxelShape OCCLUSION_BOX = Block.box(4, 4, 4, 12, 12, 12); diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java index f101643750..31d65dcef4 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.fluids.pipes; import java.util.List; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour; import com.simibubi.create.content.fluids.FluidPropagator; @@ -13,10 +13,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public class FluidPipeBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity { +public class FluidPipeBlockEntity extends SmartBlockEntity implements TransformableBlockEntity { public FluidPipeBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -30,7 +31,7 @@ public class FluidPipeBlockEntity extends SmartBlockEntity implements ITransform } @Override - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { BracketedBlockEntityBehaviour bracketBehaviour = getBehaviour(BracketedBlockEntityBehaviour.TYPE); if (bracketBehaviour != null) { bracketBehaviour.transformBracket(transform); diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java index 2fdea0daa8..758a1fd7e0 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java @@ -4,8 +4,8 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.fluids.FluidTransportBehaviour; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; @@ -30,7 +30,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType; @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class GlassFluidPipeBlock extends AxisPipeBlock implements IBE, SimpleWaterloggedBlock, ISpecialBlockItemRequirement { +public class GlassFluidPipeBlock extends AxisPipeBlock implements IBE, SimpleWaterloggedBlock, SpecialBlockItemRequirement { public static final BooleanProperty ALT = BooleanProperty.create("alt"); diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java index ad41239c71..92c8a065e4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.base; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; import net.createmod.catnip.data.Iterate; @@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BooleanProperty; -public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBlock implements ITransformableBlock { +public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBlock implements TransformableBlock { public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE = BooleanProperty.create("axis_along_first"); diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java index 1bb5dbb4cb..b30fe3fd03 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java @@ -11,8 +11,8 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.equipment.armor.DivingBootsItem; import com.simibubi.create.content.fluids.transfer.GenericItemEmptying; @@ -89,12 +89,13 @@ import net.minecraft.world.phys.shapes.EntityCollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; + import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.items.IItemHandler; public class BeltBlock extends HorizontalKineticBlock - implements IBE, ISpecialBlockItemRequirement, ITransformableBlock, ProperWaterloggedBlock { + implements IBE, SpecialBlockItemRequirement, TransformableBlock, ProperWaterloggedBlock { public static final Property SLOPE = EnumProperty.create("slope", BeltSlope.class); public static final Property PART = EnumProperty.create("part", BeltPart.class); diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java index aae716127a..90d4379f7b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java @@ -13,7 +13,7 @@ import java.util.function.Consumer; import javax.annotation.Nullable; import com.simibubi.create.AllDataComponents; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; @@ -52,12 +52,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class ChainConveyorBlockEntity extends KineticBlockEntity implements ITransformableBlockEntity { +public class ChainConveyorBlockEntity extends KineticBlockEntity implements TransformableBlockEntity { public record ConnectionStats(float tangentAngle, float chainLength, Vec3 start, Vec3 end) { } @@ -784,7 +785,7 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements ITra } @Override - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { if (connections == null || connections.isEmpty()) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java index 6f2e9272ec..33900b8d34 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.kinetics.chainDrive; import com.simibubi.create.AllBlockEntityTypes; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; @@ -33,7 +33,7 @@ import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.material.PushReaction; public class ChainDriveBlock extends RotatedPillarKineticBlock - implements IBE, ITransformableBlock { + implements IBE, TransformableBlock { public static final Property PART = EnumProperty.create("part", Part.class); public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE = diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java index c15eaf984b..a07fa7d860 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java @@ -6,7 +6,7 @@ import java.util.List; import javax.annotation.Nullable; import com.simibubi.create.Create; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.mechanicalArm.AllArmInteractionPointTypes.JukeboxPoint; @@ -51,7 +51,7 @@ import net.minecraft.world.level.chunk.ChunkSource; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class ArmBlockEntity extends KineticBlockEntity implements ITransformableBlockEntity { +public class ArmBlockEntity extends KineticBlockEntity implements TransformableBlockEntity { // Server List inputs; @@ -420,7 +420,7 @@ public class ArmBlockEntity extends KineticBlockEntity implements ITransformable } @Override - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { if (interactionPointTag == null) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntity.java index 1b452758bc..9490c98105 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntity.java @@ -2,16 +2,17 @@ package com.simibubi.create.content.kinetics.simpleRelays; import java.util.List; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public class BracketedKineticBlockEntity extends SimpleKineticBlockEntity implements ITransformableBlockEntity { +public class BracketedKineticBlockEntity extends SimpleKineticBlockEntity implements TransformableBlockEntity { public BracketedKineticBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -25,7 +26,7 @@ public class BracketedKineticBlockEntity extends SimpleKineticBlockEntity implem } @Override - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { BracketedBlockEntityBehaviour bracketBehaviour = getBehaviour(BracketedBlockEntityBehaviour.TYPE); if (bracketBehaviour != null) { bracketBehaviour.transformBracket(transform); diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java index 6a8352f9ca..33c3d4ff67 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java @@ -4,7 +4,8 @@ import java.util.function.Supplier; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.decoration.encasing.EncasedBlock; import com.simibubi.create.content.equipment.wrench.IWrenchable; @@ -14,7 +15,6 @@ import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; import com.simibubi.create.content.kinetics.simpleRelays.CogWheelBlock; import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.content.kinetics.simpleRelays.SimpleKineticBlockEntity; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; @@ -45,7 +45,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; public class EncasedCogwheelBlock extends RotatedPillarKineticBlock - implements ICogWheel, IBE, ISpecialBlockItemRequirement, ITransformableBlock, EncasedBlock { + implements ICogWheel, IBE, SpecialBlockItemRequirement, TransformableBlock, EncasedBlock { public static final BooleanProperty TOP_SHAFT = BooleanProperty.create("top_shaft"); public static final BooleanProperty BOTTOM_SHAFT = BooleanProperty.create("bottom_shaft"); diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java index 7b397d7f8d..de57801edc 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java @@ -4,11 +4,11 @@ import java.util.function.Supplier; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.decoration.encasing.EncasedBlock; import com.simibubi.create.content.kinetics.base.AbstractEncasedShaftBlock; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; @@ -30,7 +30,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; public class EncasedShaftBlock extends AbstractEncasedShaftBlock - implements IBE, ISpecialBlockItemRequirement, EncasedBlock { + implements IBE, SpecialBlockItemRequirement, EncasedBlock { private final Supplier casing; diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java index f925a2d087..acb96478bb 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java @@ -2,7 +2,7 @@ package com.simibubi.create.content.kinetics.transmission.sequencer; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllItems; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.kinetics.base.HorizontalAxisKineticBlock; import com.simibubi.create.content.kinetics.base.KineticBlock; @@ -35,10 +35,11 @@ import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.phys.BlockHitResult; + import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; -public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements IBE, ITransformableBlock { +public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements IBE, TransformableBlock { public static final BooleanProperty VERTICAL = BooleanProperty.create("vertical"); public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5); diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java index 7c7dd3b6dc..f50f6be5c6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java @@ -10,7 +10,7 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem; import com.simibubi.create.content.schematics.requirement.ItemRequirement; @@ -63,11 +63,12 @@ import net.minecraft.world.phys.shapes.EntityCollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; + import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.level.BlockEvent; public class FactoryPanelBlock extends FaceAttachedHorizontalDirectionalBlock - implements ProperWaterloggedBlock, IBE, IWrenchable, ISpecialBlockItemRequirement { + implements ProperWaterloggedBlock, IBE, IWrenchable, SpecialBlockItemRequirement { public static final MapCodec CODEC = simpleCodec(FactoryPanelBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java index d9a438781d..20b6094a4a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java @@ -2,18 +2,18 @@ package com.simibubi.create.content.logistics.funnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.kinetics.belt.BeltBlock; import com.simibubi.create.content.kinetics.belt.BeltSlope; import com.simibubi.create.content.kinetics.belt.behaviour.DirectBeltInputBehaviour; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.tterrag.registrate.util.entry.BlockEntry; -import net.createmod.catnip.math.VoxelShaper; import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.math.VoxelShaper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.StringRepresentable; @@ -37,7 +37,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.EntityCollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class BeltFunnelBlock extends AbstractHorizontalFunnelBlock implements ISpecialBlockItemRequirement { +public class BeltFunnelBlock extends AbstractHorizontalFunnelBlock implements SpecialBlockItemRequirement { private BlockEntry parent; diff --git a/src/main/java/com/simibubi/create/content/redstone/DirectedDirectionalBlock.java b/src/main/java/com/simibubi/create/content/redstone/DirectedDirectionalBlock.java index ed9566331d..6a2c6b24c8 100644 --- a/src/main/java/com/simibubi/create/content/redstone/DirectedDirectionalBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/DirectedDirectionalBlock.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.redstone; import javax.annotation.Nullable; import com.mojang.serialization.MapCodec; -import com.simibubi.create.api.contraption.transformable.ITransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.equipment.wrench.IWrenchable; @@ -20,7 +20,7 @@ import net.minecraft.world.level.block.state.properties.EnumProperty; import org.jetbrains.annotations.NotNull; -public class DirectedDirectionalBlock extends HorizontalDirectionalBlock implements IWrenchable, ITransformableBlock { +public class DirectedDirectionalBlock extends HorizontalDirectionalBlock implements IWrenchable, TransformableBlock { public static final EnumProperty TARGET = EnumProperty.create("target", AttachFace.class); diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java index 4339778d61..2887205485 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; @@ -27,7 +27,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; public class LecternControllerBlock extends LecternBlock - implements IBE, ISpecialBlockItemRequirement { + implements IBE, SpecialBlockItemRequirement { public LecternControllerBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java index ba2a9e42ca..d29343ee5d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java @@ -8,9 +8,9 @@ import java.util.function.BiConsumer; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.equipment.clipboard.ClipboardEntry; import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.IBE; @@ -48,7 +48,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; public class NixieTubeBlock extends DoubleFaceAttachedBlock - implements IBE, IWrenchable, SimpleWaterloggedBlock, ISpecialBlockItemRequirement { + implements IBE, IWrenchable, SimpleWaterloggedBlock, SpecialBlockItemRequirement { protected final DyeColor color; diff --git a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java index a55c70d193..59169d46b8 100644 --- a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java +++ b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java @@ -8,10 +8,12 @@ import java.util.stream.Stream; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockEntityItemRequirement; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.api.schematic.requirement.ISpecialEntityItemRequirement; -import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry; +import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingBlockEntityRequirement; +import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingBlockRequirement; +import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingEntityRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockEntityItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialEntityItemRequirement; import com.simibubi.create.compat.framedblocks.FramedBlocksInSchematics; import com.simibubi.create.foundation.data.recipe.Mods; import com.simibubi.create.impl.schematic.requirement.SchematicRequirementsRegistryImpl; @@ -70,20 +72,20 @@ public class ItemRequirement { Block block = state.getBlock(); ItemRequirement requirement; - SchematicRequirementsRegistry.BlockRequirement blockItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlock(block); + ContextProvidingBlockRequirement blockItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlock(block); if (blockItemRequirement != null) { - requirement = blockItemRequirement.getRequiredItems(block, state, be); - } else if (block instanceof ISpecialBlockItemRequirement specialBlock) { + requirement = blockItemRequirement.getRequiredItems(state, be); + } else if (block instanceof SpecialBlockItemRequirement specialBlock) { requirement = specialBlock.getRequiredItems(state, be); } else { requirement = defaultOf(state, be); } if (be != null) { - SchematicRequirementsRegistry.BlockEntityRequirement blockEntityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlockEntityType(be.getType()); + ContextProvidingBlockEntityRequirement blockEntityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlockEntityType(be.getType()); if (blockEntityItemRequirement != null) { - requirement = requirement.union(blockEntityItemRequirement.getRequiredItems(be, state)); - } else if (be instanceof ISpecialBlockEntityItemRequirement specialBE) { + requirement = requirement.union(blockEntityItemRequirement.getRequiredItems(be)); + } else if (be instanceof SpecialBlockEntityItemRequirement specialBE) { requirement = requirement.union(specialBE.getRequiredItems(state)); } else if (com.simibubi.create.compat.Mods.FRAMEDBLOCKS.contains(block)) { requirement = requirement.union(FramedBlocksInSchematics.getRequiredItems(state, be)); @@ -133,10 +135,10 @@ public class ItemRequirement { } public static ItemRequirement of(Entity entity) { - SchematicRequirementsRegistry.EntityRequirement entityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForEntityType(entity.getType()); + ContextProvidingEntityRequirement entityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForEntityType(entity.getType()); if (entityItemRequirement != null) { return entityItemRequirement.getRequiredItems(entity); - } else if (entity instanceof ISpecialEntityItemRequirement specialEntity) { + } else if (entity instanceof SpecialEntityItemRequirement specialEntity) { return specialEntity.getRequiredItems(); } diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java index 35c3cd8795..4250763e9b 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java @@ -9,6 +9,10 @@ import java.util.function.Function; import javax.annotation.Nullable; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; + +import net.createmod.catnip.registry.RegisteredObjectsHelper; + import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -17,7 +21,6 @@ import com.google.common.collect.ImmutableSet; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBogeyStyles; import com.simibubi.create.AllItems; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.trains.entity.Carriage; @@ -30,7 +33,6 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.CreateLang; import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -59,11 +61,10 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -public abstract class AbstractBogeyBlock extends Block implements IBE, ProperWaterloggedBlock, ISpecialBlockItemRequirement, IWrenchable { +public abstract class AbstractBogeyBlock extends Block implements IBE, ProperWaterloggedBlock, SpecialBlockItemRequirement, IWrenchable { public static final StreamCodec> STREAM_CODEC = ByteBufCodecs.registry(Registries.BLOCK).map( block -> (AbstractBogeyBlock) block, Function.identity() ); - public static final EnumProperty AXIS = BlockStateProperties.HORIZONTAL_AXIS; static final List BOGEYS = new ArrayList<>(); public BogeySizes.BogeySize size; diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java index e30ddcd1b5..b03474253a 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.trains.bogey; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBogeyStyles; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.trains.track.TrackMaterial; import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; @@ -18,7 +18,7 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; public class StandardBogeyBlock extends AbstractBogeyBlock - implements IBE, ProperWaterloggedBlock, ISpecialBlockItemRequirement { + implements IBE, ProperWaterloggedBlock, SpecialBlockItemRequirement { public StandardBogeyBlock(Properties props, BogeySizes.BogeySize size) { super(props, size); diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java index aaf88159f6..2c3a29f602 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java @@ -7,11 +7,10 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import com.simibubi.create.api.contraption.train.TrainConductorHandler; - import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.AllBlocks; +import com.simibubi.create.api.contraption.train.TrainConductorHandler; import com.simibubi.create.content.contraptions.AssemblyException; import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.content.contraptions.ContraptionType; @@ -20,11 +19,12 @@ import com.simibubi.create.content.contraptions.actors.trainControls.ControlsBlo import com.simibubi.create.content.contraptions.minecart.TrainCargoManager; import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.impl.contraption.train.TrainConductorHandlerImpl; import net.createmod.catnip.data.Couple; import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -166,8 +166,12 @@ public class CarriageContraption extends Contraption { captureBE ? world.getBlockEntity(pos) : null); } - if (TrainConductorHandler.CONDUCTOR_HANDLERS.stream().anyMatch(handler -> handler.isValidConductor(blockState))) - assembledBlockConductors.add(toLocalPos(pos)); + for (TrainConductorHandler handler : TrainConductorHandlerImpl.CONDUCTOR_HANDLERS) { + if (handler.isValidConductor(blockState)) { + assembledBlockConductors.add(toLocalPos(pos)); + break; + } + } if (AllBlocks.TRAIN_CONTROLS.has(blockState)) { Direction facing = blockState.getValue(ControlsBlock.FACING); diff --git a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlockEntity.java index 8bd5d072c4..4ee0eaa47f 100644 --- a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlockEntity.java @@ -5,7 +5,7 @@ import java.util.List; import javax.annotation.Nullable; import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.redstone.displayLink.DisplayLinkBlock; import com.simibubi.create.content.trains.graph.EdgePointType; @@ -20,12 +20,13 @@ import dev.engine_room.flywheel.lib.transform.TransformStack; import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class TrackObserverBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity { +public class TrackObserverBlockEntity extends SmartBlockEntity implements TransformableBlockEntity { public TrackTargetingBehaviour edgePoint; @@ -90,8 +91,8 @@ public class TrackObserverBlockEntity extends SmartBlockEntity implements ITrans } @Override - public void transform(StructureTransform transform) { - edgePoint.transform(transform); + public void transform(BlockEntity be, StructureTransform transform) { + edgePoint.transform(be, transform); } public FilteringBehaviour createFilter() { diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java index 19d89a63ac..743daf498a 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java @@ -4,7 +4,7 @@ import java.util.List; import javax.annotation.Nullable; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.trains.graph.EdgePointType; import com.simibubi.create.content.trains.signal.SignalBlock.SignalType; @@ -16,12 +16,13 @@ import net.createmod.catnip.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class SignalBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity { +public class SignalBlockEntity extends SmartBlockEntity implements TransformableBlockEntity { public static enum OverlayState { RENDER, SKIP, DUAL @@ -162,8 +163,8 @@ public class SignalBlockEntity extends SmartBlockEntity implements ITransformabl } @Override - public void transform(StructureTransform transform) { - edgePoint.transform(transform); + public void transform(BlockEntity be, StructureTransform transform) { + edgePoint.transform(be, transform); } } diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java index b1cbded7e5..9bc2c7eed6 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java @@ -20,10 +20,10 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; import com.simibubi.create.compat.Mods; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; import com.simibubi.create.compat.computercraft.ComputerCraftProxy; import com.simibubi.create.content.contraptions.AssemblyException; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.decoration.slidingDoor.DoorControlBehaviour; import com.simibubi.create.content.equipment.wrench.IWrenchable; @@ -56,6 +56,8 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; + +import dan200.computercraft.api.peripheral.PeripheralCapability; import net.createmod.catnip.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; @@ -92,12 +94,13 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; + import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; -public class StationBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity { +public class StationBlockEntity extends SmartBlockEntity implements TransformableBlockEntity { public TrackTargetingBehaviour edgePoint; public DoorControlBehaviour doorControls; @@ -977,8 +980,8 @@ public class StationBlockEntity extends SmartBlockEntity implements ITransformab } @Override - public void transform(StructureTransform transform) { - edgePoint.transform(transform); + public void transform(BlockEntity be, StructureTransform transform) { + edgePoint.transform(be, transform); } // Package port integration diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java index 8040717a81..fd009be7c9 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java @@ -18,7 +18,6 @@ import java.util.Map.Entry; import java.util.Random; import java.util.Set; -import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; import com.google.common.base.Predicates; @@ -28,7 +27,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTags; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement; +import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement; import com.simibubi.create.content.decoration.girder.GirderBlock; import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.schematics.requirement.ItemRequirement; @@ -51,15 +50,16 @@ import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; import net.createmod.catnip.data.Iterate; import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; import net.createmod.catnip.math.AngleHelper; import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.math.VecHelper; import net.minecraft.ChatFormatting; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; @@ -104,7 +104,7 @@ import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; public class TrackBlock extends Block - implements IBE, IWrenchable, ITrackBlock, ISpecialBlockItemRequirement, ProperWaterloggedBlock, IHaveBigOutline { + implements IBE, IWrenchable, ITrackBlock, SpecialBlockItemRequirement, ProperWaterloggedBlock, IHaveBigOutline { public static final EnumProperty SHAPE = EnumProperty.create("shape", TrackShape.class); public static final BooleanProperty HAS_BE = BooleanProperty.create("turn"); diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java index 3f22249a16..4227fb2aa0 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java @@ -10,7 +10,7 @@ import java.util.Set; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags; -import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.content.contraptions.StructureTransform; import com.simibubi.create.content.trains.graph.TrackNodeLocation; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; @@ -44,11 +44,12 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; + import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.model.data.ModelData; -public class TrackBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity, IMergeableBE { +public class TrackBlockEntity extends SmartBlockEntity implements TransformableBlockEntity, IMergeableBE { Map connections; boolean cancelDrops; @@ -265,7 +266,7 @@ public class TrackBlockEntity extends SmartBlockEntity implements ITransformable } @Override - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { Map restoredConnections = new HashMap<>(); for (Entry entry : connections.entrySet()) restoredConnections.put(entry.getKey(), diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java index 1082601fdd..4d4e204981 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java @@ -23,11 +23,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; import net.createmod.catnip.data.Iterate; import net.createmod.catnip.math.VecHelper; import net.createmod.catnip.nbt.NBTHelper; import net.createmod.catnip.levelWrappers.SchematicLevel; +import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.render.CachedBuffers; import net.createmod.ponder.api.level.PonderLevel; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; @@ -43,8 +45,10 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; + import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -334,7 +338,7 @@ public class TrackTargetingBehaviour extends BlockEnti ms.popPose(); } - public void transform(StructureTransform transform) { + public void transform(BlockEntity be, StructureTransform transform) { id = UUID.randomUUID(); targetTrack = transform.applyWithoutOffset(targetTrack); if (prevDirection != null) diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java b/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java index 011a4e7790..9723ebba51 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java @@ -9,14 +9,14 @@ import java.util.function.Consumer; import org.jetbrains.annotations.NotNull; import com.simibubi.create.api.event.BlockEntityBehaviourEvent; -import com.simibubi.create.api.schematic.requirement.ISpecialBlockEntityItemRequirement; +import com.simibubi.create.api.schematic.nbt.PartialSafeNBT; +import com.simibubi.create.api.schematic.requirement.SpecialBlockEntityItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.IInteractionChecker; -import com.simibubi.create.api.schematic.nbt.IPartialSafeNBT; import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap; import net.createmod.ponder.api.VirtualBlockEntity; @@ -27,10 +27,11 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; + import net.neoforged.neoforge.common.NeoForge; public abstract class SmartBlockEntity extends CachedRenderBBBlockEntity - implements IPartialSafeNBT, IInteractionChecker, ISpecialBlockEntityItemRequirement, VirtualBlockEntity { + implements PartialSafeNBT, IInteractionChecker, SpecialBlockEntityItemRequirement, VirtualBlockEntity { private final Map, BlockEntityBehaviour> behaviours = new Reference2ObjectArrayMap<>(); private boolean initialized = false; diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index cf6ce9138f..1f355eb109 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -7,7 +7,7 @@ import javax.annotation.Nullable; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.api.schematic.nbt.IPartialSafeNBT; +import com.simibubi.create.api.schematic.nbt.PartialSafeNBT; import com.simibubi.create.api.schematic.nbt.SchematicSafeNBTRegistry; import com.simibubi.create.compat.Mods; import com.simibubi.create.compat.framedblocks.FramedBlocksInSchematics; @@ -63,6 +63,7 @@ import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; + import net.minecraft.world.phys.BlockHitResult; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.SpecialPlantable; @@ -299,7 +300,7 @@ public class BlockHelper { } else if (safeNBT != null) { data = new CompoundTag(); safeNBT.writeSafe(blockEntity, data, access); - } else if (blockEntity instanceof IPartialSafeNBT safeNbtBE) { + } else if (blockEntity instanceof PartialSafeNBT safeNbtBE) { data = new CompoundTag(); safeNbtBE.writeSafe(data, access); } else if (Mods.FRAMEDBLOCKS.contains(blockState.getBlock())) { diff --git a/src/main/java/com/simibubi/create/impl/contraption/train/TrainConductorHandlerImpl.java b/src/main/java/com/simibubi/create/impl/contraption/train/TrainConductorHandlerImpl.java new file mode 100644 index 0000000000..0a767a4cf9 --- /dev/null +++ b/src/main/java/com/simibubi/create/impl/contraption/train/TrainConductorHandlerImpl.java @@ -0,0 +1,22 @@ +package com.simibubi.create.impl.contraption.train; + +import java.util.ArrayList; +import java.util.List; + +import org.jetbrains.annotations.ApiStatus; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.api.contraption.train.TrainConductorHandler; +import com.simibubi.create.api.contraption.train.TrainConductorHandler.UpdateScheduleCallback; +import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; + +@ApiStatus.Internal +public class TrainConductorHandlerImpl { + public static final List CONDUCTOR_HANDLERS = new ArrayList<>(); + + @ApiStatus.Internal + public static void registerBlazeBurner() { + TrainConductorHandler.registerConductor(AllBlocks.BLAZE_BURNER.getId(), blockState -> AllBlocks.BLAZE_BURNER.has(blockState) + && blockState.getValue(BlazeBurnerBlock.HEAT_LEVEL) != BlazeBurnerBlock.HeatLevel.NONE, UpdateScheduleCallback.EMPTY); + } +} diff --git a/src/main/java/com/simibubi/create/impl/contraption/transformable/ContraptionTransformableRegistryImpl.java b/src/main/java/com/simibubi/create/impl/contraption/transformable/ContraptionTransformableRegistryImpl.java index 600cfbc829..103542b088 100644 --- a/src/main/java/com/simibubi/create/impl/contraption/transformable/ContraptionTransformableRegistryImpl.java +++ b/src/main/java/com/simibubi/create/impl/contraption/transformable/ContraptionTransformableRegistryImpl.java @@ -2,8 +2,8 @@ package com.simibubi.create.impl.contraption.transformable; import org.jetbrains.annotations.ApiStatus; -import com.simibubi.create.api.contraption.transformable.ContraptionTransformableRegistry.TransformableBlock; -import com.simibubi.create.api.contraption.transformable.ContraptionTransformableRegistry.TransformableBlockEntity; +import com.simibubi.create.api.contraption.transformable.TransformableBlock; +import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import com.simibubi.create.foundation.utility.AttachedRegistry; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/src/main/java/com/simibubi/create/impl/schematic/requirement/SchematicRequirementsRegistryImpl.java b/src/main/java/com/simibubi/create/impl/schematic/requirement/SchematicRequirementsRegistryImpl.java index d7cb918e51..b62d0c9454 100644 --- a/src/main/java/com/simibubi/create/impl/schematic/requirement/SchematicRequirementsRegistryImpl.java +++ b/src/main/java/com/simibubi/create/impl/schematic/requirement/SchematicRequirementsRegistryImpl.java @@ -2,7 +2,9 @@ package com.simibubi.create.impl.schematic.requirement; import org.jetbrains.annotations.ApiStatus; -import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry; +import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingBlockEntityRequirement; +import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingBlockRequirement; +import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingEntityRequirement; import com.simibubi.create.foundation.utility.AttachedRegistry; import net.minecraft.core.registries.BuiltInRegistries; @@ -15,45 +17,45 @@ import net.minecraft.world.level.block.entity.BlockEntityType; @ApiStatus.Internal public class SchematicRequirementsRegistryImpl { - private static final AttachedRegistry BLOCK_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK); - private static final AttachedRegistry, SchematicRequirementsRegistry.BlockEntityRequirement> BLOCK_ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK_ENTITY_TYPE); - private static final AttachedRegistry, SchematicRequirementsRegistry.EntityRequirement> ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.ENTITY_TYPE); + private static final AttachedRegistry BLOCK_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK); + private static final AttachedRegistry, ContextProvidingBlockEntityRequirement> BLOCK_ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK_ENTITY_TYPE); + private static final AttachedRegistry, ContextProvidingEntityRequirement> ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.ENTITY_TYPE); - public static void registerForBlock(Block block, SchematicRequirementsRegistry.BlockRequirement requirement) { + public static void registerForBlock(Block block, ContextProvidingBlockRequirement requirement) { BLOCK_REQUIREMENTS.register(block, requirement); } - public static void registerForBlock(ResourceLocation block, SchematicRequirementsRegistry.BlockRequirement requirement) { + public static void registerForBlock(ResourceLocation block, ContextProvidingBlockRequirement requirement) { BLOCK_REQUIREMENTS.register(block, requirement); } - public static void registerForBlockEntity(BlockEntityType blockEntityType, SchematicRequirementsRegistry.BlockEntityRequirement requirement) { + public static void registerForBlockEntity(BlockEntityType blockEntityType, ContextProvidingBlockEntityRequirement requirement) { BLOCK_ENTITY_REQUIREMENTS.register(blockEntityType, requirement); } - public static void registerForBlockEntity(ResourceLocation blockEntityType, SchematicRequirementsRegistry.BlockEntityRequirement requirement) { + public static void registerForBlockEntity(ResourceLocation blockEntityType, ContextProvidingBlockEntityRequirement requirement) { BLOCK_ENTITY_REQUIREMENTS.register(blockEntityType, requirement); } - public static void registerForEntity(EntityType entityType, SchematicRequirementsRegistry.EntityRequirement requirement) { + public static void registerForEntity(EntityType entityType, ContextProvidingEntityRequirement requirement) { ENTITY_REQUIREMENTS.register(entityType, requirement); } // --- - public static void registerForEntity(ResourceLocation entityType, SchematicRequirementsRegistry.EntityRequirement requirement) { + public static void registerForEntity(ResourceLocation entityType, ContextProvidingEntityRequirement requirement) { ENTITY_REQUIREMENTS.register(entityType, requirement); } - public static SchematicRequirementsRegistry.BlockRequirement getRequirementForBlock(Block block) { + public static ContextProvidingBlockRequirement getRequirementForBlock(Block block) { return BLOCK_REQUIREMENTS.get(block); } - public static SchematicRequirementsRegistry.BlockEntityRequirement getRequirementForBlockEntityType(BlockEntityType blockEntityType) { + public static ContextProvidingBlockEntityRequirement getRequirementForBlockEntityType(BlockEntityType blockEntityType) { return BLOCK_ENTITY_REQUIREMENTS.get(blockEntityType); } - public static SchematicRequirementsRegistry.EntityRequirement getRequirementForEntityType(EntityType entityType) { + public static ContextProvidingEntityRequirement getRequirementForEntityType(EntityType entityType) { return ENTITY_REQUIREMENTS.get(entityType); } }