From 3417ceb4fbb1640bf6b30caceb2179be2ce45027 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Thu, 11 Jun 2020 15:26:11 +0200 Subject: [PATCH] Cart Assembler - behaviors, railtype update and texture fixes --- src/generated/resources/.cache/cache | 4 +- .../resources/assets/create/lang/en_us.json | 15 +- .../create/models/item/cart_assembler.json | 2 +- .../java/com/simibubi/create/AllBlocks.java | 2 +- .../mounted/CartAssemblerBlock.java | 234 +++++++++++------- .../mounted/CartAssemblerBlockItem.java | 31 ++- .../assets/create/lang/default/messages.json | 1 + .../assets/create/lang/default/tooltips.json | 14 +- .../block_powered_rail_activator.json | 2 +- .../block_powered_rail_detector.json | 2 +- 10 files changed, 192 insertions(+), 115 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 5164ad56f..acf7c71f0 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -326,7 +326,7 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json 6bf74a9e1f74b41f53399c1f817942b01a010bf0 assets\create\lang\en_ud.json -587b2f5b13ba67674d5eec135e5f767e9255d20d assets\create\lang\en_us.json +fd0932555a5afde9c3c5f990f78de545814cc4ab assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -925,7 +925,7 @@ f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets\create\models\item\brass_casing. 1786bdffa2ab5a07c88d2797db3d7b54461323c4 assets\create\models\item\brass_ingot.json a37be4a0ec9bf6c381527403c57ced4f81abd67c assets\create\models\item\brass_nugget.json 14ea6ee4db6e7e76446e331a70b6b6bec31e8eb7 assets\create\models\item\brass_sheet.json -7fcb2a4d0bbe434f269b5bcaffebe410913297be assets\create\models\item\cart_assembler.json +b362b940fe9074f0a9b8d53d8a12b41f18c2c292 assets\create\models\item\cart_assembler.json 99d64b76b3baa84c3bd4b96ccd3376ca12425950 assets\create\models\item\chiseled_dark_scoria.json 83d3571eacde52568786802b268f24c6578c1e5d assets\create\models\item\chiseled_dolomite.json afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets\create\models\item\chiseled_gabbro.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 03f795120..ad2f26cef 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -485,6 +485,7 @@ "create.block.deployer.damage_source_name": "a rogue Deployer", "create.block.cart_assembler.invalid": "Can not place a Cart Assembler on this rail type", + "create.block.cart_assembler.invalid_update": "Invalid rail to update this Cart Assembler", "create.recipe.crushing": "Crushing", "create.recipe.milling": "Milling", @@ -1114,11 +1115,15 @@ "block.create.sequenced_gearshift.tooltip.behaviour2": "Opens the _configuration_ _interface._", "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "Mounts a connected Structure onto a _passing_ _Minecart_.", - "block.create.cart_assembler.tooltip.condition1": "When Powered by Redstone", - "block.create.cart_assembler.tooltip.behaviour1": "_Assembles_ a connected Structure onto a _Minecart_ and _sends_ the Minecart on its way.", - "block.create.cart_assembler.tooltip.condition2": "Otherwise", - "block.create.cart_assembler.tooltip.behaviour2": "_Disassembles_ mounted Structures of _passing_ _carts_, places them back into the world and _stops_ the cart.", + "block.create.cart_assembler.tooltip.summary": "When _placed_ _on_ a _Rail_, adopts functionality and _assembles/disassebles_ _structures_ on passing _carts_.", + "block.create.cart_assembler.tooltip.condition1": "When placed above Rail", + "block.create.cart_assembler.tooltip.behaviour1": "_Assembles_ onto passing _carts_ _when_ _powered_, _disassembles_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition2": "When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "_Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "_Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "_Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "ROPE PULLEY", "block.create.rope_pulley.tooltip.summary": "Moves attached _blocks_ and _structures_ _vertically_. Use _Chassis_ or _Slime_ _Blocks_ to move more than a single block.", diff --git a/src/generated/resources/assets/create/models/item/cart_assembler.json b/src/generated/resources/assets/create/models/item/cart_assembler.json index e2c6cd154..0154c4941 100644 --- a/src/generated/resources/assets/create/models/item/cart_assembler.json +++ b/src/generated/resources/assets/create/models/item/cart_assembler.json @@ -1,3 +1,3 @@ { - "parent": "create:block/cart_assembler/block" + "parent": "create:block/cart_assembler/block_none" } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index fc104a223..b7f7e8cad 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -454,7 +454,7 @@ public class AllBlocks { .tag(BlockTags.RAILS) .item(CartAssemblerBlockItem::new) .model((c, p) -> p.blockItem(() -> c.getEntry() - .getBlock(), "/block")) + .getBlock(), "/block_none")) .build() .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java index 81d76e888..0ad84b403 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.mo import java.util.List; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.simibubi.create.AllBlocks; @@ -14,6 +15,7 @@ import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.block.AbstractRailBlock; @@ -44,11 +46,14 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShapes; +import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; @@ -80,6 +85,36 @@ public class CartAssemblerBlock extends AbstractRailBlock implements ITE builder) { builder.add(RAIL_SHAPE, POWERED, RAIL_TYPE); @@ -97,32 +132,92 @@ public class CartAssemblerBlock extends AbstractRailBlock implements ITE { if (te.isMinecartUpdateValid()) { - if (state.get(POWERED)) { - assemble(world, pos, cart); - Direction facing = cart.getAdjustedHorizontalFacing(); - cart.setMotion(facing.getXOffset(), facing.getYOffset(), facing.getZOffset()); - } else { - disassemble(world, pos, cart); - Vec3d diff = VecHelper.getCenterOf(pos) - .subtract(cart.getPositionVec()); - cart.setMotion(diff.x / 16f, 0, diff.z / 16f); + switch (state.get(RAIL_TYPE)) { + case RAIL_POWERED: + if (state.get(POWERED)) { + assemble(world, pos, cart); + Direction facing = cart.getAdjustedHorizontalFacing(); + float speed = getRailMaxSpeed(state, world, pos, cart); + cart.setMotion(facing.getXOffset() * speed, facing.getYOffset() * speed, facing.getZOffset() * speed); + } else { + disassemble(world, pos, cart); + Vec3d diff = VecHelper.getCenterOf(pos) + .subtract(cart.getPositionVec()); + cart.setMotion(diff.x / 16f, 0, diff.z / 16f); + } + break; + case RAIL_NORMAL: + if (state.get(POWERED)) { + assemble(world, pos, cart); + } else { + disassemble(world, pos, cart); + } + break; + case RAIL_ACTIVATOR: + if (state.get(POWERED)) { + disassemble(world, pos, cart); + } + break; + case RAIL_DETECTOR: + if (cart.getPassengers().isEmpty()) { + assemble(world, pos, cart); + Direction facing = cart.getAdjustedHorizontalFacing(); + float speed = getRailMaxSpeed(state, world, pos, cart); + cart.setMotion(facing.getXOffset() * speed, facing.getYOffset() * speed, facing.getZOffset() * speed); + } else { + disassemble(world, pos, cart); + } + break; + default: + break; } te.resetTicksSinceMinecartUpdate(); } }); } + @Override + @Nonnull + public ActionResultType onUse(@Nonnull BlockState state, @Nonnull World world, @Nonnull BlockPos pos, + PlayerEntity player, @Nonnull Hand hand, @Nonnull BlockRayTraceResult blockRayTraceResult) { + + ItemStack itemStack = player.getHeldItem(hand); + if (itemStack.getItem() != getRailItem(state)) { + + if (itemStack.getItem() == Items.RAIL) { + System.out.println("normal rail"); + world.setBlockState(pos, state.with(RAIL_TYPE, RAIL_NORMAL)); + } else if (itemStack.getItem() == Items.POWERED_RAIL) { + world.setBlockState(pos, state.with(RAIL_TYPE, RAIL_POWERED)); + } else if (itemStack.getItem() == Items.ACTIVATOR_RAIL) { + world.setBlockState(pos, state.with(RAIL_TYPE, RAIL_ACTIVATOR)); + } else if (itemStack.getItem() == Items.DETECTOR_RAIL) { + world.setBlockState(pos, state.with(RAIL_TYPE, RAIL_DETECTOR)); + } else { + player.sendStatusMessage(new StringTextComponent(Lang.translate("block.cart_assembler.invalid_update")), true); + return ActionResultType.PASS; + } + if (!player.isCreative()) { + itemStack.setCount(itemStack.getCount() - 1); + player.inventory.placeItemBackInInventory(world, new ItemStack(getRailItem(state))); + } + return ActionResultType.SUCCESS; + } + + return ActionResultType.PASS; + } + protected void assemble(World world, BlockPos pos, AbstractMinecartEntity cart) { if (!cart.getPassengers() .isEmpty()) @@ -169,7 +264,7 @@ public class CartAssemblerBlock extends AbstractRailBlock implements ITE getShapeProperty() { return RAIL_SHAPE; } @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + @Nonnull + public VoxelShape getShape(BlockState state, @Nonnull IBlockReader worldIn, @Nonnull BlockPos pos, @Nonnull ISelectionContext context) { return AllShapes.CART_ASSEMBLER .get(state.get(RAIL_SHAPE) == RailShape.NORTH_SOUTH ? Direction.Axis.Z : Direction.Axis.X); } @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, + @Nonnull + public VoxelShape getCollisionShape(@Nonnull BlockState state, @Nonnull IBlockReader worldIn, @Nonnull BlockPos pos, ISelectionContext context) { if (context.getEntity() instanceof AbstractMinecartEntity) return VoxelShapes.empty(); @@ -202,12 +300,13 @@ public class CartAssemblerBlock extends AbstractRailBlock implements ITE getDrops(BlockState state, net.minecraft.world.storage.loot.LootContext.Builder builder) { - List drops = super.getDrops(state, builder); - drops.addAll(getRailBlock(state).getDrops(builder)); - return drops; - } - - - private static Item getRailItem(BlockState state) { - switch (state.get(RAIL_TYPE)) { - case RAIL_NORMAL: - return Items.RAIL; - case RAIL_DETECTOR: - return Items.DETECTOR_RAIL; - case RAIL_POWERED: - return Items.POWERED_RAIL; - case RAIL_ACTIVATOR: - return Items.ACTIVATOR_RAIL; - default: - return Items.AIR; - } + @Nonnull + public List getDrops(@Nonnull BlockState state, @Nonnull net.minecraft.world.storage.loot.LootContext.Builder builder) { + List drops = super.getDrops(state, builder); + drops.addAll(getRailBlock(state).getDrops(builder)); + return drops; } - - public static BlockState getRailBlock(BlockState assembler) { - switch (assembler.get(RAIL_TYPE)) { - case RAIL_NORMAL: - return Blocks.RAIL.getDefaultState().with(RailBlock.SHAPE, assembler.get(RAIL_SHAPE)); - case RAIL_DETECTOR: - return Blocks.DETECTOR_RAIL.getDefaultState().with(DetectorRailBlock.SHAPE, assembler.get(RAIL_SHAPE)); - case RAIL_POWERED: - return Blocks.POWERED_RAIL.getDefaultState().with(PoweredRailBlock.SHAPE, assembler.get(RAIL_SHAPE)); - case RAIL_ACTIVATOR: - return Blocks.ACTIVATOR_RAIL.getDefaultState().with(PoweredRailBlock.SHAPE, assembler.get(RAIL_SHAPE)); - default: - return null; - } + + @Override + public ItemRequirement getRequiredItems(BlockState state) { + return new ItemRequirement(ItemUseType.CONSUME, getRailItem(state)); + } + + @SuppressWarnings("deprecation") + public List getDropedAssembler(BlockState p_220077_0_, ServerWorld p_220077_1_, BlockPos p_220077_2_, @Nullable TileEntity p_220077_3_, @Nullable Entity p_220077_4_, ItemStack p_220077_5_) { + return super.getDrops(p_220077_0_, (new LootContext.Builder(p_220077_1_)).withRandom(p_220077_1_.rand).withParameter(LootParameters.POSITION, p_220077_2_).withParameter(LootParameters.TOOL, p_220077_5_).withNullableParameter(LootParameters.THIS_ENTITY, p_220077_4_).withNullableParameter(LootParameters.BLOCK_ENTITY, p_220077_3_)); + } + + @Override + public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { + World world = context.getWorld(); + BlockPos pos = context.getPos(); + PlayerEntity player = context.getPlayer(); + if (world instanceof ServerWorld) { + if (player != null && !player.isCreative()) + getDropedAssembler(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem()) + .forEach(itemStack -> { + player.inventory.placeItemBackInInventory(world, itemStack); + }); + state.spawnAdditionalDrops(world, pos, ItemStack.EMPTY); + world.setBlockState(pos, getRailBlock(state)); + } + return ActionResultType.SUCCESS; } - public static class MinecartAnchorBlock extends Block { @@ -274,37 +369,10 @@ public class CartAssemblerBlock extends AbstractRailBlock implements ITE getDropedAssembler(BlockState p_220077_0_, ServerWorld p_220077_1_, BlockPos p_220077_2_, @Nullable TileEntity p_220077_3_, @Nullable Entity p_220077_4_, ItemStack p_220077_5_) { - return super.getDrops(p_220077_0_, (new LootContext.Builder(p_220077_1_)).withRandom(p_220077_1_.rand).withParameter(LootParameters.POSITION, p_220077_2_).withParameter(LootParameters.TOOL, p_220077_5_).withNullableParameter(LootParameters.THIS_ENTITY, p_220077_4_).withNullableParameter(LootParameters.BLOCK_ENTITY, p_220077_3_)); - } - - @Override - public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - PlayerEntity player = context.getPlayer(); - if (world instanceof ServerWorld) { - if (!player.isCreative()) - getDropedAssembler(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem()) - .forEach(itemStack -> { - player.inventory.placeItemBackInInventory(world, itemStack); - }); - state.spawnAdditionalDrops(world, pos, ItemStack.EMPTY); - world.setBlockState(pos, getRailBlock(state)); - } - return ActionResultType.SUCCESS; - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java index 1cca7fdd8..fad8f0f21 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.mo import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemUseContext; import net.minecraft.state.properties.RailShape; @@ -11,6 +12,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.World; +import javax.annotation.Nonnull; + public class CartAssemblerBlockItem extends BlockItem { public CartAssemblerBlockItem(Block block, Properties properties) { @@ -18,42 +21,38 @@ public class CartAssemblerBlockItem extends BlockItem { } @Override + @Nonnull public ActionResultType onItemUse(ItemUseContext context) { BlockPos pos = context.getPos(); World world = context.getWorld(); BlockState state = world.getBlockState(pos); Block block = state.getBlock(); - if (block instanceof AbstractRailBlock) { + PlayerEntity player = context.getPlayer(); + if (block instanceof AbstractRailBlock && player != null) { RailShape shape = state.get(((AbstractRailBlock) block).getShapeProperty()); if (shape == RailShape.EAST_WEST || shape == RailShape.NORTH_SOUTH) { BlockState defaultState = AllBlocks.CART_ASSEMBLER.getDefaultState().with(CartAssemblerBlock.RAIL_SHAPE, shape); if (block.getClass() == RailBlock.class) { world.setBlockState(pos, defaultState.with(CartAssemblerBlock.RAIL_TYPE, CartAssemblerBlock.RAIL_NORMAL)); } else if (block.getClass() == PoweredRailBlock.class) { - if(((PoweredRailBlock) block).isActivatorRail()) { - world.setBlockState(pos, defaultState.with(CartAssemblerBlock.RAIL_TYPE, CartAssemblerBlock.RAIL_ACTIVATOR)); - } else { - world.setBlockState(pos, defaultState.with(CartAssemblerBlock.RAIL_TYPE, CartAssemblerBlock.RAIL_POWERED)); - } - + if (((PoweredRailBlock) block).isActivatorRail()) { + world.setBlockState(pos, defaultState.with(CartAssemblerBlock.RAIL_TYPE, CartAssemblerBlock.RAIL_ACTIVATOR)); + } else { + world.setBlockState(pos, defaultState.with(CartAssemblerBlock.RAIL_TYPE, CartAssemblerBlock.RAIL_POWERED)); + } + } else if (block.getClass() == DetectorRailBlock.class) { world.setBlockState(pos, defaultState.with(CartAssemblerBlock.RAIL_TYPE, CartAssemblerBlock.RAIL_DETECTOR)); } else { - showWarning(context); + player.sendStatusMessage(new StringTextComponent(Lang.translate("block.cart_assembler.invalid")), true); return super.onItemUse(context); } - if (!context.getPlayer().isCreative()) + if (!player.isCreative()) context.getItem().setCount(context.getItem().getCount() - 1); return ActionResultType.SUCCESS; } - showWarning(context); + player.sendStatusMessage(new StringTextComponent(Lang.translate("block.cart_assembler.invalid")), true); } - - return super.onItemUse(context); } - - private void showWarning(ItemUseContext context) { - context.getPlayer().sendStatusMessage(new StringTextComponent(Lang.translate("block.cart_assembler.invalid")), true); - } } \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json index eefcc69c6..d420fc1e6 100644 --- a/src/main/resources/assets/create/lang/default/messages.json +++ b/src/main/resources/assets/create/lang/default/messages.json @@ -11,6 +11,7 @@ "death.attack.create.cuckoo_clock_explosion": "%1$s was blown up by tampered cuckoo clock", "create.block.deployer.damage_source_name": "a rogue Deployer", "create.block.cart_assembler.invalid": "Can not place a Cart Assembler on this rail type", + "create.block.cart_assembler.invalid_update": "Invalid rail to update this Cart Assembler", "create.recipe.crushing": "Crushing", "create.recipe.milling": "Milling", diff --git a/src/main/resources/assets/create/lang/default/tooltips.json b/src/main/resources/assets/create/lang/default/tooltips.json index 262ead1ba..c0db1db39 100644 --- a/src/main/resources/assets/create/lang/default/tooltips.json +++ b/src/main/resources/assets/create/lang/default/tooltips.json @@ -288,11 +288,15 @@ "block.create.sequenced_gearshift.tooltip.behaviour2": "Opens the _configuration_ _interface._", "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "Mounts a connected Structure onto a _passing_ _Minecart_.", - "block.create.cart_assembler.tooltip.condition1": "When Powered by Redstone", - "block.create.cart_assembler.tooltip.behaviour1": "_Assembles_ a connected Structure onto a _Minecart_ and _sends_ the Minecart on its way.", - "block.create.cart_assembler.tooltip.condition2": "Otherwise", - "block.create.cart_assembler.tooltip.behaviour2": "_Disassembles_ mounted Structures of _passing_ _carts_, places them back into the world and _stops_ the cart.", + "block.create.cart_assembler.tooltip.summary": "When _placed_ _on_ a _Rail_, adopts functionality and _assembles/disassebles_ _structures_ on passing _carts_.", + "block.create.cart_assembler.tooltip.condition1": "When placed above Rail", + "block.create.cart_assembler.tooltip.behaviour1": "_Assembles_ onto passing _carts_ _when_ _powered_, _disassembles_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition2": "When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "_Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "_Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "_Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "ROPE PULLEY", "block.create.rope_pulley.tooltip.summary": "Moves attached _blocks_ and _structures_ _vertically_. Use _Chassis_ or _Slime_ _Blocks_ to move more than a single block.", diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_activator.json b/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_activator.json index d911d3124..157de2851 100644 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_activator.json +++ b/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_activator.json @@ -2,6 +2,6 @@ "parent": "create:block/cart_assembler/block", "textures": { "clutch_off": "create:block/clutch_on", - "rail": "block/activator_rail" + "rail": "block/activator_rail_on" } } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_detector.json b/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_detector.json index 3f10f7cd8..e17faee3e 100644 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_detector.json +++ b/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_detector.json @@ -2,6 +2,6 @@ "parent": "create:block/cart_assembler/block", "textures": { "clutch_off": "create:block/clutch_on", - "rail": "block/detector_rail" + "rail": "block/detector_rail_on" } } \ No newline at end of file