mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
Merge branch 'mc1.20.1/feature-dev' into mc1.21.1/dev
This commit is contained in:
commit
86ca403ec3
54 changed files with 245 additions and 222 deletions
|
@ -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()
|
||||
|
|
|
@ -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<TrainConductorHandler> 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<BlockState> 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<BlockState> blockStateSetter);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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
|
||||
*/
|
|
@ -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<BlockEntity> blockEntityType, BlockEntityRequirement requirement) {
|
||||
public static void registerForBlockEntity(BlockEntityType<BlockEntity> 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<Entity> entityType, EntityRequirement requirement) {
|
||||
public static void registerForEntity(EntityType<Entity> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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<ChassisBlockEntity>, ITransformableBlock {
|
||||
public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable, IBE<ChassisBlockEntity>, TransformableBlock {
|
||||
|
||||
public AbstractChassisBlock(Properties properties) {
|
||||
super(properties);
|
||||
|
|
|
@ -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<ElevatorContactBlockEntity>, ISpecialBlockItemRequirement {
|
||||
implements IBE<ElevatorContactBlockEntity>, SpecialBlockItemRequirement {
|
||||
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
public static final BooleanProperty CALLING = BooleanProperty.create("calling");
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<CartAssemblerBlockEntity>, IWrenchable, ISpecialBlockItemRequirement {
|
||||
implements IBE<CartAssemblerBlockEntity>, IWrenchable, SpecialBlockItemRequirement {
|
||||
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards");
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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<KineticBlockEntity>, SimpleWaterloggedBlock, IWrenchable, ISpecialBlockItemRequirement {
|
||||
implements IBE<KineticBlockEntity>, SimpleWaterloggedBlock, IWrenchable, SpecialBlockItemRequirement {
|
||||
|
||||
public static final BooleanProperty TOP = GirderBlock.TOP;
|
||||
public static final BooleanProperty BOTTOM = GirderBlock.BOTTOM;
|
||||
|
|
|
@ -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<PlacardBlockEntity>, ISpecialBlockItemRequirement, IWrenchable {
|
||||
implements ProperWaterloggedBlock, IBE<PlacardBlockEntity>, SpecialBlockItemRequirement, IWrenchable {
|
||||
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
|
||||
|
|
|
@ -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<BacktankBlockEntity>, SimpleWaterloggedBlock, ISpecialBlockItemRequirement {
|
||||
public class BacktankBlock extends HorizontalKineticBlock implements IBE<BacktankBlockEntity>, SimpleWaterloggedBlock, SpecialBlockItemRequirement {
|
||||
|
||||
public BacktankBlock(Properties properties) {
|
||||
super(properties);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<FluidPipeBlockEntity>, EncasedBlock, ITransformableBlock {
|
||||
implements IWrenchable, SpecialBlockItemRequirement, IBE<FluidPipeBlockEntity>, EncasedBlock, TransformableBlock {
|
||||
public static final Map<Direction, BooleanProperty> FACING_TO_PROPERTY_MAP = PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
private final Supplier<Block> casing;
|
||||
|
|
|
@ -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<FluidPipeBlockEntity>, EncasableBlock, ITransformableBlock {
|
||||
IBE<FluidPipeBlockEntity>, EncasableBlock, TransformableBlock {
|
||||
|
||||
private static final VoxelShape OCCLUSION_BOX = Block.box(4, 4, 4, 12, 12, 12);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<StraightPipeBlockEntity>, SimpleWaterloggedBlock, ISpecialBlockItemRequirement {
|
||||
public class GlassFluidPipeBlock extends AxisPipeBlock implements IBE<StraightPipeBlockEntity>, SimpleWaterloggedBlock, SpecialBlockItemRequirement {
|
||||
|
||||
public static final BooleanProperty ALT = BooleanProperty.create("alt");
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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<BeltBlockEntity>, ISpecialBlockItemRequirement, ITransformableBlock, ProperWaterloggedBlock {
|
||||
implements IBE<BeltBlockEntity>, SpecialBlockItemRequirement, TransformableBlock, ProperWaterloggedBlock {
|
||||
|
||||
public static final Property<BeltSlope> SLOPE = EnumProperty.create("slope", BeltSlope.class);
|
||||
public static final Property<BeltPart> PART = EnumProperty.create("part", BeltPart.class);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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<KineticBlockEntity>, ITransformableBlock {
|
||||
implements IBE<KineticBlockEntity>, TransformableBlock {
|
||||
|
||||
public static final Property<Part> PART = EnumProperty.create("part", Part.class);
|
||||
public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE =
|
||||
|
|
|
@ -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<ArmInteractionPoint> 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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<SimpleKineticBlockEntity>, ISpecialBlockItemRequirement, ITransformableBlock, EncasedBlock {
|
||||
implements ICogWheel, IBE<SimpleKineticBlockEntity>, SpecialBlockItemRequirement, TransformableBlock, EncasedBlock {
|
||||
|
||||
public static final BooleanProperty TOP_SHAFT = BooleanProperty.create("top_shaft");
|
||||
public static final BooleanProperty BOTTOM_SHAFT = BooleanProperty.create("bottom_shaft");
|
||||
|
|
|
@ -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<KineticBlockEntity>, ISpecialBlockItemRequirement, EncasedBlock {
|
||||
implements IBE<KineticBlockEntity>, SpecialBlockItemRequirement, EncasedBlock {
|
||||
|
||||
private final Supplier<Block> casing;
|
||||
|
||||
|
|
|
@ -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<SequencedGearshiftBlockEntity>, ITransformableBlock {
|
||||
public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements IBE<SequencedGearshiftBlockEntity>, TransformableBlock {
|
||||
|
||||
public static final BooleanProperty VERTICAL = BooleanProperty.create("vertical");
|
||||
public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5);
|
||||
|
|
|
@ -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<FactoryPanelBlockEntity>, IWrenchable, ISpecialBlockItemRequirement {
|
||||
implements ProperWaterloggedBlock, IBE<FactoryPanelBlockEntity>, IWrenchable, SpecialBlockItemRequirement {
|
||||
public static final MapCodec<FactoryPanelBlock> CODEC = simpleCodec(FactoryPanelBlock::new);
|
||||
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
|
|
|
@ -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<? extends FunnelBlock> parent;
|
||||
|
||||
|
|
|
@ -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<AttachFace> TARGET = EnumProperty.create("target", AttachFace.class);
|
||||
|
||||
|
|
|
@ -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<LecternControllerBlockEntity>, ISpecialBlockItemRequirement {
|
||||
implements IBE<LecternControllerBlockEntity>, SpecialBlockItemRequirement {
|
||||
|
||||
public LecternControllerBlock(Properties properties) {
|
||||
super(properties);
|
||||
|
|
|
@ -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<NixieTubeBlockEntity>, IWrenchable, SimpleWaterloggedBlock, ISpecialBlockItemRequirement {
|
||||
implements IBE<NixieTubeBlockEntity>, IWrenchable, SimpleWaterloggedBlock, SpecialBlockItemRequirement {
|
||||
|
||||
protected final DyeColor color;
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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<T extends AbstractBogeyBlockEntity> extends Block implements IBE<T>, ProperWaterloggedBlock, ISpecialBlockItemRequirement, IWrenchable {
|
||||
public abstract class AbstractBogeyBlock<T extends AbstractBogeyBlockEntity> extends Block implements IBE<T>, ProperWaterloggedBlock, SpecialBlockItemRequirement, IWrenchable {
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, AbstractBogeyBlock<?>> STREAM_CODEC = ByteBufCodecs.registry(Registries.BLOCK).map(
|
||||
block -> (AbstractBogeyBlock<?>) block, Function.identity()
|
||||
);
|
||||
|
||||
public static final EnumProperty<Direction.Axis> AXIS = BlockStateProperties.HORIZONTAL_AXIS;
|
||||
static final List<ResourceLocation> BOGEYS = new ArrayList<>();
|
||||
public BogeySizes.BogeySize size;
|
||||
|
|
|
@ -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<StandardBogeyBlockEntity>
|
||||
implements IBE<StandardBogeyBlockEntity>, ProperWaterloggedBlock, ISpecialBlockItemRequirement {
|
||||
implements IBE<StandardBogeyBlockEntity>, ProperWaterloggedBlock, SpecialBlockItemRequirement {
|
||||
|
||||
public StandardBogeyBlock(Properties props, BogeySizes.BogeySize size) {
|
||||
super(props, size);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<TrackObserver> 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() {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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<GlobalStation> 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
|
||||
|
|
|
@ -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<TrackBlockEntity>, IWrenchable, ITrackBlock, ISpecialBlockItemRequirement, ProperWaterloggedBlock, IHaveBigOutline {
|
||||
implements IBE<TrackBlockEntity>, IWrenchable, ITrackBlock, SpecialBlockItemRequirement, ProperWaterloggedBlock, IHaveBigOutline {
|
||||
|
||||
public static final EnumProperty<TrackShape> SHAPE = EnumProperty.create("shape", TrackShape.class);
|
||||
public static final BooleanProperty HAS_BE = BooleanProperty.create("turn");
|
||||
|
|
|
@ -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<BlockPos, BezierConnection> 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<BlockPos, BezierConnection> restoredConnections = new HashMap<>();
|
||||
for (Entry<BlockPos, BezierConnection> entry : connections.entrySet())
|
||||
restoredConnections.put(entry.getKey(),
|
||||
|
|
|
@ -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<T extends TrackEdgePoint> 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)
|
||||
|
|
|
@ -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<BehaviourType<?>, BlockEntityBehaviour> behaviours = new Reference2ObjectArrayMap<>();
|
||||
private boolean initialized = false;
|
||||
|
|
|
@ -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())) {
|
||||
|
|
|
@ -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<TrainConductorHandler> 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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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, SchematicRequirementsRegistry.BlockRequirement> BLOCK_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK);
|
||||
private static final AttachedRegistry<BlockEntityType<?>, SchematicRequirementsRegistry.BlockEntityRequirement> BLOCK_ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK_ENTITY_TYPE);
|
||||
private static final AttachedRegistry<EntityType<?>, SchematicRequirementsRegistry.EntityRequirement> ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.ENTITY_TYPE);
|
||||
private static final AttachedRegistry<Block, ContextProvidingBlockRequirement> BLOCK_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK);
|
||||
private static final AttachedRegistry<BlockEntityType<?>, ContextProvidingBlockEntityRequirement> BLOCK_ENTITY_REQUIREMENTS = new AttachedRegistry<>(BuiltInRegistries.BLOCK_ENTITY_TYPE);
|
||||
private static final AttachedRegistry<EntityType<?>, 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<BlockEntity> blockEntityType, SchematicRequirementsRegistry.BlockEntityRequirement requirement) {
|
||||
public static void registerForBlockEntity(BlockEntityType<BlockEntity> 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<Entity> entityType, SchematicRequirementsRegistry.EntityRequirement requirement) {
|
||||
public static void registerForEntity(EntityType<Entity> 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<? extends BlockEntity> blockEntityType) {
|
||||
public static ContextProvidingBlockEntityRequirement getRequirementForBlockEntityType(BlockEntityType<? extends BlockEntity> blockEntityType) {
|
||||
return BLOCK_ENTITY_REQUIREMENTS.get(blockEntityType);
|
||||
}
|
||||
|
||||
public static SchematicRequirementsRegistry.EntityRequirement getRequirementForEntityType(EntityType<? extends Entity> entityType) {
|
||||
public static ContextProvidingEntityRequirement getRequirementForEntityType(EntityType<? extends Entity> entityType) {
|
||||
return ENTITY_REQUIREMENTS.get(entityType);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue