From 938daec33515cf25b158293123e01028cd2cd3df Mon Sep 17 00:00:00 2001 From: Alexander Minkin Date: Tue, 17 Oct 2023 01:09:36 +0300 Subject: [PATCH] feat: Add Odd Horizontal Elevator Doors --- .../weryskok/mtrrumetro/BlockEntityTypes.java | 10 +- .../java/ru/weryskok/mtrrumetro/Blocks.java | 4 +- .../java/ru/weryskok/mtrrumetro/Items.java | 4 +- .../ru/weryskok/mtrrumetro/MainClient.java | 5 +- .../BlockSPBHorizontalElevatorDoor.java | 45 ++++++++- .../items/ItemSPBHorizontalElevatorDoor.java | 18 ++-- .../RenderSPBHorizontalElevatorDoor.java | 27 ++++- .../spb_horizontal_elevator_door_odd.json | 98 +++++++++++++++++++ .../assets/russianmetro/lang/en_us.json | 3 +- .../assets/russianmetro/lang/ru_ru.json | 3 +- ...b_horizontal_elevator_door_odd_bottom.json | 34 +++++++ .../spb_horizontal_elevator_door_odd_top.json | 34 +++++++ .../spb_horizontal_elevator_door_odd.json | 3 + 13 files changed, 267 insertions(+), 21 deletions(-) create mode 100644 common/src/main/resources/assets/russianmetro/blockstates/spb_horizontal_elevator_door_odd.json create mode 100644 common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_bottom.json create mode 100644 common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_top.json create mode 100644 common/src/main/resources/assets/russianmetro/models/item/spb_horizontal_elevator_door_odd.json diff --git a/common/src/main/java/ru/weryskok/mtrrumetro/BlockEntityTypes.java b/common/src/main/java/ru/weryskok/mtrrumetro/BlockEntityTypes.java index d760d15..bdf5f9f 100644 --- a/common/src/main/java/ru/weryskok/mtrrumetro/BlockEntityTypes.java +++ b/common/src/main/java/ru/weryskok/mtrrumetro/BlockEntityTypes.java @@ -3,14 +3,21 @@ import mtr.RegistryObject; import mtr.mappings.BlockEntityMapper; import mtr.mappings.RegistryUtilities; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import ru.weryskok.mtrrumetro.blocks.*; import java.util.function.BiConsumer; public class BlockEntityTypes { public final BiConsumer>> registerBlockEntityType; - public static final RegistryObject> SPB_HORIZONTAL_ELEVATOR_DOOR_TILE_ENTITY = new RegistryObject<>(() -> RegistryUtilities.getBlockEntityType(BlockSPBHorizontalElevatorDoor.TileEntitySPBHorizontalElevatorDoor::new, Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR.get())); + public static final RegistryObject> SPB_HORIZONTAL_ELEVATOR_DOOR_TILE_ENTITY = new RegistryObject<>(() -> { + return RegistryUtilities.getBlockEntityType((BlockPos pos, BlockState state) -> new BlockSPBHorizontalElevatorDoor.TileEntitySPBHorizontalElevatorDoor(pos, state, false), Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR.get()); + }); + public static final RegistryObject> SPB_HORIZONTAL_ELEVATOR_DOOR_ODD_TILE_ENTITY = new RegistryObject<>(() -> { + return RegistryUtilities.getBlockEntityType((BlockPos pos, BlockState state) -> new BlockSPBHorizontalElevatorDoor.TileEntitySPBHorizontalElevatorDoor(pos, state, true), Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD.get()); + }); public BlockEntityTypes(BiConsumer>> registerBlockEntityType) { this.registerBlockEntityType = registerBlockEntityType; @@ -18,5 +25,6 @@ public BlockEntityTypes(BiConsumer MOSCOW_NEW_TICKET_BARRIER_EXIT = new RegistryObject<>(()-> new BlockMoscowNewTicketBarrier(false)); public static final RegistryObject MOSCOW_NEW_TICKET_BARRIER_SIDE_COVER = new RegistryObject<>(BlockMoscowNewTicketBarrierSideCover::new); public static final RegistryObject MOSCOW_NEW_TICKET_MACHINE = new RegistryObject<>(() -> new BlockMoscowNewTicketMachine(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.COLOR_GRAY).requiresCorrectToolForDrops().strength(2).lightLevel(state -> 5).noOcclusion())); - public static final RegistryObject SPB_HORIZONTAL_ELEVATOR_DOOR = new RegistryObject<>(BlockSPBHorizontalElevatorDoor::new); + public static final RegistryObject SPB_HORIZONTAL_ELEVATOR_DOOR = new RegistryObject<>(() -> new BlockSPBHorizontalElevatorDoor(false)); + public static final RegistryObject SPB_HORIZONTAL_ELEVATOR_DOOR_ODD = new RegistryObject<>(() -> new BlockSPBHorizontalElevatorDoor(true)); public static final RegistryObject MOSCOW_OLD_INFOSOS_STAND = new RegistryObject<>(BlockMoscowOldInfoSosStand::new); public static final RegistryObject MOSCOW_METRO_LOGO = new RegistryObject<>(BlockMoscowMetroLogo::new); @@ -47,5 +48,6 @@ public void registerBlockItems(){ public void registerBlocks(){ registerBlock.accept("spb_horizontal_elevator_door", Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR); + registerBlock.accept("spb_horizontal_elevator_door_odd", Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD); } } \ No newline at end of file diff --git a/common/src/main/java/ru/weryskok/mtrrumetro/Items.java b/common/src/main/java/ru/weryskok/mtrrumetro/Items.java index 8c1ed51..70f1388 100644 --- a/common/src/main/java/ru/weryskok/mtrrumetro/Items.java +++ b/common/src/main/java/ru/weryskok/mtrrumetro/Items.java @@ -8,7 +8,8 @@ public class Items { private final BiConsumer> registerItem; - public static final RegistryObject SPB_HORIZONTAL_ELEVATOR_DOOR = new RegistryObject<>(ItemSPBHorizontalElevatorDoor::new); + public static final RegistryObject SPB_HORIZONTAL_ELEVATOR_DOOR = new RegistryObject<>(() -> new ItemSPBHorizontalElevatorDoor(false)); + public static final RegistryObject SPB_HORIZONTAL_ELEVATOR_DOOR_ODD = new RegistryObject<>(() -> new ItemSPBHorizontalElevatorDoor(true)); public Items(BiConsumer> registerItem) { this.registerItem = registerItem; @@ -16,5 +17,6 @@ public Items(BiConsumer> registerItem) { public void registerItem(){ registerItem.accept("spb_horizontal_elevator_door", Items.SPB_HORIZONTAL_ELEVATOR_DOOR); + registerItem.accept("spb_horizontal_elevator_door_odd", Items.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD); } } \ No newline at end of file diff --git a/common/src/main/java/ru/weryskok/mtrrumetro/MainClient.java b/common/src/main/java/ru/weryskok/mtrrumetro/MainClient.java index afbf748..7c86da2 100644 --- a/common/src/main/java/ru/weryskok/mtrrumetro/MainClient.java +++ b/common/src/main/java/ru/weryskok/mtrrumetro/MainClient.java @@ -1,7 +1,6 @@ package ru.weryskok.mtrrumetro; import mtr.RegistryClient; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; import ru.weryskok.mtrrumetro.render.*; @@ -18,7 +17,9 @@ public static void init() { RegistryClient.registerBlockRenderType(RenderType.cutoutMipped(), Blocks.MOSCOW_NEW_TICKET_MACHINE.get()); RegistryClient.registerBlockRenderType(RenderType.cutoutMipped(), Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR.get()); - RegistryClient.registerTileEntityRenderer(BlockEntityTypes.SPB_HORIZONTAL_ELEVATOR_DOOR_TILE_ENTITY.get(), RenderSPBHorizontalElevatorDoor::new); + RegistryClient.registerBlockRenderType(RenderType.cutoutMipped(), Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD.get()); + RegistryClient.registerTileEntityRenderer(BlockEntityTypes.SPB_HORIZONTAL_ELEVATOR_DOOR_TILE_ENTITY.get(), dispatcher -> new RenderSPBHorizontalElevatorDoor(dispatcher, false)); + RegistryClient.registerTileEntityRenderer(BlockEntityTypes.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD_TILE_ENTITY.get(), dispatcher -> new RenderSPBHorizontalElevatorDoor(dispatcher, true)); RegistryClient.registerBlockRenderType(RenderType.cutoutMipped(), Blocks.MOSCOW_OLD_INFOSOS_STAND.get()); diff --git a/common/src/main/java/ru/weryskok/mtrrumetro/blocks/BlockSPBHorizontalElevatorDoor.java b/common/src/main/java/ru/weryskok/mtrrumetro/blocks/BlockSPBHorizontalElevatorDoor.java index 551bcb5..e525e8e 100644 --- a/common/src/main/java/ru/weryskok/mtrrumetro/blocks/BlockSPBHorizontalElevatorDoor.java +++ b/common/src/main/java/ru/weryskok/mtrrumetro/blocks/BlockSPBHorizontalElevatorDoor.java @@ -1,33 +1,68 @@ package ru.weryskok.mtrrumetro.blocks; import mtr.block.BlockPSDAPGDoorBase; +import mtr.block.BlockPSDAPGGlassEndBase; +import mtr.block.IBlock; import mtr.mappings.BlockEntityMapper; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.world.item.Item; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.level.block.state.properties.Property; import ru.weryskok.mtrrumetro.BlockEntityTypes; import ru.weryskok.mtrrumetro.Items; public class BlockSPBHorizontalElevatorDoor extends BlockPSDAPGDoorBase { + boolean is_odd; - public BlockSPBHorizontalElevatorDoor() { + public BlockSPBHorizontalElevatorDoor(boolean is_odd) { super(); + this.is_odd = is_odd; + } + + @Override + public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { + if (is_odd){ + boolean isTop = IBlock.getStatePropertySafe(state, HALF) == DoubleBlockHalf.UPPER; + return (isTop && direction == Direction.DOWN || !isTop && direction == Direction.UP) && !newState.is(this) ? Blocks.AIR.defaultBlockState() : state; + } + if (IBlock.getSideDirection(state) == direction && !newState.is(this)) { + return Blocks.AIR.defaultBlockState(); + } else { + BlockState superState = super.updateShape(state, direction, newState, world, pos, posFrom); + if (superState.getBlock() == Blocks.AIR) { + return superState; + } else { + boolean end = world.getBlockState(pos.relative(IBlock.getSideDirection(state).getOpposite())).getBlock() instanceof BlockPSDAPGGlassEndBase; + return (BlockState)superState.setValue(END, end); + } + } } @Override public BlockEntityMapper createBlockEntity(BlockPos pos, BlockState state) { - return new TileEntitySPBHorizontalElevatorDoor(pos, state); + return new TileEntitySPBHorizontalElevatorDoor(pos, state, is_odd); } @Override public Item asItem() { - return Items.SPB_HORIZONTAL_ELEVATOR_DOOR.get(); + return (is_odd? Items.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD : Items.SPB_HORIZONTAL_ELEVATOR_DOOR).get(); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(new Property[]{END, FACING, HALF, SIDE, TEMP, UNLOCKED}); } public static class TileEntitySPBHorizontalElevatorDoor extends TileEntityPSDAPGDoorBase { - public TileEntitySPBHorizontalElevatorDoor(BlockPos pos, BlockState state) { - super(BlockEntityTypes.SPB_HORIZONTAL_ELEVATOR_DOOR_TILE_ENTITY.get(), pos, state); + public TileEntitySPBHorizontalElevatorDoor(BlockPos pos, BlockState state, boolean is_odd) { + super((is_odd ? BlockEntityTypes.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD_TILE_ENTITY : BlockEntityTypes.SPB_HORIZONTAL_ELEVATOR_DOOR_TILE_ENTITY).get(), pos, state); } } } diff --git a/common/src/main/java/ru/weryskok/mtrrumetro/items/ItemSPBHorizontalElevatorDoor.java b/common/src/main/java/ru/weryskok/mtrrumetro/items/ItemSPBHorizontalElevatorDoor.java index 8d0ed18..17d0286 100644 --- a/common/src/main/java/ru/weryskok/mtrrumetro/items/ItemSPBHorizontalElevatorDoor.java +++ b/common/src/main/java/ru/weryskok/mtrrumetro/items/ItemSPBHorizontalElevatorDoor.java @@ -1,5 +1,6 @@ package ru.weryskok.mtrrumetro.items; +import mtr.RegistryObject; import mtr.block.IBlock; import mtr.item.ItemWithCreativeTabBase; import net.minecraft.core.BlockPos; @@ -16,14 +17,16 @@ public class ItemSPBHorizontalElevatorDoor extends ItemWithCreativeTabBase implements IBlock { + boolean is_odd; - public ItemSPBHorizontalElevatorDoor() { + public ItemSPBHorizontalElevatorDoor(boolean is_odd) { super(CreativeModeTabs.RUSSIAN_METRO_STUFF); + this.is_odd = is_odd; } @Override public InteractionResult useOn(UseOnContext context) { - final int horizontalBlocks = 2; + final int horizontalBlocks = is_odd ? 1 : 2; if (blocksNotReplaceable(context, horizontalBlocks, 2, getBlockStateFromItem().getBlock())) { return InteractionResult.FAIL; } @@ -36,9 +39,11 @@ public InteractionResult useOn(UseOnContext context) { final BlockPos newPos = pos.relative(playerFacing.getClockWise(), x); for (int y = 0; y < 2; y++) { - final BlockState state = getBlockStateFromItem().setValue(BlockSPBHorizontalElevatorDoor.FACING, playerFacing).setValue(HALF, y == 1 ? DoubleBlockHalf.UPPER : DoubleBlockHalf.LOWER); - BlockState newState = state.setValue(SIDE, x == 0 ? EnumSide.LEFT : EnumSide.RIGHT); - world.setBlockAndUpdate(newPos.above(y), newState); + BlockState state = getBlockStateFromItem().setValue(BlockSPBHorizontalElevatorDoor.FACING, playerFacing).setValue(HALF, y == 1 ? DoubleBlockHalf.UPPER : DoubleBlockHalf.LOWER); + if (!is_odd) { + state = state.setValue(SIDE, x == 0 ? EnumSide.LEFT : EnumSide.RIGHT); + } + world.setBlockAndUpdate(newPos.above(y), state); } } @@ -47,7 +52,8 @@ public InteractionResult useOn(UseOnContext context) { } private BlockState getBlockStateFromItem() { - return Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR.get().defaultBlockState(); + RegistryObject block = is_odd ? Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR_ODD : Blocks.SPB_HORIZONTAL_ELEVATOR_DOOR; + return block.get().defaultBlockState(); } // The same implementation from MTR diff --git a/common/src/main/java/ru/weryskok/mtrrumetro/render/RenderSPBHorizontalElevatorDoor.java b/common/src/main/java/ru/weryskok/mtrrumetro/render/RenderSPBHorizontalElevatorDoor.java index 0ef1ea0..48f12dd 100644 --- a/common/src/main/java/ru/weryskok/mtrrumetro/render/RenderSPBHorizontalElevatorDoor.java +++ b/common/src/main/java/ru/weryskok/mtrrumetro/render/RenderSPBHorizontalElevatorDoor.java @@ -28,8 +28,11 @@ public class RenderSPBHorizontalElevatorDoor matricesNew.translate(open * (!side ? -1 : 1), 0, 0)); + rightStoredMatrixTransformations.add(matricesNew -> matricesNew.translate(-0.5, 0, 0)); + RenderTrains.scheduleRender(new ResourceLocation(String.format("russianmetro:textures/block/spb_horizontal_elevator_door_%s_%s.png", half ? "top" : "bottom", !side ? "right" : "left")), false, RenderTrains.QueuedRenderLayer.EXTERIOR, (matricesNew, vertexConsumer) -> { + rightStoredMatrixTransformations.transform(matricesNew); + MODEL_PSD.renderToBuffer(matricesNew, vertexConsumer, light, overlay, 1, 1, 1, 1); + matricesNew.popPose(); + }); - storedMatrixTransformations.add(matricesNew -> matricesNew.translate(open * (side ? -1 : 1), 0, 0)); - + if (half && !unlocked) { + RenderTrains.scheduleRender(new ResourceLocation("mtr:textures/block/sign/door_not_in_use.png"), false, RenderTrains.QueuedRenderLayer.EXTERIOR, (matricesNew, vertexConsumer) -> { + rightStoredMatrixTransformations.transform(matricesNew); + MODEL_PSD_DOOR_LOCKED.renderToBuffer(matricesNew, vertexConsumer, light, overlay, 1, 1, 1, 1); + matricesNew.popPose(); + }); + } + storedMatrixTransformations.add(matricesNew -> matricesNew.translate(0.5, 0, 0)); + } + storedMatrixTransformations.add(matricesNew -> matricesNew.translate(open * (side ? -1 : 1), 0, 0)); RenderTrains.scheduleRender(new ResourceLocation(String.format("russianmetro:textures/block/spb_horizontal_elevator_door_%s_%s.png", half ? "top" : "bottom", side ? "right" : "left")), false, RenderTrains.QueuedRenderLayer.EXTERIOR, (matricesNew, vertexConsumer) -> { storedMatrixTransformations.transform(matricesNew); MODEL_PSD.renderToBuffer(matricesNew, vertexConsumer, light, overlay, 1, 1, 1, 1); diff --git a/common/src/main/resources/assets/russianmetro/blockstates/spb_horizontal_elevator_door_odd.json b/common/src/main/resources/assets/russianmetro/blockstates/spb_horizontal_elevator_door_odd.json new file mode 100644 index 0000000..987b898 --- /dev/null +++ b/common/src/main/resources/assets/russianmetro/blockstates/spb_horizontal_elevator_door_odd.json @@ -0,0 +1,98 @@ +{ + "multipart": [ + { + "when": { + "facing": "west", + "side": "left", + "half": "lower", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_bottom" + } + }, + { + "when": { + "facing": "north", + "side": "left", + "half": "lower", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_bottom", + "y": 90 + } + }, + { + "when": { + "facing": "east", + "side": "left", + "half": "lower", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_bottom", + "y": 180 + } + }, + { + "when": { + "facing": "south", + "side": "left", + "half": "lower", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_bottom", + "y": 270 + } + }, + { + "when": { + "facing": "west", + "side": "left", + "half": "upper", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_top" + } + }, + { + "when": { + "facing": "north", + "side": "left", + "half": "upper", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_top", + "y": 90 + } + }, + { + "when": { + "facing": "east", + "side": "left", + "half": "upper", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_top", + "y": 180 + } + }, + { + "when": { + "facing": "south", + "side": "left", + "half": "upper", + "temp": "true" + }, + "apply": { + "model": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_odd_top", + "y": 270 + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/russianmetro/lang/en_us.json b/common/src/main/resources/assets/russianmetro/lang/en_us.json index 6441aa6..1dd2f11 100644 --- a/common/src/main/resources/assets/russianmetro/lang/en_us.json +++ b/common/src/main/resources/assets/russianmetro/lang/en_us.json @@ -7,7 +7,8 @@ "block.russianmetro.moscow_new_ticket_barrier_exit": "Moscow New Ticket Barrier (Exit)", "block.russianmetro.moscow_new_ticket_barrier_side_cover": "Moscow New Ticket Barrier (Side Cover)", "block.russianmetro.moscow_new_ticket_machine": "Moscow Ticket Machine", - "item.russianmetro.spb_horizontal_elevator_door": "St. Petersburg \"Horizontal Elevator\" Station Doors", + "item.russianmetro.spb_horizontal_elevator_door": "St. Petersburg \"Horizontal Elevator\" Station Doors (Even)", + "item.russianmetro.spb_horizontal_elevator_door_odd": "St. Petersburg \"Horizontal Elevator\" Station Doors (Odd)", "block.russianmetro.moscow_old_infosos_stand": "Moscow \"Info-SOS\" Stand", "block.russianmetro.moscow_metro_logo": "Metro Emblem" } \ No newline at end of file diff --git a/common/src/main/resources/assets/russianmetro/lang/ru_ru.json b/common/src/main/resources/assets/russianmetro/lang/ru_ru.json index 5f18441..0e58c5a 100644 --- a/common/src/main/resources/assets/russianmetro/lang/ru_ru.json +++ b/common/src/main/resources/assets/russianmetro/lang/ru_ru.json @@ -7,7 +7,8 @@ "block.russianmetro.moscow_new_ticket_barrier_exit": "Новый московский турникет (Выход)", "block.russianmetro.moscow_new_ticket_barrier_side_cover": "Новый московский турникет (Боковая заглушка)", "block.russianmetro.moscow_new_ticket_machine": "Московский автомат по продаже билетов", - "item.russianmetro.spb_horizontal_elevator_door": "Петербургские станционные двери «Горизонтальный лифт»", + "item.russianmetro.spb_horizontal_elevator_door": "Петербургские станционные двери «Горизонтальный лифт» (Чётные)", + "item.russianmetro.spb_horizontal_elevator_door_odd": "Петербургские станционные двери «Горизонтальный лифт» (Нечётные)", "block.russianmetro.moscow_old_infosos_stand": "Московский стенд «Инфосос»", "block.russianmetro.moscow_metro_logo": "Эмблема метро" } \ No newline at end of file diff --git a/common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_bottom.json b/common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_bottom.json new file mode 100644 index 0000000..9b30145 --- /dev/null +++ b/common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_bottom.json @@ -0,0 +1,34 @@ +{ + "parent": "block/block", + "textures": { + "bottom": "mtr:block/black", + "back": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_bottom_back", + "particle": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_bottom" + }, + "elements": [ + { + "from": [0, 0, 8], + "to": [2, 16, 24], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#bottom"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#particle"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#bottom"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#back"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "up"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "down"} + } + }, + { + "from": [0, 0, -8], + "to": [2, 16, 8], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#bottom"}, + "east": {"uv": [16, 0, 0, 16], "texture": "#particle"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#bottom"}, + "west": {"uv": [16, 0, 0, 16], "texture": "#back"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "up"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "down"} + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_top.json b/common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_top.json new file mode 100644 index 0000000..a6e398c --- /dev/null +++ b/common/src/main/resources/assets/russianmetro/models/block/temp_doors/spb_horizontal_elevator_door_odd_top.json @@ -0,0 +1,34 @@ +{ + "parent": "block/block", + "textures": { + "bottom": "mtr:block/black", + "back": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_top_back", + "particle": "russianmetro:block/temp_doors/spb_horizontal_elevator_door_top" + }, + "elements": [ + { + "from": [0, 0, 8], + "to": [2, 16, 24], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#bottom"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#particle"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#bottom"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#back"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "up"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "down"} + } + }, + { + "from": [0, 0, -8], + "to": [2, 16, 8], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#bottom"}, + "east": {"uv": [16, 0, 0, 16], "texture": "#particle"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#bottom"}, + "west": {"uv": [16, 0, 0, 16], "texture": "#back"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "up"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#bottom", "cullface": "down"} + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/russianmetro/models/item/spb_horizontal_elevator_door_odd.json b/common/src/main/resources/assets/russianmetro/models/item/spb_horizontal_elevator_door_odd.json new file mode 100644 index 0000000..cd10170 --- /dev/null +++ b/common/src/main/resources/assets/russianmetro/models/item/spb_horizontal_elevator_door_odd.json @@ -0,0 +1,3 @@ +{ + "parent": "russianmetro:item/spb_horizontal_elevator_door" +} \ No newline at end of file