From dfaa80fc1627aaec183fe47d9fa918f211a19e71 Mon Sep 17 00:00:00 2001 From: Andrew-71 Date: Sun, 1 Oct 2023 00:39:45 +0300 Subject: [PATCH] Add (broken) blue boundary marker --- TODO.md | 1 - .../su/a71/new_soviet/NewSovietClient.java | 11 ++- .../tags/blocks/mineable/pickaxe.json | 5 +- .../blocks/BoundaryMarkerBlock.java | 81 ++++++++++++++++++ .../blocks/ConcreteWithBarsBlock.java | 13 +++ .../new_soviet/datagen/BlockTagGenerator.java | 5 +- .../new_soviet/registration/NSE_Blocks.java | 7 +- .../blockstates/blue_boundary_marker.json | 7 ++ .../assets/new_soviet/lang/en_us.json | 2 + .../block/boundary/blue_boundary_marker.json | 69 +++++++++++++++ .../models/item/blue_boundary_marker.json | 3 + .../block/boundary_marker/boundary_black.png | Bin 0 -> 363 bytes .../block/boundary_marker/boundary_blue.png | Bin 0 -> 240 bytes .../block/boundary_marker/boundary_brown.png | Bin 0 -> 381 bytes .../block/boundary_marker/boundary_cyan.png | Bin 0 -> 380 bytes .../block/boundary_marker/boundary_gray.png | Bin 0 -> 373 bytes .../block/boundary_marker/boundary_green.png | Bin 0 -> 391 bytes .../boundary_marker/boundary_light_blue.png | Bin 0 -> 375 bytes .../boundary_marker/boundary_light_gray.png | Bin 0 -> 353 bytes .../block/boundary_marker/boundary_lime.png | Bin 0 -> 371 bytes .../boundary_marker/boundary_magenta.png | Bin 0 -> 384 bytes .../block/boundary_marker/boundary_orange.png | Bin 0 -> 364 bytes .../boundary_marker/boundary_overlay.png | Bin 0 -> 261 bytes .../block/boundary_marker/boundary_pink.png | Bin 0 -> 393 bytes .../block/boundary_marker/boundary_purple.png | Bin 0 -> 385 bytes .../block/boundary_marker/boundary_red.png | Bin 0 -> 369 bytes .../block/boundary_marker/boundary_white.png | Bin 0 -> 337 bytes .../block/boundary_marker/boundary_yellow.png | Bin 0 -> 375 bytes 28 files changed, 199 insertions(+), 5 deletions(-) create mode 100644 src/main/java/su/a71/new_soviet/blocks/BoundaryMarkerBlock.java create mode 100644 src/main/resources/assets/new_soviet/blockstates/blue_boundary_marker.json create mode 100644 src/main/resources/assets/new_soviet/models/block/boundary/blue_boundary_marker.json create mode 100644 src/main/resources/assets/new_soviet/models/item/blue_boundary_marker.json create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_black.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_blue.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_brown.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_cyan.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_gray.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_green.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_light_blue.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_light_gray.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_lime.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_magenta.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_orange.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_overlay.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_pink.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_purple.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_red.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_white.png create mode 100644 src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_yellow.png diff --git a/TODO.md b/TODO.md index 32f0278..b2d0394 100644 --- a/TODO.md +++ b/TODO.md @@ -3,7 +3,6 @@ * Add windows * Add (with functionality) present appliance/furniture/electronics textures * Cigarette and handrail are BROKEN and the code is a MESS sorry, but it needs CLEANUP -* Fix concrete with bars hitbox * Fix post lamp hitboxes * Add credits in models diff --git a/src/client/java/su/a71/new_soviet/NewSovietClient.java b/src/client/java/su/a71/new_soviet/NewSovietClient.java index 272e0a2..7eac903 100644 --- a/src/client/java/su/a71/new_soviet/NewSovietClient.java +++ b/src/client/java/su/a71/new_soviet/NewSovietClient.java @@ -5,10 +5,17 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; +import net.minecraft.block.TallPlantBlock; +import net.minecraft.block.enums.DoubleBlockHalf; +import net.minecraft.client.color.world.BiomeColors; +import net.minecraft.client.color.world.GrassColors; import net.minecraft.client.render.RenderLayer; import su.a71.new_soviet.registration.NSE_Blocks; import su.a71.new_soviet.registration.NSE_Custom; +import net.minecraft.client.color.block.BlockColors; + @Environment(EnvType.CLIENT) public class NewSovietClient implements ClientModInitializer { @@ -38,6 +45,8 @@ public class NewSovietClient implements ClientModInitializer { BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.YELLOW_CONCRETE_WITH_BARS, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.BLUE_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - BlockEntityRendererRegistry.register(NSE_Custom.TV_BLOCK_ENTITY, TVBlockEntityRenderer::new); +// BlockEntityRendererRegistry.register(NSE_Custom.TV_BLOCK_ENTITY, TVBlockEntityRenderer::new); + + ColorProviderRegistry.BLOCK.register((state, view, pos, tintIndex) -> 0xeb4034, NSE_Blocks.BLUE_BOUNDARY_MARKER); } } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json index b56a300..fbe6fc6 100644 --- a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -269,6 +269,9 @@ "new_soviet:metal_plating_stairs", "new_soviet:metal_plating_slab", "new_soviet:vintage_lamp", - "new_soviet:light_bulb_lamp" + "new_soviet:light_bulb_lamp", + "new_soviet:blue_iron_bars", + "new_soviet:rusty_blue_iron_bars", + "new_soviet:vintage_iron_bars" ] } \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/blocks/BoundaryMarkerBlock.java b/src/main/java/su/a71/new_soviet/blocks/BoundaryMarkerBlock.java new file mode 100644 index 0000000..4463a2b --- /dev/null +++ b/src/main/java/su/a71/new_soviet/blocks/BoundaryMarkerBlock.java @@ -0,0 +1,81 @@ +package su.a71.new_soviet.blocks; + +import net.minecraft.block.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.DyeItem; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.IntProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; + +// TODO: BLOCKTAGS! LOOTABLES! +public class BoundaryMarkerBlock extends Block implements Waterloggable { + public static final BooleanProperty WATERLOGGED; + public static final IntProperty COLOUR; + public static final VoxelShape SHAPE; + + public BoundaryMarkerBlock(Settings settings) { + super(settings); + setDefaultState(getDefaultState() + .with(WATERLOGGED, false) + .with(COLOUR, 0)); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(WATERLOGGED, COLOUR); + } + + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return SHAPE; + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (player.getInventory().getMainHandStack().getItem() instanceof DyeItem) { + if (!world.isClient()) { + if (!player.isCreative()) { + player.getInventory().getMainHandStack().decrement(1); + } + world.playSound((PlayerEntity)null, pos, SoundEvents.ITEM_DYE_USE, SoundCategory.BLOCKS, 1.0F, 1.0F); +// world.setBlockState(pos, state.with(COLOUR, player.getInventory().getMainHandStack().getItem())) + } + return ActionResult.SUCCESS; + } + return super.onUse(state, world, pos, player, hand, hit); + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (state.get(WATERLOGGED)) { + world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos); + } + + public FluidState getFluidState(BlockState state) { + return state.get(WATERLOGGED) ? Fluids.WATER.getStill(false) : super.getFluidState(state); + } + + static { + WATERLOGGED = Properties.WATERLOGGED; + SHAPE = Block.createCuboidShape(5, 0, 5, 11, 16, 11); + COLOUR = IntProperty.of("border_colour", 0, 16); // 0 - undyed, 1-16 = dyes + } +} diff --git a/src/main/java/su/a71/new_soviet/blocks/ConcreteWithBarsBlock.java b/src/main/java/su/a71/new_soviet/blocks/ConcreteWithBarsBlock.java index 858330a..f9c7a98 100644 --- a/src/main/java/su/a71/new_soviet/blocks/ConcreteWithBarsBlock.java +++ b/src/main/java/su/a71/new_soviet/blocks/ConcreteWithBarsBlock.java @@ -12,6 +12,8 @@ import net.minecraft.state.property.DirectionProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; @@ -20,6 +22,8 @@ import org.jetbrains.annotations.Nullable; public class ConcreteWithBarsBlock extends HorizontalFacingBlock implements Waterloggable { public static final DirectionProperty VERTICAL_DIRECTION; public static final BooleanProperty WATERLOGGED; + public static final VoxelShape SHAPE_UP; + public static final VoxelShape SHAPE_DOWN; public ConcreteWithBarsBlock(Settings settings) { super(settings); @@ -52,6 +56,13 @@ public class ConcreteWithBarsBlock extends HorizontalFacingBlock implements Wate } } + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + if (state.get(VERTICAL_DIRECTION) == Direction.DOWN) { + return SHAPE_UP; + } + return SHAPE_DOWN; + } + @Override public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { if (state.get(WATERLOGGED)) { @@ -67,5 +78,7 @@ public class ConcreteWithBarsBlock extends HorizontalFacingBlock implements Wate static { VERTICAL_DIRECTION = Properties.VERTICAL_DIRECTION; WATERLOGGED = Properties.WATERLOGGED; + SHAPE_DOWN = Block.createCuboidShape(0, 0, 0, 16, 8, 16); + SHAPE_UP = Block.createCuboidShape(0, 8, 0, 16, 16, 16); } } diff --git a/src/main/java/su/a71/new_soviet/datagen/BlockTagGenerator.java b/src/main/java/su/a71/new_soviet/datagen/BlockTagGenerator.java index 6031f15..8fe9fa7 100644 --- a/src/main/java/su/a71/new_soviet/datagen/BlockTagGenerator.java +++ b/src/main/java/su/a71/new_soviet/datagen/BlockTagGenerator.java @@ -289,7 +289,10 @@ public class BlockTagGenerator extends FabricTagProvider.BlockTagProvider { .add(NSE_Blocks.METAL_PLATING_STAIRS) .add(NSE_Blocks.METAL_PLATING_SLAB) .add(NSE_Custom.VINTAGE_LAMP) - .add(NSE_Custom.LIGHT_BULB_LAMP); + .add(NSE_Custom.LIGHT_BULB_LAMP) + .add(NSE_Blocks.BLUE_IRON_BARS) + .add(NSE_Blocks.RUSTY_BLUE_IRON_BARS) + .add(NSE_Blocks.VINTAGE_IRON_BARS); // Blocks mined with an axe getOrCreateTagBuilder(BlockTags.AXE_MINEABLE) diff --git a/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java b/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java index 66b156f..3e39213 100644 --- a/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java +++ b/src/main/java/su/a71/new_soviet/registration/NSE_Blocks.java @@ -12,6 +12,7 @@ import net.minecraft.sound.BlockSoundGroup; import net.minecraft.text.Text; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; +import su.a71.new_soviet.blocks.BoundaryMarkerBlock; import su.a71.new_soviet.blocks.ConcreteWithBarsBlock; import su.a71.new_soviet.blocks.HandrailBlock; @@ -403,6 +404,8 @@ public class NSE_Blocks extends NSE_BaseRegistration { public static final StairsBlock NII_FLOOR_STAIRS = new StairsBlock(NII_FLOOR.getDefaultState(), FabricBlockSettings.copy(NII_FLOOR)); public static final SlabBlock NII_FLOOR_SLAB = new SlabBlock(FabricBlockSettings.copy(NII_FLOOR)); + public static final Block BLUE_BOUNDARY_MARKER = new BoundaryMarkerBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.STONE).hardness(1.5f).resistance(4f).requiresTool().mapColor(MapColor.TERRACOTTA_BLUE)); + // Industrial ========== public static final Block INDUSTRIAL_WARNING = new Block(FabricBlockSettings.create().sounds(BlockSoundGroup.METAL).hardness(4f).resistance(6f).requiresTool().mapColor(MapColor.BLACK)); public static final Block RED_WARNING = new Block(FabricBlockSettings.copy(INDUSTRIAL_WARNING).mapColor(MapColor.RED)); @@ -423,7 +426,7 @@ public class NSE_Blocks extends NSE_BaseRegistration { public static final BarrelBlock CRATE = new BarrelBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.CHISELED_BOOKSHELF).nonOpaque().mapColor(MapColor.OAK_TAN).hardness(1.8f)); public static final WallBlock CONCRETE_WALL = new WallBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.STONE).mapColor(MapColor.STONE_GRAY)); - public static final HandrailBlock HANDRAIL = new HandrailBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.COPPER).hardness(4f).nonOpaque()); + public static final HandrailBlock HANDRAIL = new HandrailBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.COPPER).requiresTool().hardness(4f).nonOpaque()); public static final PaneBlock BLUE_IRON_BARS = new PaneBlock(FabricBlockSettings.copy(Blocks.IRON_BARS)); public static final PaneBlock RUSTY_BLUE_IRON_BARS = new PaneBlock(FabricBlockSettings.copy(BLUE_IRON_BARS)); public static final PaneBlock VINTAGE_IRON_BARS = new PaneBlock(FabricBlockSettings.copy(Blocks.IRON_BARS)); @@ -831,6 +834,8 @@ public class NSE_Blocks extends NSE_BaseRegistration { registerBlock("chiseled_spruce_door", () -> CHISELED_SPRUCE_DOOR, NSE_BUILDING_TAB); registerBlock("chiseled_birch_door", () -> CHISELED_BIRCH_DOOR, NSE_BUILDING_TAB); + registerBlock("blue_boundary_marker", () -> BLUE_BOUNDARY_MARKER, NSE_BUILDING_TAB); + registerBlock("industrial_warning", () -> INDUSTRIAL_WARNING, NSE_BUILDING_TAB); registerBlock("gray_warning", () -> GRAY_WARNING, NSE_BUILDING_TAB); registerBlock("red_warning", () -> RED_WARNING, NSE_BUILDING_TAB); diff --git a/src/main/resources/assets/new_soviet/blockstates/blue_boundary_marker.json b/src/main/resources/assets/new_soviet/blockstates/blue_boundary_marker.json new file mode 100644 index 0000000..b83b484 --- /dev/null +++ b/src/main/resources/assets/new_soviet/blockstates/blue_boundary_marker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "new_soviet:block/boundary/blue_boundary_marker" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/new_soviet/lang/en_us.json b/src/main/resources/assets/new_soviet/lang/en_us.json index 853411d..40977c9 100644 --- a/src/main/resources/assets/new_soviet/lang/en_us.json +++ b/src/main/resources/assets/new_soviet/lang/en_us.json @@ -450,6 +450,8 @@ "block.new_soviet.blue_iron_bars": "Blue Iron Bars", "block.new_soviet.rusty_blue_iron_bars": "Rusty Blue Iron Bars", "block.new_soviet.vintage_iron_bars": "Vintage Iron Bars", + "block.new_soviet.blue_boundary_marker": "Blue Boundary Marker", + "advancement.new_soviet.root.name": "A New Era", "advancement.new_soviet.root.desc": "Time to create something great" diff --git a/src/main/resources/assets/new_soviet/models/block/boundary/blue_boundary_marker.json b/src/main/resources/assets/new_soviet/models/block/boundary/blue_boundary_marker.json new file mode 100644 index 0000000..b30530d --- /dev/null +++ b/src/main/resources/assets/new_soviet/models/block/boundary/blue_boundary_marker.json @@ -0,0 +1,69 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "new_soviet:block/boundary_marker/boundary_blue", + "1": "new_soviet:block/boundary_marker/boundary_overlay", + "particle": "new_soviet:block/boundary_marker/boundary_blue" + }, + "elements": [ + { + "name": "overlay_cube", + "from": [5, 0, 5], + "to": [11, 16, 11], + "faces": { + "north": {"uv": [0, 0, 6, 16], "texture": "#1", "tintindex": 0}, + "east": {"uv": [0, 0, 6, 16], "texture": "#1", "tintindex": 0}, + "south": {"uv": [0, 0, 6, 16], "texture": "#1", "tintindex": 0}, + "west": {"uv": [0, 0, 6, 16], "texture": "#1", "tintindex": 0}, + "up": {"uv": [6, 0, 12, 6], "texture": "#1", "tintindex": 0}, + "down": {"uv": [6, 6, 12, 12], "texture": "#1", "tintindex": 0} + } + }, + { + "from": [5, 0, 5], + "to": [11, 16, 11], + "faces": { + "north": {"uv": [0, 0, 6, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 6, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 16], "texture": "#0"}, + "west": {"uv": [0, 0, 6, 16], "texture": "#0"}, + "up": {"uv": [6, 0, 12, 6], "texture": "#0"}, + "down": {"uv": [6, 6, 12, 12], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 3, 1], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "translation": [0, 3, 1], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [0, -90, 25], + "translation": [1.13, 3.2, 1.13], + "scale": [0.68, 0.68, 0.68] + }, + "firstperson_lefthand": { + "rotation": [0, -90, 25], + "translation": [1.13, 3.2, 1.13], + "scale": [0.68, 0.68, 0.68] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.8, 0.8, 0.8] + }, + "head": { + "translation": [0, 6.5, 0] + }, + "fixed": { + "rotation": [0, 180, 0] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/new_soviet/models/item/blue_boundary_marker.json b/src/main/resources/assets/new_soviet/models/item/blue_boundary_marker.json new file mode 100644 index 0000000..9b78754 --- /dev/null +++ b/src/main/resources/assets/new_soviet/models/item/blue_boundary_marker.json @@ -0,0 +1,3 @@ +{ + "parent": "new_soviet:block/boundary/blue_boundary_marker" +} \ No newline at end of file diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_black.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_black.png new file mode 100644 index 0000000000000000000000000000000000000000..32fdd652164644b1cac8b2bc4b2e29eda1aa3ca4 GIT binary patch literal 363 zcmV-x0hIoUP)Px$B}qg)F8%is5qd2M4q#7Z_Sb@?C0Nr$Jt?SXB=HPvOzD;^H ztC4NnaR~m(!tq#@Ii_b5&yk2whOP7i0vR|N)Vd~=p>z0b&B;Ijt$k4XL7&A`UF+Hn zag(hlGkAP@K{pENcghUWYzDSRySIcs1AssVeFhg>7|z@TIK*6Ee7wK5t2i0Wd-&$( z;1&CvVxN=T7Odg~fNl1D$=yx?=P{Zb0Dh| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_blue.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..3c404780532d157577636343228b4f731e6932e2 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|R(ZNOhFJ7o zow%3xkbyw!e1E+;&s3_)9Q16tg)5ZQ62wkvSQ{`DHFKu~$9Ck(xS9yYKfXNq{d?IB z=BKRYe|>1d{Zev5(t(QID|A`6s4zNoJ^d}O@w!Is@PbCh8XFJ81|ISG!8|jLWk2j) z_kEg*5s%TG7iU@aUR?9Ja;8S>tJfFWOv5ieVq~~*U^DxrztJ%wD_jjXEL;A*-|A-Z ow8@<7kMG@C&aZoL{qMbux9>#itUYmN7tqxVp00i_>zopr0MBP&fB*mh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_brown.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..c7876ec91a7e5f7431498277c19cd5ba8b491d40 GIT binary patch literal 381 zcmV-@0fPRCP)Px$H%UZ6R5*>5QZY-zKp1@oNg7B8r`SM{n!)~n;^IHB|3&a0i2p!vbaAYMlc=)} zU96jfcDR-jh-4FbkTgRa!gt)|a#-K;eR<^Gz4v{`-e%8r7$rCu9svN>s|E6m0|2`C z#NSJRLQm)M-%wYQY~YiaS*2p+eFx8JgNiVL*I9`8Hln%&~vq)MOoqH zgX=S(yp%uiy{7hD1iokRh6CF>xHvo44wBH*`Px$Hc3Q5R5*=|l0QqsP!z>~P2$wPjv>J!n!#`2;^tOIcLhhkfQz4`j`{_Plj0%> z)}hW09gZV}3E$g4 z>`*AHcv;M6y0=|V69L4LkL`L?%NmZxY-~Cj$d-~+CVX98>cOg-nu2U80Z3(%lgRJd z!?v>S&W;+rs#D1>+9?ryL}AHe9Qi1$D!YlqI=z`KP)Px$FG)l}R5*>5Qn5e8^mw0w7DO!vaq)} zP)`KWCPnTz0+IA*u~Wn%PT0+6QD3u@N9OH&Gpn8#_f4E+*gqHp05RUl3>^r0rxS+ldd*AdJHYz*F)kArTMQoaLb(>9x*li9l| zglK+!HJDXSv2Dk31U{?M$yiqfgtLW1B5E?7HKa9&v@-){1`#Px$K}keGR5*>5lCe(1Fcd|P-AJ@qk)lMZ5OhGOI}1AlL%xQIFJR&e_y!g_Ft9On zffa;0q*WCuRR+d3LW#}LI8lu(Y!&PAX+8*uRZ>Tc>kb_>Gf%$#E zZYVGr0H~c*vj?_kyYDENJlyLr8aC#=zw=%2(s@EUPZ*x0gwYUyx9Q6t695rho@p~O lgX-(MG4DPx$F-b&0R5*=|l08ntKoo?(#1>VywPIu;un;GJhKiCLfD2IN7>EN*tYvP0qQ%0Fwx)9l-)eWRIq+xeKh>>StUhX9!RSJ#6M z1=z*Qaxv4jUe&2&7wwb?)^Swwn8YEfSCwrdu^-;oSYnGMdcaC&kjZblA}BpJS+lc>e@h4e zx}t|AM6F*V7~S6(GZ>BoQYrPIB5KT_=&{&41f2m)u|!X2pk$kBV+IO&fc3DN`u5}C zoWAST_Fet+jTWMLNHh=e&LaA*2S6}+Z8Mt_jJ~pbWxreaoC5IoleH&MMbnxN;U7>R Vw$c9GkLdsa002ovPDHLkV1fpYqCx-w literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_light_gray.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..41e185664a011d928c3ad9573561efec56105367 GIT binary patch literal 353 zcmV-n0iOPeP)Px$8%ab#R5*>5lCMw0Kpe$COHMSW5KFU58Uhvk2Qx? zQNs_3nCQyVq@~Zw$(G--N;y6`17KUMsjD1-5I;V@ z9N<8>mu<1ObF5M;1W;Ewu}bkFCbI>@;gKb@ZqT}6I-T1^-%ZDX)(xSv55)c5bug<2TN&#r$8f&wkcfDC&X6)f%Ba}??l0I5j7^i@z58=Zz$aaSKD@ZOx?rS|&U^cR{$PZ1lT&VTlGBorN&tAx zR(*DV1y*kbQbv4y?tymzcDsFl0WPx$ElET{R5*=|QZY*dF&KS!9As#5JT7pE-rzrQadQ;>5&Z|<#ogIWutRZoa&RmN zc2Q@gLt0AU$_*VP4gpCW&ZJ2$q5YP8dE|S%_r4@=)8|c2D;yr3005SY8Jd~_07Cfb z*+l}YGW)Vz%uJut$`AoSQ#0hWf?wHiGQdHx<&i=`3We9Jl^OKabQDOT;G93I^DtJ~ z?fE$9Ri9e6ZO0*4)!gye)C?N)Wrs+zo3CpSo`UpK;B%XS{7@jh)Oj4TmT6G?C;fJa z^jcCM?-1NwJ_IuuP6m)dnL$ky&A|3(W4p>^pk?X|?7QDP1b#45s9;zzJb8M&-xRd$ z?A!nIQ44&|z~>C*F-Jj50Koh7WuMuWV6+~!E8{8fpWXNRcYgxi#MZQ{{s19cvw{L1 R4OsvH002ovPDHLkV1gPjqmcjr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_magenta.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab88bc44ad8ca4170d5a8556b95ff58efe2c392 GIT binary patch literal 384 zcmV-`0e}99P)Px$I!Q!9R5*=|lCev}Kp4e;g^&#Cbqoy#(G1QGy67zE=6~Yg)<3{WC;tyuhYo_! zBHF=05DKQH1R|ky=+z-vbclDP$%XbU-*=Du9^ZR+t+(OhujhyC?i~Oyn~q772mlj* zd~(sE1gm_QO~<0AwbM zn*Y=;Ho-c*IWu}yRjpmNvnKGJ#A_bYBtmi3wM`<{*Zn7{6VtKVO!?3myyqi??XF!m zS+f+W{0m1E)pik%sPQ#{^V>^f27_K7nMpmUgc>s_dn|LCpfi9MI(A!Upw>3^#tal> zCXHb=@z&w>5nVs1y?6D`H(H1%5%DA<*pKP@0RW@n^ER`E!2Dr>uw7CoCZz~(E*IMi esHW+eHsKHVzqg%ABRnDi0000Px$CP_p=R5*=|lQB!fKpe$?g=}dYV}n67ptFmM;0N$aI0-K9PM!P;UHkx!&JJ!0 zUFy)qB|=(CAT@4j(vEhxUUIoyXx?)Fd+>j}_b%y8#&7?w7jS%X4!~j_k|q%VCjRp3 zriTJcy)5QoIlEp^3IU`^gzE+9u%@FSM~CpeBUS}uIo!QW%0=Bx!@;T$mn^SDy2846 zcrs>{r?jocsR=BTxRx1arnSBp}pwF5Py%I!nhLA0|iJCL?bb4@@mCdAMcJemn11e`DJ-?ZXzUX`9RsR{SIY0000< KMNUMnLSTX);-b<3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_overlay.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..eb39debe25e2ea1cff25c178db27a17d31a36f77 GIT binary patch literal 261 zcmV+g0s8)lP)Px#zez+vR5*>zlD!SWFc5{`q0A7)QiLD{8_=);Gcp4eMS2Q1VS%KulgN@$mN*)0 zoIjK%g0HdtH|HWf1GSY+7l4gi3*uFzQp0GQH`r!yfS3J+~v`F$)hZv+6HRft7~ zAv99nFf&i3A);Q*X3k(K(cBE&>SBlO^bDTX_zSLYr-jDfOnyuub8d9Wjz*VU$efqf z`xyYA9z*T_q1*MsiAYE9J^b@?L`EwZt&r{w5|IJ`9`e3Y-ZgjudyjCCX>>f%00000 LNkvXXu0mjfj#+3i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_pink.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..21ddb8021575407b4c28b376466ba11bffbe6c1a GIT binary patch literal 393 zcmV;40e1e0P)Px$LrFwIR5*=|lD|sBP!z_0#S4X`4P+@^8bmudIP0Rj=sURk1U^hRpTR|3g?3SJ z6Ko;Ea%+AIUnEmom+Y9KL0jki=*RH0LH@})6fUN)W5jA zt&jeHyaGZiq#@gJ|}d^8!G;T%jVx`QuHxxXY%%AYQHjP?6f^ zxG-22!o9yTYSmfO&dSLFOu`_iaT@yQ-Y#tuh^Rh|NSqmVy~dnA$#O+CQv5`pEF7D! z%&OofHBn+q;#|;45gKs{t>owx7 z2b#7r)J6|pZb~gaBv)-I+ nG$UaKfDG3A1L&gcO#j6nf`7K9#kZ|?00000NkvXXu0mjf%%iW# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_purple.png b/src/main/resources/assets/new_soviet/textures/block/boundary_marker/boundary_purple.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0aeca2c2a849381f1861eff9c8ae7dc9d81f41 GIT binary patch literal 385 zcmV-{0e=38P)Px$J4r-AR5*=|lD|sBP#DF3g+Ojn5L`k7LA0Q6AcC8l;v+apU&9CJ;^^QgeFhg@ z911}f(W%01DUnE*;LtP~iVopk^5=&3Ecd&I?>l_w+}n8_KmK`spS}Gf0Oqp^i&z3+ z;*U=+I+S3QFZ0<%*Ph?kLI8_c;`x2*uttNB-5m)$0g&ZOR(ZPx$D@jB_R5*>5Q=v`-F%+C;o1khpSF$0n0*%4&2WT8WfWaX70Z0%y)Op+`BnVIl z#2Fy?6TQo2b0ur5NOn`i-rH?=TMowbb<$4W%xl@(^vR|&$Ik9P0ARV8q0|Zh5aJJy zju{+qce7l~+B%haD+BNAQC?VQ!|LfdWS>ScthIOzgW*jBo>0B z$J?R6*~3*ZgZq<9n5q*bp=buKN0-}#HiM?^E(2;iRC@xH0f7Q+5aTPx$3rR#lR5*>5lRa+3FbsvC4WB^}0V0SsWb9C&ONZ_mI`s@aV|Nc;8f3_r!3hEZ zGJJ_G21>3IkWFXU|c}jy46mW&}2vm)8%?AP;Ozu^gg=WzX9aPx$F-b&0R5*=|lCes|P#A^3k~_HNPN9Jyv4amFxabq;?(7@rP+voIbnOec3XVd% zSaj-AFs&sLi3Dy&Aw`GghMVMu_AK|mhx;G?bN<_Vojm<{{($}P5P;QkPMSmj*!bg< zvmOS7d08#zRqgqMN(dlLB0PUU6Jk6X5{7%cmxNLUN)=o`%&NxbG_47gDlpGHU$-81 zL7ZORTD|I1k8Rqi34AAU&10HGXs$W7O+pHc^HfutY+P{>W z#kj76l%mDA1kSJStr?6*LzF72MlIBtf$7oYwxP;kR*tDNz_>SSYX%xh71pr2cyV-b zL*EZt`)>aEP7CoOB3?uU2Qhs=0AM