mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
What happened to that "I"
- Remove I prefix from interfaces - Add some more context to handler methods and improve the api in some areas
This commit is contained in:
parent
4620d94f7d
commit
cb55dbccdf
54 changed files with 273 additions and 242 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.AllBlockTags;
|
||||||
import com.simibubi.create.AllTags.AllItemTags;
|
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.ContraptionControlsBlock;
|
||||||
import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement;
|
import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement;
|
||||||
import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovingInteraction;
|
import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovingInteraction;
|
||||||
|
@ -289,6 +288,7 @@ import com.simibubi.create.foundation.item.ItemDescription;
|
||||||
import com.simibubi.create.foundation.item.UncontainableBlockItem;
|
import com.simibubi.create.foundation.item.UncontainableBlockItem;
|
||||||
import com.simibubi.create.foundation.utility.ColorHandlers;
|
import com.simibubi.create.foundation.utility.ColorHandlers;
|
||||||
import com.simibubi.create.foundation.utility.DyeHelper;
|
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.providers.RegistrateRecipeProvider;
|
||||||
import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables;
|
import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables;
|
||||||
import com.tterrag.registrate.util.DataIngredient;
|
import com.tterrag.registrate.util.DataIngredient;
|
||||||
|
@ -768,7 +768,7 @@ public class AllBlocks {
|
||||||
.loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable()))
|
.loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable()))
|
||||||
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
|
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
|
||||||
.onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour()))
|
.onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour()))
|
||||||
.onRegister(block -> TrainConductorHandler.registerBlazeBurner())
|
.onRegister(block -> TrainConductorHandlerImpl.registerBlazeBurner())
|
||||||
.item(BlazeBurnerBlockItem::withBlaze)
|
.item(BlazeBurnerBlockItem::withBlaze)
|
||||||
.model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze"))
|
.model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze"))
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -1,37 +1,24 @@
|
||||||
package com.simibubi.create.api.contraption.train;
|
package com.simibubi.create.api.contraption.train;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import java.util.function.Consumer;
|
||||||
import com.simibubi.create.AllInteractionBehaviours;
|
import java.util.function.Predicate;
|
||||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
|
|
||||||
|
|
||||||
|
import com.simibubi.create.AllInteractionBehaviours;
|
||||||
import com.simibubi.create.content.processing.burner.BlockBasedTrainConductorInteractionBehaviour;
|
import com.simibubi.create.content.processing.burner.BlockBasedTrainConductorInteractionBehaviour;
|
||||||
|
import com.simibubi.create.impl.contraption.train.TrainConductorHandlerImpl;
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
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
|
* All required methods to make your block a train conductor similar to the blaze burner
|
||||||
*/
|
*/
|
||||||
public interface TrainConductorHandler {
|
public interface TrainConductorHandler {
|
||||||
|
|
||||||
@ApiStatus.Internal
|
|
||||||
List<TrainConductorHandler> CONDUCTOR_HANDLERS = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
boolean isValidConductor(BlockState state);
|
boolean isValidConductor(BlockState state);
|
||||||
|
|
||||||
private static void registerHandler(TrainConductorHandler handler) {
|
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) {
|
static void registerConductor(ResourceLocation blockRl, Predicate<BlockState> isValidConductor, UpdateScheduleCallback updateScheduleCallback) {
|
||||||
|
@ -39,14 +26,7 @@ public interface TrainConductorHandler {
|
||||||
registerHandler(isValidConductor::test);
|
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 {
|
interface UpdateScheduleCallback {
|
||||||
|
|
||||||
UpdateScheduleCallback EMPTY = (hasSchedule, blockState, blockStateSetter) -> {};
|
UpdateScheduleCallback EMPTY = (hasSchedule, blockState, blockStateSetter) -> {};
|
||||||
|
|
||||||
void update(boolean hasSchedule, BlockState currentBlockState, Consumer<BlockState> blockStateSetter);
|
void update(boolean hasSchedule, BlockState currentBlockState, Consumer<BlockState> blockStateSetter);
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
package com.simibubi.create.api.contraption.transformable;
|
package com.simibubi.create.api.contraption.transformable;
|
||||||
|
|
||||||
import com.simibubi.create.content.contraptions.StructureTransform;
|
|
||||||
import com.simibubi.create.impl.contraption.transformable.ContraptionTransformableRegistryImpl;
|
import com.simibubi.create.impl.contraption.transformable.ContraptionTransformableRegistryImpl;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.Block;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registry for registering new contraption transformations
|
* Registry for registering new contraption transformations
|
||||||
|
@ -34,16 +31,4 @@ public class ContraptionTransformableRegistry {
|
||||||
public static void registerForBlockEntity(BlockEntityType<?> blockEntityType, TransformableBlockEntity transformableBlockEntity) {
|
public static void registerForBlockEntity(BlockEntityType<?> blockEntityType, TransformableBlockEntity transformableBlockEntity) {
|
||||||
ContraptionTransformableRegistryImpl.registerForBlockEntity(blockEntityType, 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;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
public interface ITransformableBlock {
|
@FunctionalInterface
|
||||||
|
public interface TransformableBlock {
|
||||||
BlockState transform(BlockState state, StructureTransform transform);
|
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);
|
||||||
|
}
|
|
@ -2,7 +2,7 @@ package com.simibubi.create.api.schematic.nbt;
|
||||||
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
|
||||||
public interface IPartialSafeNBT {
|
public interface PartialSafeNBT {
|
||||||
/**
|
/**
|
||||||
* This will always be called from the logical server
|
* 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
|
* 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,
|
* @param requirement The requirement you would like to add to this block,
|
||||||
* the {@link BlockRequirement#getRequiredItems(Block, BlockState, BlockEntity)}
|
* the {@link ContextProvidingBlockRequirement#getRequiredItems(BlockState, BlockEntity)}
|
||||||
* method will be called on the {@link BlockRequirement} you have provided,
|
* 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
|
* 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);
|
SchematicRequirementsRegistryImpl.registerForBlock(block, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a new special requirement for a specified block
|
* 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,
|
* @param requirement The requirement you would like to add to this block,
|
||||||
* the {@link BlockRequirement#getRequiredItems(Block, BlockState, BlockEntity)}
|
* the {@link ContextProvidingBlockRequirement#getRequiredItems(BlockState, BlockEntity)}
|
||||||
* method will be called on the {@link BlockRequirement} you have provided,
|
* 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
|
* 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);
|
SchematicRequirementsRegistryImpl.registerForBlock(block, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a new special requirement for a specified block entity type
|
* 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,
|
* @param requirement The requirement you would like to add to this block entity type,
|
||||||
* the {@link BlockEntityRequirement#getRequiredItems(BlockEntity, BlockState)}
|
* the {@link ContextProvidingBlockEntityRequirement#getRequiredItems(BlockEntity)}
|
||||||
* method will be called on the {@link BlockEntityRequirement} you have provided,
|
* 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
|
* 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);
|
SchematicRequirementsRegistryImpl.registerForBlockEntity(blockEntityType, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a new special requirement for a specified block entity type
|
* 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,
|
* @param requirement The requirement you would like to add to this block entity type,
|
||||||
* the {@link BlockEntityRequirement#getRequiredItems(BlockEntity, BlockState)}
|
* the {@link ContextProvidingBlockEntityRequirement#getRequiredItems(BlockEntity)}
|
||||||
* method will be called on the {@link BlockEntityRequirement} you have provided,
|
* 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
|
* 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);
|
SchematicRequirementsRegistryImpl.registerForBlockEntity(blockEntityType, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a new special requirement for a specified entity type
|
* 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,
|
* @param requirement The requirement you would like to add to this entity type,
|
||||||
* the {@link EntityRequirement#getRequiredItems(Entity)}
|
* the {@link ContextProvidingEntityRequirement#getRequiredItems(Entity)}
|
||||||
* method will be called on the {@link EntityRequirement} you have provided,
|
* 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
|
* 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);
|
SchematicRequirementsRegistryImpl.registerForEntity(entityType, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a new special requirement for a specified entity type
|
* 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,
|
* @param requirement The requirement you would like to add to this entity type,
|
||||||
* the {@link EntityRequirement#getRequiredItems(Entity)}
|
* the {@link ContextProvidingEntityRequirement#getRequiredItems(Entity)}
|
||||||
* method will be called on the {@link EntityRequirement} you have provided,
|
* 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
|
* 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);
|
SchematicRequirementsRegistryImpl.registerForEntity(entityType, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Interfaces that provide the context that would be accessible if you implemented the ISpecial* interfaces ---
|
// --- Interfaces that provide the context that would be accessible if you implemented the ISpecial* interfaces ---
|
||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface BlockRequirement {
|
public interface ContextProvidingBlockRequirement {
|
||||||
ItemRequirement getRequiredItems(Block block, BlockState state, @Nullable BlockEntity blockEntity);
|
ItemRequirement getRequiredItems(BlockState state, @Nullable BlockEntity blockEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface BlockEntityRequirement {
|
public interface ContextProvidingBlockEntityRequirement {
|
||||||
ItemRequirement getRequiredItems(BlockEntity blockEntity, BlockState state);
|
ItemRequirement getRequiredItems(BlockEntity blockEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface EntityRequirement {
|
public interface ContextProvidingEntityRequirement {
|
||||||
ItemRequirement getRequiredItems(Entity entity);
|
ItemRequirement getRequiredItems(Entity entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,6 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
public interface ISpecialBlockEntityItemRequirement {
|
public interface SpecialBlockEntityItemRequirement {
|
||||||
ItemRequirement getRequiredItems(BlockState state);
|
ItemRequirement getRequiredItems(BlockState state);
|
||||||
}
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
package com.simibubi.create.api.schematic.requirement;
|
package com.simibubi.create.api.schematic.requirement;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
public interface ISpecialBlockItemRequirement {
|
public interface SpecialBlockItemRequirement {
|
||||||
ItemRequirement getRequiredItems(BlockState state, BlockEntity blockEntity);
|
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;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
|
|
||||||
public interface ISpecialEntityItemRequirement {
|
public interface SpecialEntityItemRequirement {
|
||||||
ItemRequirement getRequiredItems();
|
ItemRequirement getRequiredItems();
|
||||||
}
|
}
|
|
@ -4,9 +4,8 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert
|
||||||
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING;
|
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.FACING;
|
||||||
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING;
|
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING;
|
||||||
|
|
||||||
import com.simibubi.create.api.contraption.transformable.ContraptionTransformableRegistry;
|
import com.simibubi.create.api.contraption.transformable.TransformableBlock;
|
||||||
import com.simibubi.create.api.contraption.transformable.ITransformableBlock;
|
import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity;
|
||||||
import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity;
|
|
||||||
import com.simibubi.create.impl.contraption.transformable.ContraptionTransformableRegistryImpl;
|
import com.simibubi.create.impl.contraption.transformable.ContraptionTransformableRegistryImpl;
|
||||||
|
|
||||||
import net.createmod.catnip.math.VecHelper;
|
import net.createmod.catnip.math.VecHelper;
|
||||||
|
@ -133,11 +132,11 @@ public class StructureTransform {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void apply(BlockEntity be) {
|
public void apply(BlockEntity be) {
|
||||||
ContraptionTransformableRegistry.TransformableBlockEntity transformableBlockEntity = ContraptionTransformableRegistryImpl.get(be.getType());
|
TransformableBlockEntity transformableBlockEntity = ContraptionTransformableRegistryImpl.get(be.getType());
|
||||||
if (transformableBlockEntity != null) {
|
if (transformableBlockEntity != null) {
|
||||||
transformableBlockEntity.transform(be, this);
|
transformableBlockEntity.transform(be, this);
|
||||||
} else if (be instanceof ITransformableBlockEntity itbe) {
|
} else if (be instanceof TransformableBlockEntity itbe) {
|
||||||
itbe.transform(this);
|
itbe.transform(be, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,10 +147,10 @@ public class StructureTransform {
|
||||||
*/
|
*/
|
||||||
public BlockState apply(BlockState state) {
|
public BlockState apply(BlockState state) {
|
||||||
Block block = state.getBlock();
|
Block block = state.getBlock();
|
||||||
ContraptionTransformableRegistry.TransformableBlock transformableBlock = ContraptionTransformableRegistryImpl.get(block);
|
TransformableBlock transformableBlock = ContraptionTransformableRegistryImpl.get(block);
|
||||||
if (transformableBlock != null) {
|
if (transformableBlock != null) {
|
||||||
return transformableBlock.transform(block, state, this);
|
return transformableBlock.transform(state, this);
|
||||||
} else if (block instanceof ITransformableBlock transformable) {
|
} else if (block instanceof TransformableBlock transformable) {
|
||||||
return transformable.transform(state, this);
|
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.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllItems;
|
import com.simibubi.create.AllItems;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
@ -29,7 +29,7 @@ import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.common.Tags;
|
import net.minecraftforge.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) {
|
public AbstractChassisBlock(Properties properties) {
|
||||||
super(properties);
|
super(properties);
|
||||||
|
|
|
@ -1,16 +1,21 @@
|
||||||
package com.simibubi.create.content.contraptions.elevator;
|
package com.simibubi.create.content.contraptions.elevator;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllItems;
|
import com.simibubi.create.AllItems;
|
||||||
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement;
|
||||||
import com.simibubi.create.content.contraptions.elevator.ElevatorColumn.ColumnCoords;
|
import com.simibubi.create.content.contraptions.elevator.ElevatorColumn.ColumnCoords;
|
||||||
import com.simibubi.create.content.redstone.contact.RedstoneContactBlock;
|
import com.simibubi.create.content.redstone.contact.RedstoneContactBlock;
|
||||||
import com.simibubi.create.content.redstone.diodes.BrassDiodeBlock;
|
import com.simibubi.create.content.redstone.diodes.BrassDiodeBlock;
|
||||||
import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement;
|
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||||
|
|
||||||
import net.createmod.catnip.gui.ScreenOpener;
|
import net.createmod.catnip.gui.ScreenOpener;
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
@ -35,15 +40,13 @@ import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public class ElevatorContactBlock extends WrenchableDirectionalBlock
|
public class ElevatorContactBlock extends WrenchableDirectionalBlock
|
||||||
implements IBE<ElevatorContactBlockEntity>, ISpecialBlockItemRequirement {
|
implements IBE<ElevatorContactBlockEntity>, SpecialBlockItemRequirement {
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
public static final BooleanProperty CALLING = BooleanProperty.create("calling");
|
public static final BooleanProperty CALLING = BooleanProperty.create("calling");
|
||||||
|
|
|
@ -8,7 +8,7 @@ import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllEntityTypes;
|
import com.simibubi.create.AllEntityTypes;
|
||||||
import com.simibubi.create.AllItems;
|
import com.simibubi.create.AllItems;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
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.BlockMovementChecks;
|
||||||
import com.simibubi.create.content.contraptions.bearing.BearingBlock;
|
import com.simibubi.create.content.contraptions.bearing.BearingBlock;
|
||||||
import com.simibubi.create.content.contraptions.chassis.AbstractChassisBlock;
|
import com.simibubi.create.content.contraptions.chassis.AbstractChassisBlock;
|
||||||
|
@ -56,7 +56,7 @@ import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraftforge.entity.IEntityAdditionalSpawnData;
|
import net.minecraftforge.entity.IEntityAdditionalSpawnData;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
|
|
||||||
public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement {
|
public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnData, SpecialEntityItemRequirement {
|
||||||
|
|
||||||
public static AABB span(BlockPos startPos, BlockPos endPos) {
|
public static AABB span(BlockPos startPos, BlockPos endPos) {
|
||||||
return new AABB(startPos, endPos).expandTowards(1, 1, 1);
|
return new AABB(startPos, endPos).expandTowards(1, 1, 1);
|
||||||
|
|
|
@ -1,14 +1,21 @@
|
||||||
package com.simibubi.create.content.contraptions.mounted;
|
package com.simibubi.create.content.contraptions.mounted;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
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.equipment.wrench.IWrenchable;
|
||||||
import com.simibubi.create.content.redstone.rail.ControllerRailBlock;
|
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;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Direction.Axis;
|
import net.minecraft.core.Direction.Axis;
|
||||||
|
@ -52,13 +59,8 @@ import net.minecraft.world.phys.shapes.EntityCollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.Shapes;
|
import net.minecraft.world.phys.shapes.Shapes;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class CartAssemblerBlock extends BaseRailBlock
|
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 POWERED = BlockStateProperties.POWERED;
|
||||||
public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards");
|
public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards");
|
||||||
|
|
|
@ -3,9 +3,9 @@ package com.simibubi.create.content.decoration.copycat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.api.contraption.transformable.ITransformableBlockEntity;
|
import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity;
|
||||||
import com.simibubi.create.api.schematic.nbt.IPartialSafeNBT;
|
import com.simibubi.create.api.schematic.nbt.PartialSafeNBT;
|
||||||
import com.simibubi.create.api.schematic.requirement.ISpecialBlockEntityItemRequirement;
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockEntityItemRequirement;
|
||||||
import com.simibubi.create.content.contraptions.StructureTransform;
|
import com.simibubi.create.content.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.redstone.RoseQuartzLampBlock;
|
import com.simibubi.create.content.redstone.RoseQuartzLampBlock;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
|
@ -20,6 +20,7 @@ import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.nbt.NbtUtils;
|
import net.minecraft.nbt.NbtUtils;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.block.TrapDoorBlock;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
|
@ -28,7 +29,7 @@ import net.minecraftforge.client.model.data.ModelData;
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
|
||||||
public class CopycatBlockEntity extends SmartBlockEntity
|
public class CopycatBlockEntity extends SmartBlockEntity
|
||||||
implements ISpecialBlockEntityItemRequirement, ITransformableBlockEntity, IPartialSafeNBT {
|
implements SpecialBlockEntityItemRequirement, TransformableBlockEntity, PartialSafeNBT {
|
||||||
|
|
||||||
private BlockState material;
|
private BlockState material;
|
||||||
private ItemStack consumedItem;
|
private ItemStack consumedItem;
|
||||||
|
@ -128,7 +129,7 @@ public class CopycatBlockEntity extends SmartBlockEntity
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
material = transform.apply(material);
|
material = transform.apply(material);
|
||||||
notifyUpdate();
|
notifyUpdate();
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,10 @@ import static net.minecraft.world.level.block.state.properties.BlockStatePropert
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
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.equipment.wrench.IWrenchable;
|
||||||
import com.simibubi.create.content.kinetics.base.HorizontalAxisKineticBlock;
|
import com.simibubi.create.content.kinetics.base.HorizontalAxisKineticBlock;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
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;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
public class GirderEncasedShaftBlock extends HorizontalAxisKineticBlock
|
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 TOP = GirderBlock.TOP;
|
||||||
public static final BooleanProperty BOTTOM = GirderBlock.BOTTOM;
|
public static final BooleanProperty BOTTOM = GirderBlock.BOTTOM;
|
||||||
|
|
|
@ -6,10 +6,10 @@ import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
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.equipment.wrench.IWrenchable;
|
||||||
import com.simibubi.create.content.logistics.filter.FilterItem;
|
import com.simibubi.create.content.logistics.filter.FilterItem;
|
||||||
import com.simibubi.create.content.logistics.filter.FilterItemStack;
|
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;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
@ -41,10 +41,11 @@ import net.minecraft.world.level.material.FluidState;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
|
||||||
public class PlacardBlock extends FaceAttachedHorizontalDirectionalBlock
|
public class PlacardBlock extends FaceAttachedHorizontalDirectionalBlock
|
||||||
implements ProperWaterloggedBlock, IBE<PlacardBlockEntity>, ISpecialBlockItemRequirement, IWrenchable {
|
implements ProperWaterloggedBlock, IBE<PlacardBlockEntity>, SpecialBlockItemRequirement, IWrenchable {
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,8 @@ import java.util.Optional;
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllEnchantments;
|
import com.simibubi.create.AllEnchantments;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement;
|
||||||
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
|
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
|
||||||
import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement;
|
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
@ -46,9 +46,10 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
import net.minecraftforge.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) {
|
public BacktankBlock(Properties properties) {
|
||||||
super(properties);
|
super(properties);
|
||||||
|
|
|
@ -12,8 +12,8 @@ import org.apache.commons.lang3.Validate;
|
||||||
import com.simibubi.create.AllEntityTypes;
|
import com.simibubi.create.AllEntityTypes;
|
||||||
import com.simibubi.create.AllItems;
|
import com.simibubi.create.AllItems;
|
||||||
import com.simibubi.create.Create;
|
import com.simibubi.create.Create;
|
||||||
|
import com.simibubi.create.api.schematic.requirement.SpecialEntityItemRequirement;
|
||||||
import com.simibubi.create.content.logistics.filter.FilterItemStack;
|
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;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
||||||
import com.simibubi.create.foundation.networking.ISyncPersistentData;
|
import com.simibubi.create.foundation.networking.ISyncPersistentData;
|
||||||
|
@ -59,6 +59,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.common.ForgeHooks;
|
import net.minecraftforge.common.ForgeHooks;
|
||||||
|
@ -72,7 +73,7 @@ import net.minecraftforge.items.wrapper.InvWrapper;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
|
|
||||||
public class BlueprintEntity extends HangingEntity
|
public class BlueprintEntity extends HangingEntity
|
||||||
implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, ISyncPersistentData, IInteractionChecker {
|
implements IEntityAdditionalSpawnData, SpecialEntityItemRequirement, ISyncPersistentData, IInteractionChecker {
|
||||||
|
|
||||||
protected int size;
|
protected int size;
|
||||||
protected Direction verticalOrientation;
|
protected Direction verticalOrientation;
|
||||||
|
|
|
@ -12,13 +12,13 @@ import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.decoration.encasing.EncasedBlock;
|
import com.simibubi.create.content.decoration.encasing.EncasedBlock;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||||
import com.simibubi.create.content.fluids.FluidPropagator;
|
import com.simibubi.create.content.fluids.FluidPropagator;
|
||||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
|
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
@ -51,7 +51,7 @@ import net.minecraft.world.phys.HitResult;
|
||||||
import net.minecraft.world.ticks.TickPriority;
|
import net.minecraft.world.ticks.TickPriority;
|
||||||
|
|
||||||
public class EncasedPipeBlock extends Block
|
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;
|
public static final Map<Direction, BooleanProperty> FACING_TO_PROPERTY_MAP = PipeBlock.PROPERTY_BY_DIRECTION;
|
||||||
|
|
||||||
private final Supplier<Block> casing;
|
private final Supplier<Block> casing;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||||
import com.simibubi.create.content.decoration.encasing.EncasableBlock;
|
import com.simibubi.create.content.decoration.encasing.EncasableBlock;
|
||||||
|
@ -55,7 +55,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import net.minecraft.world.ticks.TickPriority;
|
import net.minecraft.world.ticks.TickPriority;
|
||||||
|
|
||||||
public class FluidPipeBlock extends PipeBlock implements SimpleWaterloggedBlock, IWrenchableWithBracket,
|
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);
|
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 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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||||
import com.simibubi.create.content.fluids.FluidPropagator;
|
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.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.level.BlockAndTintGetter;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
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) {
|
public FluidPipeBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||||
super(type, pos, state);
|
super(type, pos, state);
|
||||||
|
@ -30,7 +31,7 @@ public class FluidPipeBlockEntity extends SmartBlockEntity implements ITransform
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
BracketedBlockEntityBehaviour bracketBehaviour = getBehaviour(BracketedBlockEntityBehaviour.TYPE);
|
BracketedBlockEntityBehaviour bracketBehaviour = getBehaviour(BracketedBlockEntityBehaviour.TYPE);
|
||||||
if (bracketBehaviour != null) {
|
if (bracketBehaviour != null) {
|
||||||
bracketBehaviour.transformBracket(transform);
|
bracketBehaviour.transformBracket(transform);
|
||||||
|
|
|
@ -4,8 +4,8 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement;
|
||||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType;
|
||||||
|
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
@ParametersAreNonnullByDefault
|
@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");
|
public static final BooleanProperty ALT = BooleanProperty.create("alt");
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package com.simibubi.create.content.kinetics.base;
|
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 com.simibubi.create.content.contraptions.StructureTransform;
|
||||||
|
|
||||||
import net.createmod.catnip.data.Iterate;
|
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.StateDefinition.Builder;
|
||||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
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");
|
public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE = BooleanProperty.create("axis_along_first");
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ import org.apache.commons.lang3.mutable.MutableBoolean;
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllItems;
|
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.api.schematic.requirement.ISpecialBlockItemRequirement;
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement;
|
||||||
import com.simibubi.create.content.contraptions.StructureTransform;
|
import com.simibubi.create.content.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.equipment.armor.DivingBootsItem;
|
import com.simibubi.create.content.equipment.armor.DivingBootsItem;
|
||||||
import com.simibubi.create.content.fluids.transfer.GenericItemEmptying;
|
import com.simibubi.create.content.fluids.transfer.GenericItemEmptying;
|
||||||
|
@ -88,6 +88,7 @@ import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.EntityCollisionContext;
|
import net.minecraft.world.phys.shapes.EntityCollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.Shapes;
|
import net.minecraft.world.phys.shapes.Shapes;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.client.extensions.common.IClientBlockExtensions;
|
import net.minecraftforge.client.extensions.common.IClientBlockExtensions;
|
||||||
|
@ -96,7 +97,7 @@ import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
public class BeltBlock extends HorizontalKineticBlock
|
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<BeltSlope> SLOPE = EnumProperty.create("slope", BeltSlope.class);
|
||||||
public static final Property<BeltPart> PART = EnumProperty.create("part", BeltPart.class);
|
public static final Property<BeltPart> PART = EnumProperty.create("part", BeltPart.class);
|
||||||
|
|
|
@ -12,7 +12,7 @@ import java.util.function.Consumer;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.kinetics.base.IRotate;
|
import com.simibubi.create.content.kinetics.base.IRotate;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
|
@ -28,9 +28,9 @@ import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
import dev.engine_room.flywheel.api.visualization.VisualizationManager;
|
||||||
import net.createmod.catnip.data.Iterate;
|
import net.createmod.catnip.data.Iterate;
|
||||||
import net.createmod.catnip.nbt.NBTHelper;
|
|
||||||
import net.createmod.catnip.math.VecHelper;
|
|
||||||
import net.createmod.catnip.math.AngleHelper;
|
import net.createmod.catnip.math.AngleHelper;
|
||||||
|
import net.createmod.catnip.math.VecHelper;
|
||||||
|
import net.createmod.catnip.nbt.NBTHelper;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction.Axis;
|
import net.minecraft.core.Direction.Axis;
|
||||||
import net.minecraft.core.particles.BlockParticleOption;
|
import net.minecraft.core.particles.BlockParticleOption;
|
||||||
|
@ -48,13 +48,15 @@ import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
|
||||||
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) {
|
public record ConnectionStats(float tangentAngle, float chainLength, Vec3 start, Vec3 end) {
|
||||||
}
|
}
|
||||||
|
@ -782,7 +784,7 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements ITra
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
if (connections == null || connections.isEmpty())
|
if (connections == null || connections.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.content.kinetics.chainDrive;
|
package com.simibubi.create.content.kinetics.chainDrive;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock;
|
import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
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;
|
import net.minecraft.world.level.material.PushReaction;
|
||||||
|
|
||||||
public class ChainDriveBlock extends RotatedPillarKineticBlock
|
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 Property<Part> PART = EnumProperty.create("part", Part.class);
|
||||||
public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE =
|
public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE =
|
||||||
|
|
|
@ -6,7 +6,7 @@ import java.util.List;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.Create;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
import com.simibubi.create.content.kinetics.mechanicalArm.AllArmInteractionPointTypes.JukeboxPoint;
|
import com.simibubi.create.content.kinetics.mechanicalArm.AllArmInteractionPointTypes.JukeboxPoint;
|
||||||
|
@ -22,11 +22,11 @@ import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
|
import dev.engine_room.flywheel.lib.visualization.VisualizationHelper;
|
||||||
import net.createmod.catnip.nbt.NBTHelper;
|
|
||||||
import net.createmod.catnip.math.VecHelper;
|
|
||||||
import net.createmod.catnip.animation.LerpedFloat;
|
import net.createmod.catnip.animation.LerpedFloat;
|
||||||
import net.createmod.catnip.lang.Lang;
|
import net.createmod.catnip.lang.Lang;
|
||||||
import net.createmod.catnip.math.AngleHelper;
|
import net.createmod.catnip.math.AngleHelper;
|
||||||
|
import net.createmod.catnip.math.VecHelper;
|
||||||
|
import net.createmod.catnip.nbt.NBTHelper;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.SectionPos;
|
import net.minecraft.core.SectionPos;
|
||||||
|
@ -42,15 +42,17 @@ import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.LevelAccessor;
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.JukeboxBlock;
|
import net.minecraft.world.level.block.JukeboxBlock;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.chunk.ChunkSource;
|
import net.minecraft.world.level.chunk.ChunkSource;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
|
||||||
public class ArmBlockEntity extends KineticBlockEntity implements ITransformableBlockEntity {
|
public class ArmBlockEntity extends KineticBlockEntity implements TransformableBlockEntity {
|
||||||
|
|
||||||
// Server
|
// Server
|
||||||
List<ArmInteractionPoint> inputs;
|
List<ArmInteractionPoint> inputs;
|
||||||
|
@ -419,7 +421,7 @@ public class ArmBlockEntity extends KineticBlockEntity implements ITransformable
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
if (interactionPointTag == null)
|
if (interactionPointTag == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -2,16 +2,17 @@ package com.simibubi.create.content.kinetics.simpleRelays;
|
||||||
|
|
||||||
import java.util.List;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
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) {
|
public BracketedKineticBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||||
super(type, pos, state);
|
super(type, pos, state);
|
||||||
|
@ -25,7 +26,7 @@ public class BracketedKineticBlockEntity extends SimpleKineticBlockEntity implem
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
BracketedBlockEntityBehaviour bracketBehaviour = getBehaviour(BracketedBlockEntityBehaviour.TYPE);
|
BracketedBlockEntityBehaviour bracketBehaviour = getBehaviour(BracketedBlockEntityBehaviour.TYPE);
|
||||||
if (bracketBehaviour != null) {
|
if (bracketBehaviour != null) {
|
||||||
bracketBehaviour.transformBracket(transform);
|
bracketBehaviour.transformBracket(transform);
|
||||||
|
|
|
@ -4,7 +4,8 @@ import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.decoration.encasing.EncasedBlock;
|
import com.simibubi.create.content.decoration.encasing.EncasedBlock;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
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.CogWheelBlock;
|
||||||
import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel;
|
import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel;
|
||||||
import com.simibubi.create.content.kinetics.simpleRelays.SimpleKineticBlockEntity;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
|
|
||||||
public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
|
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 TOP_SHAFT = BooleanProperty.create("top_shaft");
|
||||||
public static final BooleanProperty BOTTOM_SHAFT = BooleanProperty.create("bottom_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.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
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.decoration.encasing.EncasedBlock;
|
||||||
import com.simibubi.create.content.kinetics.base.AbstractEncasedShaftBlock;
|
import com.simibubi.create.content.kinetics.base.AbstractEncasedShaftBlock;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
|
|
||||||
public class EncasedShaftBlock extends AbstractEncasedShaftBlock
|
public class EncasedShaftBlock extends AbstractEncasedShaftBlock
|
||||||
implements IBE<KineticBlockEntity>, ISpecialBlockItemRequirement, EncasedBlock {
|
implements IBE<KineticBlockEntity>, SpecialBlockItemRequirement, EncasedBlock {
|
||||||
|
|
||||||
private final Supplier<Block> casing;
|
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.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllItems;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.kinetics.base.HorizontalAxisKineticBlock;
|
import com.simibubi.create.content.kinetics.base.HorizontalAxisKineticBlock;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlock;
|
import com.simibubi.create.content.kinetics.base.KineticBlock;
|
||||||
|
@ -33,11 +33,12 @@ 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.BooleanProperty;
|
||||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
|
||||||
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 BooleanProperty VERTICAL = BooleanProperty.create("vertical");
|
||||||
public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5);
|
public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5);
|
||||||
|
|
|
@ -6,7 +6,7 @@ import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
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.equipment.wrench.IWrenchable;
|
||||||
import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem;
|
import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement;
|
||||||
|
@ -51,12 +51,13 @@ import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.EntityCollisionContext;
|
import net.minecraft.world.phys.shapes.EntityCollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.Shapes;
|
import net.minecraft.world.phys.shapes.Shapes;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
import net.minecraftforge.common.ForgeMod;
|
import net.minecraftforge.common.ForgeMod;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.event.level.BlockEvent;
|
import net.minecraftforge.event.level.BlockEvent;
|
||||||
|
|
||||||
public class FactoryPanelBlock extends FaceAttachedHorizontalDirectionalBlock
|
public class FactoryPanelBlock extends FaceAttachedHorizontalDirectionalBlock
|
||||||
implements ProperWaterloggedBlock, IBE<FactoryPanelBlockEntity>, IWrenchable, ISpecialBlockItemRequirement {
|
implements ProperWaterloggedBlock, IBE<FactoryPanelBlockEntity>, IWrenchable, SpecialBlockItemRequirement {
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
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.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
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.BeltBlock;
|
||||||
import com.simibubi.create.content.kinetics.belt.BeltSlope;
|
import com.simibubi.create.content.kinetics.belt.BeltSlope;
|
||||||
import com.simibubi.create.content.kinetics.belt.behaviour.DirectBeltInputBehaviour;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||||
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
import com.tterrag.registrate.util.entry.BlockEntry;
|
import com.tterrag.registrate.util.entry.BlockEntry;
|
||||||
|
|
||||||
import net.createmod.catnip.math.VoxelShaper;
|
|
||||||
import net.createmod.catnip.lang.Lang;
|
import net.createmod.catnip.lang.Lang;
|
||||||
|
import net.createmod.catnip.math.VoxelShaper;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.util.StringRepresentable;
|
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.EntityCollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
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;
|
private BlockEntry<? extends FunnelBlock> parent;
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.simibubi.create.content.redstone;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||||
import net.minecraft.world.level.block.state.properties.AttachFace;
|
import net.minecraft.world.level.block.state.properties.AttachFace;
|
||||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||||
|
|
||||||
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);
|
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.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllItems;
|
import com.simibubi.create.AllItems;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
|
|
||||||
public class LecternControllerBlock extends LecternBlock
|
public class LecternControllerBlock extends LecternBlock
|
||||||
implements IBE<LecternControllerBlockEntity>, ISpecialBlockItemRequirement {
|
implements IBE<LecternControllerBlockEntity>, SpecialBlockItemRequirement {
|
||||||
|
|
||||||
public LecternControllerBlock(Properties properties) {
|
public LecternControllerBlock(Properties properties) {
|
||||||
super(properties);
|
super(properties);
|
||||||
|
|
|
@ -8,9 +8,9 @@ import java.util.function.BiConsumer;
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
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.clipboard.ClipboardEntry;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
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;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
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;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
|
|
||||||
public class NixieTubeBlock extends DoubleFaceAttachedBlock
|
public class NixieTubeBlock extends DoubleFaceAttachedBlock
|
||||||
implements IBE<NixieTubeBlockEntity>, IWrenchable, SimpleWaterloggedBlock, ISpecialBlockItemRequirement {
|
implements IBE<NixieTubeBlockEntity>, IWrenchable, SimpleWaterloggedBlock, SpecialBlockItemRequirement {
|
||||||
|
|
||||||
protected final DyeColor color;
|
protected final DyeColor color;
|
||||||
|
|
||||||
|
|
|
@ -6,13 +6,16 @@ import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import com.simibubi.create.api.schematic.requirement.ISpecialBlockEntityItemRequirement;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import com.simibubi.create.api.schematic.requirement.ISpecialBlockItemRequirement;
|
|
||||||
import com.simibubi.create.api.schematic.requirement.ISpecialEntityItemRequirement;
|
import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry.ContextProvidingBlockEntityRequirement;
|
||||||
import com.simibubi.create.api.schematic.requirement.SchematicRequirementsRegistry;
|
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.compat.framedblocks.FramedBlocksInSchematics;
|
||||||
import com.simibubi.create.foundation.data.recipe.Mods;
|
import com.simibubi.create.foundation.data.recipe.Mods;
|
||||||
|
|
||||||
import com.simibubi.create.impl.schematic.requirement.SchematicRequirementsRegistryImpl;
|
import com.simibubi.create.impl.schematic.requirement.SchematicRequirementsRegistryImpl;
|
||||||
|
|
||||||
import net.createmod.catnip.nbt.NBTProcessors;
|
import net.createmod.catnip.nbt.NBTProcessors;
|
||||||
|
@ -35,9 +38,8 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
import net.minecraft.world.level.block.state.properties.SlabType;
|
import net.minecraft.world.level.block.state.properties.SlabType;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
public class ItemRequirement {
|
public class ItemRequirement {
|
||||||
public static final ItemRequirement NONE = new ItemRequirement(Collections.emptyList());
|
public static final ItemRequirement NONE = new ItemRequirement(Collections.emptyList());
|
||||||
|
@ -71,20 +73,20 @@ public class ItemRequirement {
|
||||||
Block block = state.getBlock();
|
Block block = state.getBlock();
|
||||||
|
|
||||||
ItemRequirement requirement;
|
ItemRequirement requirement;
|
||||||
SchematicRequirementsRegistry.BlockRequirement blockItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlock(block);
|
ContextProvidingBlockRequirement blockItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlock(block);
|
||||||
if (blockItemRequirement != null) {
|
if (blockItemRequirement != null) {
|
||||||
requirement = blockItemRequirement.getRequiredItems(block, state, be);
|
requirement = blockItemRequirement.getRequiredItems(state, be);
|
||||||
} else if (block instanceof ISpecialBlockItemRequirement specialBlock) {
|
} else if (block instanceof SpecialBlockItemRequirement specialBlock) {
|
||||||
requirement = specialBlock.getRequiredItems(state, be);
|
requirement = specialBlock.getRequiredItems(state, be);
|
||||||
} else {
|
} else {
|
||||||
requirement = defaultOf(state, be);
|
requirement = defaultOf(state, be);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (be != null) {
|
if (be != null) {
|
||||||
SchematicRequirementsRegistry.BlockEntityRequirement blockEntityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlockEntityType(be.getType());
|
ContextProvidingBlockEntityRequirement blockEntityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForBlockEntityType(be.getType());
|
||||||
if (blockEntityItemRequirement != null) {
|
if (blockEntityItemRequirement != null) {
|
||||||
requirement = requirement.union(blockEntityItemRequirement.getRequiredItems(be, state));
|
requirement = requirement.union(blockEntityItemRequirement.getRequiredItems(be));
|
||||||
} else if (be instanceof ISpecialBlockEntityItemRequirement specialBE) {
|
} else if (be instanceof SpecialBlockEntityItemRequirement specialBE) {
|
||||||
requirement = requirement.union(specialBE.getRequiredItems(state));
|
requirement = requirement.union(specialBE.getRequiredItems(state));
|
||||||
} else if (com.simibubi.create.compat.Mods.FRAMEDBLOCKS.contains(block)) {
|
} else if (com.simibubi.create.compat.Mods.FRAMEDBLOCKS.contains(block)) {
|
||||||
requirement = requirement.union(FramedBlocksInSchematics.getRequiredItems(state, be));
|
requirement = requirement.union(FramedBlocksInSchematics.getRequiredItems(state, be));
|
||||||
|
@ -134,10 +136,10 @@ public class ItemRequirement {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemRequirement of(Entity entity) {
|
public static ItemRequirement of(Entity entity) {
|
||||||
SchematicRequirementsRegistry.EntityRequirement entityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForEntityType(entity.getType());
|
ContextProvidingEntityRequirement entityItemRequirement = SchematicRequirementsRegistryImpl.getRequirementForEntityType(entity.getType());
|
||||||
if (entityItemRequirement != null) {
|
if (entityItemRequirement != null) {
|
||||||
return entityItemRequirement.getRequiredItems(entity);
|
return entityItemRequirement.getRequiredItems(entity);
|
||||||
} else if (entity instanceof ISpecialEntityItemRequirement specialEntity) {
|
} else if (entity instanceof SpecialEntityItemRequirement specialEntity) {
|
||||||
return specialEntity.getRequiredItems();
|
return specialEntity.getRequiredItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@ import com.google.common.collect.ImmutableSet;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllBogeyStyles;
|
import com.simibubi.create.AllBogeyStyles;
|
||||||
import com.simibubi.create.AllItems;
|
import com.simibubi.create.AllItems;
|
||||||
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
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;
|
||||||
import com.simibubi.create.content.trains.entity.Carriage;
|
import com.simibubi.create.content.trains.entity.Carriage;
|
||||||
import com.simibubi.create.content.trains.entity.CarriageBogey;
|
import com.simibubi.create.content.trains.entity.CarriageBogey;
|
||||||
|
@ -28,8 +28,8 @@ import com.simibubi.create.foundation.block.IBE;
|
||||||
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
||||||
import com.simibubi.create.foundation.utility.CreateLang;
|
import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
|
|
||||||
import net.createmod.catnip.platform.CatnipServices;
|
|
||||||
import net.createmod.catnip.data.Iterate;
|
import net.createmod.catnip.data.Iterate;
|
||||||
|
import net.createmod.catnip.platform.CatnipServices;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
@ -52,9 +52,10 @@ import net.minecraft.world.level.block.state.properties.Property;
|
||||||
import net.minecraft.world.level.material.FluidState;
|
import net.minecraft.world.level.material.FluidState;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
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 EnumProperty<Direction.Axis> AXIS = BlockStateProperties.HORIZONTAL_AXIS;
|
public static final EnumProperty<Direction.Axis> AXIS = BlockStateProperties.HORIZONTAL_AXIS;
|
||||||
static final List<ResourceLocation> BOGEYS = new ArrayList<>();
|
static final List<ResourceLocation> BOGEYS = new ArrayList<>();
|
||||||
public BogeySizes.BogeySize size;
|
public BogeySizes.BogeySize size;
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.simibubi.create.content.trains.bogey;
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllBogeyStyles;
|
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.content.trains.track.TrackMaterial;
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
||||||
|
@ -18,7 +18,7 @@ import net.minecraft.world.phys.HitResult;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
public class StandardBogeyBlock extends AbstractBogeyBlock<StandardBogeyBlockEntity>
|
public class StandardBogeyBlock extends AbstractBogeyBlock<StandardBogeyBlockEntity>
|
||||||
implements IBE<StandardBogeyBlockEntity>, ProperWaterloggedBlock, ISpecialBlockItemRequirement {
|
implements IBE<StandardBogeyBlockEntity>, ProperWaterloggedBlock, SpecialBlockItemRequirement {
|
||||||
|
|
||||||
public StandardBogeyBlock(Properties props, BogeySizes.BogeySize size) {
|
public StandardBogeyBlock(Properties props, BogeySizes.BogeySize size) {
|
||||||
super(props, size);
|
super(props, size);
|
||||||
|
|
|
@ -7,11 +7,10 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import com.simibubi.create.api.contraption.train.TrainConductorHandler;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
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.AssemblyException;
|
||||||
import com.simibubi.create.content.contraptions.Contraption;
|
import com.simibubi.create.content.contraptions.Contraption;
|
||||||
import com.simibubi.create.content.contraptions.ContraptionType;
|
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.contraptions.minecart.TrainCargoManager;
|
||||||
import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock;
|
import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock;
|
||||||
import com.simibubi.create.foundation.utility.CreateLang;
|
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.Couple;
|
||||||
import net.createmod.catnip.data.Iterate;
|
import net.createmod.catnip.data.Iterate;
|
||||||
import net.createmod.catnip.nbt.NBTHelper;
|
|
||||||
import net.createmod.catnip.math.VecHelper;
|
import net.createmod.catnip.math.VecHelper;
|
||||||
|
import net.createmod.catnip.nbt.NBTHelper;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Direction.Axis;
|
import net.minecraft.core.Direction.Axis;
|
||||||
|
@ -165,8 +165,12 @@ public class CarriageContraption extends Contraption {
|
||||||
captureBE ? world.getBlockEntity(pos) : null);
|
captureBE ? world.getBlockEntity(pos) : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TrainConductorHandler.CONDUCTOR_HANDLERS.stream().anyMatch(handler -> handler.isValidConductor(blockState)))
|
for (TrainConductorHandler handler : TrainConductorHandlerImpl.CONDUCTOR_HANDLERS) {
|
||||||
assembledBlockConductors.add(toLocalPos(pos));
|
if (handler.isValidConductor(blockState)) {
|
||||||
|
assembledBlockConductors.add(toLocalPos(pos));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (AllBlocks.TRAIN_CONTROLS.has(blockState)) {
|
if (AllBlocks.TRAIN_CONTROLS.has(blockState)) {
|
||||||
Direction facing = blockState.getValue(ControlsBlock.FACING);
|
Direction facing = blockState.getValue(ControlsBlock.FACING);
|
||||||
|
|
|
@ -5,7 +5,7 @@ import java.util.List;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.redstone.displayLink.DisplayLinkBlock;
|
import com.simibubi.create.content.redstone.displayLink.DisplayLinkBlock;
|
||||||
import com.simibubi.create.content.trains.graph.EdgePointType;
|
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.core.BlockPos;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.LevelAccessor;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
public class TrackObserverBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity {
|
public class TrackObserverBlockEntity extends SmartBlockEntity implements TransformableBlockEntity {
|
||||||
|
|
||||||
public TrackTargetingBehaviour<TrackObserver> edgePoint;
|
public TrackTargetingBehaviour<TrackObserver> edgePoint;
|
||||||
|
|
||||||
|
@ -90,8 +91,8 @@ public class TrackObserverBlockEntity extends SmartBlockEntity implements ITrans
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
edgePoint.transform(transform);
|
edgePoint.transform(be, transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilteringBehaviour createFilter() {
|
public FilteringBehaviour createFilter() {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.trains.graph.EdgePointType;
|
import com.simibubi.create.content.trains.graph.EdgePointType;
|
||||||
import com.simibubi.create.content.trains.signal.SignalBlock.SignalType;
|
import com.simibubi.create.content.trains.signal.SignalBlock.SignalType;
|
||||||
|
@ -15,11 +15,12 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||||
import net.createmod.catnip.nbt.NBTHelper;
|
import net.createmod.catnip.nbt.NBTHelper;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
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.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
|
|
||||||
public class SignalBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity {
|
public class SignalBlockEntity extends SmartBlockEntity implements TransformableBlockEntity {
|
||||||
|
|
||||||
public static enum OverlayState {
|
public static enum OverlayState {
|
||||||
RENDER, SKIP, DUAL
|
RENDER, SKIP, DUAL
|
||||||
|
@ -160,8 +161,8 @@ public class SignalBlockEntity extends SmartBlockEntity implements ITransformabl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
edgePoint.transform(transform);
|
edgePoint.transform(be, transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,10 +21,10 @@ import com.simibubi.create.AllItems;
|
||||||
import com.simibubi.create.AllPackets;
|
import com.simibubi.create.AllPackets;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
import com.simibubi.create.AllSoundEvents;
|
||||||
import com.simibubi.create.Create;
|
import com.simibubi.create.Create;
|
||||||
|
import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity;
|
||||||
import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour;
|
import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour;
|
||||||
import com.simibubi.create.compat.computercraft.ComputerCraftProxy;
|
import com.simibubi.create.compat.computercraft.ComputerCraftProxy;
|
||||||
import com.simibubi.create.content.contraptions.AssemblyException;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.decoration.slidingDoor.DoorControlBehaviour;
|
import com.simibubi.create.content.decoration.slidingDoor.DoorControlBehaviour;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||||
|
@ -60,12 +60,12 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||||
import com.simibubi.create.foundation.utility.CreateLang;
|
import com.simibubi.create.foundation.utility.CreateLang;
|
||||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||||
|
|
||||||
import net.createmod.catnip.data.Iterate;
|
|
||||||
import net.createmod.catnip.nbt.NBTHelper;
|
|
||||||
import net.createmod.catnip.math.VecHelper;
|
|
||||||
import net.createmod.catnip.data.WorldAttached;
|
|
||||||
import net.createmod.catnip.animation.LerpedFloat;
|
import net.createmod.catnip.animation.LerpedFloat;
|
||||||
import net.createmod.catnip.animation.LerpedFloat.Chaser;
|
import net.createmod.catnip.animation.LerpedFloat.Chaser;
|
||||||
|
import net.createmod.catnip.data.Iterate;
|
||||||
|
import net.createmod.catnip.data.WorldAttached;
|
||||||
|
import net.createmod.catnip.math.VecHelper;
|
||||||
|
import net.createmod.catnip.nbt.NBTHelper;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
|
@ -90,13 +90,14 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.levelgen.structure.BoundingBox;
|
import net.minecraft.world.level.levelgen.structure.BoundingBox;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.common.util.LazyOptional;
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
|
|
||||||
public class StationBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity {
|
public class StationBlockEntity extends SmartBlockEntity implements TransformableBlockEntity {
|
||||||
|
|
||||||
public TrackTargetingBehaviour<GlobalStation> edgePoint;
|
public TrackTargetingBehaviour<GlobalStation> edgePoint;
|
||||||
public DoorControlBehaviour doorControls;
|
public DoorControlBehaviour doorControls;
|
||||||
|
@ -970,8 +971,8 @@ public class StationBlockEntity extends SmartBlockEntity implements ITransformab
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
edgePoint.transform(transform);
|
edgePoint.transform(be, transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Package port integration
|
// Package port integration
|
||||||
|
|
|
@ -19,7 +19,6 @@ import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
|
@ -29,9 +28,9 @@ import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllPartialModels;
|
import com.simibubi.create.AllPartialModels;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllTags;
|
import com.simibubi.create.AllTags;
|
||||||
|
import com.simibubi.create.api.schematic.requirement.SpecialBlockItemRequirement;
|
||||||
import com.simibubi.create.content.decoration.girder.GirderBlock;
|
import com.simibubi.create.content.decoration.girder.GirderBlock;
|
||||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
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;
|
||||||
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType;
|
||||||
import com.simibubi.create.content.trains.CubeParticleData;
|
import com.simibubi.create.content.trains.CubeParticleData;
|
||||||
|
@ -50,17 +49,18 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
||||||
import dev.engine_room.flywheel.lib.transform.TransformStack;
|
import dev.engine_room.flywheel.lib.transform.TransformStack;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntArrayMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntArrayMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import net.createmod.catnip.math.BlockFace;
|
|
||||||
import net.createmod.catnip.data.Iterate;
|
import net.createmod.catnip.data.Iterate;
|
||||||
import net.createmod.catnip.data.Pair;
|
import net.createmod.catnip.data.Pair;
|
||||||
import net.createmod.catnip.math.VecHelper;
|
|
||||||
import net.createmod.catnip.math.AngleHelper;
|
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.ChatFormatting;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Direction.Axis;
|
import net.minecraft.core.Direction.Axis;
|
||||||
import net.minecraft.core.Direction.AxisDirection;
|
import net.minecraft.core.Direction.AxisDirection;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
@ -99,12 +99,13 @@ import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.Shapes;
|
import net.minecraft.world.phys.shapes.Shapes;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import net.minecraft.world.ticks.LevelTickAccess;
|
import net.minecraft.world.ticks.LevelTickAccess;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.client.extensions.common.IClientBlockExtensions;
|
import net.minecraftforge.client.extensions.common.IClientBlockExtensions;
|
||||||
|
|
||||||
public class TrackBlock extends Block
|
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 EnumProperty<TrackShape> SHAPE = EnumProperty.create("shape", TrackShape.class);
|
||||||
public static final BooleanProperty HAS_BE = BooleanProperty.create("turn");
|
public static final BooleanProperty HAS_BE = BooleanProperty.create("turn");
|
||||||
|
|
|
@ -11,7 +11,7 @@ import java.util.Set;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllPackets;
|
import com.simibubi.create.AllPackets;
|
||||||
import com.simibubi.create.AllTags;
|
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.contraptions.StructureTransform;
|
||||||
import com.simibubi.create.content.trains.graph.TrackNodeLocation;
|
import com.simibubi.create.content.trains.graph.TrackNodeLocation;
|
||||||
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
|
||||||
|
@ -41,12 +41,13 @@ import net.minecraft.world.level.material.FluidState;
|
||||||
import net.minecraft.world.level.material.Fluids;
|
import net.minecraft.world.level.material.Fluids;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.client.model.data.ModelData;
|
import net.minecraftforge.client.model.data.ModelData;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
|
||||||
public class TrackBlockEntity extends SmartBlockEntity implements ITransformableBlockEntity, IMergeableBE {
|
public class TrackBlockEntity extends SmartBlockEntity implements TransformableBlockEntity, IMergeableBE {
|
||||||
|
|
||||||
Map<BlockPos, BezierConnection> connections;
|
Map<BlockPos, BezierConnection> connections;
|
||||||
boolean cancelDrops;
|
boolean cancelDrops;
|
||||||
|
@ -262,7 +263,7 @@ public class TrackBlockEntity extends SmartBlockEntity implements ITransformable
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
Map<BlockPos, BezierConnection> restoredConnections = new HashMap<>();
|
Map<BlockPos, BezierConnection> restoredConnections = new HashMap<>();
|
||||||
for (Entry<BlockPos, BezierConnection> entry : connections.entrySet())
|
for (Entry<BlockPos, BezierConnection> entry : connections.entrySet())
|
||||||
restoredConnections.put(entry.getKey(),
|
restoredConnections.put(entry.getKey(),
|
||||||
|
|
|
@ -23,10 +23,10 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
|
|
||||||
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
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.data.Iterate;
|
||||||
import net.createmod.catnip.math.VecHelper;
|
|
||||||
import net.createmod.catnip.levelWrappers.SchematicLevel;
|
import net.createmod.catnip.levelWrappers.SchematicLevel;
|
||||||
|
import net.createmod.catnip.math.VecHelper;
|
||||||
|
import net.createmod.catnip.render.CachedBuffers;
|
||||||
import net.createmod.ponder.api.level.PonderLevel;
|
import net.createmod.ponder.api.level.PonderLevel;
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
@ -41,8 +41,10 @@ import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.LevelAccessor;
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
import net.minecraft.world.level.block.Block;
|
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.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
|
@ -332,7 +334,7 @@ public class TrackTargetingBehaviour<T extends TrackEdgePoint> extends BlockEnti
|
||||||
ms.popPose();
|
ms.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void transform(StructureTransform transform) {
|
public void transform(BlockEntity be, StructureTransform transform) {
|
||||||
id = UUID.randomUUID();
|
id = UUID.randomUUID();
|
||||||
targetTrack = transform.applyWithoutOffset(targetTrack);
|
targetTrack = transform.applyWithoutOffset(targetTrack);
|
||||||
if (prevDirection != null)
|
if (prevDirection != null)
|
||||||
|
|
|
@ -7,14 +7,14 @@ import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import com.simibubi.create.api.event.BlockEntityBehaviourEvent;
|
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.content.schematics.requirement.ItemRequirement;
|
||||||
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
|
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
|
||||||
import com.simibubi.create.foundation.advancement.CreateAdvancement;
|
import com.simibubi.create.foundation.advancement.CreateAdvancement;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
import com.simibubi.create.foundation.utility.IInteractionChecker;
|
import com.simibubi.create.foundation.utility.IInteractionChecker;
|
||||||
import com.simibubi.create.api.schematic.nbt.IPartialSafeNBT;
|
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap;
|
import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap;
|
||||||
import net.createmod.ponder.api.VirtualBlockEntity;
|
import net.createmod.ponder.api.VirtualBlockEntity;
|
||||||
|
@ -24,12 +24,13 @@ import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||||
|
|
||||||
public abstract class SmartBlockEntity extends CachedRenderBBBlockEntity
|
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 final Map<BehaviourType<?>, BlockEntityBehaviour> behaviours = new Reference2ObjectArrayMap<>();
|
||||||
private boolean initialized = false;
|
private boolean initialized = false;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllTags.AllBlockTags;
|
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.api.schematic.nbt.SchematicSafeNBTRegistry;
|
||||||
import com.simibubi.create.compat.Mods;
|
import com.simibubi.create.compat.Mods;
|
||||||
import com.simibubi.create.compat.framedblocks.FramedBlocksInSchematics;
|
import com.simibubi.create.compat.framedblocks.FramedBlocksInSchematics;
|
||||||
|
@ -57,6 +57,7 @@ import net.minecraft.world.level.block.state.properties.SlabType;
|
||||||
import net.minecraft.world.level.chunk.LevelChunk;
|
import net.minecraft.world.level.chunk.LevelChunk;
|
||||||
import net.minecraft.world.level.chunk.LevelChunkSection;
|
import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||||
import net.minecraft.world.level.material.FluidState;
|
import net.minecraft.world.level.material.FluidState;
|
||||||
|
|
||||||
import net.minecraftforge.common.IPlantable;
|
import net.minecraftforge.common.IPlantable;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.event.level.BlockEvent;
|
import net.minecraftforge.event.level.BlockEvent;
|
||||||
|
@ -285,7 +286,7 @@ public class BlockHelper {
|
||||||
} else if (safeNBT != null) {
|
} else if (safeNBT != null) {
|
||||||
data = new CompoundTag();
|
data = new CompoundTag();
|
||||||
safeNBT.writeSafe(blockEntity, data);
|
safeNBT.writeSafe(blockEntity, data);
|
||||||
} else if (blockEntity instanceof IPartialSafeNBT safeNbtBE) {
|
} else if (blockEntity instanceof PartialSafeNBT safeNbtBE) {
|
||||||
data = new CompoundTag();
|
data = new CompoundTag();
|
||||||
safeNbtBE.writeSafe(data);
|
safeNbtBE.writeSafe(data);
|
||||||
} else if (Mods.FRAMEDBLOCKS.contains(blockState.getBlock())) {
|
} 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,12 +2,13 @@ package com.simibubi.create.impl.contraption.transformable;
|
||||||
|
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
|
||||||
import com.simibubi.create.api.contraption.transformable.ContraptionTransformableRegistry.TransformableBlock;
|
import com.simibubi.create.api.contraption.transformable.TransformableBlock;
|
||||||
import com.simibubi.create.api.contraption.transformable.ContraptionTransformableRegistry.TransformableBlockEntity;
|
import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity;
|
||||||
import com.simibubi.create.foundation.utility.AttachedRegistry;
|
import com.simibubi.create.foundation.utility.AttachedRegistry;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
|
|
|
@ -2,7 +2,9 @@ package com.simibubi.create.impl.schematic.requirement;
|
||||||
|
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
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 com.simibubi.create.foundation.utility.AttachedRegistry;
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
@ -11,49 +13,50 @@ import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
public class SchematicRequirementsRegistryImpl {
|
public class SchematicRequirementsRegistryImpl {
|
||||||
private static final AttachedRegistry<Block, SchematicRequirementsRegistry.BlockRequirement> BLOCK_REQUIREMENTS = new AttachedRegistry<>(ForgeRegistries.BLOCKS);
|
private static final AttachedRegistry<Block, ContextProvidingBlockRequirement> BLOCK_REQUIREMENTS = new AttachedRegistry<>(ForgeRegistries.BLOCKS);
|
||||||
private static final AttachedRegistry<BlockEntityType<?>, SchematicRequirementsRegistry.BlockEntityRequirement> BLOCK_ENTITY_REQUIREMENTS = new AttachedRegistry<>(ForgeRegistries.BLOCK_ENTITY_TYPES);
|
private static final AttachedRegistry<BlockEntityType<?>, ContextProvidingBlockEntityRequirement> BLOCK_ENTITY_REQUIREMENTS = new AttachedRegistry<>(ForgeRegistries.BLOCK_ENTITY_TYPES);
|
||||||
private static final AttachedRegistry<EntityType<?>, SchematicRequirementsRegistry.EntityRequirement> ENTITY_REQUIREMENTS = new AttachedRegistry<>(ForgeRegistries.ENTITY_TYPES);
|
private static final AttachedRegistry<EntityType<?>, ContextProvidingEntityRequirement> ENTITY_REQUIREMENTS = new AttachedRegistry<>(ForgeRegistries.ENTITY_TYPES);
|
||||||
|
|
||||||
public static void registerForBlock(Block block, SchematicRequirementsRegistry.BlockRequirement requirement) {
|
public static void registerForBlock(Block block, ContextProvidingBlockRequirement requirement) {
|
||||||
BLOCK_REQUIREMENTS.register(block, 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);
|
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);
|
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);
|
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);
|
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);
|
ENTITY_REQUIREMENTS.register(entityType, requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SchematicRequirementsRegistry.BlockRequirement getRequirementForBlock(Block block) {
|
public static ContextProvidingBlockRequirement getRequirementForBlock(Block block) {
|
||||||
return BLOCK_REQUIREMENTS.get(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);
|
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);
|
return ENTITY_REQUIREMENTS.get(entityType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue