Workstation transfer, Part I
- Intermediate changes, probably doesn't even compile
This commit is contained in:
parent
aef451e3bf
commit
d9d5e60606
22 changed files with 1051 additions and 414 deletions
|
@ -291,7 +291,7 @@ c8467d55bc22d2e2256b8b732c06c9fdc64d336f assets/create/blockstates/polished_weat
|
||||||
5d811eab3c5e8411f98e2ea98d93d35955ce18fc assets/create/blockstates/polished_weathered_limestone_slab.json
|
5d811eab3c5e8411f98e2ea98d93d35955ce18fc assets/create/blockstates/polished_weathered_limestone_slab.json
|
||||||
acec6cdebe772ca72de94a85d98199e827495acb assets/create/blockstates/polished_weathered_limestone_stairs.json
|
acec6cdebe772ca72de94a85d98199e827495acb assets/create/blockstates/polished_weathered_limestone_stairs.json
|
||||||
f42ad32aefcfa7ccc6287f57ee1a5f092b65126f assets/create/blockstates/polished_weathered_limestone_wall.json
|
f42ad32aefcfa7ccc6287f57ee1a5f092b65126f assets/create/blockstates/polished_weathered_limestone_wall.json
|
||||||
b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets/create/blockstates/portable_storage_interface.json
|
1b70b4e5792dccd2110b84e209016ac258005e28 assets/create/blockstates/portable_storage_interface.json
|
||||||
8296d43d5f1c2113012d127038fb319af83aaee4 assets/create/blockstates/powered_latch.json
|
8296d43d5f1c2113012d127038fb319af83aaee4 assets/create/blockstates/powered_latch.json
|
||||||
e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggle_latch.json
|
e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggle_latch.json
|
||||||
3a739f9d4276828d83f2d2750bf3227c87bcd438 assets/create/blockstates/pulley_magnet.json
|
3a739f9d4276828d83f2d2750bf3227c87bcd438 assets/create/blockstates/pulley_magnet.json
|
||||||
|
@ -1306,7 +1306,7 @@ e95125318055b8557afd7d108488cf0bdd81fe49 assets/create/models/item/polished_scor
|
||||||
68fb04f7a89c8117bb641e347df9bfc1f1248335 assets/create/models/item/polished_weathered_limestone_slab.json
|
68fb04f7a89c8117bb641e347df9bfc1f1248335 assets/create/models/item/polished_weathered_limestone_slab.json
|
||||||
6d92ee7112aa20e8a1adfe73d8933031c299bed1 assets/create/models/item/polished_weathered_limestone_stairs.json
|
6d92ee7112aa20e8a1adfe73d8933031c299bed1 assets/create/models/item/polished_weathered_limestone_stairs.json
|
||||||
b4995fb4799f33508cd6bf2ded80c0b3e866ad43 assets/create/models/item/polished_weathered_limestone_wall.json
|
b4995fb4799f33508cd6bf2ded80c0b3e866ad43 assets/create/models/item/polished_weathered_limestone_wall.json
|
||||||
ef2c9dcd5f6385a0f0cdc2e9120c984827863100 assets/create/models/item/portable_storage_interface.json
|
3bc60b0d9884c2ee0f1dd530e90fceb699eea737 assets/create/models/item/portable_storage_interface.json
|
||||||
d3cfc1a1137c4bc98848947d425d2972df144c95 assets/create/models/item/powdered_obsidian.json
|
d3cfc1a1137c4bc98848947d425d2972df144c95 assets/create/models/item/powdered_obsidian.json
|
||||||
1e501c1f2e9250aaaadcf17db62646d08177d4e1 assets/create/models/item/powered_latch.json
|
1e501c1f2e9250aaaadcf17db62646d08177d4e1 assets/create/models/item/powered_latch.json
|
||||||
3a6dfc7f36e31ebfcd650c3144a7f2210e8a4f9f assets/create/models/item/powered_toggle_latch.json
|
3a6dfc7f36e31ebfcd650c3144a7f2210e8a4f9f assets/create/models/item/powered_toggle_latch.json
|
||||||
|
|
|
@ -1,28 +1,28 @@
|
||||||
{
|
{
|
||||||
"variants": {
|
"variants": {
|
||||||
"facing=down": {
|
"facing=down": {
|
||||||
"model": "create:block/portable_storage_interface",
|
"model": "create:block/portable_storage_interface/block",
|
||||||
"x": 180
|
"x": 180
|
||||||
},
|
},
|
||||||
"facing=up": {
|
"facing=up": {
|
||||||
"model": "create:block/portable_storage_interface"
|
"model": "create:block/portable_storage_interface/block"
|
||||||
},
|
},
|
||||||
"facing=north": {
|
"facing=north": {
|
||||||
"model": "create:block/portable_storage_interface",
|
"model": "create:block/portable_storage_interface/block",
|
||||||
"x": 90
|
"x": 90
|
||||||
},
|
},
|
||||||
"facing=south": {
|
"facing=south": {
|
||||||
"model": "create:block/portable_storage_interface",
|
"model": "create:block/portable_storage_interface/block",
|
||||||
"x": 90,
|
"x": 90,
|
||||||
"y": 180
|
"y": 180
|
||||||
},
|
},
|
||||||
"facing=west": {
|
"facing=west": {
|
||||||
"model": "create:block/portable_storage_interface",
|
"model": "create:block/portable_storage_interface/block",
|
||||||
"x": 90,
|
"x": 90,
|
||||||
"y": 270
|
"y": 270
|
||||||
},
|
},
|
||||||
"facing=east": {
|
"facing=east": {
|
||||||
"model": "create:block/portable_storage_interface",
|
"model": "create:block/portable_storage_interface/block",
|
||||||
"x": 90,
|
"x": 90,
|
||||||
"y": 90
|
"y": 90
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
"parent": "create:block/portable_storage_interface"
|
"parent": "create:block/portable_storage_interface/item"
|
||||||
}
|
}
|
|
@ -69,6 +69,10 @@ public class AllBlockPartials {
|
||||||
SYMMETRY_PLANE = get("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"),
|
SYMMETRY_PLANE = get("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"),
|
||||||
SYMMETRY_TRIPLEPLANE = get("symmetry_effect/tripleplane"),
|
SYMMETRY_TRIPLEPLANE = get("symmetry_effect/tripleplane"),
|
||||||
|
|
||||||
|
PORTABLE_STORAGE_INTERFACE_MIDDLE = get("portable_storage_interface/block_middle"),
|
||||||
|
PORTABLE_STORAGE_INTERFACE_MIDDLE_POWERED = get("portable_storage_interface/block_middle_powered"),
|
||||||
|
PORTABLE_STORAGE_INTERFACE_TOP = get("portable_storage_interface/block_top"),
|
||||||
|
|
||||||
ARM_COG = get("mechanical_arm/cog"), ARM_BASE = get("mechanical_arm/base"),
|
ARM_COG = get("mechanical_arm/cog"), ARM_BASE = get("mechanical_arm/base"),
|
||||||
ARM_LOWER_BODY = get("mechanical_arm/lower_body"), ARM_UPPER_BODY = get("mechanical_arm/upper_body"),
|
ARM_LOWER_BODY = get("mechanical_arm/lower_body"), ARM_UPPER_BODY = get("mechanical_arm/upper_body"),
|
||||||
ARM_HEAD = get("mechanical_arm/head"), ARM_CLAW_BASE = get("mechanical_arm/claw_base"),
|
ARM_HEAD = get("mechanical_arm/head"), ARM_CLAW_BASE = get("mechanical_arm/claw_base"),
|
||||||
|
|
|
@ -20,6 +20,7 @@ import com.simibubi.create.content.contraptions.components.actors.HarvesterMovem
|
||||||
import com.simibubi.create.content.contraptions.components.actors.PloughBlock;
|
import com.simibubi.create.content.contraptions.components.actors.PloughBlock;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.PloughMovementBehaviour;
|
import com.simibubi.create.content.contraptions.components.actors.PloughMovementBehaviour;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock;
|
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock;
|
||||||
|
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.SawMovementBehaviour;
|
import com.simibubi.create.content.contraptions.components.actors.SawMovementBehaviour;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.SeatBlock;
|
import com.simibubi.create.content.contraptions.components.actors.SeatBlock;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.SeatMovementBehaviour;
|
import com.simibubi.create.content.contraptions.components.actors.SeatMovementBehaviour;
|
||||||
|
@ -667,9 +668,10 @@ public class AllBlocks {
|
||||||
public static final BlockEntry<PortableStorageInterfaceBlock> PORTABLE_STORAGE_INTERFACE =
|
public static final BlockEntry<PortableStorageInterfaceBlock> PORTABLE_STORAGE_INTERFACE =
|
||||||
REGISTRATE.block("portable_storage_interface", PortableStorageInterfaceBlock::new)
|
REGISTRATE.block("portable_storage_interface", PortableStorageInterfaceBlock::new)
|
||||||
.initialProperties(SharedProperties::stone)
|
.initialProperties(SharedProperties::stone)
|
||||||
// .onRegister(addMovementBehaviour(new StorageInterfaceMovement()))
|
.blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p)))
|
||||||
.blockstate(BlockStateGen.directionalBlockProvider(false))
|
.onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement()))
|
||||||
.simpleItem()
|
.item()
|
||||||
|
.transform(customItemModel())
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final BlockEntry<HarvesterBlock> MECHANICAL_HARVESTER =
|
public static final BlockEntry<HarvesterBlock> MECHANICAL_HARVESTER =
|
||||||
|
|
|
@ -32,8 +32,7 @@ public class AllShapes {
|
||||||
EIGHT_VOXEL_POLE = shape(4, 0, 4, 12, 16, 12).forAxis(),
|
EIGHT_VOXEL_POLE = shape(4, 0, 4, 12, 16, 12).forAxis(),
|
||||||
FURNACE_ENGINE = shape(1, 1, 0, 15, 15, 16).add(0, 0, 9, 16, 16, 14)
|
FURNACE_ENGINE = shape(1, 1, 0, 15, 15, 16).add(0, 0, 9, 16, 16, 14)
|
||||||
.forHorizontal(Direction.SOUTH),
|
.forHorizontal(Direction.SOUTH),
|
||||||
PORTABLE_STORAGE_INTERFACE = shape(0, 0, 0, 16, 12, 16).add(3, 12, 3, 13, 16, 13)
|
PORTABLE_STORAGE_INTERFACE = shape(0, 0, 0, 16, 14, 16).forDirectional(),
|
||||||
.forDirectional(),
|
|
||||||
PULLEY = shape(0, 0, 0, 16, 16, 2).add(1, 1, 2, 15, 15, 14)
|
PULLEY = shape(0, 0, 0, 16, 16, 2).add(1, 1, 2, 15, 15, 14)
|
||||||
.add(0, 0, 14, 16, 16, 16)
|
.add(0, 0, 14, 16, 16, 16)
|
||||||
.forHorizontalAxis(),
|
.forHorizontalAxis(),
|
||||||
|
|
|
@ -5,6 +5,8 @@ import com.simibubi.create.content.contraptions.components.actors.DrillRenderer;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.DrillTileEntity;
|
import com.simibubi.create.content.contraptions.components.actors.DrillTileEntity;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.HarvesterRenderer;
|
import com.simibubi.create.content.contraptions.components.actors.HarvesterRenderer;
|
||||||
import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity;
|
import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity;
|
||||||
|
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceRenderer;
|
||||||
|
import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceTileEntity;
|
||||||
import com.simibubi.create.content.contraptions.components.clock.CuckooClockRenderer;
|
import com.simibubi.create.content.contraptions.components.clock.CuckooClockRenderer;
|
||||||
import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity;
|
import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity;
|
||||||
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterRenderer;
|
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterRenderer;
|
||||||
|
@ -114,7 +116,7 @@ public class AllTileEntities {
|
||||||
public static final TileEntityEntry<SchematicTableTileEntity> SCHEMATIC_TABLE = Create.registrate()
|
public static final TileEntityEntry<SchematicTableTileEntity> SCHEMATIC_TABLE = Create.registrate()
|
||||||
.tileEntity("schematic_table", SchematicTableTileEntity::new)
|
.tileEntity("schematic_table", SchematicTableTileEntity::new)
|
||||||
.validBlocks(AllBlocks.SCHEMATIC_TABLE)
|
.validBlocks(AllBlocks.SCHEMATIC_TABLE)
|
||||||
//.renderer(() -> renderer)
|
// .renderer(() -> renderer)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
// Kinetics
|
// Kinetics
|
||||||
|
@ -157,7 +159,7 @@ public class AllTileEntities {
|
||||||
public static final TileEntityEntry<NozzleTileEntity> NOZZLE = Create.registrate()
|
public static final TileEntityEntry<NozzleTileEntity> NOZZLE = Create.registrate()
|
||||||
.tileEntity("nozzle", NozzleTileEntity::new)
|
.tileEntity("nozzle", NozzleTileEntity::new)
|
||||||
.validBlocks(AllBlocks.NOZZLE)
|
.validBlocks(AllBlocks.NOZZLE)
|
||||||
//.renderer(() -> renderer)
|
// .renderer(() -> renderer)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<ClutchTileEntity> CLUTCH = Create.registrate()
|
public static final TileEntityEntry<ClutchTileEntity> CLUTCH = Create.registrate()
|
||||||
|
@ -281,7 +283,7 @@ public class AllTileEntities {
|
||||||
public static final TileEntityEntry<ChassisTileEntity> CHASSIS = Create.registrate()
|
public static final TileEntityEntry<ChassisTileEntity> CHASSIS = Create.registrate()
|
||||||
.tileEntity("chassis", ChassisTileEntity::new)
|
.tileEntity("chassis", ChassisTileEntity::new)
|
||||||
.validBlocks(AllBlocks.RADIAL_CHASSIS, AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS)
|
.validBlocks(AllBlocks.RADIAL_CHASSIS, AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS)
|
||||||
//.renderer(() -> renderer)
|
// .renderer(() -> renderer)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<DrillTileEntity> DRILL = Create.registrate()
|
public static final TileEntityEntry<DrillTileEntity> DRILL = Create.registrate()
|
||||||
|
@ -302,6 +304,13 @@ public class AllTileEntities {
|
||||||
.renderer(() -> HarvesterRenderer::new)
|
.renderer(() -> HarvesterRenderer::new)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
|
public static final TileEntityEntry<PortableStorageInterfaceTileEntity> PORTABLE_STORAGE_INTERFACE =
|
||||||
|
Create.registrate()
|
||||||
|
.tileEntity("portable_storage_interface", PortableStorageInterfaceTileEntity::new)
|
||||||
|
.validBlocks(AllBlocks.PORTABLE_STORAGE_INTERFACE)
|
||||||
|
.renderer(() -> PortableStorageInterfaceRenderer::new)
|
||||||
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<FlywheelTileEntity> FLYWHEEL = Create.registrate()
|
public static final TileEntityEntry<FlywheelTileEntity> FLYWHEEL = Create.registrate()
|
||||||
.tileEntity("flywheel", FlywheelTileEntity::new)
|
.tileEntity("flywheel", FlywheelTileEntity::new)
|
||||||
.validBlocks(AllBlocks.FLYWHEEL)
|
.validBlocks(AllBlocks.FLYWHEEL)
|
||||||
|
@ -326,10 +335,11 @@ public class AllTileEntities {
|
||||||
.renderer(() -> KineticTileEntityRenderer::new)
|
.renderer(() -> KineticTileEntityRenderer::new)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<CrushingWheelControllerTileEntity> CRUSHING_WHEEL_CONTROLLER = Create.registrate()
|
public static final TileEntityEntry<CrushingWheelControllerTileEntity> CRUSHING_WHEEL_CONTROLLER =
|
||||||
|
Create.registrate()
|
||||||
.tileEntity("crushing_wheel_controller", CrushingWheelControllerTileEntity::new)
|
.tileEntity("crushing_wheel_controller", CrushingWheelControllerTileEntity::new)
|
||||||
.validBlocks(AllBlocks.CRUSHING_WHEEL_CONTROLLER)
|
.validBlocks(AllBlocks.CRUSHING_WHEEL_CONTROLLER)
|
||||||
//.renderer(() -> renderer)
|
// .renderer(() -> renderer)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<WaterWheelTileEntity> WATER_WHEEL = Create.registrate()
|
public static final TileEntityEntry<WaterWheelTileEntity> WATER_WHEEL = Create.registrate()
|
||||||
|
@ -407,7 +417,7 @@ public class AllTileEntities {
|
||||||
public static final TileEntityEntry<CartAssemblerTileEntity> CART_ASSEMBLER = Create.registrate()
|
public static final TileEntityEntry<CartAssemblerTileEntity> CART_ASSEMBLER = Create.registrate()
|
||||||
.tileEntity("cart_assembler", CartAssemblerTileEntity::new)
|
.tileEntity("cart_assembler", CartAssemblerTileEntity::new)
|
||||||
.validBlocks(AllBlocks.CART_ASSEMBLER)
|
.validBlocks(AllBlocks.CART_ASSEMBLER)
|
||||||
//.renderer(() -> renderer)
|
// .renderer(() -> renderer)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
// Logistics
|
// Logistics
|
||||||
|
@ -432,7 +442,7 @@ public class AllTileEntities {
|
||||||
public static final TileEntityEntry<AdjustableCrateTileEntity> ADJUSTABLE_CRATE = Create.registrate()
|
public static final TileEntityEntry<AdjustableCrateTileEntity> ADJUSTABLE_CRATE = Create.registrate()
|
||||||
.tileEntity("adjustable_crate", AdjustableCrateTileEntity::new)
|
.tileEntity("adjustable_crate", AdjustableCrateTileEntity::new)
|
||||||
.validBlocks(AllBlocks.ADJUSTABLE_CRATE)
|
.validBlocks(AllBlocks.ADJUSTABLE_CRATE)
|
||||||
//.renderer(() -> renderer)
|
// .renderer(() -> renderer)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<CreativeCrateTileEntity> CREATIVE_CRATE = Create.registrate()
|
public static final TileEntityEntry<CreativeCrateTileEntity> CREATIVE_CRATE = Create.registrate()
|
||||||
|
@ -449,7 +459,8 @@ public class AllTileEntities {
|
||||||
|
|
||||||
public static final TileEntityEntry<FunnelTileEntity> FUNNEL = Create.registrate()
|
public static final TileEntityEntry<FunnelTileEntity> FUNNEL = Create.registrate()
|
||||||
.tileEntity("funnel", FunnelTileEntity::new)
|
.tileEntity("funnel", FunnelTileEntity::new)
|
||||||
.validBlocks(AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.ANDESITE_FUNNEL, AllBlocks.ANDESITE_BELT_FUNNEL)
|
.validBlocks(AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.ANDESITE_FUNNEL,
|
||||||
|
AllBlocks.ANDESITE_BELT_FUNNEL)
|
||||||
.renderer(() -> FunnelRenderer::new)
|
.renderer(() -> FunnelRenderer::new)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
|
@ -465,12 +476,12 @@ public class AllTileEntities {
|
||||||
.renderer(() -> AdjustableRepeaterRenderer::new)
|
.renderer(() -> AdjustableRepeaterRenderer::new)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final TileEntityEntry<AdjustablePulseRepeaterTileEntity> ADJUSTABLE_PULSE_REPEATER = Create.registrate()
|
public static final TileEntityEntry<AdjustablePulseRepeaterTileEntity> ADJUSTABLE_PULSE_REPEATER =
|
||||||
|
Create.registrate()
|
||||||
.tileEntity("adjustable_pulse_repeater", AdjustablePulseRepeaterTileEntity::new)
|
.tileEntity("adjustable_pulse_repeater", AdjustablePulseRepeaterTileEntity::new)
|
||||||
.validBlocks(AllBlocks.ADJUSTABLE_PULSE_REPEATER)
|
.validBlocks(AllBlocks.ADJUSTABLE_PULSE_REPEATER)
|
||||||
.renderer(() -> AdjustableRepeaterRenderer::new)
|
.renderer(() -> AdjustableRepeaterRenderer::new)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
package com.simibubi.create.content.contraptions.components.actors;
|
package com.simibubi.create.content.contraptions.components.actors;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
|
import com.simibubi.create.AllTileEntities;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
||||||
|
|
||||||
|
import mcp.MethodsReturnNonnullByDefault;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.item.BlockItemUseContext;
|
import net.minecraft.item.BlockItemUseContext;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.shapes.ISelectionContext;
|
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||||
import net.minecraft.util.math.shapes.VoxelShape;
|
import net.minecraft.util.math.shapes.VoxelShape;
|
||||||
import net.minecraft.world.IBlockReader;
|
import net.minecraft.world.IBlockReader;
|
||||||
|
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
|
||||||
import mcp.MethodsReturnNonnullByDefault;
|
|
||||||
|
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
public class PortableStorageInterfaceBlock extends ProperDirectionalBlock {
|
public class PortableStorageInterfaceBlock extends ProperDirectionalBlock {
|
||||||
|
@ -22,6 +23,16 @@ public class PortableStorageInterfaceBlock extends ProperDirectionalBlock {
|
||||||
super(p_i48415_1_);
|
super(p_i48415_1_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasTileEntity(BlockState state) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||||
|
return AllTileEntities.PORTABLE_STORAGE_INTERFACE.create();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||||
return getDefaultState().with(FACING, context.getNearestLookingDirection()
|
return getDefaultState().with(FACING, context.getNearestLookingDirection()
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
package com.simibubi.create.content.contraptions.components.actors;
|
||||||
|
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
import com.simibubi.create.AllBlocks;
|
||||||
|
import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour;
|
||||||
|
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
|
||||||
|
import com.simibubi.create.foundation.config.AllConfigs;
|
||||||
|
import com.simibubi.create.foundation.item.ItemHelper;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.behaviour.inventory.SingleTargetAutoExtractingBehaviour;
|
||||||
|
import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTUtil;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.Direction;
|
||||||
|
import net.minecraft.util.Direction.Axis;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
|
||||||
|
public class PortableStorageInterfaceMovement extends MovementBehaviour {
|
||||||
|
|
||||||
|
private static final String _exporting_ = "Exporting";
|
||||||
|
private static final String _delay_ = "Delay";
|
||||||
|
private static final String _workingPos_ = "WorkingPos";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Vec3d getActiveAreaOffset(MovementContext context) {
|
||||||
|
return new Vec3d(context.state.get(PortableStorageInterfaceBlock.FACING)
|
||||||
|
.getDirectionVec()).scale(.85f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitNewPosition(MovementContext context, BlockPos pos) {
|
||||||
|
Direction currentFacing = getCurrentFacing(context);
|
||||||
|
PortableStorageInterfaceTileEntity psi =
|
||||||
|
getValidStationaryInterface(context.world, pos, currentFacing.getAxis());
|
||||||
|
if (psi == null)
|
||||||
|
return;
|
||||||
|
if (psi.isTransferring())
|
||||||
|
return;
|
||||||
|
context.data.put(_workingPos_, NBTUtil.writeBlockPos(pos));
|
||||||
|
context.stall = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick(MovementContext context) {
|
||||||
|
if (!context.data.contains(_workingPos_))
|
||||||
|
return;
|
||||||
|
if (context.world.isRemote)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BlockPos pos = NBTUtil.readBlockPos(context.data.getCompound(_workingPos_));
|
||||||
|
PortableStorageInterfaceTileEntity stationaryInterface =
|
||||||
|
getValidStationaryInterface(context.world, pos, getCurrentFacing(context).getAxis());
|
||||||
|
if (stationaryInterface == null) {
|
||||||
|
reset(context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nextExtract = context.data.getInt(_delay_);
|
||||||
|
if (nextExtract > 0) {
|
||||||
|
nextExtract--;
|
||||||
|
context.data.putInt(_delay_, nextExtract);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean extract = context.data.getBoolean(_exporting_);
|
||||||
|
boolean success = false;
|
||||||
|
IItemHandlerModifiable inv = context.contraption.inventory;
|
||||||
|
SingleTargetAutoExtractingBehaviour extracting =
|
||||||
|
TileEntityBehaviour.get(stationaryInterface, SingleTargetAutoExtractingBehaviour.TYPE);
|
||||||
|
FilteringBehaviour filtering = TileEntityBehaviour.get(stationaryInterface, FilteringBehaviour.TYPE);
|
||||||
|
|
||||||
|
if (extract) {
|
||||||
|
// Export from Contraption
|
||||||
|
Predicate<ItemStack> test = extracting.getFilterTest();
|
||||||
|
int exactAmount = extracting.getAmountFromFilter();
|
||||||
|
ItemStack itemExtracted = ItemStack.EMPTY;
|
||||||
|
if (exactAmount != -1)
|
||||||
|
itemExtracted = ItemHelper.extract(inv, test, exactAmount, false);
|
||||||
|
else
|
||||||
|
itemExtracted = ItemHelper.extract(inv, test, stationaryInterface::amountToExtract, false);
|
||||||
|
|
||||||
|
if (!itemExtracted.isEmpty()) {
|
||||||
|
stationaryInterface.onExtract(itemExtracted);
|
||||||
|
success = exactAmount == -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Import to Contraption
|
||||||
|
if (extracting != null) {
|
||||||
|
extracting.setSynchronized(false);
|
||||||
|
extracting.withAdditionalFilter(stack -> {
|
||||||
|
if (filtering.anyAmount())
|
||||||
|
return true;
|
||||||
|
return ItemHandlerHelper.insertItemStacked(inv, stack, true)
|
||||||
|
.isEmpty();
|
||||||
|
});
|
||||||
|
|
||||||
|
extracting.withAmountThreshold(stack -> {
|
||||||
|
ItemStack tester = stack.copy();
|
||||||
|
tester.setCount(tester.getMaxStackSize());
|
||||||
|
return stack.getCount() - ItemHandlerHelper.insertItemStacked(inv, stack, true)
|
||||||
|
.getCount();
|
||||||
|
});
|
||||||
|
|
||||||
|
extracting.setCallback(stack -> {
|
||||||
|
ItemHandlerHelper.insertItemStacked(inv, stack, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
success = extracting.extract() && filtering.anyAmount();
|
||||||
|
extracting.setSynchronized(true);
|
||||||
|
stationaryInterface.applyFilteringCallbacks();
|
||||||
|
extracting.setCallback(stationaryInterface::onExtract);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!success) {
|
||||||
|
reset(context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
context.data.putInt(_delay_, AllConfigs.SERVER.logistics.defaultExtractionTimer.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stopMoving(MovementContext context) {
|
||||||
|
reset(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reset(MovementContext context) {
|
||||||
|
context.data.remove(_workingPos_);
|
||||||
|
context.data.remove(_delay_);
|
||||||
|
context.data.remove(_exporting_);
|
||||||
|
context.stall = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private PortableStorageInterfaceTileEntity getValidStationaryInterface(World world, BlockPos pos, Axis validAxis) {
|
||||||
|
TileEntity te = world.getTileEntity(pos);
|
||||||
|
if (!(te instanceof PortableStorageInterfaceTileEntity))
|
||||||
|
return null;
|
||||||
|
BlockState blockState = world.getBlockState(pos);
|
||||||
|
if (!AllBlocks.PORTABLE_STORAGE_INTERFACE.has(blockState))
|
||||||
|
return null;
|
||||||
|
if (blockState.get(PortableStorageInterfaceBlock.FACING)
|
||||||
|
.getAxis() != validAxis)
|
||||||
|
return null;
|
||||||
|
if (world.isBlockPowered(pos))
|
||||||
|
return null;
|
||||||
|
return (PortableStorageInterfaceTileEntity) te;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Direction getCurrentFacing(MovementContext context) {
|
||||||
|
Vec3d directionVec = new Vec3d(context.state.get(PortableStorageInterfaceBlock.FACING)
|
||||||
|
.getDirectionVec());
|
||||||
|
directionVec = VecHelper.rotate(directionVec, context.rotation.x, context.rotation.y, context.rotation.z);
|
||||||
|
return Direction.getFacingFromVector(directionVec.x, directionVec.y, directionVec.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.simibubi.create.content.contraptions.components.actors;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
|
import com.simibubi.create.AllBlockPartials;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||||
|
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||||
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
import com.simibubi.create.foundation.utility.MatrixStacker;
|
||||||
|
import com.simibubi.create.foundation.utility.SuperByteBuffer;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||||
|
import net.minecraft.util.Direction;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
|
||||||
|
public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer<PortableStorageInterfaceTileEntity> {
|
||||||
|
|
||||||
|
public PortableStorageInterfaceRenderer(TileEntityRendererDispatcher dispatcher) {
|
||||||
|
super(dispatcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void renderSafe(PortableStorageInterfaceTileEntity te, float partialTicks, MatrixStack ms,
|
||||||
|
IRenderTypeBuffer buffer, int light, int overlay) {
|
||||||
|
|
||||||
|
BlockState blockState = te.getBlockState();
|
||||||
|
SuperByteBuffer middle = AllBlockPartials.PORTABLE_STORAGE_INTERFACE_MIDDLE.renderOn(blockState);
|
||||||
|
SuperByteBuffer top = AllBlockPartials.PORTABLE_STORAGE_INTERFACE_TOP.renderOn(blockState);
|
||||||
|
IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid());
|
||||||
|
|
||||||
|
ms.push();
|
||||||
|
|
||||||
|
Direction facing = blockState.get(PortableStorageInterfaceBlock.FACING);
|
||||||
|
MatrixStacker.of(ms)
|
||||||
|
.centre()
|
||||||
|
.rotateY(AngleHelper.horizontalAngle(facing))
|
||||||
|
.rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90)
|
||||||
|
.unCentre();
|
||||||
|
|
||||||
|
float progress = (float) ((AnimationTickHolder.getRenderTick() * .25f) % (Math.PI * 2));
|
||||||
|
float bounce = (MathHelper.sin(progress) + 1) / 4f;
|
||||||
|
|
||||||
|
if (bounce > 7/16f) {
|
||||||
|
middle = AllBlockPartials.PORTABLE_STORAGE_INTERFACE_MIDDLE_POWERED.renderOn(blockState);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ms.translate(0, bounce, 0);
|
||||||
|
|
||||||
|
ms.push();
|
||||||
|
ms.translate(0, 6/16f, 0);
|
||||||
|
middle.renderInto(ms, vb);
|
||||||
|
ms.pop();
|
||||||
|
|
||||||
|
ms.translate(0, bounce, 0);
|
||||||
|
top.renderInto(ms, vb);
|
||||||
|
|
||||||
|
ms.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.simibubi.create.content.contraptions.components.actors;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.SyncedTileEntity;
|
||||||
|
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntityType;
|
||||||
|
import net.minecraft.util.Direction;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||||
|
|
||||||
|
public class PortableStorageInterfaceTileEntity extends SmartTileEntity {
|
||||||
|
|
||||||
|
protected int transferTimeout;
|
||||||
|
protected LazyOptional<IItemHandlerModifiable> capability;
|
||||||
|
|
||||||
|
public PortableStorageInterfaceTileEntity(TileEntityType<?> tileEntityTypeIn) {
|
||||||
|
super(tileEntityTypeIn);
|
||||||
|
transferTimeout = 0;
|
||||||
|
capability = LazyOptional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startTransferringTo(Contraption contraption) {
|
||||||
|
CombinedInvWrapper inventory = contraption.inventory;
|
||||||
|
capability.invalidate();
|
||||||
|
capability = LazyOptional.of(() -> inventory);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
super.tick();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTransferring() {
|
||||||
|
return transferTimeout != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) {
|
||||||
|
return super.getCapability(cap, side);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetTimer() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addBehaviours(List<TileEntityBehaviour> behaviours) {}
|
||||||
|
|
||||||
|
}
|
|
@ -1,157 +0,0 @@
|
||||||
//package com.simibubi.create.content.contraptions.components.actors;
|
|
||||||
//
|
|
||||||
//import java.util.function.Predicate;
|
|
||||||
//
|
|
||||||
//import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour;
|
|
||||||
//import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
|
|
||||||
//import com.simibubi.create.content.logistics.block.transposer.TransposerBlock;
|
|
||||||
//import com.simibubi.create.content.logistics.block.transposer.TransposerTileEntity;
|
|
||||||
//import com.simibubi.create.foundation.config.AllConfigs;
|
|
||||||
//import com.simibubi.create.foundation.item.ItemHelper;
|
|
||||||
//import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
|
||||||
//import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
|
||||||
//import com.simibubi.create.foundation.tileEntity.behaviour.inventory.SingleTargetAutoExtractingBehaviour;
|
|
||||||
//import com.simibubi.create.foundation.utility.VecHelper;
|
|
||||||
//
|
|
||||||
//import net.minecraft.item.ItemStack;
|
|
||||||
//import net.minecraft.nbt.NBTUtil;
|
|
||||||
//import net.minecraft.tileentity.TileEntity;
|
|
||||||
//import net.minecraft.util.Direction;
|
|
||||||
//import net.minecraft.util.Direction.Axis;
|
|
||||||
//import net.minecraft.util.math.BlockPos;
|
|
||||||
//import net.minecraft.util.math.Vec3d;
|
|
||||||
//import net.minecraft.world.World;
|
|
||||||
//import net.minecraftforge.items.IItemHandlerModifiable;
|
|
||||||
//import net.minecraftforge.items.ItemHandlerHelper;
|
|
||||||
//
|
|
||||||
//public class StorageInterfaceMovement extends MovementBehaviour {
|
|
||||||
//
|
|
||||||
// private static final String _exporting_ = "Exporting";
|
|
||||||
// private static final String _delay_ = "Delay";
|
|
||||||
// private static final String _workingPos_ = "WorkingPos";
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Vec3d getActiveAreaOffset(MovementContext context) {
|
|
||||||
// return new Vec3d(context.state.get(PortableStorageInterfaceBlock.FACING).getDirectionVec()).scale(.85f);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void visitNewPosition(MovementContext context, BlockPos pos) {
|
|
||||||
// Direction currentFacing = getCurrentFacing(context);
|
|
||||||
// TransposerTileEntity transposer = getValidTransposer(context.world, pos, currentFacing.getAxis());
|
|
||||||
// if (transposer == null)
|
|
||||||
// return;
|
|
||||||
// context.data.put(_workingPos_, NBTUtil.writeBlockPos(pos));
|
|
||||||
// context.data.putBoolean(_exporting_,
|
|
||||||
// TransposerBlock.getBlockFacing(transposer.getBlockState()) != currentFacing);
|
|
||||||
// context.stall = true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void tick(MovementContext context) {
|
|
||||||
// if (!context.data.contains(_workingPos_))
|
|
||||||
// return;
|
|
||||||
// if (context.world.isRemote)
|
|
||||||
// return;
|
|
||||||
//
|
|
||||||
// BlockPos pos = NBTUtil.readBlockPos(context.data.getCompound(_workingPos_));
|
|
||||||
// TransposerTileEntity transposer = getValidTransposer(context.world, pos, getCurrentFacing(context).getAxis());
|
|
||||||
// if (transposer == null) {
|
|
||||||
// reset(context);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// int nextExtract = context.data.getInt(_delay_);
|
|
||||||
// if (nextExtract > 0) {
|
|
||||||
// nextExtract--;
|
|
||||||
// context.data.putInt(_delay_, nextExtract);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// boolean extract = context.data.getBoolean(_exporting_);
|
|
||||||
// boolean success = false;
|
|
||||||
// IItemHandlerModifiable inv = context.contraption.inventory;
|
|
||||||
// SingleTargetAutoExtractingBehaviour extracting =
|
|
||||||
// TileEntityBehaviour.get(transposer, SingleTargetAutoExtractingBehaviour.TYPE);
|
|
||||||
// FilteringBehaviour filtering = TileEntityBehaviour.get(transposer, FilteringBehaviour.TYPE);
|
|
||||||
//
|
|
||||||
// if (extract) {
|
|
||||||
// // Export from Contraption
|
|
||||||
// Predicate<ItemStack> test = extracting.getFilterTest();
|
|
||||||
// int exactAmount = extracting.getAmountFromFilter();
|
|
||||||
// ItemStack itemExtracted = ItemStack.EMPTY;
|
|
||||||
// if (exactAmount != -1)
|
|
||||||
// itemExtracted = ItemHelper.extract(inv, test, exactAmount, false);
|
|
||||||
// else
|
|
||||||
// itemExtracted = ItemHelper.extract(inv, test, transposer::amountToExtract, false);
|
|
||||||
//
|
|
||||||
// if (!itemExtracted.isEmpty()) {
|
|
||||||
// transposer.onExtract(itemExtracted);
|
|
||||||
// success = exactAmount == -1;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// // Import to Contraption
|
|
||||||
// if (extracting != null) {
|
|
||||||
// extracting.setSynchronized(false);
|
|
||||||
// extracting.withAdditionalFilter(stack -> {
|
|
||||||
// if (filtering.anyAmount())
|
|
||||||
// return true;
|
|
||||||
// return ItemHandlerHelper.insertItemStacked(inv, stack, true).isEmpty();
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// extracting.withAmountThreshold(stack -> {
|
|
||||||
// ItemStack tester = stack.copy();
|
|
||||||
// tester.setCount(tester.getMaxStackSize());
|
|
||||||
// return stack.getCount() - ItemHandlerHelper.insertItemStacked(inv, stack, true).getCount();
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// extracting.setCallback(stack -> {
|
|
||||||
// ItemHandlerHelper.insertItemStacked(inv, stack, false);
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// success = extracting.extract() && filtering.anyAmount();
|
|
||||||
// extracting.setSynchronized(true);
|
|
||||||
// transposer.applyFilteringCallbacks();
|
|
||||||
// extracting.setCallback(transposer::onExtract);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!success) {
|
|
||||||
// reset(context);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// context.data.putInt(_delay_, AllConfigs.SERVER.logistics.extractorDelay.get());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void stopMoving(MovementContext context) {
|
|
||||||
// reset(context);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void reset(MovementContext context) {
|
|
||||||
// context.data.remove(_workingPos_);
|
|
||||||
// context.data.remove(_delay_);
|
|
||||||
// context.data.remove(_exporting_);
|
|
||||||
// context.stall = false;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private TransposerTileEntity getValidTransposer(World world, BlockPos pos, Axis validAxis) {
|
|
||||||
// TileEntity te = world.getTileEntity(pos);
|
|
||||||
// if (!(te instanceof TransposerTileEntity))
|
|
||||||
// return null;
|
|
||||||
// if (TransposerBlock.getBlockFacing(world.getBlockState(pos)).getAxis() != validAxis)
|
|
||||||
// return null;
|
|
||||||
// if (world.isBlockPowered(pos))
|
|
||||||
// return null;
|
|
||||||
// return (TransposerTileEntity) te;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private Direction getCurrentFacing(MovementContext context) {
|
|
||||||
// Vec3d directionVec = new Vec3d(context.state.get(PortableStorageInterfaceBlock.FACING).getDirectionVec());
|
|
||||||
// directionVec = VecHelper.rotate(directionVec, context.rotation.x, context.rotation.y, context.rotation.z);
|
|
||||||
// return Direction.getFacingFromVector(directionVec.x, directionVec.y, directionVec.z);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
|
@ -4,6 +4,7 @@ public class CLogistics extends ConfigBase {
|
||||||
|
|
||||||
public ConfigInt defaultExtractionLimit = i(64, 1, 64, "defaultExtractionLimit", Comments.defaultExtractionLimit);
|
public ConfigInt defaultExtractionLimit = i(64, 1, 64, "defaultExtractionLimit", Comments.defaultExtractionLimit);
|
||||||
public ConfigInt defaultExtractionTimer = i(8, 1, "defaultExtractionTimer", Comments.defaultExtractionTimer);
|
public ConfigInt defaultExtractionTimer = i(8, 1, "defaultExtractionTimer", Comments.defaultExtractionTimer);
|
||||||
|
public ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout);
|
||||||
public ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange);
|
public ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange);
|
||||||
public ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange);
|
public ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange);
|
||||||
|
|
||||||
|
@ -18,6 +19,7 @@ public class CLogistics extends ConfigBase {
|
||||||
static String defaultExtractionTimer =
|
static String defaultExtractionTimer =
|
||||||
"The amount of ticks a funnel waits between item transferrals, when it is not re-activated by redstone.";
|
"The amount of ticks a funnel waits between item transferrals, when it is not re-activated by redstone.";
|
||||||
static String linkRange = "Maximum possible range in blocks of redstone link connections.";
|
static String linkRange = "Maximum possible range in blocks of redstone link connections.";
|
||||||
|
static String psiTimeout = "The amount of ticks a portable storage interface waits for transfers until letting contraptions move along.";
|
||||||
static String mechanicalArmRange = "Maximum distance in blocks a Mechanical Arm can reach across.";
|
static String mechanicalArmRange = "Maximum distance in blocks a Mechanical Arm can reach across.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"0": "create:block/portable_storage_interface",
|
||||||
|
"1": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 12, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 12, 1.9],
|
||||||
|
"to": [2, 14.1, 14.1],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 10]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7, 10, 8, 11], "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 10, 1, 11], "texture": "#0"},
|
||||||
|
"west": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 2, 2, 14], "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [14, 12, 2],
|
||||||
|
"to": [16, 14, 14],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 6]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 10, 1, 11], "texture": "#0"},
|
||||||
|
"east": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"south": {"uv": [7, 10, 8, 11], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 12, 0],
|
||||||
|
"to": [14, 14, 16],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 10, 8, 11], "texture": "#0"},
|
||||||
|
"south": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 10, 8, 11], "texture": "#0"},
|
||||||
|
"up": {"uv": [2, 0, 14, 16], "texture": "#1"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "Base",
|
||||||
|
"origin": [10, 20, 8],
|
||||||
|
"children": [0, 1, 2, 3]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"0": "create:block/portable_storage_interface",
|
||||||
|
"particle": "create:block/portable_storage_interface"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [2, 0, 2],
|
||||||
|
"to": [14, 9, 14],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 10]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"east": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"south": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"west": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"up": {"uv": [1.5, 3.5, 2, 4], "texture": "#0"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "Middle",
|
||||||
|
"origin": [10, 22, 10],
|
||||||
|
"children": [0]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"0": "create:block/portable_storage_interface",
|
||||||
|
"particle": "create:block/portable_storage_interface"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [2, 0, 2],
|
||||||
|
"to": [14, 9, 14],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 10]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [9, 3.5, 15, 8], "texture": "#0"},
|
||||||
|
"east": {"uv": [9, 3.5, 15, 8], "texture": "#0"},
|
||||||
|
"south": {"uv": [9, 3.5, 15, 8], "texture": "#0"},
|
||||||
|
"west": {"uv": [9, 3.5, 15, 8], "texture": "#0"},
|
||||||
|
"up": {"uv": [1.5, 3.5, 2, 4], "texture": "#0"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "Middle",
|
||||||
|
"origin": [10, 22, 10],
|
||||||
|
"children": [0]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,120 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"0": "create:block/portable_storage_interface",
|
||||||
|
"particle": "create:block/portable_storage_interface"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [3, 7, 3],
|
||||||
|
"to": [13, 14.1, 13],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [11, 15, 11]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"},
|
||||||
|
"east": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [1, 14, 1],
|
||||||
|
"to": [15, 16, 15],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"up": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"},
|
||||||
|
"down": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, 13.1, 13],
|
||||||
|
"to": [6, 15.1, 14],
|
||||||
|
"rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 13]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [10, 15, 11, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, 13.1, 2],
|
||||||
|
"to": [12, 15.1, 3],
|
||||||
|
"rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 3]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [10, 15, 11, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 13.1, 4],
|
||||||
|
"to": [3, 15.1, 6],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [3, 14, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [10, 15, 11, 16], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [13, 13.1, 10],
|
||||||
|
"to": [14, 15.1, 12],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [13, 14, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"east": {"uv": [10, 15, 11, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, 13.1, 13],
|
||||||
|
"to": [12, 15.1, 14],
|
||||||
|
"rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 13]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [13, 15, 14, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, 13.1, 2],
|
||||||
|
"to": [6, 15.1, 3],
|
||||||
|
"rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 3]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [13, 15, 14, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 13.1, 10],
|
||||||
|
"to": [3, 15.1, 12],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [3, 14, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [13, 15, 14, 16], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [13, 13.1, 4],
|
||||||
|
"to": [14, 15.1, 6],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [13, 14, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"east": {"uv": [13, 15, 14, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "Top",
|
||||||
|
"origin": [10, 22, 10],
|
||||||
|
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 432 B |
|
@ -0,0 +1,238 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"0": "create:block/portable_storage_interface",
|
||||||
|
"1": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/portable_storage_interface"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [2, 10, 2],
|
||||||
|
"to": [14, 19, 14],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [10, 18, 10]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"east": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"south": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"west": {"uv": [1, 3.5, 7, 8], "texture": "#0"},
|
||||||
|
"up": {"uv": [1.5, 3.5, 2, 4], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 12, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 10, 8, 16], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 12, 1.9],
|
||||||
|
"to": [2, 14.1, 14.1],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 10]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7, 10, 8, 11], "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 10, 1, 11], "texture": "#0"},
|
||||||
|
"west": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 2, 2, 14], "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [14, 12, 2],
|
||||||
|
"to": [16, 14, 14],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 6]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 10, 1, 11], "texture": "#0"},
|
||||||
|
"east": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"south": {"uv": [7, 10, 8, 11], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 12, 0],
|
||||||
|
"to": [14, 14, 16],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 10, 8, 11], "texture": "#0"},
|
||||||
|
"south": {"uv": [1, 9, 7, 10], "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 10, 8, 11], "texture": "#0"},
|
||||||
|
"up": {"uv": [2, 0, 14, 16], "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [3, 16, 3],
|
||||||
|
"to": [13, 23.1, 13],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [11, 24, 11]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"},
|
||||||
|
"east": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [1, 23, 1],
|
||||||
|
"to": [15, 25, 15],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"},
|
||||||
|
"up": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"},
|
||||||
|
"down": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, 22.1, 13],
|
||||||
|
"to": [6, 24.1, 14],
|
||||||
|
"rotation": {"angle": 45, "axis": "x", "origin": [8, 23, 13]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [10, 15, 11, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, 22.1, 2],
|
||||||
|
"to": [12, 24.1, 3],
|
||||||
|
"rotation": {"angle": -45, "axis": "x", "origin": [8, 23, 3]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [10, 15, 11, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 22.1, 4],
|
||||||
|
"to": [3, 24.1, 6],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [3, 23, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [10, 15, 11, 16], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [13, 22.1, 10],
|
||||||
|
"to": [14, 24.1, 12],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [13, 23, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"east": {"uv": [10, 15, 11, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, 22.1, 13],
|
||||||
|
"to": [12, 24.1, 14],
|
||||||
|
"rotation": {"angle": 45, "axis": "x", "origin": [8, 23, 13]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [13, 15, 14, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, 22.1, 2],
|
||||||
|
"to": [6, 24.1, 3],
|
||||||
|
"rotation": {"angle": -45, "axis": "x", "origin": [8, 23, 3]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [13, 15, 14, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [2, 22.1, 10],
|
||||||
|
"to": [3, 24.1, 12],
|
||||||
|
"rotation": {"angle": 45, "axis": "z", "origin": [3, 23, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"west": {"uv": [13, 15, 14, 16], "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [13, 22.1, 4],
|
||||||
|
"to": [14, 24.1, 6],
|
||||||
|
"rotation": {"angle": -45, "axis": "z", "origin": [13, 23, 8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"},
|
||||||
|
"east": {"uv": [13, 15, 14, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [0, 45, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [0, 225, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"translation": [0, 3, 0],
|
||||||
|
"scale": [0.25, 0.25, 0.25]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [30, 225, 0],
|
||||||
|
"translation": [0, -1.75, 0],
|
||||||
|
"scale": [0.45, 0.45, 0.45]
|
||||||
|
},
|
||||||
|
"head": {
|
||||||
|
"rotation": [-180, 0, 0],
|
||||||
|
"translation": [0, 22.25, 0]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"translation": [0, -1.25, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "Middle",
|
||||||
|
"origin": [10, 22, 10],
|
||||||
|
"children": [0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "block",
|
||||||
|
"origin": [8, 8, 8],
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"name": "Base",
|
||||||
|
"origin": [10, 20, 8],
|
||||||
|
"children": [1, 2, 3, 4]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "block_top",
|
||||||
|
"origin": [8, 8, 8],
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"name": "Top",
|
||||||
|
"origin": [10, 22, 10],
|
||||||
|
"children": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
Binary file not shown.
After Width: | Height: | Size: 4 KiB |
Binary file not shown.
After Width: | Height: | Size: 4 KiB |
Loading…
Reference in a new issue