From bf69c0b7b26575aa0a6a4fe045b4a2b55fbba749 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 9 Jul 2023 20:53:55 -0400 Subject: [PATCH 01/71] update to 1.20.1 and also stop Statement API from logging non-errors also fix UV's for vertical north/south top slabs --- gradle.properties | 8 +++--- .../andrew6rant/autoslabs/AutoSlabs.java | 13 ++++++++- .../autoslabs/AutoSlabsDataGenerator.java | 11 -------- .../andrew6rant/autoslabs/RenderUtil.java | 6 ----- .../autoslabs/SlabModelGenerator.java | 27 ------------------- .../autoslabs/mixin/StateMixin.java | 26 ++++++++++++++++++ ...lab_vertical_north_south_top_template.json | 2 +- src/main/resources/autoslabs.mixins.json | 3 ++- src/main/resources/fabric.mod.json | 2 +- 9 files changed, 46 insertions(+), 52 deletions(-) delete mode 100644 src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsDataGenerator.java delete mode 100644 src/main/java/io/github/andrew6rant/autoslabs/SlabModelGenerator.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java diff --git a/gradle.properties b/gradle.properties index 3a82e22..24aa090 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.19.3 -yarn_mappings=1.19.3+build.5 -loader_version=0.14.12 +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.9 +loader_version=0.14.21 # Mod Properties mod_version=1.0.0 @@ -14,6 +14,6 @@ maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs # Dependencies -fabric_version=0.72.0+1.19.3 +fabric_version=0.85.0+1.20.1 statement_version=4.2.5 arrp_version=0.6.7 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 19da54d..fe97a77 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -17,8 +17,16 @@ public class AutoSlabs implements ModInitializer { public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources"); + @Override public void onInitialize() { + + //Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); + + + //Logger.getLogger(StatementApi.MOD_ID).setLevel(Level.OFF); + //LoggerContext. + for (Block block : Registries.BLOCK) { if (block instanceof SlabBlock) { StateRefresher.INSTANCE.addBlockProperty(block, EnumProperty.of("vertical_type", VerticalType.class), VerticalType.FALSE); @@ -34,11 +42,12 @@ public void onInitialize() { .element(JModel.element().from(0, 0, 0).to(16, 16, 8) .faces(JModel.faces() .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) - .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 8, 16)) + .east(JModel.face("side").cullface(Direction.EAST).uv(8, 0, 16, 16)) .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 8, 16)) .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 16, 8)) .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); + JModel verticalSlabNorthSouthBottomModel = JModel.model().parent(namespace+":block/"+path) .element(JModel.element().from(0, 0, 8).to(16, 16, 16) .faces(JModel.faces() @@ -48,6 +57,7 @@ public void onInitialize() { .west(JModel.face("side").cullface(Direction.WEST).uv(8, 0, 16, 16)) .up(JModel.face("top").cullface(Direction.UP).uv(0, 8, 16, 16)) .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); + JModel verticalSlabEastWestTopModel = JModel.model().parent(namespace+":block/"+path) .element(JModel.element().from(8, 0, 0).to(16, 16, 16) .faces(JModel.faces() @@ -57,6 +67,7 @@ public void onInitialize() { .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) .up(JModel.face("top").cullface(Direction.UP).uv(8, 0, 16, 16)) .down(JModel.face("bottom").cullface(Direction.DOWN).uv(8, 0, 16, 16)))); + JModel verticalSlabEastWestBottomModel = JModel.model().parent(namespace+":block/"+path) .element(JModel.element().from(0, 0, 0).to(8, 16, 16) .faces(JModel.faces() diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsDataGenerator.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsDataGenerator.java deleted file mode 100644 index cdad580..0000000 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsDataGenerator.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.github.andrew6rant.autoslabs; - -import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; -import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; - -public class AutoSlabsDataGenerator implements DataGeneratorEntrypoint { - @Override - public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { - - } -} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 526e2ba..9923023 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -44,12 +44,7 @@ public static void renderOverlay(MatrixStack matrices, Camera camera) { RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); // default Minecraft line width RenderSystem.lineWidth(Math.max(2.5f, (float)MinecraftClient.getInstance().getWindow().getFramebufferWidth() / 1920.0f * 2.5f)); - //RenderSystem.disableDepthTest(); RenderSystem.disableCull(); - //RenderSystem.enableBlend(); - //RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ZERO); - //RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - matrices.push(); BlockState state = MinecraftClient.getInstance().world.getBlockState(result.getBlockPos()); @@ -59,7 +54,6 @@ public static void renderOverlay(MatrixStack matrices, Camera camera) { renderOverlayToDirection(null, result.getSide(), matrices, camDif, part); } - matrices.pop(); RenderSystem.enableDepthTest(); RenderSystem.enableCull(); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/SlabModelGenerator.java b/src/main/java/io/github/andrew6rant/autoslabs/SlabModelGenerator.java deleted file mode 100644 index 8767146..0000000 --- a/src/main/java/io/github/andrew6rant/autoslabs/SlabModelGenerator.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.github.andrew6rant.autoslabs; - -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; -import net.minecraft.block.Blocks; -import net.minecraft.data.client.*; -import net.minecraft.state.property.EnumProperty; -import net.minecraft.state.property.Properties; -import net.minecraft.util.math.Direction; - -public class SlabModelGenerator extends FabricModelProvider { - public SlabModelGenerator(FabricDataOutput output) { - super(output); - } - - @Override - public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { - //blockStateModelGenerator.blockStateCollector.accept(MultipartBlockStateSupplier.create(Blocks.OAK_SLAB) - // .with(When.create().set(EnumProperty.of("vertical_type", VerticalType.class), VerticalType.NORTH_SOUTH), - // BlockStateVariant.create().put(VariantSettings.Y, VariantSettings.Rotation.R90))); - } - - @Override - public void generateItemModels(ItemModelGenerator itemModelGenerator) { - - } -} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java new file mode 100644 index 0000000..99626af --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java @@ -0,0 +1,26 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import net.minecraft.state.State; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.spongepowered.asm.mixin.Mixin; +import virtuoel.statement.Statement; +import virtuoel.statement.api.StatementApi; + +@Mixin(State.class) +public class StateMixin { + + static { + // Immense amount of trolling + Statement.LOGGER.warn("Logging disabled by AutoSlabs!"); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(StatementApi.MOD_ID); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); + } + +} diff --git a/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json b/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json index 25c4ff1..fff69d6 100644 --- a/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json +++ b/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json @@ -10,7 +10,7 @@ "to": [16, 16, 8], "faces": { "north": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "north"}, - "east": {"uv": [0, 0, 8, 16], "texture": "#side_vertical", "cullface": "east"}, + "east": {"uv": [8, 0, 16, 16], "texture": "#side_vertical", "cullface": "east"}, "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south"}, "west": {"uv": [0, 0, 8, 16], "texture": "#side_vertical", "cullface": "west"}, "up": {"uv": [0, 0, 16, 8], "texture": "#top", "cullface": "up"}, diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index 27bb828..fa2c0f1 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -4,7 +4,8 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "FileResourcePackProviderMixin", - "SlabBlockMixin" + "SlabBlockMixin", + "StateMixin" ], "client": [ "WorldRendererMixin" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index cf7d372..8dec69a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,7 +27,7 @@ ], "depends": { "fabricloader": ">=0.14.12", - "minecraft": "~1.19.3", + "minecraft": ">=1.20", "java": ">=17", "fabric-api": "*", "statement": ">=4.2.5" From ff194cd6354766970e2c4a025450b91f0729dff3 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 9 Jul 2023 23:26:21 -0400 Subject: [PATCH 02/71] create resource pack for nicer slab textures --- .../blockstates/cut_red_sandstone_slab.json | 13 +++++++++++++ .../minecraft/blockstates/cut_sandstone_slab.json | 13 +++++++++++++ .../blockstates/polished_andesite_slab.json | 13 +++++++++++++ .../blockstates/polished_blackstone_slab.json | 13 +++++++++++++ .../blockstates/polished_deepslate_slab.json | 13 +++++++++++++ .../blockstates/polished_diorite_slab.json | 13 +++++++++++++ .../blockstates/polished_granite_slab.json | 13 +++++++++++++ .../blockstates/prismarine_bricks_slab.json | 13 +++++++++++++ .../assets/minecraft/blockstates/quartz_slab.json | 13 +++++++++++++ .../minecraft/blockstates/red_sandstone_slab.json | 13 +++++++++++++ .../minecraft/blockstates/sandstone_slab.json | 13 +++++++++++++ .../minecraft/blockstates/smooth_stone_slab.json | 13 +++++++++++++ .../models/block/cut_red_sandstone_slab.json | 8 ++++++++ .../block/cut_red_sandstone_slab_double.json | 8 ++++++++ .../models/block/cut_red_sandstone_slab_top.json | 8 ++++++++ ..._sandstone_slab_vertical_east_west_bottom.json | 9 +++++++++ ..._sandstone_slab_vertical_east_west_double.json | 9 +++++++++ ...red_sandstone_slab_vertical_east_west_top.json | 9 +++++++++ ...andstone_slab_vertical_north_south_bottom.json | 9 +++++++++ ...andstone_slab_vertical_north_south_double.json | 9 +++++++++ ...d_sandstone_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/cut_sandstone_slab.json | 8 ++++++++ .../models/block/cut_sandstone_slab_double.json | 8 ++++++++ .../models/block/cut_sandstone_slab_top.json | 8 ++++++++ ..._sandstone_slab_vertical_east_west_bottom.json | 9 +++++++++ ..._sandstone_slab_vertical_east_west_double.json | 9 +++++++++ ...cut_sandstone_slab_vertical_east_west_top.json | 9 +++++++++ ...andstone_slab_vertical_north_south_bottom.json | 9 +++++++++ ...andstone_slab_vertical_north_south_double.json | 9 +++++++++ ...t_sandstone_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/polished_andesite_slab.json | 8 ++++++++ .../block/polished_andesite_slab_double.json | 8 ++++++++ .../models/block/polished_andesite_slab_top.json | 8 ++++++++ ...d_andesite_slab_vertical_east_west_bottom.json | 9 +++++++++ ...d_andesite_slab_vertical_east_west_double.json | 9 +++++++++ ...shed_andesite_slab_vertical_east_west_top.json | 9 +++++++++ ...andesite_slab_vertical_north_south_bottom.json | 9 +++++++++ ...andesite_slab_vertical_north_south_double.json | 9 +++++++++ ...ed_andesite_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/polished_blackstone_slab.json | 8 ++++++++ .../block/polished_blackstone_slab_double.json | 8 ++++++++ .../block/polished_blackstone_slab_top.json | 8 ++++++++ ...blackstone_slab_vertical_east_west_bottom.json | 9 +++++++++ ...blackstone_slab_vertical_east_west_double.json | 9 +++++++++ ...ed_blackstone_slab_vertical_east_west_top.json | 9 +++++++++ ...ackstone_slab_vertical_north_south_bottom.json | 9 +++++++++ ...ackstone_slab_vertical_north_south_double.json | 9 +++++++++ ..._blackstone_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/polished_deepslate_slab.json | 8 ++++++++ .../block/polished_deepslate_slab_double.json | 8 ++++++++ .../models/block/polished_deepslate_slab_top.json | 8 ++++++++ ..._deepslate_slab_vertical_east_west_bottom.json | 9 +++++++++ ..._deepslate_slab_vertical_east_west_double.json | 9 +++++++++ ...hed_deepslate_slab_vertical_east_west_top.json | 9 +++++++++ ...eepslate_slab_vertical_north_south_bottom.json | 9 +++++++++ ...eepslate_slab_vertical_north_south_double.json | 9 +++++++++ ...d_deepslate_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/polished_diorite_slab.json | 8 ++++++++ .../block/polished_diorite_slab_double.json | 8 ++++++++ .../models/block/polished_diorite_slab_top.json | 8 ++++++++ ...ed_diorite_slab_vertical_east_west_bottom.json | 9 +++++++++ ...ed_diorite_slab_vertical_east_west_double.json | 9 +++++++++ ...ished_diorite_slab_vertical_east_west_top.json | 9 +++++++++ ..._diorite_slab_vertical_north_south_bottom.json | 9 +++++++++ ..._diorite_slab_vertical_north_south_double.json | 9 +++++++++ ...hed_diorite_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/polished_granite_slab.json | 8 ++++++++ .../block/polished_granite_slab_double.json | 8 ++++++++ .../models/block/polished_granite_slab_top.json | 8 ++++++++ ...ed_granite_slab_vertical_east_west_bottom.json | 9 +++++++++ ...ed_granite_slab_vertical_east_west_double.json | 9 +++++++++ ...ished_granite_slab_vertical_east_west_top.json | 9 +++++++++ ..._granite_slab_vertical_north_south_bottom.json | 9 +++++++++ ..._granite_slab_vertical_north_south_double.json | 9 +++++++++ ...hed_granite_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/prismarine_bricks_slab.json | 8 ++++++++ .../block/prismarine_bricks_slab_double.json | 8 ++++++++ .../models/block/prismarine_bricks_slab_top.json | 8 ++++++++ ...ine_bricks_slab_vertical_east_west_bottom.json | 9 +++++++++ ...ine_bricks_slab_vertical_east_west_double.json | 9 +++++++++ ...marine_bricks_slab_vertical_east_west_top.json | 9 +++++++++ ...e_bricks_slab_vertical_north_south_bottom.json | 9 +++++++++ ...e_bricks_slab_vertical_north_south_double.json | 9 +++++++++ ...rine_bricks_slab_vertical_north_south_top.json | 9 +++++++++ .../models/block/quartz_block_slab_double.json | 8 ++++++++ .../models/block/quartz_block_slab_top.json | 8 ++++++++ ...artz_block_slab_vertical_east_west_bottom.json | 9 +++++++++ ...artz_block_slab_vertical_east_west_double.json | 9 +++++++++ .../quartz_block_slab_vertical_east_west_top.json | 9 +++++++++ ...tz_block_slab_vertical_north_south_bottom.json | 9 +++++++++ ...tz_block_slab_vertical_north_south_double.json | 9 +++++++++ ...uartz_block_slab_vertical_north_south_top.json | 9 +++++++++ .../minecraft/models/block/quartz_slab.json | 8 ++++++++ .../models/block/red_sandstone_slab.json | 8 ++++++++ .../models/block/red_sandstone_slab_double.json | 8 ++++++++ .../models/block/red_sandstone_slab_top.json | 8 ++++++++ ..._sandstone_slab_vertical_east_west_bottom.json | 9 +++++++++ ..._sandstone_slab_vertical_east_west_double.json | 9 +++++++++ ...red_sandstone_slab_vertical_east_west_top.json | 9 +++++++++ ...andstone_slab_vertical_north_south_bottom.json | 9 +++++++++ ...andstone_slab_vertical_north_south_double.json | 9 +++++++++ ...d_sandstone_slab_vertical_north_south_top.json | 9 +++++++++ .../minecraft/models/block/sandstone_slab.json | 8 ++++++++ .../models/block/sandstone_slab_double.json | 8 ++++++++ .../models/block/sandstone_slab_top.json | 8 ++++++++ .../sandstone_slab_vertical_east_west_bottom.json | 9 +++++++++ .../sandstone_slab_vertical_east_west_double.json | 9 +++++++++ .../sandstone_slab_vertical_east_west_top.json | 9 +++++++++ ...andstone_slab_vertical_north_south_bottom.json | 9 +++++++++ ...andstone_slab_vertical_north_south_double.json | 9 +++++++++ .../sandstone_slab_vertical_north_south_top.json | 9 +++++++++ .../minecraft/models/block/smooth_stone_slab.json | 8 ++++++++ .../models/block/smooth_stone_slab_double.json | 8 ++++++++ .../models/block/smooth_stone_slab_top.json | 8 ++++++++ ...ooth_stone_slab_vertical_east_west_bottom.json | 9 +++++++++ ...ooth_stone_slab_vertical_east_west_double.json | 9 +++++++++ .../smooth_stone_slab_vertical_east_west_top.json | 9 +++++++++ ...th_stone_slab_vertical_north_south_bottom.json | 9 +++++++++ ...th_stone_slab_vertical_north_south_double.json | 9 +++++++++ ...mooth_stone_slab_vertical_north_south_top.json | 9 +++++++++ .../textures/block/cut_red_sandstone_slab.png | Bin 0 -> 350 bytes .../block/cut_red_sandstone_slab_vertical.png | Bin 0 -> 384 bytes .../textures/block/cut_sandstone_slab.png | Bin 0 -> 360 bytes .../block/cut_sandstone_slab_vertical.png | Bin 0 -> 396 bytes .../textures/block/polished_andesite_slab.png | Bin 0 -> 496 bytes .../block/polished_andesite_slab_vertical.png | Bin 0 -> 529 bytes .../textures/block/polished_blackstone_slab.png | Bin 0 -> 394 bytes .../block/polished_blackstone_slab_vertical.png | Bin 0 -> 423 bytes .../textures/block/polished_deepslate_slab.png | Bin 0 -> 414 bytes .../block/polished_deepslate_slab_vertical.png | Bin 0 -> 455 bytes .../textures/block/polished_diorite_slab.png | Bin 0 -> 482 bytes .../block/polished_diorite_slab_vertical.png | Bin 0 -> 498 bytes .../textures/block/polished_granite_slab.png | Bin 0 -> 513 bytes .../block/polished_granite_slab_vertical.png | Bin 0 -> 522 bytes .../textures/block/prismarine_bricks_slab.png | Bin 0 -> 532 bytes .../block/prismarine_bricks_slab_vertical.png | Bin 0 -> 504 bytes .../textures/block/quartz_block_slab.png | Bin 0 -> 281 bytes .../textures/block/quartz_block_slab_vertical.png | Bin 0 -> 290 bytes .../textures/block/red_sandstone_slab.png | Bin 0 -> 501 bytes .../block/red_sandstone_slab_vertical.png | Bin 0 -> 561 bytes .../minecraft/textures/block/sandstone_slab.png | Bin 0 -> 482 bytes .../textures/block/sandstone_slab_vertical.png | Bin 0 -> 552 bytes .../textures/block/smooth_stone_slab.png | Bin 0 -> 375 bytes .../textures/block/smooth_stone_slab_vertical.png | Bin 0 -> 424 bytes runtimeResourcePack/Distinct Slabs/pack.mcmeta | 6 ++++++ 145 files changed, 1098 insertions(+) create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_andesite_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_blackstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_deepslate_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_diorite_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_granite_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/quartz_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/red_sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/smooth_stone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_andesite_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/quartz_block_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/sandstone_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/smooth_stone_slab.png create mode 100644 runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png create mode 100644 runtimeResourcePack/Distinct Slabs/pack.mcmeta diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json new file mode 100644 index 0000000..3e8bfca --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/cut_red_sandstone_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/cut_red_sandstone_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/cut_red_sandstone_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_sandstone_slab.json new file mode 100644 index 0000000..7042993 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/cut_sandstone_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/cut_sandstone_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/cut_sandstone_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_andesite_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_andesite_slab.json new file mode 100644 index 0000000..5f145d1 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_andesite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/polished_andesite_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/polished_andesite_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/polished_andesite_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_blackstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_blackstone_slab.json new file mode 100644 index 0000000..00e26a0 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_blackstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/polished_blackstone_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/polished_blackstone_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/polished_blackstone_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_deepslate_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_deepslate_slab.json new file mode 100644 index 0000000..546c055 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_deepslate_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/polished_deepslate_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/polished_deepslate_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/polished_deepslate_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_diorite_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_diorite_slab.json new file mode 100644 index 0000000..0236cba --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_diorite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/polished_diorite_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/polished_diorite_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/polished_diorite_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_granite_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_granite_slab.json new file mode 100644 index 0000000..8a4ffd7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_granite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/polished_granite_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/polished_granite_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/polished_granite_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json new file mode 100644 index 0000000..c271e3b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/prismarine_bricks_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/prismarine_bricks_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/prismarine_bricks_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/quartz_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/quartz_slab.json new file mode 100644 index 0000000..ae79af7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/quartz_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/quartz_block_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/quartz_block_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/quartz_block_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/red_sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/red_sandstone_slab.json new file mode 100644 index 0000000..4c1f10b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/red_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/red_sandstone_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/red_sandstone_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/red_sandstone_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/sandstone_slab.json new file mode 100644 index 0000000..9589fd2 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/sandstone_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/sandstone_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/sandstone_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/smooth_stone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/smooth_stone_slab.json new file mode 100644 index 0000000..ae1185c --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/smooth_stone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/smooth_stone_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/smooth_stone_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/smooth_stone_slab_double" + } + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json new file mode 100644 index 0000000..343e165 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone_slab", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json new file mode 100644 index 0000000..9183788 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone_slab", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json new file mode 100644 index 0000000..1b3ed50 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone_slab", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..e72ca6d --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone", + "side_vertical": "minecraft:block/cut_red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json new file mode 100644 index 0000000..d49568f --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone", + "side_vertical": "minecraft:block/cut_red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json new file mode 100644 index 0000000..e52fd52 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone", + "side_vertical": "minecraft:block/cut_red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..abe9ffa --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone", + "side_vertical": "minecraft:block/cut_red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json new file mode 100644 index 0000000..60b358a --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone", + "side_vertical": "minecraft:block/cut_red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json new file mode 100644 index 0000000..b36b1ca --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_top", + "side": "minecraft:block/cut_red_sandstone", + "side_vertical": "minecraft:block/cut_red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab.json new file mode 100644 index 0000000..8ae591b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone_slab", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json new file mode 100644 index 0000000..46e5430 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone_slab", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json new file mode 100644 index 0000000..1aafa7c --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone_slab", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..05c4fee --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone", + "side_vertical": "minecraft:block/cut_sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json new file mode 100644 index 0000000..7023a9a --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone", + "side_vertical": "minecraft:block/cut_sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json new file mode 100644 index 0000000..c414fb8 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone", + "side_vertical": "minecraft:block/cut_sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..a24bf26 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone", + "side_vertical": "minecraft:block/cut_sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json new file mode 100644 index 0000000..e49dece --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone", + "side_vertical": "minecraft:block/cut_sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json new file mode 100644 index 0000000..0e18471 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/sandstone_top", + "side": "minecraft:block/cut_sandstone", + "side_vertical": "minecraft:block/cut_sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab.json new file mode 100644 index 0000000..8bd51b9 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite_slab", + "top": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_double.json new file mode 100644 index 0000000..df13a0d --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite_slab", + "top": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_top.json new file mode 100644 index 0000000..f26a1d1 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite_slab", + "top": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..bdc069b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite", + "side_vertical": "minecraft:block/polished_andesite_slab_vertical", + "top": "minecraft:block/polished_andesite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json new file mode 100644 index 0000000..edc2ddd --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite", + "side_vertical": "minecraft:block/polished_andesite_slab_vertical", + "top": "minecraft:block/polished_andesite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json new file mode 100644 index 0000000..65b35b2 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite", + "side_vertical": "minecraft:block/polished_andesite_slab_vertical", + "top": "minecraft:block/polished_andesite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..e173b30 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite", + "side_vertical": "minecraft:block/polished_andesite_slab_vertical", + "top": "minecraft:block/polished_andesite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json new file mode 100644 index 0000000..d9f3747 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite", + "side_vertical": "minecraft:block/polished_andesite_slab_vertical", + "top": "minecraft:block/polished_andesite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json new file mode 100644 index 0000000..89bd2d5 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/polished_andesite", + "side": "minecraft:block/polished_andesite", + "side_vertical": "minecraft:block/polished_andesite_slab_vertical", + "top": "minecraft:block/polished_andesite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab.json new file mode 100644 index 0000000..274dd92 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone_slab", + "top": "minecraft:block/polished_blackstone" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json new file mode 100644 index 0000000..772f6b3 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone_slab", + "top": "minecraft:block/polished_blackstone" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json new file mode 100644 index 0000000..3199823 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone_slab", + "top": "minecraft:block/polished_blackstone" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..ff2bd1a --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone", + "side_vertical": "minecraft:block/polished_blackstone_slab_vertical", + "top": "minecraft:block/polished_blackstone_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json new file mode 100644 index 0000000..5b67940 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone", + "side_vertical": "minecraft:block/polished_blackstone_slab_vertical", + "top": "minecraft:block/polished_blackstone_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json new file mode 100644 index 0000000..58c1d29 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone", + "side_vertical": "minecraft:block/polished_blackstone_slab_vertical", + "top": "minecraft:block/polished_blackstone_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..b8c5644 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone", + "side_vertical": "minecraft:block/polished_blackstone_slab_vertical", + "top": "minecraft:block/polished_blackstone_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json new file mode 100644 index 0000000..9af86bb --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone", + "side_vertical": "minecraft:block/polished_blackstone_slab_vertical", + "top": "minecraft:block/polished_blackstone_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json new file mode 100644 index 0000000..1b5381d --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/polished_blackstone", + "side": "minecraft:block/polished_blackstone", + "side_vertical": "minecraft:block/polished_blackstone_slab_vertical", + "top": "minecraft:block/polished_blackstone_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab.json new file mode 100644 index 0000000..80141c3 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate_slab", + "top": "minecraft:block/polished_deepslate" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json new file mode 100644 index 0000000..dd300b0 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate_slab", + "top": "minecraft:block/polished_deepslate" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json new file mode 100644 index 0000000..545feb4 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate_slab", + "top": "minecraft:block/polished_deepslate" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..943223f --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate", + "side_vertical": "minecraft:block/polished_deepslate_slab_vertical", + "top": "minecraft:block/polished_deepslate_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json new file mode 100644 index 0000000..b7f7ac9 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate", + "side_vertical": "minecraft:block/polished_deepslate_slab_vertical", + "top": "minecraft:block/polished_deepslate_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json new file mode 100644 index 0000000..7f482af --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate", + "side_vertical": "minecraft:block/polished_deepslate_slab_vertical", + "top": "minecraft:block/polished_deepslate_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..515809b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate", + "side_vertical": "minecraft:block/polished_deepslate_slab_vertical", + "top": "minecraft:block/polished_deepslate_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json new file mode 100644 index 0000000..dc7f1f8 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate", + "side_vertical": "minecraft:block/polished_deepslate_slab_vertical", + "top": "minecraft:block/polished_deepslate_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json new file mode 100644 index 0000000..4e4c340 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/polished_deepslate", + "side": "minecraft:block/polished_deepslate", + "side_vertical": "minecraft:block/polished_deepslate_slab_vertical", + "top": "minecraft:block/polished_deepslate_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab.json new file mode 100644 index 0000000..46b28e1 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite_slab", + "top": "minecraft:block/polished_diorite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_double.json new file mode 100644 index 0000000..b4958a0 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite_slab", + "top": "minecraft:block/polished_diorite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_top.json new file mode 100644 index 0000000..ba86866 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite_slab", + "top": "minecraft:block/polished_diorite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..045ce1b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite", + "side_vertical": "minecraft:block/polished_diorite_slab_vertical", + "top": "minecraft:block/polished_diorite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json new file mode 100644 index 0000000..83fb653 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite", + "side_vertical": "minecraft:block/polished_diorite_slab_vertical", + "top": "minecraft:block/polished_diorite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json new file mode 100644 index 0000000..e77714e --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite", + "side_vertical": "minecraft:block/polished_diorite_slab_vertical", + "top": "minecraft:block/polished_diorite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..6ecd820 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite", + "side_vertical": "minecraft:block/polished_diorite_slab_vertical", + "top": "minecraft:block/polished_diorite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json new file mode 100644 index 0000000..0d83478 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite", + "side_vertical": "minecraft:block/polished_diorite_slab_vertical", + "top": "minecraft:block/polished_diorite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json new file mode 100644 index 0000000..4477b9b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/polished_diorite", + "side": "minecraft:block/polished_diorite", + "side_vertical": "minecraft:block/polished_diorite_slab_vertical", + "top": "minecraft:block/polished_diorite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab.json new file mode 100644 index 0000000..1b2d278 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite_slab", + "top": "minecraft:block/polished_granite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_double.json new file mode 100644 index 0000000..a8d4aa1 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite_slab", + "top": "minecraft:block/polished_granite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_top.json new file mode 100644 index 0000000..e6c63e9 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite_slab", + "top": "minecraft:block/polished_granite" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..90ddd06 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite", + "side_vertical": "minecraft:block/polished_granite_slab_vertical", + "top": "minecraft:block/polished_granite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json new file mode 100644 index 0000000..2e40eb9 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite", + "side_vertical": "minecraft:block/polished_granite_slab_vertical", + "top": "minecraft:block/polished_granite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json new file mode 100644 index 0000000..8f8bfff --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite", + "side_vertical": "minecraft:block/polished_granite_slab_vertical", + "top": "minecraft:block/polished_granite_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..35ee6c7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite", + "side_vertical": "minecraft:block/polished_granite_slab_vertical", + "top": "minecraft:block/polished_granite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json new file mode 100644 index 0000000..7027d54 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite", + "side_vertical": "minecraft:block/polished_granite_slab_vertical", + "top": "minecraft:block/polished_granite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json new file mode 100644 index 0000000..926ab53 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/polished_granite", + "side": "minecraft:block/polished_granite", + "side_vertical": "minecraft:block/polished_granite_slab_vertical", + "top": "minecraft:block/polished_granite_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab.json new file mode 100644 index 0000000..f6abe12 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks_slab", + "top": "minecraft:block/prismarine_bricks" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json new file mode 100644 index 0000000..5632937 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks_slab", + "top": "minecraft:block/prismarine_bricks" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json new file mode 100644 index 0000000..3ffc0af --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks_slab", + "top": "minecraft:block/prismarine_bricks" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..54e0778 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks", + "side_vertical": "minecraft:block/prismarine_bricks_slab_vertical", + "top": "minecraft:block/prismarine_bricks_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json new file mode 100644 index 0000000..34529ff --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks", + "side_vertical": "minecraft:block/prismarine_bricks_slab_vertical", + "top": "minecraft:block/prismarine_bricks_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json new file mode 100644 index 0000000..6414301 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks", + "side_vertical": "minecraft:block/prismarine_bricks_slab_vertical", + "top": "minecraft:block/prismarine_bricks_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..24f8a1e --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks", + "side_vertical": "minecraft:block/prismarine_bricks_slab_vertical", + "top": "minecraft:block/prismarine_bricks_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json new file mode 100644 index 0000000..2252968 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks", + "side_vertical": "minecraft:block/prismarine_bricks_slab_vertical", + "top": "minecraft:block/prismarine_bricks_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json new file mode 100644 index 0000000..38e2f46 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/prismarine_bricks", + "side": "minecraft:block/prismarine_bricks", + "side_vertical": "minecraft:block/prismarine_bricks_slab_vertical", + "top": "minecraft:block/prismarine_bricks_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_double.json new file mode 100644 index 0000000..ab4f655 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/quartz_block_bottom", + "side": "minecraft:block/quartz_block_slab", + "top": "minecraft:block/quartz_block_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_top.json new file mode 100644 index 0000000..74593d7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/quartz_block", + "side": "minecraft:block/quartz_block_slab", + "top": "minecraft:block/quartz_block" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..7153280 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/quartz_block", + "side": "minecraft:block/quartz_block", + "side_vertical": "minecraft:block/quartz_block_slab_vertical", + "top": "minecraft:block/quartz_block_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json new file mode 100644 index 0000000..6b708aa --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/quartz_block_bottom", + "side": "minecraft:block/quartz_block_side", + "side_vertical": "minecraft:block/quartz_block_slab_vertical", + "top": "minecraft:block/quartz_block_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json new file mode 100644 index 0000000..78fbe3f --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/quartz_block", + "side": "minecraft:block/quartz_block", + "side_vertical": "minecraft:block/quartz_block_slab_vertical", + "top": "minecraft:block/quartz_block_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..8d3b1c7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/quartz_block", + "side": "minecraft:block/quartz_block", + "side_vertical": "minecraft:block/quartz_block_slab_vertical", + "top": "minecraft:block/quartz_block_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json new file mode 100644 index 0000000..134a9a7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/quartz_block_bottom", + "side": "minecraft:block/quartz_block_side", + "side_vertical": "minecraft:block/quartz_block_slab_vertical", + "top": "minecraft:block/quartz_block_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json new file mode 100644 index 0000000..59743eb --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/quartz_block", + "side": "minecraft:block/quartz_block", + "side_vertical": "minecraft:block/quartz_block_slab_vertical", + "top": "minecraft:block/quartz_block_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_slab.json new file mode 100644 index 0000000..aca6833 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/quartz_block_bottom", + "side": "minecraft:block/quartz_block_slab", + "top": "minecraft:block/quartz_block_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab.json new file mode 100644 index 0000000..e2bdafb --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone_slab", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_double.json new file mode 100644 index 0000000..70ef32c --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone_slab", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_top.json new file mode 100644 index 0000000..9872f0c --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone_slab", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..5002cbe --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone", + "side_vertical": "minecraft:block/red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json new file mode 100644 index 0000000..875cb1d --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone", + "side_vertical": "minecraft:block/red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json new file mode 100644 index 0000000..9e5b7d7 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone", + "side_vertical": "minecraft:block/red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..f9a32b0 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone", + "side_vertical": "minecraft:block/red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json new file mode 100644 index 0000000..65f45a6 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone", + "side_vertical": "minecraft:block/red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json new file mode 100644 index 0000000..a98be9a --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/red_sandstone_bottom", + "side": "minecraft:block/red_sandstone", + "side_vertical": "minecraft:block/red_sandstone_slab_vertical", + "top": "minecraft:block/red_sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab.json new file mode 100644 index 0000000..8ccdbf6 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone_slab", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_double.json new file mode 100644 index 0000000..0a749b1 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone_slab", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_top.json new file mode 100644 index 0000000..956d32f --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone_slab", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..80fb019 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone", + "side_vertical": "minecraft:block/sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json new file mode 100644 index 0000000..4720a79 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone", + "side_vertical": "minecraft:block/sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json new file mode 100644 index 0000000..676ed2b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone", + "side_vertical": "minecraft:block/sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..de64f77 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone", + "side_vertical": "minecraft:block/sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json new file mode 100644 index 0000000..4641a68 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone", + "side_vertical": "minecraft:block/sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json new file mode 100644 index 0000000..f2fb04f --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/sandstone_bottom", + "side": "minecraft:block/sandstone", + "side_vertical": "minecraft:block/sandstone_slab_vertical", + "top": "minecraft:block/sandstone_top" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab.json new file mode 100644 index 0000000..1df1c23 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone_slab_side", + "top": "minecraft:block/smooth_stone" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_double.json new file mode 100644 index 0000000..8927f2d --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone_slab_side", + "top": "minecraft:block/smooth_stone" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_top.json new file mode 100644 index 0000000..b4bc88b --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone_slab_side", + "top": "minecraft:block/smooth_stone" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..02b4c22 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone", + "side_vertical": "minecraft:block/smooth_stone_slab_vertical", + "top": "minecraft:block/smooth_stone_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json new file mode 100644 index 0000000..6f2df16 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone", + "side_vertical": "minecraft:block/smooth_stone_slab_vertical", + "top": "minecraft:block/smooth_stone_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json new file mode 100644 index 0000000..d319514 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone", + "side_vertical": "minecraft:block/smooth_stone_slab_vertical", + "top": "minecraft:block/smooth_stone_slab_vertical" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..2032507 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone", + "side_vertical": "minecraft:block/smooth_stone_slab_vertical", + "top": "minecraft:block/smooth_stone_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json new file mode 100644 index 0000000..d818927 --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone", + "side_vertical": "minecraft:block/smooth_stone_slab_vertical", + "top": "minecraft:block/smooth_stone_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json new file mode 100644 index 0000000..505d40c --- /dev/null +++ b/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "minecraft:block/smooth_stone", + "side": "minecraft:block/smooth_stone", + "side_vertical": "minecraft:block/smooth_stone_slab_vertical", + "top": "minecraft:block/smooth_stone_slab" + } +} \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..368ff93405eeee6296a23a0bbef50549b3a76016 GIT binary patch literal 350 zcmV-k0iphhP)Px$7)eAyR5*>@lDSU9Komt!#*P;mTS`HJXlM`>5;Y&e5AiX45gkn`(zzfknz1#W zvFuP7kGv&NbE~Jf-gk9Z+sC^D6Bt_)25XG1r=@Y9G5Asyl(q#xR?Vy_i#%8B<6*C# z%kGNRYVpcmgVF|o_l3HDbGi8mH!f*x&F-z>>ip~^{g+*i4;)7%O2Je5ryVS-UV*mgE07*qoM6N<$g3H5}S^xk5 literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..0381b48c31a31692e20f096636ec80e4f6b01dde GIT binary patch literal 384 zcmV-`0e}99P)Px$I!Q!9R5*=oQ$2HoFbsV$#D;U>j-f*@OSi85CH+JFG5u3rI+cwfB<&e;MCOuo zpmO|y79>6SJxMm3ulLs*A|pFP$t}pvF%;GjAveQ_lf41}%=wZO)kWqo_WjztGmDCy zhE=Owha)CKt(3u%piiC(`{_^sL zQpzdRMTWY_Tt~hl=i+gkOx$KnV$PSKhJ6vwq@@T7mE0z?`?zTLBeWC&$y0qlw3e%j z%*EpQ@gY!OYkw`raZW_Zf_&qb=eNz*U6pFt0ngq4{3h4so1KQ_t!zHt^sOqD`(fCs eQUO4ckL?fhTe;T)@Oy^<0000`9V literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..846c243a28e1cead0fe86aa8a06701bcbbe8cb7b GIT binary patch literal 360 zcmV-u0hj)XP)Px$B1uF+R5*>*lDkgBKoCWbBL}py*Fp#>I28>)z@PDBl=NvRK%z;R0;DJ}9+BnO z$`2_NW|y@cr{`8XJF|E0+#Top^W{JXWf5_9enDA8-Bb&;%5d{&g;EIsRh;yS#(^|B zeYR`ec(-oY^7MF@JS9svP4LmrJ3}Mv-xplo+@6%boX>Cp@@NHsQVBvxlxpNA`z=+R z5KN{3#Je@)K$>wpKWqr};~@{UN45t-NWRinMr9GT3WSg?f-3G4+eGf$^W)&0EgUfr zPMG+A_P_-QCR3wAn`o=Ly1p~tt09DBIiE4Im!Kn|W4BhB3A#l#Y=883dw$4B zcdp_DwcQvMLiBf{&ePtmI8P7v2hR`xjQWM=hXB3%E`9*we#3;N_rOm80000Px$MoC0LR5*=wQ_D`nFc6$rNh>R{RdIoE;)3`BK8zpZAGmNq;=-|)N>$UQKxLeV zm4{RgVO=KrI92#|uILsMQVtU`zqd zg_ZPk90;hc^9+#`R!*Fx0|7P9c|f&`9|JfS_$uGQ+D45wa4ts8ZKFJ5mx%SIvO%W{ z=sW}GJ`u(ACG%OxV>=;|0+GCU;7+96R1R~e&*`QUc6#g)t=XJ8?#7VEo_4p+PMbA2 z7b6mReTymFTqK2!+11_sXu5lRSHjd6io@Pio;}y7c~) q;Pv_G94G1J!TcdkQULJsQ~Uz{GRklD?M@f~0000Px$s!2paR5*=wlg)0^Koo_)l!@Z8;%HhDp{R8>YrfVcvcJywV7jD861? zQJDtF0Ep$lH{PySJU<=-FgF=@cO@q$39&5r{^J|M6^2bND$^jNgjqV_rg&f!Nnd9H z;YgPnfb4pOh$ORgf{3Iqh~H>}rFEWCu{FM6saY>~zeoHY}FL)9&{tJU)9M z4iE_j0~|Rzz5tL>LS-86Hx~JJy&{%_j?Bt5C^fY^2ooZbU>agM@N{2HQ+oTMMW&!K z4W=&9I!By;`qG|C=ba@gHSL}<$SXCq4BozZ-7R{;4^MeOmzwjBpREMv11Du}x_)pT zaqqkj+ihVbJCsoKtG{>OthHw`I<^dUweihDVU# zdix>Ut=+b}ySFefOD8}|ev`Kn9D>!`Qg^yXFBQH0ko!%>{IcDLXq(yy^@aeI(Vd|H m;^LS6!wx-g7|s)ib$Px$%Sl8*R5*=olg)0^Koo_)23z)6aWrXTRcV_FsT+6$%CoYBSEwo>v1MN%M2SF% zIE|3qdKyO_M|D*e!%X6cyRv{RzPBW54b%S7-2o T-qHT_00000NkvXXu0mjfTKDv) literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..905fdb3af34c23821586cfaa4ef270d65585f84e GIT binary patch literal 394 zcmV;50d@X~P)Px$L`g(JR5*>LQ^9J(FbsX^a_DRfiJ=r+ntnic*=0X5*lC}>9=2N>8Yl%PU}AF1 z4%rhatf-U|07=uh zNOhZupgx|k-BqyG!25Z^^>TnxP9!i+%e@cKrkqJ&yT3_L${~AvcpB5TXhSz*S!Cb* zxAA*XNHLpNfz-ivn5YFT8{ z7H$XBhZah?nBY5)KL07*qoM6N<$f<-5+WB>pF literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..589b818f8bde8ba4714a421981d082e678b45b50 GIT binary patch literal 423 zcmV;Y0a*TtP)Px$VM#GKoG@$i5}8~g=9g5i24E2OE3Krg`WD+>!H1AFi?a|V2Slo z(nC7qs%_t86Xwr*Z)T$BrH_4bPHLL31idhhA~aci}!AlofU*TcFvz= zI?t&an9VEo9$JirJ-o)=x1?#Qhm_>eh06NvRlj3l4U5B>h(fu6Q#WACg>Fd|$fRAf z*JDZY2Px$SV=@dR5*>Dlf6>IFc5^lFf=D6ZZH}uhR4cN*rPv`u z!B(fc)86{DUhQ_fZ!Qo*z&UsIoZ}DzP1A6jlNnu~(4pny{hhn}2R3VA-qZDou0NFi zoB8B?8DLN?xj8m#DWt%tz-5R-Ff!M54S){qg2;PMjIs2@7)J#m1jHD`7}6v!e~u1qAu_h& zamoYKK#XxzkeO3Th$>9%86r~7^BCaPIk$Lo_=gW(o}U-n6=U$;kE&D|RB4)KQ7bzD z5MvgmnIjX;>s_CCv=y)W=4_;Fpvz~=1Fk_t&P%kDv@AKB#?CJ1A$jQltL=9C>t~u< z`Y%%*4{zK!=YIJ;Psx+6)i-N78|ip>112Aclo;T3-~8!=AMBz6%Qo+ad;kCd07*qo IM6N<$f&}WkhX4Qo literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..49b656d2eb3cf4b5d687e2931e791f300aa6aae4 GIT binary patch literal 455 zcmV;&0XY7NP)Px$fk{L`R5*=olRa|dFbsvi&7=WkyIF#&xO{$aI%ed$t^vwZR50fpA%t=!gpe6{?-64V zV@Nl8`W%rttLIxCpawz+nL*Pu^g}AcQ;}3S=NwJbl$tVpu-4Ah*Bcekdrv>4!fwi_ zxN!OW7}bptF$RE?64qMUc3<4kUeN$RjN$jwpKsLFh3c-~4~ge$#oOO@T%_p}G(-dy z`KJ((%pin7Wem^n>e}h}KDuxpA%xi; x+{bbu<074o??6^vhxAX}?RJPr$*11{{{i#F1`$HrZYBT#002ovPDHLkV1l{t%~JpX literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..536fab7166f73f0c167198161985e82ff20c17db GIT binary patch literal 482 zcmV<80UiE{P)Px$oJmAMR5*=olQD0jKoEsLM-&#)g0^zDFer`PP^7vpzc9KoRg@oc<(<2`<}ONc zzQzKitX*vY$)fWWFe6B^4ZFPM&6|0T#cTC?VO-t01HizvGGdRd48l4MD--2f1o*yw<4 zy3z|awK}lS{8l2tx^p*g!KN0Q4j**qPM@I(p+;V9T0SY z(ne%rL**;-wWHW>*!|p*BulNDxeOdszS2UXPIEAod0X77T$#KC2^f`~XxkotJPZT^ zif!We-IqJMbEiQHO~AxP^8yS6f1ZEM{()&&MAPx$tVu*cR5*=Qlf7=+FcgKq7#;)xB*976;0RvqMMI`;d77eAA0_D6sp!MB9Xqw? z(k=!iAhah&6kupe2k9~t7m2*$JwNy8?zww@Wm)5G1VEJvfX`pP^6|s_RV}ao`TLKp z6kYGpx*%Wvawe~b;Yzb_0C2tM+xH)Aq;q>ZVvQxn3D^77WW0^2QZ4lg*SiGfFXx#- z7y|MP!*zMTQtu7`biO0TX<=9a5aUF>JFo$`ukQ&%!1WFQYpO(5m5Lar)EGePg7$O- zV5>@%46>$5A6R4YmowvSOqYd)HJ0%LR+Q11@2gl6AhjZFyBU2-s^&ga%t zw5Mb8ZJX;7v*sz(DF-o5%RVFn1z@8}MHm9jzUJ}WW12!3LNc*E9h1?n_X}8f%RwF{ zF-v5qQl%ixa_eNGzntHuAaq5mL{;ixxDtl2m|CUjYyf`!{<-=GBrMW2H(I76Q@DHj o^z{1jGSd;w`2>J;E@%1vKM9;B!!2?zD*ylh07*qoM6N<$f*$1IJOBUy literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..994026bc7290cbfb53e9ae321d8e722684b25c87 GIT binary patch literal 513 zcmV+c0{;DpP)Px$yGcYrR5*=olHZEcKorJ*TLLlZgsu(Qf}qw#_CgR`!Hd1~YA<{MUq^fjAE}6_ z1^+==N|u1oJtW&Qlf*z_y+~)8Sm$caneUu$&Ue0}k00LO(K+HBlWf<>rXm@I$fg45 z-OJmY;r*EMHpc__`TZBVZUBe^9|3gTAc0S)6qPYZ))F|JG3dHsAl@+mrx&k@0v~`- zDJDq_KxGU7sT7Xj^z00P&&v!i*{%^l<}(MJc9?9@vnP)LSV@jvEQkW1>B+bqp?jvu z*cF9JwFUn)>y9#zO+_k&OX#|B_sSTez$XfPbls4=xaesGFi1uru^KwYNfPf19zO0d z%Y4@RL3&eg^zQBDU3$|BRFr=J7!U9DVtf9V_g=j`=glZQ*gv$MApZ@p&+XpRG-D+l z9{|X%>vGYbQ`Zg4PHa7qo00+XgPzK^(1LAjci$Dc6>+igP)Px$#7RU!R5*=glF@3^Koo|*E(>Xr3EO7L3SLNDWG@6kg=MMx+Pmd_>@6g+huit-g^8OtF z#VkQ@I{@6KAw8bsHVspN-@pFQ_5%P}9HD`>AE;`>382?E==HvV*I7&34@~s*2!Q43 z2eLQKDN}uQ6_rZQEB4~Z9n+$JUyhCC1i0#+Yc0PPe-f( zro}8_u2Ql%B2kJ&DY{2MfG3~D5&H6Cl%T2&lhCcRmd@JI2*N<%CQAAJa*;EY8M8R@ zq$N?F9{Ph~F3Faw6>UH4AxZ)P7;@0tj$7UMuAOx914xw{df1FIk0~R z;wqFwf!j2`qnI_;jUmdM?(ff0OkvRWgNN7lgJ%RhK@^Z8YOKS!9qI9$?D1uaxtNuU z{OKCQ!&w}8pl;KQ%mLC@Z|JP0stpHcpFTcRwegz*PU1@~{10{i0IyUIGA5MjB>(^b M07*qoM6N<$f^=2#@Bjb+ literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..0da94e346a04d802d38fb7581990c1186a19bc57 GIT binary patch literal 532 zcmV+v0_**WP)Px$&PhZ;R5*=ol0R$PP!z>~HZ~G3ZcB(zt*z;j4k2U;BwLB;n4x6NSLoDF(5+v_ za|;ex5*I>;;Qk>VT4yN86;G5}(nUstJ4o+YO7o`o?mh3EbN{s7d>pQJ{D6nfGz#&0 zkJ(Zijd&~>I$dykGp4iS2VC9#z*DLL(jtVDF{dYIOry}o3{Hyx(7CT_K%P?M{iZWV z1YO-dr3iDOZP?9cM}$Ocs}M_O^UI1DAkigN+puX7Uif_;c^*rpa76esUz68y=5$>} zyWT*ZE*fe8H(x(BYBogM&z_eKV#yjwQ)@UG^K$UI;lkh&t*uz=)%&-rA{T3^$c4>* z!2a$b7o#D;-VxzsOxGk<3AhmBsf4O_hr^@TBSr^*{wiPjXk ztQW}+Z~EI3CR*DmwRO6%52H|5bgH}SZ~wO!U01CgER}+^bl}v=sgrN^ z17gW+tjL9q79o#jJn20poQK@{bEq~EAdhAMHb3kA#HmW^x~kj*!)9#Vf18;0^ W+Yhiu-Tzhq0000Px$vPnciR5*=ol0R!3K@i1%K5R~`|A6o!be-kKsa(2nCoEE?5N`7oQu#~x%eW6H zq>2csj6=YJBvKJL=~!WOIt?dOIE8MOTj8yCcHX=%uk+4;7ExvYYu&YC_A>Gt}(Ov4eieHDvbkrP)51uTjg-Cm!sg9p03 zK0m(?JSMJ@07Ula#J2_TZ}N+qs~)b%X|@wi%^}IYr3*V{Wc` zjIuOv!5TwydCj7j(K$O0b|zAr>i?j-p!2J}fOlo-9Gg6~{d zaz*X~El|Z~wTZC^jaDac1gbsIKuPAZ^4(~xxn?^F;!P<;PJ}WW`^|gKrXHY*_5679 um$<4qXc+e1-`~9|o3^zZZ%TRd9pFDnc@WPx#(@8`@R5*>Ll0grHFbIX8$!q3e|Njr}W@4PKi5f_@gS9CY-9b*J<>Nu2nTGz0 z8%6+7Spi+lgQ^~b+o$nk?6w3u>_GrP5@2gDb%BV0Dyy$X?y?4QTQES~g2wz-3xyCs zhR03Pw zkb{vgHPx#+(|@1R5*>LlRXZ?FbsuXks~^Eg#&Q^!*BuyMx+WsBbv&VU`U(h$H_vLw5dP) zJ;&|d&+&^t76E|p0*FgKhzO?nh12;0H;q2HACeerA3nhbi-=x@2%tVa6bEJo2`?&0 zMA1thAk{(v34rn+h?y|TL=<+dQeFt~ oJ?QSY>lZ*GH=e+J#c=@e1LzQc$TagVq5uE@07*qoM6N<$g5=q9MF0Q* literal 0 HcmV?d00001 diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab.png b/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..ac153d6e45684d657895734a5fe0a5e02d065374 GIT binary patch literal 501 zcmVPx$uSrBfR5*>zlfiD-Z*iVlMKcBaFu3{bqD5W}r%`Rm*i#u~& z3!bZ3&SLCb*LbcX9FIt=Gk*U{b-a*FhHQ2z^C&<>%r(RD2q+21BXV710W4=RSy6JT zH3P>Y_Isuhz}xA{z_9=rI2O7V0?!5D?#H(;#)YgXJNIvyG*ugLr&^o*Vj5w`555t% z@xN>gJb z7nZZwII~J(*4q@%RoGe4c$yU@Pmc)zxvqKnwKtpn{{7#sMucNnZ&MzEkl62G&7;7y zDk6wT=dfFd1IHpON*2?IWHKbJ&e(1HB4Rk`TFes`5nlH>x)u(3i>@?>+t57E*S*QI rN@A2!Y<7)9?H}3fQXJPa00I60R8Px$>q$gGR5*=glRa+ZFc5{mD2f!pkzs2U2uxuqTR4r21#+pq!(MJLkj_oq_@}U7 zK%oV34Q6D-*}@QEC9KGqdGqt$@apx?uTQ=lX^(`#4bmRJy83Y<_>K9;p*;c6ynlQP z8s1(zUw6NZ_2;Xy2Z*B(0AmG!w+q`+%eMml^Hagg>xwuE$+Lto40{2KP04hkdT(Qe zI0~6g6uvf=I0{L}Bg*E;@b*OW{y}kn$6`~GX9*(W#!SZ}pe7xU(8l5cOeczJU(;H{ zAn;Jb8&?V7(4H6s9sq;D!&o7SBLJ@c{{HDysP=Vl{*IG#)iZIeHO~L|kl|m>JDn(A zURTTt<+xaEN(aodgz#QD`*OR(>#8odI~JRgS)n+zC$zC>W686`fe-Bo5kVX4i1j-# zKoG@_tR#-m#?r}rXivR8(Z(_>6n;7$k!NRu%I4^R+E}W6&GS>?TF$e?B?DOR^tpr1 z@TMzAQm3;vmgfC~=|nkYW`$zDDv6^IzuKQQy{x8Px$oJmAMR5*>*lFe?~Koo^PBDd8Pn^qQbaHL2<0v1SFm_@hQ_cikl*>uG=m9P{f zFDMcV+Kl5;MEt`j!4h4#9^2swdRKG*=bUp}e|~>I^2T0YcD(=anb()y+f>7Hm0|36 zzfdXx;1DM#MejP6&Xw~ z8wF9|Eet%T8oFS3oNU9ItVQnf`iAv3{hOK(ck&EN3L!>Nb*Xi0HWpT-Ng`pPV6`^9#=G{sPx$;z>k7R5*=olRt0TKp4hla zATiL!7nfRuvpFSLqJwh>4!!B_{r9}@^SoF3`{(DL59jT5&8N>_d3#-dbQMmfQ=IMk zH(DzIb{lmPbXIe%&)kn=o#k{?NT^hO0MaDP4bj2&5_KW*FDpen^-Ng}= zLO>KusP_hicbbG$sy_AJfYR*YcCTfKX!y3x-A3WHIz+()uiXW(V*;3XfHFY6H$cmf zY?~m2OYQQ?BAH|%^7(~uNs|!QYvd!$9&Y!?l?(H~b7IhT8%4HFtpDQr2IqL*dT+qu z{*GpUXt{`jiA_9kG$0Bltmb3N26Z(b69p5R{UKT_R4h@k#A|nLvet@Br>Iz3VjYtV z;G9=2S+3VW#S$a4(0*Z0R4i%shdBp^pw06WUaNzOrRBsR{ZA1s!@L7yc!?e@Nk(TC zOLiMYy*IGRH2XuA(-D=bk7G2|GNk?O`+IvntN9oeA9h2<64CGx_$;R*zSKL^F0Uwi z?XGP#(D2LJTs=^o+fJm0000Px$F-b&0R5*=&Qo)MFAPk%bDg`Zg@Be>JDZRWF+EdR$3n~OX>>f&7EoF1j#5hbQ z^BKqS2QLvqXmVrBYmWecZQGD@hLjQj&~;tYNJIdD7$cNY001c^mSwpCa?VI8A*BSR zQ~}F5H$YnJCb!n!0Da$=qW8Wqky18nm`M#R-X5L|7=+JyT)_`SREiv&6HyscDTS00 z0N}c=mO)L|dtXMY!KIYt9%F=7Vv7H+q^nG7;{RFGoFc^Qnt_#8#gX1_}KM+wP+|#i!Mu=_OFwgU=4>Px$Vo5|nR5*=olFg37AP~oYyD3NlO}O_d^aXuF^#QzTnqE8*g@nLi_s|TX>YOMu z{eKNVr_afTDW&x{3WPzdc<UzMNr?hcB|*#FFRU+3E^4jhoXI&e&+}$= z*4oX_Ap{2J9Jkx;L%yu35AOZNrj+ Date: Mon, 10 Jul 2023 01:23:53 -0400 Subject: [PATCH 03/71] implement KleeSlabs functionality --- .../andrew6rant/autoslabs/AutoSlabs.java | 6 --- .../andrew6rant/autoslabs/PlacementUtil.java | 43 +++++++++++++++++ .../ClientPlayerInteractionManagerMixin.java | 45 ++++++++++++++++++ .../ServerPlayerInteractionManagerMixin.java | 47 +++++++++++++++++++ .../autoslabs/mixin/SlabBlockMixin.java | 10 ++++ src/main/resources/autoslabs.mixins.json | 2 + 6 files changed, 147 insertions(+), 6 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index fe97a77..d1263c8 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -21,12 +21,6 @@ public class AutoSlabs implements ModInitializer { @Override public void onInitialize() { - //Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); - - - //Logger.getLogger(StatementApi.MOD_ID).setLevel(Level.OFF); - //LoggerContext. - for (Block block : Registries.BLOCK) { if (block instanceof SlabBlock) { StateRefresher.INSTANCE.addBlockProperty(block, EnumProperty.of("vertical_type", VerticalType.class), VerticalType.FALSE); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 8f94bac..532f7f1 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -6,6 +6,7 @@ import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; @@ -20,6 +21,48 @@ public class PlacementUtil { static { VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); } + + public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) { + Direction side = cast.getSide(); + VerticalType verticalType = breakState.get(VERTICAL_TYPE); + SlabType breakType = SlabType.DOUBLE; + if (verticalType != null) { + switch (verticalType) { + case FALSE -> breakType = switch (side) { + case UP -> SlabType.BOTTOM; + case DOWN -> SlabType.TOP; + default -> { + var ypos = cast.getPos().y; + var yoffset = ((ypos % 1) + 1) % 1; + if (yoffset > 0.5) yield SlabType.BOTTOM; + else yield SlabType.TOP; + } + }; + case NORTH_SOUTH -> breakType = switch (side) { + case NORTH -> SlabType.BOTTOM; + case SOUTH -> SlabType.TOP; + default -> { + var zpos = cast.getPos().z; + var zoffset = ((zpos % 1) + 1) % 1; + if (zoffset > 0.5) yield SlabType.TOP; + else yield SlabType.BOTTOM; + } + }; + case EAST_WEST -> breakType = switch (side) { + case EAST -> SlabType.BOTTOM; + case WEST -> SlabType.TOP; + default -> { + var xpos = cast.getPos().x; + var xoffset = ((xpos % 1) + 1) % 1; + if (xoffset > 0.5) yield SlabType.BOTTOM; + else yield SlabType.TOP; + } + }; + } + } + return breakType; + } + public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState state) { BlockPos blockPos = ctx.getBlockPos(); BlockState blockState = ctx.getWorld().getBlockState(blockPos); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java new file mode 100644 index 0000000..5adf330 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -0,0 +1,45 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import io.github.andrew6rant.autoslabs.PlacementUtil; +import net.minecraft.block.BlockState; +import net.minecraft.block.SlabBlock; +import net.minecraft.block.enums.SlabType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerInteractionManager; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + + +// Massive thanks to Oliver-makes-code for some of the code behind this mixin +// https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_ClientPlayerInteractionManager.java +@Mixin(ClientPlayerInteractionManager.class) +public class ClientPlayerInteractionManagerMixin { + @Shadow + @Final + private MinecraftClient client; + + @Redirect(method = "breakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;I)Z")) + private boolean tryBreakSlab(World instance, BlockPos pos, BlockState state, int flags) { + var breakState = instance.getBlockState(pos); + if (breakState.getBlock() instanceof SlabBlock) { + SlabType slabType = breakState.get(SlabBlock.TYPE); + if (slabType != SlabType.DOUBLE) return instance.setBlockState(pos, state, flags); + var entity = client.player; + assert entity != null; + Vec3d vec3d = entity.getCameraPosVec(0); + Vec3d vec3d2 = entity.getRotationVec(0); + Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); + var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + SlabType breakType = PlacementUtil.calcKleeSlab(breakState, cast); + return instance.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType), flags); + } + return instance.setBlockState(pos, state, flags); + } +} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java new file mode 100644 index 0000000..0e4bd69 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -0,0 +1,47 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import io.github.andrew6rant.autoslabs.PlacementUtil; +import net.minecraft.block.SlabBlock; +import net.minecraft.block.enums.SlabType; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.network.ServerPlayerInteractionManager; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +// Massive thanks to Oliver-makes-code for some of the code behind this mixin +// https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_ServerPlayerInteractionManager.java +@Mixin(ServerPlayerInteractionManager.class) +public class ServerPlayerInteractionManagerMixin { + @Shadow + @Final + protected ServerPlayerEntity player; + + @Shadow + protected ServerWorld world; + + @Redirect(method = "tryBreakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;removeBlock(Lnet/minecraft/util/math/BlockPos;Z)Z")) + private boolean tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { + var breakState = instance.getBlockState(pos); + if (breakState.getBlock() instanceof SlabBlock) { + SlabType slabType = breakState.get(SlabBlock.TYPE); + if (slabType != SlabType.DOUBLE) return instance.removeBlock(pos, b); + var entity = player; + Vec3d vec3d = entity.getCameraPosVec(0); + Vec3d vec3d2 = entity.getRotationVec(0); + Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); + var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + SlabType breakType = PlacementUtil.calcKleeSlab(breakState, cast); + var removed = instance.removeBlock(pos, b); + world.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType)); + return removed; + } + return instance.removeBlock(pos, b); + } +} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 2d98fa0..04d3291 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -3,8 +3,11 @@ import io.github.andrew6rant.autoslabs.PlacementUtil; import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.enums.SlabType; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; import net.minecraft.state.property.BooleanProperty; import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; @@ -12,6 +15,8 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -54,6 +59,11 @@ public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos po }; } + @Override + public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) { + super.afterBreak(world, player, pos, state.with(TYPE, SlabType.TOP), blockEntity, stack); + } + static { VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); TYPE = Properties.SLAB_TYPE; diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index fa2c0f1..85e7c16 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -4,10 +4,12 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "FileResourcePackProviderMixin", + "ServerPlayerInteractionManagerMixin", "SlabBlockMixin", "StateMixin" ], "client": [ + "ClientPlayerInteractionManagerMixin", "WorldRendererMixin" ], "injectors": { From f2c48d10662cb52d4517ef91632859e2f3e0b15d Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 10 Jul 2023 20:35:26 -0400 Subject: [PATCH 04/71] vastly improve slab Placement --- .../andrew6rant/autoslabs/PlacementUtil.java | 262 +++++++++++---- .../andrew6rant/autoslabs/RenderUtil.java | 298 +++++------------- .../io/github/andrew6rant/autoslabs/Util.java | 134 ++++++++ .../autoslabs/mixin/SlabBlockMixin.java | 5 + 4 files changed, 419 insertions(+), 280 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/Util.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 532f7f1..e5823fd 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -2,25 +2,21 @@ import net.minecraft.block.BlockState; import net.minecraft.block.enums.SlabType; +import net.minecraft.client.MinecraftClient; import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; -import net.minecraft.state.property.EnumProperty; +import net.minecraft.item.ItemStack; import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec3d; +import static io.github.andrew6rant.autoslabs.Util.*; import static net.minecraft.block.SlabBlock.TYPE; import static net.minecraft.block.SlabBlock.WATERLOGGED; -import static net.minecraft.block.enums.SlabType.BOTTOM; -import static net.minecraft.block.enums.SlabType.TOP; public class PlacementUtil { - private static final EnumProperty VERTICAL_TYPE; - static { - VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); - } public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) { Direction side = cast.getSide(); @@ -63,65 +59,213 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) return breakType; } + public static boolean canReplace(BlockState state, ItemPlacementContext context) { + ItemStack itemStack = context.getStack(); + SlabType slabType = state.get(TYPE); + if (slabType != SlabType.DOUBLE && itemStack.isOf(state.getBlock().asItem())) { + if (context.canReplaceExisting()) { + HitResult hitResult = MinecraftClient.getInstance().crosshairTarget; + if (hitResult.getType() == HitResult.Type.BLOCK) { + BlockHitResult result = (BlockHitResult) hitResult; + HitPart part = getHitPart(result); + boolean topHalfX = context.getHitPos().x - (double) context.getBlockPos().getX() > 0.5; + boolean topHalfY = context.getHitPos().y - (double) context.getBlockPos().getY() > 0.5; + boolean topHalfZ = context.getHitPos().z - (double) context.getBlockPos().getZ() > 0.5; + Direction direction = context.getSide(); + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (verticalType != null) { + if (verticalType == VerticalType.FALSE) { + if (slabType == SlabType.BOTTOM) { + if (direction == Direction.UP || topHalfY && direction.getAxis().isHorizontal()) { + return part == HitPart.CENTER; + } + } else { + if (direction == Direction.DOWN || !topHalfY && direction.getAxis().isHorizontal()) { + return part == HitPart.CENTER; + } + } + } else if (verticalType == VerticalType.NORTH_SOUTH) { + if (slabType == SlabType.BOTTOM) { + if (direction == Direction.NORTH || topHalfZ && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } else { + if (direction == Direction.SOUTH || !topHalfZ && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } + } else if (verticalType == VerticalType.EAST_WEST) { + if (slabType == SlabType.BOTTOM) { + if (direction == Direction.EAST || topHalfX && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } else { + if (direction == Direction.WEST || !topHalfX && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } + } + } + } + } else { + return true; + } + } else { + return false; + } + return false; + } + public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState state) { BlockPos blockPos = ctx.getBlockPos(); BlockState blockState = ctx.getWorld().getBlockState(blockPos); - if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); - } else { - Direction ctxSide = ctx.getSide(); - Vec3d vec3d = ctx.getHitPos().subtract(blockPos.getX(), blockPos.getY(), blockPos.getZ()); - FluidState fluidState = ctx.getWorld().getFluidState(blockPos); - - double x = vec3d.x; - double y = vec3d.y; - double z = vec3d.z; - - double offH = 0; - double offV = 0; - + Direction ctxSide = ctx.getSide(); + FluidState fluidState = ctx.getWorld().getFluidState(blockPos); + HitResult hitResult = MinecraftClient.getInstance().crosshairTarget; + if (hitResult.getType() == HitResult.Type.BLOCK) { + BlockHitResult result = (BlockHitResult) hitResult; + HitPart part = getHitPart(result); switch (ctxSide) { - case UP, DOWN -> { - offH = Math.abs(x - 0.5d); - offV = Math.abs(z - 0.5d); - if (offH > 0.25d || offV > 0.25d) { - if (offH > offV) { - return state.with(TYPE, x < 0.5d ? BOTTOM : TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } else { - return state.with(TYPE, z < 0.5d ? TOP : BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } - } else { - return state.with(TYPE, y < 0.5d ? BOTTOM : TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } + case UP -> { + return calcUpPlacement(blockState, state, part, fluidState); } - case NORTH, SOUTH -> { - offH = Math.abs(x - 0.5d); - offV = Math.abs(y - 0.5d); - if (offH > 0.25d || offV > 0.25d) { - if (offH > offV) { - return state.with(TYPE, x < 0.5d ? BOTTOM : TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } else { - return state.with(TYPE, y < 0.5d ? BOTTOM : TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } - } else { - return state.with(TYPE, z < 0.5d ? TOP : BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } + case DOWN -> { + return calcDownPlacement(blockState, state, part, fluidState); } - case EAST, WEST -> { - offH = Math.abs(z - 0.5d); - offV = Math.abs(y - 0.5d); - if (offH > 0.25d || offV > 0.25d) { - if (offH > offV) { - return state.with(TYPE, z < 0.5d ? TOP : BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } else { - return state.with(TYPE, y < 0.5d ? BOTTOM : TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } - } else { - return state.with(TYPE, x < 0.5d ? BOTTOM : TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } + case NORTH -> { + return calcNorthPlacement(blockState, state, part, fluidState); + } + case SOUTH -> { + return calcSouthPlacement(blockState, state, part, fluidState); } + case EAST -> { + return calcEastPlacement(blockState, state, part, fluidState); + } + case WEST -> { + return calcWestPlacement(blockState, state, part, fluidState); + } + } + } + return null; + } + + public static BlockState calcUpPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { + if (part != null) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + if (part == HitPart.CENTER) { + return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.BOTTOM) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.TOP) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.LEFT) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.RIGHT) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + } + return null; + } + + public static BlockState calcDownPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { + if (part != null) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + if (part == HitPart.CENTER) { + return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.BOTTOM) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.TOP) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.LEFT) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.RIGHT) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + } + return null; + } + + public static BlockState calcNorthPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { + if (part != null) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + if (part == HitPart.CENTER) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.BOTTOM) { + return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.TOP) { + return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.LEFT) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.RIGHT) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + } + return null; + } + + public static BlockState calcSouthPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { + if (part != null) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + if (part == HitPart.CENTER) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.BOTTOM) { + return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.TOP) { + return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.LEFT) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.RIGHT) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + } + return null; + } + + public static BlockState calcEastPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { + if (part != null) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + if (part == HitPart.CENTER) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.BOTTOM) { + return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.TOP) { + return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.LEFT) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.RIGHT) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + } + return null; + } + + public static BlockState calcWestPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { + if (part != null) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + if (part == HitPart.CENTER) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.BOTTOM) { + return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.TOP) { + return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.LEFT) { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } else if (part == HitPart.RIGHT) { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } + return null; } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 9923023..19d5269 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -9,24 +9,18 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.state.property.EnumProperty; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec2f; import net.minecraft.util.math.Vec3d; import org.joml.Vector3f; import java.util.Objects; -import java.util.Optional; -// massive thanks to Schauweg for much of this code +import static io.github.andrew6rant.autoslabs.Util.*; + +// massive thanks to Schauweg for some of this code public class RenderUtil { - private static final EnumProperty VERTICAL_TYPE; - static { - VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); - } public static void renderOverlay(MatrixStack matrices, Camera camera) { ClientPlayerEntity player = MinecraftClient.getInstance().player; @@ -57,7 +51,6 @@ public static void renderOverlay(MatrixStack matrices, Camera camera) { matrices.pop(); RenderSystem.enableDepthTest(); RenderSystem.enableCull(); - } } } @@ -67,24 +60,7 @@ private static void drawLine(MatrixStack.Entry entry, BufferBuilder buffer, Vec3 float r = 0; float g = 0; float b = 0; - float a = 0.2f; - - Vector3f startRaw = new Vector3f((float) (start.x + camDif.x), (float) (start.y + camDif.y), (float) (start.z + camDif.z)); - Vector3f endRaw = new Vector3f((float) (end.x + camDif.x), (float) (end.y + camDif.y), (float) (end.z + camDif.z)); - - buffer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) - .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); - - buffer.vertex(entry.getPositionMatrix(), endRaw.x, endRaw.y, endRaw.z) - .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); - } - - private static void drawCulledLine(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f start, Vector3f end) { - Vector3f normal = getNormalAngle(start, end); - float r = 0; - float g = 0; - float b = 0; - float a = 0.2f; + float a = 0.4f; Vector3f startRaw = new Vector3f((float) (start.x + camDif.x), (float) (start.y + camDif.y), (float) (start.z + camDif.z)); Vector3f endRaw = new Vector3f((float) (end.x + camDif.x), (float) (end.y + camDif.y), (float) (end.z + camDif.z)); @@ -92,122 +68,100 @@ private static void drawCulledLine(MatrixStack.Entry entry, BufferBuilder buffer buffer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); - //System.out.println("x: " + endRaw.x + " y: " + endRaw.y+ " z: " + endRaw.z); - //.vertex(entry.getPositionMatrix(), Math.min(endRaw.x, 0.5f), Math.min(endRaw.y, 0.5f), Math.min(endRaw.z, 0.5f)) - // .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); buffer.vertex(entry.getPositionMatrix(), endRaw.x, endRaw.y, endRaw.z) .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); } - public static Vector3f getNormalAngle(Vector3f start, Vector3f end) { - float xLength = end.x - start.x; - float yLength = end.y - start.y; - float zLength = end.z - start.z; - float distance = (float) Math.sqrt(xLength * xLength + yLength * yLength + zLength * zLength); - xLength /= distance; - yLength /= distance; - zLength /= distance; - return new Vector3f(xLength, yLength, zLength); - } - private static void renderOverlayToDirection(BlockState state, Direction side, MatrixStack matrixStack, Vec3d camDif, HitPart part) { - - //ArrayList points = new ArrayList(); Vector3f vecBottomLeft = null, vecBottomRight = null, vecTopLeft = null, vecTopRight = null, vecCenterBottomLeft = null, vecCenterBottomRight = null, vecCenterTopLeft = null, vecCenterTopRight = null, vecCenterMiddleLeft = null, vecCenterMiddleRight = null, vecCenterMiddleBottom = null, vecCenterMiddleTop = null; - //System.out.println(side); - //@formatter:off switch (side) { case DOWN -> { - vecBottomLeft = new Vector3f(0, 0, 0); - vecBottomRight = new Vector3f(1, 0, 0); - vecTopLeft = new Vector3f(0, 0, 1); - vecTopRight = new Vector3f(1, 0, 1); - vecCenterBottomLeft = new Vector3f(0.25f, 0, 0.25f); - vecCenterBottomRight = new Vector3f(0.75f, 0, 0.25f); - vecCenterTopLeft = new Vector3f(0.25f, 0, 0.75f); - vecCenterTopRight = new Vector3f(0.75f, 0, 0.75f); - vecCenterMiddleLeft = new Vector3f(0.25f, 0, 0.5f); - vecCenterMiddleRight = new Vector3f(0.75f, 0, 0.5f); - vecCenterMiddleBottom = new Vector3f(0.5f, 0, 0.25f); - vecCenterMiddleTop = new Vector3f(0.5f, 0, 0.75f); + vecBottomLeft = new Vector3f(0f, 0f, 0f); + vecBottomRight = new Vector3f(1f, 0f, 0f); + vecTopLeft = new Vector3f(0f, 0f, 1f); + vecTopRight = new Vector3f(1f, 0f, 1f); + vecCenterBottomLeft = new Vector3f(0.25f, 0f, 0.25f); + vecCenterBottomRight = new Vector3f(0.75f, 0f, 0.25f); + vecCenterTopLeft = new Vector3f(0.25f, 0f, 0.75f); + vecCenterTopRight = new Vector3f(0.75f, 0f, 0.75f); + vecCenterMiddleLeft = new Vector3f(0.25f, 0f, 0.5f); + vecCenterMiddleRight = new Vector3f(0.75f, 0f, 0.5f); + vecCenterMiddleBottom = new Vector3f(0.5f, 0f, 0.25f); + vecCenterMiddleTop = new Vector3f(0.5f, 0f, 0.75f); } case UP -> { - vecBottomLeft = new Vector3f(1, 1, 0); - vecBottomRight = new Vector3f(0, 1, 0); - vecTopLeft = new Vector3f(1, 1, 1); - vecTopRight = new Vector3f(0, 1, 1); - vecCenterBottomLeft = new Vector3f(0.75f, 1, 0.25f); - vecCenterBottomRight = new Vector3f(0.25f, 1, 0.25f); - vecCenterTopLeft = new Vector3f(0.75f, 1, 0.75f); - vecCenterTopRight = new Vector3f(0.25f, 1, 0.75f); - vecCenterMiddleLeft = new Vector3f(0.75f, 1, 0.5f); - vecCenterMiddleRight = new Vector3f(0.25f, 1, 0.5f); - vecCenterMiddleBottom = new Vector3f(0.5f, 1, 0.25f); - vecCenterMiddleTop = new Vector3f(0.5f, 1, 0.75f); + vecBottomLeft = new Vector3f(1f, 1f, 0f); + vecBottomRight = new Vector3f(0f, 1f, 0f); + vecTopLeft = new Vector3f(1f, 1f, 1f); + vecTopRight = new Vector3f(0f, 1f, 1f); + vecCenterBottomLeft = new Vector3f(0.75f, 1f, 0.25f); + vecCenterBottomRight = new Vector3f(0.25f, 1f, 0.25f); + vecCenterTopLeft = new Vector3f(0.75f, 1f, 0.75f); + vecCenterTopRight = new Vector3f(0.25f, 1f, 0.75f); + vecCenterMiddleLeft = new Vector3f(0.75f, 1f, 0.5f); + vecCenterMiddleRight = new Vector3f(0.25f, 1f, 0.5f); + vecCenterMiddleBottom = new Vector3f(0.5f, 1f, 0.25f); + vecCenterMiddleTop = new Vector3f(0.5f, 1f, 0.75f); } case NORTH -> { - vecBottomLeft = new Vector3f(1, 0, 0); - vecBottomRight = new Vector3f(0, 0, 0); - vecTopLeft = new Vector3f(1, 1, 0); - vecTopRight = new Vector3f(0, 1, 0); - vecCenterBottomLeft = new Vector3f(0.75f, 0.25f, 0); - vecCenterBottomRight = new Vector3f(0.25f, 0.25f, 0); - vecCenterTopLeft = new Vector3f(0.75f, 0.75f, 0); - vecCenterTopRight = new Vector3f(0.25f, 0.75f, 0); - vecCenterMiddleLeft = new Vector3f(0.75f, 0.5f, 0); - vecCenterMiddleRight = new Vector3f(0.25f, 0.5f, 0); - - vecCenterMiddleBottom = new Vector3f(0.5f, 0.25f, 0); - vecCenterMiddleTop = new Vector3f(0.5f, .75f, 0); + vecBottomLeft = new Vector3f(1f, 0f, 0f); + vecBottomRight = new Vector3f(0f, 0f, 0f); + vecTopLeft = new Vector3f(1f, 1f, 0f); + vecTopRight = new Vector3f(0f, 1f, 0f); + vecCenterBottomLeft = new Vector3f(0.75f, 0.25f, 0f); + vecCenterBottomRight = new Vector3f(0.25f, 0.25f, 0f); + vecCenterTopLeft = new Vector3f(0.75f, 0.75f, 0f); + vecCenterTopRight = new Vector3f(0.25f, 0.75f, 0f); + vecCenterMiddleLeft = new Vector3f(0.75f, 0.5f, 0f); + vecCenterMiddleRight = new Vector3f(0.25f, 0.5f, 0f); + vecCenterMiddleBottom = new Vector3f(0.5f, 0.25f, 0f); + vecCenterMiddleTop = new Vector3f(0.5f, .75f, 0f); } case SOUTH -> { - vecBottomLeft = new Vector3f(0, 0, 1); - vecBottomRight = new Vector3f(1, 0, 1); - vecTopLeft = new Vector3f(0, 1, 1); - vecTopRight = new Vector3f(1, 1, 1); - vecCenterBottomLeft = new Vector3f(0.25f, 0.25f, 1); - vecCenterBottomRight = new Vector3f(0.75f, 0.25f, 1); - vecCenterTopLeft = new Vector3f(0.25f, 0.75f, 1); - vecCenterTopRight = new Vector3f(0.75f, 0.75f, 1); - vecCenterMiddleLeft = new Vector3f(0.25f, 0.5f, 1); - vecCenterMiddleRight = new Vector3f(0.75f, 0.5f, 1); - - vecCenterMiddleBottom = new Vector3f(0.5f, 0.25f, 1); - vecCenterMiddleTop = new Vector3f(0.5f, 0.75f, 1); + vecBottomLeft = new Vector3f(0f, 0f, 1f); + vecBottomRight = new Vector3f(1f, 0f, 1f); + vecTopLeft = new Vector3f(0f, 1f, 1f); + vecTopRight = new Vector3f(1f, 1f, 1f); + vecCenterBottomLeft = new Vector3f(0.25f, 0.25f, 1f); + vecCenterBottomRight = new Vector3f(0.75f, 0.25f, 1f); + vecCenterTopLeft = new Vector3f(0.25f, 0.75f, 1f); + vecCenterTopRight = new Vector3f(0.75f, 0.75f, 1f); + vecCenterMiddleLeft = new Vector3f(0.25f, 0.5f, 1f); + vecCenterMiddleRight = new Vector3f(0.75f, 0.5f, 1f); + vecCenterMiddleBottom = new Vector3f(0.5f, 0.25f, 1f); + vecCenterMiddleTop = new Vector3f(0.5f, 0.75f, 1f); } case WEST -> { - vecBottomLeft = new Vector3f(0, 0, 0); - vecBottomRight = new Vector3f(0, 0, 1); - vecTopLeft = new Vector3f(0, 1, 0); - vecTopRight = new Vector3f(0, 1, 1); - vecCenterBottomLeft = new Vector3f(0, 0.25f, 0.25f); - vecCenterBottomRight = new Vector3f(0, 0.25f, 0.75f); - vecCenterTopLeft = new Vector3f(0, 0.75f, 0.25f); - vecCenterTopRight = new Vector3f(0, 0.75f, 0.75f); - vecCenterMiddleLeft = new Vector3f(0, 0.5f, 0.25f); - vecCenterMiddleRight = new Vector3f(0, 0.5f, 0.75f); - - vecCenterMiddleBottom = new Vector3f(0f, 0.25f, 0.5f); - vecCenterMiddleTop = new Vector3f(0f, 0.75f, 0.5f); + vecBottomLeft = new Vector3f(0f, 0f, 0f); + vecBottomRight = new Vector3f(0f, 0f, 1f); + vecTopLeft = new Vector3f(0f, 1f, 0f); + vecTopRight = new Vector3f(0f, 1f, 1f); + vecCenterBottomLeft = new Vector3f(0f, 0.25f, 0.25f); + vecCenterBottomRight = new Vector3f(0f, 0.25f, 0.75f); + vecCenterTopLeft = new Vector3f(0f, 0.75f, 0.25f); + vecCenterTopRight = new Vector3f(0f, 0.75f, 0.75f); + vecCenterMiddleLeft = new Vector3f(0f, 0.5f, 0.25f); + vecCenterMiddleRight = new Vector3f(0f, 0.5f, 0.75f); + vecCenterMiddleBottom = new Vector3f(0f, 0.25f, 0.5f); + vecCenterMiddleTop = new Vector3f(0f, 0.75f, 0.5f); } case EAST -> { - vecBottomLeft = new Vector3f(1, 0, 1); - vecBottomRight = new Vector3f(1, 0, 0); - vecTopLeft = new Vector3f(1, 1, 1); - vecTopRight = new Vector3f(1, 1, 0); - vecCenterBottomLeft = new Vector3f(1, 0.25f, 0.75f); - vecCenterBottomRight = new Vector3f(1, 0.25f, 0.25f); - vecCenterTopLeft = new Vector3f(1, 0.75f, 0.75f); - vecCenterTopRight = new Vector3f(1, 0.75f, 0.25f); - vecCenterMiddleLeft = new Vector3f(1, 0.5f, 0.75f); - vecCenterMiddleRight = new Vector3f(1, 0.5f, 0.25f); - - vecCenterMiddleBottom = new Vector3f(1, 0.25f, 0.5f); - vecCenterMiddleTop = new Vector3f(1, 0.75f, 0.5f); + vecBottomLeft = new Vector3f(1f, 0f, 1f); + vecBottomRight = new Vector3f(1f, 0f, 0f); + vecTopLeft = new Vector3f(1f, 1f, 1f); + vecTopRight = new Vector3f(1f, 1f, 0f); + vecCenterBottomLeft = new Vector3f(1f, 0.25f, 0.75f); + vecCenterBottomRight = new Vector3f(1f, 0.25f, 0.25f); + vecCenterTopLeft = new Vector3f(1f, 0.75f, 0.75f); + vecCenterTopRight = new Vector3f(1f, 0.75f, 0.25f); + vecCenterMiddleLeft = new Vector3f(1f, 0.5f, 0.75f); + vecCenterMiddleRight = new Vector3f(1f, 0.5f, 0.25f); + vecCenterMiddleBottom = new Vector3f(1f, 0.25f, 0.5f); + vecCenterMiddleTop = new Vector3f(1f, 0.75f, 0.5f); } } //@formatter:on @@ -393,98 +347,6 @@ private static void drawDefaultSquare(MatrixStack.Entry entry, BufferBuilder buf drawLine(entry, buffer, camDif, vecCenterStartCorner, vecCenterEndCorner); } - public static HitPart getHitPart(BlockHitResult hit) { - Optional hitPos = getHitPos(hit); - if (hitPos.isEmpty()) return null; - - Vec2f hPos = hitPos.get(); - - double x = hPos.x; - double y = hPos.y; - - double offH = Math.abs(x - 0.5d); - double offV = Math.abs(y - 0.5d); - - if (offH > 0.25d || offV > 0.25d) { - if (offH > offV) { - return x < 0.5d ? HitPart.LEFT : HitPart.RIGHT; - } else { - return y < 0.5d ? HitPart.BOTTOM : HitPart.TOP; - } - } else { - return HitPart.CENTER; - } - } - - private static Optional getHitPos(BlockHitResult hit) { - Direction direction = hit.getSide(); - BlockPos blockPos = hit.getBlockPos().offset(direction); - Vec3d vec3d = hit.getPos().subtract(blockPos.getX(), blockPos.getY(), blockPos.getZ()); - double x = vec3d.getX(); - double y = vec3d.getY(); - double z = vec3d.getZ(); - return switch (direction) { - case NORTH -> Optional.of(new Vec2f((float) (1.0 - x), (float) y)); - case SOUTH -> Optional.of(new Vec2f((float) x, (float) y)); - case WEST -> Optional.of(new Vec2f((float) z, (float) y)); - case EAST -> Optional.of(new Vec2f((float) (1.0 - z), (float) y)); - case DOWN -> Optional.of(new Vec2f((float) x, (float) z)); - case UP -> Optional.of(new Vec2f((float) (1.0 - x), (float) z)); - }; - } - - /** - * Gets the camera offset from a position - * - * @param camera Camera position - * @param pos Position to get difference - * @return Difference - */ - public static Vec3d getCameraOffset(Vec3d camera, BlockPos pos, Direction side) { - BlockState state = MinecraftClient.getInstance().world.getBlockState(pos); - double xDif = (double) pos.getX() - camera.x; - double yDif = (double) pos.getY() - camera.y; - double zDif = (double) pos.getZ() - camera.z; - if (state.getBlock() instanceof SlabBlock) { - SlabType slabType = state.get(SlabBlock.TYPE); - VerticalType verticalType = state.get(VERTICAL_TYPE); - switch (side) { - case UP -> { - if ((slabType == SlabType.BOTTOM) && (verticalType == VerticalType.FALSE)) { - yDif -= 0.5d; - } - } - case DOWN -> { - if ((slabType == SlabType.TOP) && (verticalType == VerticalType.FALSE)) { - yDif += 0.5d; - } - } - case NORTH -> { - if ((verticalType == VerticalType.NORTH_SOUTH) && (slabType == SlabType.BOTTOM)) { - zDif += 0.5d; - } - } - case SOUTH -> { - if ((verticalType == VerticalType.NORTH_SOUTH) && (slabType == SlabType.TOP)) { - zDif -= 0.5d; - } - } - case WEST -> { - if ((verticalType == VerticalType.EAST_WEST) && (slabType == SlabType.TOP)) { - xDif += 0.5d; - } - } - case EAST -> { - if ((verticalType == VerticalType.EAST_WEST) && (slabType == SlabType.BOTTOM)) { - xDif -= 0.5d; - } - } - } - } - return new Vec3d(xDif, yDif, zDif); - } - - public static void drawQuad(Vector3f pos1, Vector3f pos2, Vector3f pos3, Vector3f pos4, Vec3d camDif, MatrixStack matrixStack) { /* Vector3f pos1Raw = new Vector3f((float) (pos1.x + camDif.x), (float) (pos1.y + camDif.y), (float) (pos1.z + camDif.z)); @@ -508,12 +370,6 @@ public static void drawQuad(Vector3f pos1, Vector3f pos2, Vector3f pos3, Vector3 */ } - public enum HitPart { - CENTER, - LEFT, - RIGHT, - BOTTOM, - TOP - } + } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/Util.java new file mode 100644 index 0000000..a55ae29 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/Util.java @@ -0,0 +1,134 @@ +package io.github.andrew6rant.autoslabs; + +import net.minecraft.block.BlockState; +import net.minecraft.block.SlabBlock; +import net.minecraft.block.enums.SlabType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec2f; +import net.minecraft.util.math.Vec3d; +import org.joml.Vector3f; + +import java.util.Optional; + +// massive thanks to Schauweg for some of this code +public class Util { + + public static final EnumProperty VERTICAL_TYPE; + static { + VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); + } + + /** + * Gets the camera offset from a position + * + * @param camera Camera position + * @param pos Position to get difference + * @return Difference + */ + public static Vec3d getCameraOffset(Vec3d camera, BlockPos pos, Direction side) { + BlockState state = MinecraftClient.getInstance().world.getBlockState(pos); + double xDif = (double) pos.getX() - camera.x; + double yDif = (double) pos.getY() - camera.y; + double zDif = (double) pos.getZ() - camera.z; + if (state.getBlock() instanceof SlabBlock) { + SlabType slabType = state.get(SlabBlock.TYPE); + VerticalType verticalType = state.get(VERTICAL_TYPE); + switch (side) { + case UP -> { + if ((slabType == SlabType.BOTTOM) && (verticalType == VerticalType.FALSE)) { + yDif -= 0.5d; + } + } + case DOWN -> { + if ((slabType == SlabType.TOP) && (verticalType == VerticalType.FALSE)) { + yDif += 0.5d; + } + } + case NORTH -> { + if ((verticalType == VerticalType.NORTH_SOUTH) && (slabType == SlabType.BOTTOM)) { + zDif += 0.5d; + } + } + case SOUTH -> { + if ((verticalType == VerticalType.NORTH_SOUTH) && (slabType == SlabType.TOP)) { + zDif -= 0.5d; + } + } + case WEST -> { + if ((verticalType == VerticalType.EAST_WEST) && (slabType == SlabType.TOP)) { + xDif += 0.5d; + } + } + case EAST -> { + if ((verticalType == VerticalType.EAST_WEST) && (slabType == SlabType.BOTTOM)) { + xDif -= 0.5d; + } + } + } + } + return new Vec3d(xDif, yDif, zDif); + } + + public static HitPart getHitPart(BlockHitResult hit) { + Optional hitPos = getHitPos(hit); + if (hitPos.isEmpty()) return null; + + Vec2f hPos = hitPos.get(); + + double x = hPos.x; + double y = hPos.y; + + double offH = Math.abs(x - 0.5d); + double offV = Math.abs(y - 0.5d); + + if (offH > 0.25d || offV > 0.25d) { + if (offH > offV) { + return x < 0.5d ? HitPart.LEFT : HitPart.RIGHT; + } else { + return y < 0.5d ? HitPart.BOTTOM : HitPart.TOP; + } + } else { + return HitPart.CENTER; + } + } + + private static Optional getHitPos(BlockHitResult hit) { + Direction direction = hit.getSide(); + BlockPos blockPos = hit.getBlockPos().offset(direction); + Vec3d vec3d = hit.getPos().subtract(blockPos.getX(), blockPos.getY(), blockPos.getZ()); + double x = vec3d.getX(); + double y = vec3d.getY(); + double z = vec3d.getZ(); + return switch (direction) { + case NORTH -> Optional.of(new Vec2f((float) (1.0 - x), (float) y)); + case SOUTH -> Optional.of(new Vec2f((float) x, (float) y)); + case WEST -> Optional.of(new Vec2f((float) z, (float) y)); + case EAST -> Optional.of(new Vec2f((float) (1.0 - z), (float) y)); + case DOWN -> Optional.of(new Vec2f((float) x, (float) z)); + case UP -> Optional.of(new Vec2f((float) (1.0 - x), (float) z)); + }; + } + + public static Vector3f getNormalAngle(Vector3f start, Vector3f end) { + float xLength = end.x - start.x; + float yLength = end.y - start.y; + float zLength = end.z - start.z; + float distance = (float) Math.sqrt(xLength * xLength + yLength * yLength + zLength * zLength); + xLength /= distance; + yLength /= distance; + zLength /= distance; + return new Vector3f(xLength, yLength, zLength); + } + + public enum HitPart { + CENTER, + LEFT, + RIGHT, + BOTTOM, + TOP + } +} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 04d3291..80f275e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -45,6 +45,11 @@ public BlockState getPlacementState(ItemPlacementContext ctx) { return PlacementUtil.calcPlacementState(ctx, this.getDefaultState()); } + @Override + public boolean canReplace(BlockState state, ItemPlacementContext context) { + return PlacementUtil.canReplace(state, context); + } + @Override public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { SlabType slabType = state.get(TYPE); From 37b39247c278e7a9fc8b0a75f7a3a6c033f24d46 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 10 Jul 2023 20:45:21 -0400 Subject: [PATCH 05/71] fix bug with incorrect placement logic --- .../java/io/github/andrew6rant/autoslabs/PlacementUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index e5823fd..71d94a8 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -86,11 +86,11 @@ public static boolean canReplace(BlockState state, ItemPlacementContext context) } } else if (verticalType == VerticalType.NORTH_SOUTH) { if (slabType == SlabType.BOTTOM) { - if (direction == Direction.NORTH || topHalfZ && direction.getAxis().isVertical()) { + if (direction == Direction.NORTH || !topHalfZ && direction.getAxis().isVertical()) { return part == HitPart.CENTER; } } else { - if (direction == Direction.SOUTH || !topHalfZ && direction.getAxis().isVertical()) { + if (direction == Direction.SOUTH || topHalfZ && direction.getAxis().isVertical()) { return part == HitPart.CENTER; } } From 6ea07099d41b257754103e9db4bb5a5e00d0f415 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 10 Jul 2023 23:19:02 -0400 Subject: [PATCH 06/71] properly render each slab's outline in double slab --- .../autoslabs/mixin/SlabBlockMixin.java | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 80f275e..7f2a23e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -12,14 +12,19 @@ import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; +import net.minecraft.world.RaycastContext; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import static net.minecraft.block.enums.SlabType.TOP; @@ -50,6 +55,62 @@ public boolean canReplace(BlockState state, ItemPlacementContext context) { return PlacementUtil.canReplace(state, context); } + // Massive thanks to Oliver-makes-code for some of the code behind this mixin + // https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_SlabBlock.java + @Inject(at = @At("RETURN"), method = "getOutlineShape", cancellable = true) + private void autoslab$getBetterOutline(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + if (!(context instanceof EntityShapeContext entityContext)) return; + SlabType slabType = state.get(TYPE); + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (slabType != SlabType.DOUBLE) return; + var entity = entityContext.getEntity(); + if (entity == null) return; + Vec3d vec3d = entity.getCameraPosVec(0); + Vec3d vec3d2 = entity.getRotationVec(0); + Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); + var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + var side = cast.getSide(); + switch (verticalType) { + case FALSE -> { + switch (side) { + case UP -> cir.setReturnValue(TOP_SHAPE); + case DOWN -> cir.setReturnValue(BOTTOM_SHAPE); + default -> { + var ypos = cast.getPos().y; + var yoffset = ((ypos % 1) + 1) % 1; + if (yoffset > 0.5) cir.setReturnValue(TOP_SHAPE); + else cir.setReturnValue(BOTTOM_SHAPE); + } + } + } + case NORTH_SOUTH -> { + switch (side) { + case NORTH -> cir.setReturnValue(VERTICAL_NORTH_SOUTH_TOP_SHAPE); + case SOUTH -> cir.setReturnValue(VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE); + default -> { + var zpos = cast.getPos().z; + var zoffset = ((zpos % 1) + 1) % 1; + if (zoffset > 0.5) cir.setReturnValue(VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE); + else cir.setReturnValue(VERTICAL_NORTH_SOUTH_TOP_SHAPE); + } + } + } + case EAST_WEST -> { + switch (side) { + case EAST -> cir.setReturnValue(VERTICAL_EAST_WEST_TOP_SHAPE); + case WEST -> cir.setReturnValue(VERTICAL_EAST_WEST_BOTTOM_SHAPE); + default -> { + var xpos = cast.getPos().x; + var xoffset = ((xpos % 1) + 1) % 1; + if (xoffset > 0.5) cir.setReturnValue(VERTICAL_EAST_WEST_TOP_SHAPE); + else cir.setReturnValue(VERTICAL_EAST_WEST_BOTTOM_SHAPE); + } + } + } + } + + } + @Override public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { SlabType slabType = state.get(TYPE); @@ -66,7 +127,7 @@ public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos po @Override public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) { - super.afterBreak(world, player, pos, state.with(TYPE, SlabType.TOP), blockEntity, stack); + super.afterBreak(world, player, pos, state.with(TYPE, TOP), blockEntity, stack); } static { From 5a38f6fdf20ddb9fd7bd8fa9af5ba0fbf4ab41fc Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Jul 2023 00:19:33 -0400 Subject: [PATCH 07/71] render block break overlay on only half of a double slab --- .../io/github/andrew6rant/autoslabs/Util.java | 18 +++++ .../mixin/BlockRenderManagerMixin.java | 78 +++++++++++++++++++ .../autoslabs/mixin/SlabBlockMixin.java | 21 +---- src/main/resources/autoslabs.mixins.json | 1 + 4 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/Util.java index a55ae29..cd82f59 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/Util.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/Util.java @@ -1,15 +1,18 @@ package io.github.andrew6rant.autoslabs; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; import net.minecraft.state.property.EnumProperty; +import net.minecraft.state.property.Properties; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec2f; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; import org.joml.Vector3f; import java.util.Optional; @@ -18,8 +21,23 @@ public class Util { public static final EnumProperty VERTICAL_TYPE; + public static final EnumProperty TYPE; + public static final VoxelShape BOTTOM_SHAPE; + public static final VoxelShape TOP_SHAPE; + public static final VoxelShape VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE; + public static final VoxelShape VERTICAL_NORTH_SOUTH_TOP_SHAPE; + public static final VoxelShape VERTICAL_EAST_WEST_BOTTOM_SHAPE; + public static final VoxelShape VERTICAL_EAST_WEST_TOP_SHAPE; + static { VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); + TYPE = Properties.SLAB_TYPE; + BOTTOM_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 8.0, 16.0); + TOP_SHAPE = Block.createCuboidShape(0.0, 8.0, 0.0, 16.0, 16.0, 16.0); + VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE = Block.createCuboidShape(0.0, 0.0, 8.0, 16.0, 16.0, 16.0); + VERTICAL_NORTH_SOUTH_TOP_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 16.0, 8.0); + VERTICAL_EAST_WEST_BOTTOM_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 8.0, 16.0, 16.0); + VERTICAL_EAST_WEST_TOP_SHAPE = Block.createCuboidShape(8.0, 0.0, 0.0, 16.0, 16.0, 16.0); } /** diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java new file mode 100644 index 0000000..156e35d --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -0,0 +1,78 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import io.github.andrew6rant.autoslabs.VerticalType; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.SlabBlock; +import net.minecraft.block.enums.SlabType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.OverlayTexture; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.block.BlockModelRenderer; +import net.minecraft.client.render.block.BlockModels; +import net.minecraft.client.render.block.BlockRenderManager; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.BlockRenderView; +import net.minecraft.world.RaycastContext; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; +import static net.minecraft.block.SlabBlock.TYPE; + +@Mixin(BlockRenderManager.class) +public class BlockRenderManagerMixin { + + @Shadow @Final private BlockModels models; + + @Shadow @Final private BlockModelRenderer blockModelRenderer; + + @Shadow @Final private Random random; + + @Inject(method = "renderDamage", at = @At("HEAD"), cancellable = true) + public void renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView world, MatrixStack matrices, VertexConsumer vertexConsumer, CallbackInfo ci) { + if(!(state.getBlock() instanceof SlabBlock)) return; + if (state.getRenderType() == BlockRenderType.MODEL) { + if (state.get(TYPE) != SlabType.DOUBLE) return; + var entity = MinecraftClient.getInstance().player; + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (entity == null) return; + Vec3d vec3d = entity.getCameraPosVec(0); + Vec3d vec3d2 = entity.getRotationVec(0); + Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); + var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + BlockState modelState = switch (verticalType) { + case FALSE -> { + var ypos = cast.getPos().y; + var yoffset = ((ypos % 1) + 1) % 1; + if (yoffset > 0.5) yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); + } + case NORTH_SOUTH -> { + var zpos = cast.getPos().z; + var zoffset = ((zpos % 1) + 1) % 1; + if (zoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + } + case EAST_WEST -> { + var xpos = cast.getPos().x; + var xoffset = ((xpos % 1) + 1) % 1; + if (xoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); + } + }; + BakedModel bakedModel = this.models.getModel(modelState); + long l = state.getRenderingSeed(pos); + this.blockModelRenderer.render(world, bakedModel, state, pos, matrices, vertexConsumer, true, this.random, l, OverlayTexture.DEFAULT_UV); + ci.cancel(); + } + } +} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 7f2a23e..2150112 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -9,8 +9,6 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.EnumProperty; -import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; @@ -26,19 +24,12 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import static io.github.andrew6rant.autoslabs.Util.*; import static net.minecraft.block.enums.SlabType.TOP; @Mixin(SlabBlock.class) public class SlabBlockMixin extends Block implements Waterloggable { @Shadow @Final public static BooleanProperty WATERLOGGED; - private static final EnumProperty VERTICAL_TYPE; - private static final EnumProperty TYPE; - private static final VoxelShape BOTTOM_SHAPE; - private static final VoxelShape TOP_SHAPE; - private static final VoxelShape VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE; - private static final VoxelShape VERTICAL_NORTH_SOUTH_TOP_SHAPE; - private static final VoxelShape VERTICAL_EAST_WEST_BOTTOM_SHAPE; - private static final VoxelShape VERTICAL_EAST_WEST_TOP_SHAPE; private SlabBlockMixin(Settings settings) { @@ -130,14 +121,4 @@ public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockStat super.afterBreak(world, player, pos, state.with(TYPE, TOP), blockEntity, stack); } - static { - VERTICAL_TYPE = EnumProperty.of("vertical_type", VerticalType.class); - TYPE = Properties.SLAB_TYPE; - BOTTOM_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 8.0, 16.0); - TOP_SHAPE = Block.createCuboidShape(0.0, 8.0, 0.0, 16.0, 16.0, 16.0); - VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE = Block.createCuboidShape(0.0, 0.0, 8.0, 16.0, 16.0, 16.0); - VERTICAL_NORTH_SOUTH_TOP_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 16.0, 8.0); - VERTICAL_EAST_WEST_BOTTOM_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 8.0, 16.0, 16.0); - VERTICAL_EAST_WEST_TOP_SHAPE = Block.createCuboidShape(8.0, 0.0, 0.0, 16.0, 16.0, 16.0); - } } \ No newline at end of file diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index 85e7c16..b1e914e 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -9,6 +9,7 @@ "StateMixin" ], "client": [ + "BlockRenderManagerMixin", "ClientPlayerInteractionManagerMixin", "WorldRendererMixin" ], From d9b2ff9b174113cb8107f6b9f6a850a14686c6a9 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Jul 2023 16:09:07 -0400 Subject: [PATCH 08/71] fix block breaking overlay mixin --- .../mixin/BlockRenderManagerMixin.java | 64 +++++++++++++++---- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java index 156e35d..d916827 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -6,6 +6,7 @@ import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.block.BlockModelRenderer; @@ -13,7 +14,9 @@ import net.minecraft.client.render.block.BlockRenderManager; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.random.Random; import net.minecraft.world.BlockRenderView; @@ -42,31 +45,64 @@ public void renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView wor if(!(state.getBlock() instanceof SlabBlock)) return; if (state.getRenderType() == BlockRenderType.MODEL) { if (state.get(TYPE) != SlabType.DOUBLE) return; - var entity = MinecraftClient.getInstance().player; + ClientPlayerEntity entity = MinecraftClient.getInstance().player; VerticalType verticalType = state.get(VERTICAL_TYPE); if (entity == null) return; Vec3d vec3d = entity.getCameraPosVec(0); Vec3d vec3d2 = entity.getRotationVec(0); Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); - var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + BlockHitResult cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + Direction side = cast.getSide(); BlockState modelState = switch (verticalType) { case FALSE -> { - var ypos = cast.getPos().y; - var yoffset = ((ypos % 1) + 1) % 1; - if (yoffset > 0.5) yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); + switch (side) { + // this code technically does not need the brackets or "yield," but IntelliJ won't compile it unless I have it + // https://youtrack.jetbrains.com/issue/IDEA-273889/Switch-expression-rule-should-produce-result-in-all-execution-paths-false-positive + case UP -> { + yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); + } + case DOWN -> { + yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); + } + default -> { + var ypos = cast.getPos().y; + var yoffset = ((ypos % 1) + 1) % 1; + if (yoffset > 0.5) yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); + } + } } case NORTH_SOUTH -> { - var zpos = cast.getPos().z; - var zoffset = ((zpos % 1) + 1) % 1; - if (zoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + switch (side) { + case NORTH -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + } + case SOUTH -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + } + default -> { + var zpos = cast.getPos().z; + var zoffset = ((zpos % 1) + 1) % 1; + if (zoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + } + } } case EAST_WEST -> { - var xpos = cast.getPos().x; - var xoffset = ((xpos % 1) + 1) % 1; - if (xoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); + switch (side) { + case EAST -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); + } + case WEST -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); + } + default -> { + var xpos = cast.getPos().x; + var xoffset = ((xpos % 1) + 1) % 1; + if (xoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); + } + } } }; BakedModel bakedModel = this.models.getModel(modelState); From 960a233cc42c69365f2842d3fb320cc0357afed9 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Jul 2023 18:56:52 -0400 Subject: [PATCH 09/71] clean up code a bit --- .../andrew6rant/autoslabs/PlacementUtil.java | 111 +++++++++++++----- .../mixin/BlockRenderManagerMixin.java | 65 +--------- .../ClientPlayerInteractionManagerMixin.java | 11 +- .../ServerPlayerInteractionManagerMixin.java | 13 +- 4 files changed, 93 insertions(+), 107 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 71d94a8..048e907 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -3,6 +3,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; @@ -11,6 +12,8 @@ import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; import static io.github.andrew6rant.autoslabs.Util.*; import static net.minecraft.block.SlabBlock.TYPE; @@ -18,6 +21,68 @@ public class PlacementUtil { + public static BlockState getModelState(BlockState state, VerticalType verticalType, Direction side, BlockHitResult cast) { + return switch (verticalType) { + case FALSE -> { + switch (side) { + // this code technically does not need the brackets or "yield," but IntelliJ won't compile it unless I have it + // https://youtrack.jetbrains.com/issue/IDEA-273889/Switch-expression-rule-should-produce-result-in-all-execution-paths-false-positive + case UP -> { + yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); + } + case DOWN -> { + yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); + } + default -> { + var yPos = cast.getPos().y; + var yOffset = ((yPos % 1) + 1) % 1; + if (yOffset > 0.5) yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); + } + } + } + case NORTH_SOUTH -> { + switch (side) { + case NORTH -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + } + case SOUTH -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + } + default -> { + var zPos = cast.getPos().z; + var zOffset = ((zPos % 1) + 1) % 1; + if (zOffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + } + } + } + case EAST_WEST -> { + switch (side) { + case EAST -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); + } + case WEST -> { + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); + } + default -> { + var xPos = cast.getPos().x; + var xOffset = ((xPos % 1) + 1) % 1; + if (xOffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); + } + } + } + }; + } + + public static BlockHitResult calcRaycast(PlayerEntity entity) { + Vec3d vec3d = entity.getCameraPosVec(0); + Vec3d vec3d2 = entity.getRotationVec(0); + Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); + return entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); + } + public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) { Direction side = cast.getSide(); VerticalType verticalType = breakState.get(VERTICAL_TYPE); @@ -28,9 +93,9 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) case UP -> SlabType.BOTTOM; case DOWN -> SlabType.TOP; default -> { - var ypos = cast.getPos().y; - var yoffset = ((ypos % 1) + 1) % 1; - if (yoffset > 0.5) yield SlabType.BOTTOM; + var yPos = cast.getPos().y; + var yOffset = ((yPos % 1) + 1) % 1; + if (yOffset > 0.5) yield SlabType.BOTTOM; else yield SlabType.TOP; } }; @@ -38,9 +103,9 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) case NORTH -> SlabType.BOTTOM; case SOUTH -> SlabType.TOP; default -> { - var zpos = cast.getPos().z; - var zoffset = ((zpos % 1) + 1) % 1; - if (zoffset > 0.5) yield SlabType.TOP; + var zPos = cast.getPos().z; + var zOffset = ((zPos % 1) + 1) % 1; + if (zOffset > 0.5) yield SlabType.TOP; else yield SlabType.BOTTOM; } }; @@ -48,9 +113,9 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) case EAST -> SlabType.BOTTOM; case WEST -> SlabType.TOP; default -> { - var xpos = cast.getPos().x; - var xoffset = ((xpos % 1) + 1) % 1; - if (xoffset > 0.5) yield SlabType.BOTTOM; + var xPos = cast.getPos().x; + var xOffset = ((xPos % 1) + 1) % 1; + if (xOffset > 0.5) yield SlabType.BOTTOM; else yield SlabType.TOP; } }; @@ -125,26 +190,14 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState if (hitResult.getType() == HitResult.Type.BLOCK) { BlockHitResult result = (BlockHitResult) hitResult; HitPart part = getHitPart(result); - switch (ctxSide) { - case UP -> { - return calcUpPlacement(blockState, state, part, fluidState); - } - case DOWN -> { - return calcDownPlacement(blockState, state, part, fluidState); - } - case NORTH -> { - return calcNorthPlacement(blockState, state, part, fluidState); - } - case SOUTH -> { - return calcSouthPlacement(blockState, state, part, fluidState); - } - case EAST -> { - return calcEastPlacement(blockState, state, part, fluidState); - } - case WEST -> { - return calcWestPlacement(blockState, state, part, fluidState); - } - } + return switch (ctxSide) { + case UP -> calcUpPlacement(blockState, state, part, fluidState); + case DOWN -> calcDownPlacement(blockState, state, part, fluidState); + case NORTH -> calcNorthPlacement(blockState, state, part, fluidState); + case SOUTH -> calcSouthPlacement(blockState, state, part, fluidState); + case EAST -> calcEastPlacement(blockState, state, part, fluidState); + case WEST -> calcWestPlacement(blockState, state, part, fluidState); + }; } return null; } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java index d916827..685d40f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; +import io.github.andrew6rant.autoslabs.PlacementUtil; import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; @@ -16,11 +17,8 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.random.Random; import net.minecraft.world.BlockRenderView; -import net.minecraft.world.RaycastContext; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -47,64 +45,9 @@ public void renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView wor if (state.get(TYPE) != SlabType.DOUBLE) return; ClientPlayerEntity entity = MinecraftClient.getInstance().player; VerticalType verticalType = state.get(VERTICAL_TYPE); - if (entity == null) return; - Vec3d vec3d = entity.getCameraPosVec(0); - Vec3d vec3d2 = entity.getRotationVec(0); - Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); - BlockHitResult cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); - Direction side = cast.getSide(); - BlockState modelState = switch (verticalType) { - case FALSE -> { - switch (side) { - // this code technically does not need the brackets or "yield," but IntelliJ won't compile it unless I have it - // https://youtrack.jetbrains.com/issue/IDEA-273889/Switch-expression-rule-should-produce-result-in-all-execution-paths-false-positive - case UP -> { - yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); - } - case DOWN -> { - yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); - } - default -> { - var ypos = cast.getPos().y; - var yoffset = ((ypos % 1) + 1) % 1; - if (yoffset > 0.5) yield state.getBlock().getDefaultState().with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(TYPE, SlabType.BOTTOM); - } - } - } - case NORTH_SOUTH -> { - switch (side) { - case NORTH -> { - yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); - } - case SOUTH -> { - yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); - } - default -> { - var zpos = cast.getPos().z; - var zoffset = ((zpos % 1) + 1) % 1; - if (zoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); - } - } - } - case EAST_WEST -> { - switch (side) { - case EAST -> { - yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); - } - case WEST -> { - yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); - } - default -> { - var xpos = cast.getPos().x; - var xoffset = ((xpos % 1) + 1) % 1; - if (xoffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(TYPE, SlabType.BOTTOM); - } - } - } - }; + if (entity == null || verticalType == null) return; + BlockHitResult cast = PlacementUtil.calcRaycast(entity); + BlockState modelState = PlacementUtil.getModelState(state, verticalType, cast.getSide(), cast); BakedModel bakedModel = this.models.getModel(modelState); long l = state.getRenderingSeed(pos); this.blockModelRenderer.render(world, bakedModel, state, pos, matrices, vertexConsumer, true, this.random, l, OverlayTexture.DEFAULT_UV); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index 5adf330..1860db1 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -5,10 +5,9 @@ import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.ClientPlayerInteractionManager; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.RaycastContext; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -31,13 +30,9 @@ private boolean tryBreakSlab(World instance, BlockPos pos, BlockState state, int if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); if (slabType != SlabType.DOUBLE) return instance.setBlockState(pos, state, flags); - var entity = client.player; + ClientPlayerEntity entity = client.player; assert entity != null; - Vec3d vec3d = entity.getCameraPosVec(0); - Vec3d vec3d2 = entity.getRotationVec(0); - Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); - var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); - SlabType breakType = PlacementUtil.calcKleeSlab(breakState, cast); + SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(entity)); return instance.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType), flags); } return instance.setBlockState(pos, state, flags); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java index 0e4bd69..ed2dcfe 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -7,8 +7,6 @@ import net.minecraft.server.network.ServerPlayerInteractionManager; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.RaycastContext; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -32,13 +30,10 @@ private boolean tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); if (slabType != SlabType.DOUBLE) return instance.removeBlock(pos, b); - var entity = player; - Vec3d vec3d = entity.getCameraPosVec(0); - Vec3d vec3d2 = entity.getRotationVec(0); - Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); - var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); - SlabType breakType = PlacementUtil.calcKleeSlab(breakState, cast); - var removed = instance.removeBlock(pos, b); + ServerPlayerEntity entity = player; + assert entity != null; + SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(entity)); + boolean removed = instance.removeBlock(pos, b); world.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType)); return removed; } From f000c279d99f9ee95f845ef7cb4e39e50732bc75 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Jul 2023 19:26:05 -0400 Subject: [PATCH 10/71] add double slab breaking feature if you shift while mining a double slab, you can break both sides of it at once. Also fixed bug where the block breaking overlay was misaligned --- .../io/github/andrew6rant/autoslabs/PlacementUtil.java | 4 ++-- .../autoslabs/mixin/BlockRenderManagerMixin.java | 1 + .../mixin/ClientPlayerInteractionManagerMixin.java | 1 + .../mixin/ServerPlayerInteractionManagerMixin.java | 4 +++- .../andrew6rant/autoslabs/mixin/SlabBlockMixin.java | 8 +++++++- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 048e907..b53aac6 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -52,8 +52,8 @@ public static BlockState getModelState(BlockState state, VerticalType verticalTy default -> { var zPos = cast.getPos().z; var zOffset = ((zPos % 1) + 1) % 1; - if (zOffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); - else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + if (zOffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); } } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java index 685d40f..532300e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -46,6 +46,7 @@ public void renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView wor ClientPlayerEntity entity = MinecraftClient.getInstance().player; VerticalType verticalType = state.get(VERTICAL_TYPE); if (entity == null || verticalType == null) return; + if (entity.isSneaking()) return; BlockHitResult cast = PlacementUtil.calcRaycast(entity); BlockState modelState = PlacementUtil.getModelState(state, verticalType, cast.getSide(), cast); BakedModel bakedModel = this.models.getModel(modelState); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index 1860db1..a7cc27f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -32,6 +32,7 @@ private boolean tryBreakSlab(World instance, BlockPos pos, BlockState state, int if (slabType != SlabType.DOUBLE) return instance.setBlockState(pos, state, flags); ClientPlayerEntity entity = client.player; assert entity != null; + if (entity.isSneaking()) return instance.setBlockState(pos, state, flags); SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(entity)); return instance.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType), flags); } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java index ed2dcfe..1688822 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -1,6 +1,7 @@ package io.github.andrew6rant.autoslabs.mixin; import io.github.andrew6rant.autoslabs.PlacementUtil; +import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; import net.minecraft.server.network.ServerPlayerEntity; @@ -26,12 +27,13 @@ public class ServerPlayerInteractionManagerMixin { @Redirect(method = "tryBreakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;removeBlock(Lnet/minecraft/util/math/BlockPos;Z)Z")) private boolean tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { - var breakState = instance.getBlockState(pos); + BlockState breakState = instance.getBlockState(pos); if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); if (slabType != SlabType.DOUBLE) return instance.removeBlock(pos, b); ServerPlayerEntity entity = player; assert entity != null; + if (entity.isSneaking()) return instance.removeBlock(pos, b); SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(entity)); boolean removed = instance.removeBlock(pos, b); world.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType)); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 2150112..a4494cb 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -25,6 +25,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import static io.github.andrew6rant.autoslabs.Util.*; +import static net.minecraft.block.enums.SlabType.DOUBLE; import static net.minecraft.block.enums.SlabType.TOP; @Mixin(SlabBlock.class) @@ -56,6 +57,7 @@ public boolean canReplace(BlockState state, ItemPlacementContext context) { if (slabType != SlabType.DOUBLE) return; var entity = entityContext.getEntity(); if (entity == null) return; + if (entity.isSneaking()) return; Vec3d vec3d = entity.getCameraPosVec(0); Vec3d vec3d2 = entity.getRotationVec(0); Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); @@ -118,7 +120,11 @@ public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos po @Override public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) { - super.afterBreak(world, player, pos, state.with(TYPE, TOP), blockEntity, stack); + if (player.isSneaking()) { + super.afterBreak(world, player, pos, state.with(TYPE, DOUBLE), blockEntity, stack); + } else { + super.afterBreak(world, player, pos, state.with(TYPE, TOP), blockEntity, stack); + } } } \ No newline at end of file From eb482807763d4dad2a24f5bcf3fdd5bbbcf56a22 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Jul 2023 22:02:58 -0400 Subject: [PATCH 11/71] clean up code --- .../andrew6rant/autoslabs/PlacementUtil.java | 73 ++++++++++++++++- .../mixin/BlockRenderManagerMixin.java | 13 ++-- .../ClientPlayerInteractionManagerMixin.java | 9 ++- .../ServerPlayerInteractionManagerMixin.java | 9 ++- .../autoslabs/mixin/SlabBlockMixin.java | 78 ++++--------------- 5 files changed, 101 insertions(+), 81 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index b53aac6..88b87d7 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -3,7 +3,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.Entity; import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; @@ -13,14 +13,83 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.RaycastContext; import static io.github.andrew6rant.autoslabs.Util.*; import static net.minecraft.block.SlabBlock.TYPE; import static net.minecraft.block.SlabBlock.WATERLOGGED; +import static net.minecraft.block.enums.SlabType.TOP; public class PlacementUtil { + public static VoxelShape getDynamicOutlineShape(VerticalType verticalType, Direction side, BlockHitResult cast) { + return switch (verticalType) { + case FALSE -> { + switch (side) { + case UP -> { + yield TOP_SHAPE; + } + case DOWN -> { + yield BOTTOM_SHAPE; + } + default -> { + var yPos = cast.getPos().y; + var yOffset = ((yPos % 1) + 1) % 1; + if (yOffset > 0.5) yield TOP_SHAPE; + else yield BOTTOM_SHAPE; + } + } + } + case NORTH_SOUTH -> { + switch (side) { + case NORTH -> { + yield VERTICAL_NORTH_SOUTH_TOP_SHAPE; + } + case SOUTH -> { + yield VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE; + } + default -> { + var zPos = cast.getPos().z; + var zOffset = ((zPos % 1) + 1) % 1; + if (zOffset > 0.5) yield VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE; + else yield VERTICAL_NORTH_SOUTH_TOP_SHAPE; + } + } + } + case EAST_WEST -> { + switch (side) { + case EAST -> { + yield VERTICAL_EAST_WEST_TOP_SHAPE; + } + case WEST -> { + yield VERTICAL_EAST_WEST_BOTTOM_SHAPE; + } + default -> { + var xPos = cast.getPos().x; + var xOffset = ((xPos % 1) + 1) % 1; + if (xOffset > 0.5) yield VERTICAL_EAST_WEST_TOP_SHAPE; + else yield VERTICAL_EAST_WEST_BOTTOM_SHAPE; + } + } + } + }; + } + + public static VoxelShape getOutlineShape(BlockState state) { + SlabType slabType = state.get(Util.TYPE); + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (slabType == SlabType.DOUBLE) { + return VoxelShapes.fullCube(); // double slab is actually calculated in SlabBlockMixin + } + return switch (verticalType) { + case FALSE -> slabType == TOP ? TOP_SHAPE : BOTTOM_SHAPE; + case NORTH_SOUTH -> slabType == TOP ? VERTICAL_NORTH_SOUTH_TOP_SHAPE : VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE; + case EAST_WEST -> slabType == TOP ? VERTICAL_EAST_WEST_TOP_SHAPE : VERTICAL_EAST_WEST_BOTTOM_SHAPE; + }; + } + public static BlockState getModelState(BlockState state, VerticalType verticalType, Direction side, BlockHitResult cast) { return switch (verticalType) { case FALSE -> { @@ -76,7 +145,7 @@ public static BlockState getModelState(BlockState state, VerticalType verticalTy }; } - public static BlockHitResult calcRaycast(PlayerEntity entity) { + public static BlockHitResult calcRaycast(Entity entity) { Vec3d vec3d = entity.getCameraPosVec(0); Vec3d vec3d2 = entity.getRotationVec(0); Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java index 532300e..a2f46ac 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -43,13 +43,14 @@ public void renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView wor if(!(state.getBlock() instanceof SlabBlock)) return; if (state.getRenderType() == BlockRenderType.MODEL) { if (state.get(TYPE) != SlabType.DOUBLE) return; - ClientPlayerEntity entity = MinecraftClient.getInstance().player; VerticalType verticalType = state.get(VERTICAL_TYPE); - if (entity == null || verticalType == null) return; - if (entity.isSneaking()) return; - BlockHitResult cast = PlacementUtil.calcRaycast(entity); - BlockState modelState = PlacementUtil.getModelState(state, verticalType, cast.getSide(), cast); - BakedModel bakedModel = this.models.getModel(modelState); + if (verticalType == null) return; + ClientPlayerEntity clientPlayer = MinecraftClient.getInstance().player; + if (clientPlayer == null) return; + if (clientPlayer.isSneaking()) return; + + BlockHitResult cast = PlacementUtil.calcRaycast(clientPlayer); + BakedModel bakedModel = this.models.getModel(PlacementUtil.getModelState(state, verticalType, cast.getSide(), cast)); long l = state.getRenderingSeed(pos); this.blockModelRenderer.render(world, bakedModel, state, pos, matrices, vertexConsumer, true, this.random, l, OverlayTexture.DEFAULT_UV); ci.cancel(); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index a7cc27f..556c144 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -30,10 +30,11 @@ private boolean tryBreakSlab(World instance, BlockPos pos, BlockState state, int if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); if (slabType != SlabType.DOUBLE) return instance.setBlockState(pos, state, flags); - ClientPlayerEntity entity = client.player; - assert entity != null; - if (entity.isSneaking()) return instance.setBlockState(pos, state, flags); - SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(entity)); + ClientPlayerEntity clientPlayer = client.player; + assert clientPlayer != null; + if (clientPlayer.isSneaking()) return instance.setBlockState(pos, state, flags); + + SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(clientPlayer)); return instance.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType), flags); } return instance.setBlockState(pos, state, flags); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java index 1688822..eea2389 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -31,10 +31,11 @@ private boolean tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); if (slabType != SlabType.DOUBLE) return instance.removeBlock(pos, b); - ServerPlayerEntity entity = player; - assert entity != null; - if (entity.isSneaking()) return instance.removeBlock(pos, b); - SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(entity)); + ServerPlayerEntity serverPlayer = player; + assert serverPlayer != null; + if (serverPlayer.isSneaking()) return instance.removeBlock(pos, b); + + SlabType breakType = PlacementUtil.calcKleeSlab(breakState, PlacementUtil.calcRaycast(serverPlayer)); boolean removed = instance.removeBlock(pos, b); world.setBlockState(pos, breakState.with(SlabBlock.TYPE, breakType)); return removed; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index a4494cb..b55f148 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -5,33 +5,29 @@ import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.enums.SlabType; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; -import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; -import net.minecraft.world.RaycastContext; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import static io.github.andrew6rant.autoslabs.Util.*; +import static io.github.andrew6rant.autoslabs.Util.TYPE; +import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; import static net.minecraft.block.enums.SlabType.DOUBLE; import static net.minecraft.block.enums.SlabType.TOP; @Mixin(SlabBlock.class) public class SlabBlockMixin extends Block implements Waterloggable { - @Shadow @Final public static BooleanProperty WATERLOGGED; - private SlabBlockMixin(Settings settings) { super(settings); @@ -50,72 +46,24 @@ public boolean canReplace(BlockState state, ItemPlacementContext context) { // Massive thanks to Oliver-makes-code for some of the code behind this mixin // https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_SlabBlock.java @Inject(at = @At("RETURN"), method = "getOutlineShape", cancellable = true) - private void autoslab$getBetterOutline(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void autoslabs$getBetterOutline(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (!(context instanceof EntityShapeContext entityContext)) return; SlabType slabType = state.get(TYPE); - VerticalType verticalType = state.get(VERTICAL_TYPE); if (slabType != SlabType.DOUBLE) return; - var entity = entityContext.getEntity(); + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (verticalType == null) return; + Entity entity = entityContext.getEntity(); if (entity == null) return; if (entity.isSneaking()) return; - Vec3d vec3d = entity.getCameraPosVec(0); - Vec3d vec3d2 = entity.getRotationVec(0); - Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); - var cast = entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); - var side = cast.getSide(); - switch (verticalType) { - case FALSE -> { - switch (side) { - case UP -> cir.setReturnValue(TOP_SHAPE); - case DOWN -> cir.setReturnValue(BOTTOM_SHAPE); - default -> { - var ypos = cast.getPos().y; - var yoffset = ((ypos % 1) + 1) % 1; - if (yoffset > 0.5) cir.setReturnValue(TOP_SHAPE); - else cir.setReturnValue(BOTTOM_SHAPE); - } - } - } - case NORTH_SOUTH -> { - switch (side) { - case NORTH -> cir.setReturnValue(VERTICAL_NORTH_SOUTH_TOP_SHAPE); - case SOUTH -> cir.setReturnValue(VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE); - default -> { - var zpos = cast.getPos().z; - var zoffset = ((zpos % 1) + 1) % 1; - if (zoffset > 0.5) cir.setReturnValue(VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE); - else cir.setReturnValue(VERTICAL_NORTH_SOUTH_TOP_SHAPE); - } - } - } - case EAST_WEST -> { - switch (side) { - case EAST -> cir.setReturnValue(VERTICAL_EAST_WEST_TOP_SHAPE); - case WEST -> cir.setReturnValue(VERTICAL_EAST_WEST_BOTTOM_SHAPE); - default -> { - var xpos = cast.getPos().x; - var xoffset = ((xpos % 1) + 1) % 1; - if (xoffset > 0.5) cir.setReturnValue(VERTICAL_EAST_WEST_TOP_SHAPE); - else cir.setReturnValue(VERTICAL_EAST_WEST_BOTTOM_SHAPE); - } - } - } - } + BlockHitResult cast = PlacementUtil.calcRaycast(entity); + Direction side = cast.getSide(); + cir.setReturnValue(PlacementUtil.getDynamicOutlineShape(verticalType, side, cast)); } @Override public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { - SlabType slabType = state.get(TYPE); - VerticalType verticalType = state.get(VERTICAL_TYPE); - if (slabType == SlabType.DOUBLE) { - return VoxelShapes.fullCube(); - } - return switch (verticalType) { - case FALSE -> slabType == TOP ? TOP_SHAPE : BOTTOM_SHAPE; - case NORTH_SOUTH -> slabType == TOP ? VERTICAL_NORTH_SOUTH_TOP_SHAPE : VERTICAL_NORTH_SOUTH_BOTTOM_SHAPE; - case EAST_WEST -> slabType == TOP ? VERTICAL_EAST_WEST_TOP_SHAPE : VERTICAL_EAST_WEST_BOTTOM_SHAPE; - }; + return PlacementUtil.getOutlineShape(state); } @Override From c1e39037ff033aeba680b21a231944d6e1af01dd Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 17 Jul 2023 02:31:52 -0400 Subject: [PATCH 12/71] Add showcase to README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f49b492..35bcaca 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # Auto Slabs - Automatically Generate vertical slabs for every instance of SlabBlock + Automatically generate vertical slabs for every instance of SlabBlock. Supports Vanilla, as well as any mod that adds Slabs. + +https://github.com/Andrew6rant/Auto-Slabs/assets/57331134/84e2186a-f51c-4147-b98d-9eca6235cc46 From 6ec3178ee489adff1e46cf1309ae02d2f72c711f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A2=E3=82=AB=E3=82=B7=E3=82=A4=20-=20Akashii?= <44606942+AkashiiKun@users.noreply.github.com> Date: Fri, 21 Jul 2023 01:16:10 +0100 Subject: [PATCH 13/71] Added Built-In Resource Pack. --- .../andrew6rant/autoslabs/AutoSlabsClient.java | 3 +++ .../blockstates/cut_red_sandstone_slab.json | 0 .../minecraft/blockstates/cut_sandstone_slab.json | 0 .../blockstates/polished_andesite_slab.json | 0 .../blockstates/polished_blackstone_slab.json | 0 .../blockstates/polished_deepslate_slab.json | 0 .../blockstates/polished_diorite_slab.json | 0 .../blockstates/polished_granite_slab.json | 0 .../blockstates/prismarine_bricks_slab.json | 0 .../assets/minecraft/blockstates/quartz_slab.json | 0 .../minecraft/blockstates/red_sandstone_slab.json | 0 .../minecraft/blockstates/sandstone_slab.json | 0 .../minecraft/blockstates/smooth_stone_slab.json | 0 .../models/block/cut_red_sandstone_slab.json | 0 .../models/block/cut_red_sandstone_slab_double.json | 0 .../models/block/cut_red_sandstone_slab_top.json | 0 ...ed_sandstone_slab_vertical_east_west_bottom.json | 0 ...ed_sandstone_slab_vertical_east_west_double.json | 0 ...t_red_sandstone_slab_vertical_east_west_top.json | 0 ..._sandstone_slab_vertical_north_south_bottom.json | 0 ..._sandstone_slab_vertical_north_south_double.json | 0 ...red_sandstone_slab_vertical_north_south_top.json | 0 .../minecraft/models/block/cut_sandstone_slab.json | 0 .../models/block/cut_sandstone_slab_double.json | 0 .../models/block/cut_sandstone_slab_top.json | 0 ...ut_sandstone_slab_vertical_east_west_bottom.json | 0 ...ut_sandstone_slab_vertical_east_west_double.json | 0 .../cut_sandstone_slab_vertical_east_west_top.json | 0 ..._sandstone_slab_vertical_north_south_bottom.json | 0 ..._sandstone_slab_vertical_north_south_double.json | 0 ...cut_sandstone_slab_vertical_north_south_top.json | 0 .../models/block/polished_andesite_slab.json | 0 .../models/block/polished_andesite_slab_double.json | 0 .../models/block/polished_andesite_slab_top.json | 0 ...hed_andesite_slab_vertical_east_west_bottom.json | 0 ...hed_andesite_slab_vertical_east_west_double.json | 0 ...lished_andesite_slab_vertical_east_west_top.json | 0 ...d_andesite_slab_vertical_north_south_bottom.json | 0 ...d_andesite_slab_vertical_north_south_double.json | 0 ...shed_andesite_slab_vertical_north_south_top.json | 0 .../models/block/polished_blackstone_slab.json | 0 .../block/polished_blackstone_slab_double.json | 0 .../models/block/polished_blackstone_slab_top.json | 0 ...d_blackstone_slab_vertical_east_west_bottom.json | 0 ...d_blackstone_slab_vertical_east_west_double.json | 0 ...shed_blackstone_slab_vertical_east_west_top.json | 0 ...blackstone_slab_vertical_north_south_bottom.json | 0 ...blackstone_slab_vertical_north_south_double.json | 0 ...ed_blackstone_slab_vertical_north_south_top.json | 0 .../models/block/polished_deepslate_slab.json | 0 .../block/polished_deepslate_slab_double.json | 0 .../models/block/polished_deepslate_slab_top.json | 0 ...ed_deepslate_slab_vertical_east_west_bottom.json | 0 ...ed_deepslate_slab_vertical_east_west_double.json | 0 ...ished_deepslate_slab_vertical_east_west_top.json | 0 ..._deepslate_slab_vertical_north_south_bottom.json | 0 ..._deepslate_slab_vertical_north_south_double.json | 0 ...hed_deepslate_slab_vertical_north_south_top.json | 0 .../models/block/polished_diorite_slab.json | 0 .../models/block/polished_diorite_slab_double.json | 0 .../models/block/polished_diorite_slab_top.json | 0 ...shed_diorite_slab_vertical_east_west_bottom.json | 0 ...shed_diorite_slab_vertical_east_west_double.json | 0 ...olished_diorite_slab_vertical_east_west_top.json | 0 ...ed_diorite_slab_vertical_north_south_bottom.json | 0 ...ed_diorite_slab_vertical_north_south_double.json | 0 ...ished_diorite_slab_vertical_north_south_top.json | 0 .../models/block/polished_granite_slab.json | 0 .../models/block/polished_granite_slab_double.json | 0 .../models/block/polished_granite_slab_top.json | 0 ...shed_granite_slab_vertical_east_west_bottom.json | 0 ...shed_granite_slab_vertical_east_west_double.json | 0 ...olished_granite_slab_vertical_east_west_top.json | 0 ...ed_granite_slab_vertical_north_south_bottom.json | 0 ...ed_granite_slab_vertical_north_south_double.json | 0 ...ished_granite_slab_vertical_north_south_top.json | 0 .../models/block/prismarine_bricks_slab.json | 0 .../models/block/prismarine_bricks_slab_double.json | 0 .../models/block/prismarine_bricks_slab_top.json | 0 ...arine_bricks_slab_vertical_east_west_bottom.json | 0 ...arine_bricks_slab_vertical_east_west_double.json | 0 ...ismarine_bricks_slab_vertical_east_west_top.json | 0 ...ine_bricks_slab_vertical_north_south_bottom.json | 0 ...ine_bricks_slab_vertical_north_south_double.json | 0 ...marine_bricks_slab_vertical_north_south_top.json | 0 .../models/block/quartz_block_slab_double.json | 0 .../models/block/quartz_block_slab_top.json | 0 ...quartz_block_slab_vertical_east_west_bottom.json | 0 ...quartz_block_slab_vertical_east_west_double.json | 0 .../quartz_block_slab_vertical_east_west_top.json | 0 ...artz_block_slab_vertical_north_south_bottom.json | 0 ...artz_block_slab_vertical_north_south_double.json | 0 .../quartz_block_slab_vertical_north_south_top.json | 0 .../assets/minecraft/models/block/quartz_slab.json | 0 .../minecraft/models/block/red_sandstone_slab.json | 0 .../models/block/red_sandstone_slab_double.json | 0 .../models/block/red_sandstone_slab_top.json | 0 ...ed_sandstone_slab_vertical_east_west_bottom.json | 0 ...ed_sandstone_slab_vertical_east_west_double.json | 0 .../red_sandstone_slab_vertical_east_west_top.json | 0 ..._sandstone_slab_vertical_north_south_bottom.json | 0 ..._sandstone_slab_vertical_north_south_double.json | 0 ...red_sandstone_slab_vertical_north_south_top.json | 0 .../minecraft/models/block/sandstone_slab.json | 0 .../models/block/sandstone_slab_double.json | 0 .../minecraft/models/block/sandstone_slab_top.json | 0 .../sandstone_slab_vertical_east_west_bottom.json | 0 .../sandstone_slab_vertical_east_west_double.json | 0 .../sandstone_slab_vertical_east_west_top.json | 0 .../sandstone_slab_vertical_north_south_bottom.json | 0 .../sandstone_slab_vertical_north_south_double.json | 0 .../sandstone_slab_vertical_north_south_top.json | 0 .../minecraft/models/block/smooth_stone_slab.json | 0 .../models/block/smooth_stone_slab_double.json | 0 .../models/block/smooth_stone_slab_top.json | 0 ...smooth_stone_slab_vertical_east_west_bottom.json | 0 ...smooth_stone_slab_vertical_east_west_double.json | 0 .../smooth_stone_slab_vertical_east_west_top.json | 0 ...ooth_stone_slab_vertical_north_south_bottom.json | 0 ...ooth_stone_slab_vertical_north_south_double.json | 0 .../smooth_stone_slab_vertical_north_south_top.json | 0 .../textures/block/cut_red_sandstone_slab.png | Bin .../block/cut_red_sandstone_slab_vertical.png | Bin .../minecraft/textures/block/cut_sandstone_slab.png | Bin .../textures/block/cut_sandstone_slab_vertical.png | Bin .../textures/block/polished_andesite_slab.png | Bin .../block/polished_andesite_slab_vertical.png | Bin .../textures/block/polished_blackstone_slab.png | Bin .../block/polished_blackstone_slab_vertical.png | Bin .../textures/block/polished_deepslate_slab.png | Bin .../block/polished_deepslate_slab_vertical.png | Bin .../textures/block/polished_diorite_slab.png | Bin .../block/polished_diorite_slab_vertical.png | Bin .../textures/block/polished_granite_slab.png | Bin .../block/polished_granite_slab_vertical.png | Bin .../textures/block/prismarine_bricks_slab.png | Bin .../block/prismarine_bricks_slab_vertical.png | Bin .../minecraft/textures/block/quartz_block_slab.png | Bin .../textures/block/quartz_block_slab_vertical.png | Bin .../minecraft/textures/block/red_sandstone_slab.png | Bin .../textures/block/red_sandstone_slab_vertical.png | Bin .../minecraft/textures/block/sandstone_slab.png | Bin .../textures/block/sandstone_slab_vertical.png | Bin .../minecraft/textures/block/smooth_stone_slab.png | Bin .../textures/block/smooth_stone_slab_vertical.png | Bin .../resourcepacks/distint_slabs}/pack.mcmeta | 0 146 files changed, 3 insertions(+) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/cut_red_sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/cut_sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/polished_andesite_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/polished_blackstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/polished_deepslate_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/polished_diorite_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/polished_granite_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/prismarine_bricks_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/quartz_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/red_sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/blockstates/smooth_stone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/quartz_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/cut_red_sandstone_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/cut_sandstone_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_andesite_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_andesite_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_blackstone_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_deepslate_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_diorite_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_diorite_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_granite_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/polished_granite_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/prismarine_bricks_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/quartz_block_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/quartz_block_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/red_sandstone_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/red_sandstone_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/sandstone_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/sandstone_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/smooth_stone_slab.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/assets/minecraft/textures/block/smooth_stone_slab_vertical.png (100%) rename {runtimeResourcePack/Distinct Slabs => src/main/resources/resourcepacks/distint_slabs}/pack.mcmeta (100%) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 8204f5f..cc24a02 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -3,8 +3,11 @@ import net.fabricmc.api.ClientModInitializer; public class AutoSlabsClient implements ClientModInitializer { + final ModContainer container = FabricLoader.getInstance().getModContainer("autoslabs").get(); + @Override public void onInitializeClient() { // This entrypoint is suitable for setting up client-specific logic, such as rendering. + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslab", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.NORMAL); } } \ No newline at end of file diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/cut_sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_andesite_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_andesite_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_andesite_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_andesite_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_blackstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_blackstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_blackstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_blackstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_deepslate_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_deepslate_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_deepslate_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_deepslate_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_diorite_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_diorite_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_diorite_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_diorite_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_granite_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_granite_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/polished_granite_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_granite_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/quartz_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/quartz_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/quartz_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/quartz_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/red_sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/red_sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/red_sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/red_sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/smooth_stone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/smooth_stone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/blockstates/smooth_stone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/smooth_stone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/quartz_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_andesite_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_andesite_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/quartz_block_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/quartz_block_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/sandstone_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/sandstone_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/smooth_stone_slab.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/smooth_stone_slab.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab.png diff --git a/runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png b/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png similarity index 100% rename from runtimeResourcePack/Distinct Slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png rename to src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png diff --git a/runtimeResourcePack/Distinct Slabs/pack.mcmeta b/src/main/resources/resourcepacks/distint_slabs/pack.mcmeta similarity index 100% rename from runtimeResourcePack/Distinct Slabs/pack.mcmeta rename to src/main/resources/resourcepacks/distint_slabs/pack.mcmeta From 882668fafd5215897727cd9128489d83ec3954a6 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 20 Jul 2023 22:08:46 -0400 Subject: [PATCH 14/71] import packages to properly compile changes --- .../io/github/andrew6rant/autoslabs/AutoSlabsClient.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index cc24a02..389a863 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,6 +1,12 @@ package io.github.andrew6rant.autoslabs; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.fabricmc.fabric.api.resource.ResourcePackActivationType; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; public class AutoSlabsClient implements ClientModInitializer { final ModContainer container = FabricLoader.getInstance().getModContainer("autoslabs").get(); From cf738cfa6a3181d34113def0cc15829615ad3882 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 20 Jul 2023 22:14:37 -0400 Subject: [PATCH 15/71] fix identifiers so the pack can be loaded --- .../andrew6rant/autoslabs/AutoSlabsClient.java | 2 +- .../blockstates/cut_red_sandstone_slab.json | 0 .../minecraft/blockstates/cut_sandstone_slab.json | 0 .../blockstates/polished_andesite_slab.json | 0 .../blockstates/polished_blackstone_slab.json | 0 .../blockstates/polished_deepslate_slab.json | 0 .../blockstates/polished_diorite_slab.json | 0 .../blockstates/polished_granite_slab.json | 0 .../blockstates/prismarine_bricks_slab.json | 0 .../assets/minecraft/blockstates/quartz_slab.json | 0 .../minecraft/blockstates/red_sandstone_slab.json | 0 .../minecraft/blockstates/sandstone_slab.json | 0 .../minecraft/blockstates/smooth_stone_slab.json | 0 .../models/block/cut_red_sandstone_slab.json | 0 .../models/block/cut_red_sandstone_slab_double.json | 0 .../models/block/cut_red_sandstone_slab_top.json | 0 ...ed_sandstone_slab_vertical_east_west_bottom.json | 0 ...ed_sandstone_slab_vertical_east_west_double.json | 0 ...t_red_sandstone_slab_vertical_east_west_top.json | 0 ..._sandstone_slab_vertical_north_south_bottom.json | 0 ..._sandstone_slab_vertical_north_south_double.json | 0 ...red_sandstone_slab_vertical_north_south_top.json | 0 .../minecraft/models/block/cut_sandstone_slab.json | 0 .../models/block/cut_sandstone_slab_double.json | 0 .../models/block/cut_sandstone_slab_top.json | 0 ...ut_sandstone_slab_vertical_east_west_bottom.json | 0 ...ut_sandstone_slab_vertical_east_west_double.json | 0 .../cut_sandstone_slab_vertical_east_west_top.json | 0 ..._sandstone_slab_vertical_north_south_bottom.json | 0 ..._sandstone_slab_vertical_north_south_double.json | 0 ...cut_sandstone_slab_vertical_north_south_top.json | 0 .../models/block/polished_andesite_slab.json | 0 .../models/block/polished_andesite_slab_double.json | 0 .../models/block/polished_andesite_slab_top.json | 0 ...hed_andesite_slab_vertical_east_west_bottom.json | 0 ...hed_andesite_slab_vertical_east_west_double.json | 0 ...lished_andesite_slab_vertical_east_west_top.json | 0 ...d_andesite_slab_vertical_north_south_bottom.json | 0 ...d_andesite_slab_vertical_north_south_double.json | 0 ...shed_andesite_slab_vertical_north_south_top.json | 0 .../models/block/polished_blackstone_slab.json | 0 .../block/polished_blackstone_slab_double.json | 0 .../models/block/polished_blackstone_slab_top.json | 0 ...d_blackstone_slab_vertical_east_west_bottom.json | 0 ...d_blackstone_slab_vertical_east_west_double.json | 0 ...shed_blackstone_slab_vertical_east_west_top.json | 0 ...blackstone_slab_vertical_north_south_bottom.json | 0 ...blackstone_slab_vertical_north_south_double.json | 0 ...ed_blackstone_slab_vertical_north_south_top.json | 0 .../models/block/polished_deepslate_slab.json | 0 .../block/polished_deepslate_slab_double.json | 0 .../models/block/polished_deepslate_slab_top.json | 0 ...ed_deepslate_slab_vertical_east_west_bottom.json | 0 ...ed_deepslate_slab_vertical_east_west_double.json | 0 ...ished_deepslate_slab_vertical_east_west_top.json | 0 ..._deepslate_slab_vertical_north_south_bottom.json | 0 ..._deepslate_slab_vertical_north_south_double.json | 0 ...hed_deepslate_slab_vertical_north_south_top.json | 0 .../models/block/polished_diorite_slab.json | 0 .../models/block/polished_diorite_slab_double.json | 0 .../models/block/polished_diorite_slab_top.json | 0 ...shed_diorite_slab_vertical_east_west_bottom.json | 0 ...shed_diorite_slab_vertical_east_west_double.json | 0 ...olished_diorite_slab_vertical_east_west_top.json | 0 ...ed_diorite_slab_vertical_north_south_bottom.json | 0 ...ed_diorite_slab_vertical_north_south_double.json | 0 ...ished_diorite_slab_vertical_north_south_top.json | 0 .../models/block/polished_granite_slab.json | 0 .../models/block/polished_granite_slab_double.json | 0 .../models/block/polished_granite_slab_top.json | 0 ...shed_granite_slab_vertical_east_west_bottom.json | 0 ...shed_granite_slab_vertical_east_west_double.json | 0 ...olished_granite_slab_vertical_east_west_top.json | 0 ...ed_granite_slab_vertical_north_south_bottom.json | 0 ...ed_granite_slab_vertical_north_south_double.json | 0 ...ished_granite_slab_vertical_north_south_top.json | 0 .../models/block/prismarine_bricks_slab.json | 0 .../models/block/prismarine_bricks_slab_double.json | 0 .../models/block/prismarine_bricks_slab_top.json | 0 ...arine_bricks_slab_vertical_east_west_bottom.json | 0 ...arine_bricks_slab_vertical_east_west_double.json | 0 ...ismarine_bricks_slab_vertical_east_west_top.json | 0 ...ine_bricks_slab_vertical_north_south_bottom.json | 0 ...ine_bricks_slab_vertical_north_south_double.json | 0 ...marine_bricks_slab_vertical_north_south_top.json | 0 .../models/block/quartz_block_slab_double.json | 0 .../models/block/quartz_block_slab_top.json | 0 ...quartz_block_slab_vertical_east_west_bottom.json | 0 ...quartz_block_slab_vertical_east_west_double.json | 0 .../quartz_block_slab_vertical_east_west_top.json | 0 ...artz_block_slab_vertical_north_south_bottom.json | 0 ...artz_block_slab_vertical_north_south_double.json | 0 .../quartz_block_slab_vertical_north_south_top.json | 0 .../assets/minecraft/models/block/quartz_slab.json | 0 .../minecraft/models/block/red_sandstone_slab.json | 0 .../models/block/red_sandstone_slab_double.json | 0 .../models/block/red_sandstone_slab_top.json | 0 ...ed_sandstone_slab_vertical_east_west_bottom.json | 0 ...ed_sandstone_slab_vertical_east_west_double.json | 0 .../red_sandstone_slab_vertical_east_west_top.json | 0 ..._sandstone_slab_vertical_north_south_bottom.json | 0 ..._sandstone_slab_vertical_north_south_double.json | 0 ...red_sandstone_slab_vertical_north_south_top.json | 0 .../minecraft/models/block/sandstone_slab.json | 0 .../models/block/sandstone_slab_double.json | 0 .../minecraft/models/block/sandstone_slab_top.json | 0 .../sandstone_slab_vertical_east_west_bottom.json | 0 .../sandstone_slab_vertical_east_west_double.json | 0 .../sandstone_slab_vertical_east_west_top.json | 0 .../sandstone_slab_vertical_north_south_bottom.json | 0 .../sandstone_slab_vertical_north_south_double.json | 0 .../sandstone_slab_vertical_north_south_top.json | 0 .../minecraft/models/block/smooth_stone_slab.json | 0 .../models/block/smooth_stone_slab_double.json | 0 .../models/block/smooth_stone_slab_top.json | 0 ...smooth_stone_slab_vertical_east_west_bottom.json | 0 ...smooth_stone_slab_vertical_east_west_double.json | 0 .../smooth_stone_slab_vertical_east_west_top.json | 0 ...ooth_stone_slab_vertical_north_south_bottom.json | 0 ...ooth_stone_slab_vertical_north_south_double.json | 0 .../smooth_stone_slab_vertical_north_south_top.json | 0 .../textures/block/cut_red_sandstone_slab.png | Bin .../block/cut_red_sandstone_slab_vertical.png | Bin .../minecraft/textures/block/cut_sandstone_slab.png | Bin .../textures/block/cut_sandstone_slab_vertical.png | Bin .../textures/block/polished_andesite_slab.png | Bin .../block/polished_andesite_slab_vertical.png | Bin .../textures/block/polished_blackstone_slab.png | Bin .../block/polished_blackstone_slab_vertical.png | Bin .../textures/block/polished_deepslate_slab.png | Bin .../block/polished_deepslate_slab_vertical.png | Bin .../textures/block/polished_diorite_slab.png | Bin .../block/polished_diorite_slab_vertical.png | Bin .../textures/block/polished_granite_slab.png | Bin .../block/polished_granite_slab_vertical.png | Bin .../textures/block/prismarine_bricks_slab.png | Bin .../block/prismarine_bricks_slab_vertical.png | Bin .../minecraft/textures/block/quartz_block_slab.png | Bin .../textures/block/quartz_block_slab_vertical.png | Bin .../minecraft/textures/block/red_sandstone_slab.png | Bin .../textures/block/red_sandstone_slab_vertical.png | Bin .../minecraft/textures/block/sandstone_slab.png | Bin .../textures/block/sandstone_slab_vertical.png | Bin .../minecraft/textures/block/smooth_stone_slab.png | Bin .../textures/block/smooth_stone_slab_vertical.png | Bin .../{distint_slabs => distinct_slabs}/pack.mcmeta | 0 146 files changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/cut_red_sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/cut_sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/polished_andesite_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/polished_blackstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/polished_deepslate_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/polished_diorite_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/polished_granite_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/prismarine_bricks_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/quartz_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/red_sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/blockstates/smooth_stone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/quartz_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/cut_red_sandstone_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/cut_sandstone_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_andesite_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_andesite_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_blackstone_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_deepslate_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_diorite_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_diorite_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_granite_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/polished_granite_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/prismarine_bricks_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/quartz_block_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/quartz_block_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/red_sandstone_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/red_sandstone_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/sandstone_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/sandstone_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/smooth_stone_slab.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/assets/minecraft/textures/block/smooth_stone_slab_vertical.png (100%) rename src/main/resources/resourcepacks/{distint_slabs => distinct_slabs}/pack.mcmeta (100%) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 389a863..3e94c0f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -14,6 +14,6 @@ public class AutoSlabsClient implements ClientModInitializer { @Override public void onInitializeClient() { // This entrypoint is suitable for setting up client-specific logic, such as rendering. - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslab", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.NORMAL); + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.NORMAL); } } \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/cut_red_sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/cut_sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/cut_sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/cut_sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_andesite_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_andesite_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_andesite_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_andesite_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_blackstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_blackstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_blackstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_blackstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_deepslate_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_deepslate_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_deepslate_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_deepslate_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_diorite_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_diorite_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_diorite_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_diorite_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_granite_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_granite_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/polished_granite_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/polished_granite_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/quartz_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/quartz_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/quartz_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/quartz_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/red_sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/red_sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/red_sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/red_sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/smooth_stone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/smooth_stone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/blockstates/smooth_stone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/smooth_stone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_red_sandstone_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/cut_sandstone_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_andesite_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_blackstone_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_deepslate_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_diorite_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/polished_granite_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_block_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/quartz_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/quartz_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/red_sandstone_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/sandstone_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/smooth_stone_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_red_sandstone_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_sandstone_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_sandstone_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/cut_sandstone_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_andesite_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_andesite_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_andesite_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_blackstone_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_blackstone_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_blackstone_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_deepslate_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_deepslate_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_deepslate_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_diorite_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_diorite_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_diorite_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_granite_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_granite_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/polished_granite_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/prismarine_bricks_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/prismarine_bricks_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/quartz_block_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/quartz_block_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/quartz_block_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/sandstone_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/sandstone_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/sandstone_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/smooth_stone_slab.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/smooth_stone_slab.png diff --git a/src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/smooth_stone_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distint_slabs/pack.mcmeta b/src/main/resources/resourcepacks/distinct_slabs/pack.mcmeta similarity index 100% rename from src/main/resources/resourcepacks/distint_slabs/pack.mcmeta rename to src/main/resources/resourcepacks/distinct_slabs/pack.mcmeta From d87f5ccfe79f438da3f508250b2b20d1b383037e Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 21 Jul 2023 13:01:40 -0400 Subject: [PATCH 16/71] tweak built-in resource pack - Enable it by default (can always be disabled by user - Fix prismarine slabs not getting textures applied - Add custom textures to vertical sandstone and red sandstone slabs --- .../andrew6rant/autoslabs/AutoSlabsClient.java | 2 +- .../blockstates/prismarine_brick_slab.json | 13 +++++++++++++ .../blockstates/prismarine_bricks_slab.json | 13 ------------- ...cks_slab.json => prismarine_brick_slab.json} | 0 ...e.json => prismarine_brick_slab_double.json} | 0 ..._top.json => prismarine_brick_slab_top.json} | 0 ...e_brick_slab_vertical_east_west_bottom.json} | 0 ...e_brick_slab_vertical_east_west_double.json} | 0 ...rine_brick_slab_vertical_east_west_top.json} | 0 ...brick_slab_vertical_north_south_bottom.json} | 0 ...brick_slab_vertical_north_south_double.json} | 0 ...ne_brick_slab_vertical_north_south_top.json} | 0 .../textures/block/red_sandstone_slab.png | Bin 501 -> 488 bytes .../block/red_sandstone_slab_vertical.png | Bin 561 -> 539 bytes .../textures/block/sandstone_slab_vertical.png | Bin 552 -> 560 bytes 15 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_brick_slab.json delete mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab.json => prismarine_brick_slab.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_double.json => prismarine_brick_slab_double.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_top.json => prismarine_brick_slab_top.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_vertical_east_west_bottom.json => prismarine_brick_slab_vertical_east_west_bottom.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_vertical_east_west_double.json => prismarine_brick_slab_vertical_east_west_double.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_vertical_east_west_top.json => prismarine_brick_slab_vertical_east_west_top.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_vertical_north_south_bottom.json => prismarine_brick_slab_vertical_north_south_bottom.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_vertical_north_south_double.json => prismarine_brick_slab_vertical_north_south_double.json} (100%) rename src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/{prismarine_bricks_slab_vertical_north_south_top.json => prismarine_brick_slab_vertical_north_south_top.json} (100%) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 3e94c0f..cb3a6e3 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -14,6 +14,6 @@ public class AutoSlabsClient implements ClientModInitializer { @Override public void onInitializeClient() { // This entrypoint is suitable for setting up client-specific logic, such as rendering. - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.NORMAL); + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); } } \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_brick_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_brick_slab.json new file mode 100644 index 0000000..2f23a2d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_brick_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "minecraft:block/prismarine_brick_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "minecraft:block/prismarine_brick_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "minecraft:block/prismarine_brick_slab_double" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json deleted file mode 100644 index c271e3b..0000000 --- a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/blockstates/prismarine_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=double,vertical_type=north_south": { - "model": "minecraft:block/prismarine_bricks_slab_vertical_north_south_double" - }, - "type=double,vertical_type=east_west": { - "model": "minecraft:block/prismarine_bricks_slab_vertical_east_west_double" - }, - "type=double,vertical_type=false": { - "model": "minecraft:block/prismarine_bricks_slab_double" - } - } -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_double.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_double.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_top.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_top.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_east_west_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_east_west_bottom.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_east_west_double.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_east_west_double.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_east_west_top.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_east_west_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_east_west_top.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_north_south_bottom.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_bottom.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_north_south_bottom.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_north_south_double.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_double.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_north_south_double.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_north_south_top.json similarity index 100% rename from src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_bricks_slab_vertical_north_south_top.json rename to src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/models/block/prismarine_brick_slab_vertical_north_south_top.json diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab.png index ac153d6e45684d657895734a5fe0a5e02d065374..b4472f62211dde8563f3db603612989c51aeaf84 100644 GIT binary patch delta 449 zcmV;y0Y3iq1Ly;gF@K^-L_t(Ijn$LQZks?9g+EgaK@OHpu@GKh+y&lbQOPgWcj(LY z1+vS=-q`UX$Pxj>G@4wjq+KAUCV7I6G}6rdopbJ)(eCH>KYUoyUT~c;(q2BghH)a; zjrz??`wl?!`t~Vkdh^Bj`tx&G`Ug`%nl_r?xM%dSQvwtM!es|<9jSUz3Q*IJhQGmOMjs5U+X7vB-z*;XO`rWU7&f87OdKuw( zK3Ni*LU(Cwn%PCw&9ta$wwn}yQfUrPXG*2b(@UiZ=QF}NJREbr1|jiujJ1jaimE0{ zVnhTH85FzbVB%O5Rn2-CkuGk@n+tYNph$-=Z!Rb;MmoYG!sEF_Y2mr-LDr_Y4V^q6 r&&F$Xus?MK_kU!6%5gj&_$Ru*=p^|4$pYvl00000NkvXXu0mjfxz*f< delta 462 zcmV;<0WtpQ1N8%tF@LW~L_t(Ijm?w6ZrVT)hQBz*iv_m8F|y17Ob_J3p;BI|@6ea) z3-rb%TtYb1LNd1HZDa-n>B031C+fX>n%((#XZHJd@1DPZedoiF(;4OTkkk2Ns;d*h zuJmu-PFDb`gc@86qT8{cZ}^)~Hn@LUCet_6U@&Du*YpMMJ2Pmc*dpSO6fVjcx3 zr8cr27P=M!&jsM_$G0!Wg{&w$_ivdrRU2@p zTATc08ezu|zJC$7@xN>gJb7nZZwII~J(*4q@%RoGe4c$yU@Pmc)zxvqKnwKtpn{{7#sMucNn zZ&MzEkl62G&7;7yDk6wT=dfFd1IHpON*2?IWHKbJ&PUj7`yygE=vvGZ77{1-pGXMep08~{B&CR1~fdBvi07*qoM6N<$ Ef|``%jQ{`u diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/minecraft/textures/block/red_sandstone_slab_vertical.png index d14c3dc59066ab5cabd2bed4a46fe8709451722f..00c93895d3084944dd53af4061a0525e34a37537 100644 GIT binary patch delta 500 zcmVW#~CfpXXgDTF94@=nk~50PEi&Bc!Y8PELx{O&yd_`uXKeQ2*{-!2JF?HePP>n*^g30M-cr`>V5cDSvMY#1Ho~em`z7S}`4` zD5V1E&*zgYoUOJw)(J){tP^5ibu=81*C+aSXX@t{W*^^&WDyB8N5cV7g*6fp=97%# zP|-L`FNw(d-B8IV_mT*JUJ_xQkQ$A3Lg&}_FBgA%aj0(iUw7w)Yn%j{u-vp-9Gg~LkC)c9W1NoD&}v?vNR6hnE(CZgt8I>t^_Li}h?PS z*p~&7_kcHyh)^7=(0bPIhDr32h~iN3`O`QUEf#5K>eswJVV#6_l~VlKwflYPd-(5{ qU?guMAiN1b;_LrJ8vq(-0r&@51TR(q#Y_YM0000($eDTb^WO04_0O+Qz8q2Q!aU%GQ z`NyF>0nogEdoqs4^URTTt<+xaEN(aodgz#QD`*OR(>#8odI~JRgS)n+zC$zC>W686` zfe-Bo5kVX4i1j-#KoG@_tR#-m#?r}rXivR8(Z(_>6n;7$k!NRu%I4^R+E}W6&GS>? zTF$e?B?DOR^tpr1@TMzAQm3;vmgfC~=|nkYW`$zDDu0Qi5Wm`=HNC8+jb*vrIq>lI z8f`4;ctkpe`KshclA?w;czKpk?Q5nJg@_;`y=0evVGwv!`z(tuJy>kc3Uq&Du_+0nxVLow0U$atWz5&P1ONa4 N07*qoLi<1h52cY+Y^ExB!2*CC96VysBQAuiv~6M z^V9zR^9TGOA?gqCgzrFGkB1{y%cm2xlK4S_Rua#4743xWa=}?6 z<#0bps2^*Nhkqlql5{V|^slZ@95um3S&iG}0<9#*6xB)oGF`0BuH(DJx2_ZsECVBhrlBk!`j8nYQXrQ`T z)(5R5`LxPIEJm37?`S0tccD^Dxl@NA*$@HlPS_D2e|zVFBLn;c5HCHF53y(W00000 MNkvXXt^-0~g4rVh%>V!Z delta 513 zcmV+c0{;E51gHd%F@NGoL_t(Ijct=ZZ`wc@#(yBE)dfr|D+T7F)jayzle8SNi+s=bjJe?RCwk&tG|a zU4L{HPNq|w?fN%bD*$#IbrN(|bFI(Zk7J$XbW}*FRDA%_B!A2e(ZTi-J)QuR!e2l3 zi~Bn&RUfb2#SxW4Kom@<_XdS`nuJuUKK0&!((K`OuVsj6__od6M&Y$OM8O2F-372? z0+@J!GC;jIK+BM9n;?Ws?efYZnPegI`Gs&vlMvTy z|Kj=v=XlIz3VjYtV;G9=2S+3VW#S$a4(0*Z0R4i%shdBp^pw06WUaNzOrRBsR{ZA1s z!@L7yc!?e@Nk(TCOLiMYy*IGRH2XuA(-D=bk7G2|GJ2%_?fZLsKCAf{6(4p(#S+o* z5%?^pBfiu-)Gn_md+n}mHPb1XP7B43|AG)MT83O)-{7@6Y@VNRO#7KmEe~lD5(U_z z@nS}rgonS7Q^Z-#JuH%u6R>(m!Q|xaoL6(eZ34hQ6Ff7f;+`gJ00000NkvXXu0mjf D7mxN~ From c06ad6fe7001bb00b9b320424ee3f590736593ff Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 3 Aug 2023 17:26:50 -0400 Subject: [PATCH 17/71] clean up code moved blockstate setup into util function fixed statement logspam fixed runtime resource pack not being auto-enabled --- .../andrew6rant/autoslabs/AutoSlabs.java | 65 +--------------- .../andrew6rant/autoslabs/ModelUtil.java | 78 +++++++++++++++++++ .../mixin/FileResourcePackProviderMixin.java | 4 +- .../autoslabs/mixin/StateMixin.java | 9 +-- 4 files changed, 85 insertions(+), 71 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index d1263c8..d12c35c 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -15,74 +15,13 @@ import virtuoel.statement.api.StateRefresher; public class AutoSlabs implements ModInitializer { - public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources"); - + public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); @Override public void onInitialize() { - for (Block block : Registries.BLOCK) { if (block instanceof SlabBlock) { - StateRefresher.INSTANCE.addBlockProperty(block, EnumProperty.of("vertical_type", VerticalType.class), VerticalType.FALSE); - Identifier id = Registries.BLOCK.getId(block); - String namespace = id.getNamespace(); - String path = id.getPath(); - Identifier vertical_north_south_top_slab = new Identifier(namespace, "block/"+path + "_vertical_north_south_top"); - Identifier vertical_north_south_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_north_south_bottom"); - Identifier vertical_east_west_top_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_top"); - Identifier vertical_east_west_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_bottom"); - // Yes, I know these models are incredibly inefficient, but I need to parent them this way for the best mod compatibility. - JModel verticalSlabNorthSouthTopModel = JModel.model().parent(namespace+":block/"+path) - .element(JModel.element().from(0, 0, 0).to(16, 16, 8) - .faces(JModel.faces() - .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) - .east(JModel.face("side").cullface(Direction.EAST).uv(8, 0, 16, 16)) - .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) - .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 8, 16)) - .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 16, 8)) - .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); - - JModel verticalSlabNorthSouthBottomModel = JModel.model().parent(namespace+":block/"+path) - .element(JModel.element().from(0, 0, 8).to(16, 16, 16) - .faces(JModel.faces() - .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) - .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 8, 16)) - .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) - .west(JModel.face("side").cullface(Direction.WEST).uv(8, 0, 16, 16)) - .up(JModel.face("top").cullface(Direction.UP).uv(0, 8, 16, 16)) - .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); - - JModel verticalSlabEastWestTopModel = JModel.model().parent(namespace+":block/"+path) - .element(JModel.element().from(8, 0, 0).to(16, 16, 16) - .faces(JModel.faces() - .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 8, 16)) - .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 16, 16)) - .south(JModel.face("side").cullface(Direction.SOUTH).uv(8, 0, 16, 16)) - .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) - .up(JModel.face("top").cullface(Direction.UP).uv(8, 0, 16, 16)) - .down(JModel.face("bottom").cullface(Direction.DOWN).uv(8, 0, 16, 16)))); - - JModel verticalSlabEastWestBottomModel = JModel.model().parent(namespace+":block/"+path) - .element(JModel.element().from(0, 0, 0).to(8, 16, 16) - .faces(JModel.faces() - .north(JModel.face("side").cullface(Direction.NORTH).uv(8, 0, 16, 16)) - .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 16, 16)) - .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 8, 16)) - .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) - .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 8, 16)) - .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 8, 16)))); - - AUTO_SLABS_RESOURCES.addModel(verticalSlabNorthSouthTopModel, vertical_north_south_top_slab); - AUTO_SLABS_RESOURCES.addModel(verticalSlabNorthSouthBottomModel, vertical_north_south_bottom_slab); - AUTO_SLABS_RESOURCES.addModel(verticalSlabEastWestTopModel, vertical_east_west_top_slab); - AUTO_SLABS_RESOURCES.addModel(verticalSlabEastWestBottomModel, vertical_east_west_bottom_slab); - - AUTO_SLABS_RESOURCES.addBlockState(JState.state(new JVariant() - .put("type=bottom,vertical_type=north_south", JState.model(vertical_north_south_bottom_slab)) - .put("type=bottom,vertical_type=east_west", JState.model(vertical_east_west_bottom_slab)) - .put("type=top,vertical_type=north_south", JState.model(vertical_north_south_top_slab)) - .put("type=top,vertical_type=east_west", JState.model(vertical_east_west_top_slab)) - ), id); + ModelUtil.setup(AUTO_SLABS_RESOURCES, block); } } StateRefresher.INSTANCE.reorderBlockStates(); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java new file mode 100644 index 0000000..c8a397c --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java @@ -0,0 +1,78 @@ +package io.github.andrew6rant.autoslabs; + +import net.devtech.arrp.api.RuntimeResourcePack; +import net.devtech.arrp.json.blockstate.JState; +import net.devtech.arrp.json.blockstate.JVariant; +import net.devtech.arrp.json.models.JModel; +import net.minecraft.block.Block; +import net.minecraft.registry.Registries; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Direction; +import virtuoel.statement.api.StateRefresher; + +public class ModelUtil { + public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) { + StateRefresher.INSTANCE.addBlockProperty(block, EnumProperty.of("vertical_type", VerticalType.class), VerticalType.FALSE); + Identifier id = Registries.BLOCK.getId(block); + String namespace = id.getNamespace(); + String path = id.getPath(); + Identifier vertical_north_south_top_slab = new Identifier(namespace, "block/"+path + "_vertical_north_south_top"); + Identifier vertical_north_south_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_north_south_bottom"); + Identifier vertical_east_west_top_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_top"); + Identifier vertical_east_west_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_bottom"); + + // Yes, I know these models are incredibly inefficient, but I need to parent them this way for the best mod compatibility. + JModel verticalSlabNorthSouthTopModel = JModel.model().parent(namespace+":block/"+path) + .element(JModel.element().from(0, 0, 0).to(16, 16, 8) + .faces(JModel.faces() + .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) + .east(JModel.face("side").cullface(Direction.EAST).uv(8, 0, 16, 16)) + .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) + .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 8, 16)) + .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 16, 8)) + .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); + + JModel verticalSlabNorthSouthBottomModel = JModel.model().parent(namespace+":block/"+path) + .element(JModel.element().from(0, 0, 8).to(16, 16, 16) + .faces(JModel.faces() + .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) + .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 8, 16)) + .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) + .west(JModel.face("side").cullface(Direction.WEST).uv(8, 0, 16, 16)) + .up(JModel.face("top").cullface(Direction.UP).uv(0, 8, 16, 16)) + .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); + + JModel verticalSlabEastWestTopModel = JModel.model().parent(namespace+":block/"+path) + .element(JModel.element().from(8, 0, 0).to(16, 16, 16) + .faces(JModel.faces() + .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 8, 16)) + .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 16, 16)) + .south(JModel.face("side").cullface(Direction.SOUTH).uv(8, 0, 16, 16)) + .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) + .up(JModel.face("top").cullface(Direction.UP).uv(8, 0, 16, 16)) + .down(JModel.face("bottom").cullface(Direction.DOWN).uv(8, 0, 16, 16)))); + + JModel verticalSlabEastWestBottomModel = JModel.model().parent(namespace+":block/"+path) + .element(JModel.element().from(0, 0, 0).to(8, 16, 16) + .faces(JModel.faces() + .north(JModel.face("side").cullface(Direction.NORTH).uv(8, 0, 16, 16)) + .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 16, 16)) + .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 8, 16)) + .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) + .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 8, 16)) + .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 8, 16)))); + + AUTO_SLABS_RESOURCES.addModel(verticalSlabNorthSouthTopModel, vertical_north_south_top_slab); + AUTO_SLABS_RESOURCES.addModel(verticalSlabNorthSouthBottomModel, vertical_north_south_bottom_slab); + AUTO_SLABS_RESOURCES.addModel(verticalSlabEastWestTopModel, vertical_east_west_top_slab); + AUTO_SLABS_RESOURCES.addModel(verticalSlabEastWestBottomModel, vertical_east_west_bottom_slab); + + AUTO_SLABS_RESOURCES.addBlockState(JState.state(new JVariant() + .put("type=bottom,vertical_type=north_south", JState.model(vertical_north_south_bottom_slab)) + .put("type=bottom,vertical_type=east_west", JState.model(vertical_east_west_bottom_slab)) + .put("type=top,vertical_type=north_south", JState.model(vertical_north_south_top_slab)) + .put("type=top,vertical_type=east_west", JState.model(vertical_east_west_top_slab)) + ), id); + } +} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java index 613b345..33c3de4 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java @@ -21,7 +21,7 @@ // This mixin is based off of ARRP's FileResourcePackProviderMixin, // I just need to modify it slightly to automatically enable my BEFORE_USER resource pack -@Mixin(FileResourcePackProvider.class) +@Mixin(value = FileResourcePackProvider.class, priority = 1100) // default priority is 1000, this will let it run after public class FileResourcePackProviderMixin { @Shadow @Final private ResourceType type; private static final ResourcePackSource RUNTIME = ResourcePackSource.create(getSourceTextSupplier(), true); @@ -47,7 +47,7 @@ public void register( adder.accept(ResourcePackProfile.create( pack.getName(), Text.literal(pack.getName()), - true, // this is the difference from ARRP's mixin (I want my pack to be enabled by default) + true, // this is the main difference from ARRP's mixin (I want my pack to be enabled by default) (name) -> pack, this.type, ResourcePackProfile.InsertionPosition.TOP, diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java index 99626af..857a39c 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java @@ -5,6 +5,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.Configurator; import org.apache.logging.log4j.core.config.LoggerConfig; import org.spongepowered.asm.mixin.Mixin; import virtuoel.statement.Statement; @@ -15,12 +16,8 @@ public class StateMixin { static { // Immense amount of trolling - Statement.LOGGER.warn("Logging disabled by AutoSlabs!"); - LoggerContext ctx = (LoggerContext) LogManager.getContext(false); - Configuration config = ctx.getConfiguration(); - LoggerConfig loggerConfig = config.getLoggerConfig(StatementApi.MOD_ID); - loggerConfig.setLevel(Level.FATAL); - ctx.updateLoggers(); + Statement.LOGGER.error("Statement API's logging has been disabled by AutoSlabs!"); + Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); } } From c44d5b89b22b42d0075092fb42aae311533e2af6 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 3 Aug 2023 21:56:55 -0400 Subject: [PATCH 18/71] add config option to disable Statement API log suppression --- build.gradle | 7 + gradle.properties | 3 +- .../autoslabs/AutoSlabsClient.java | 3 +- .../autoslabs/config/ClientConfig.java | 5 + .../autoslabs/config/ConfigEntrypoint.java | 13 + .../autoslabs/config/MidnightConfig.java | 422 ++++++++++++++++++ .../autoslabs/mixin/StateMixin.java | 9 +- .../assets/autoslabs/lang/en_us.json | 4 + src/main/resources/fabric.mod.json | 3 + 9 files changed, 464 insertions(+), 5 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java create mode 100644 src/main/resources/assets/autoslabs/lang/en_us.json diff --git a/build.gradle b/build.gradle index ceedfc3..0e95c16 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,9 @@ repositories { maven { url = uri("https://ueaj.dev/maven") } + maven { + url "https://maven.terraformersmc.com/releases/" + } } dependencies { @@ -42,6 +45,10 @@ dependencies { exclude group: "net.fabricmc.fabric-api" }) modImplementation("net.devtech:arrp:${project.arrp_version}") + + modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { + exclude module: "fabric-api" + } } processResources { diff --git a/gradle.properties b/gradle.properties index 24aa090..19c4ea0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,4 +16,5 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 statement_version=4.2.5 -arrp_version=0.6.7 \ No newline at end of file +arrp_version=0.6.7 +modmenu_version = 7.2.1 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index cb3a6e3..5e755c8 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs; +import io.github.andrew6rant.autoslabs.config.ClientConfig; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; @@ -13,7 +14,7 @@ public class AutoSlabsClient implements ClientModInitializer { @Override public void onInitializeClient() { - // This entrypoint is suitable for setting up client-specific logic, such as rendering. ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); + ClientConfig.init("auto_slabs", ClientConfig.class); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java new file mode 100644 index 0000000..72020db --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java @@ -0,0 +1,5 @@ +package io.github.andrew6rant.autoslabs.config; + +public class ClientConfig extends MidnightConfig { + @Entry public static boolean suppressStatementAPILogger = true; +} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java b/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java new file mode 100644 index 0000000..4663703 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java @@ -0,0 +1,13 @@ +package io.github.andrew6rant.autoslabs.config; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; + +public class ConfigEntrypoint implements ModMenuApi { + + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return parent -> ClientConfig.getScreen(parent,"auto_slabs"); + } + +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java new file mode 100644 index 0000000..f324034 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java @@ -0,0 +1,422 @@ +package io.github.andrew6rant.autoslabs.config; + +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.Selectable; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.tooltip.Tooltip; +import net.minecraft.client.gui.widget.*; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Style; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +import java.awt.Color; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; +import java.util.List; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.regex.Pattern; + +/** MidnightConfig v2.4.0 by TeamMidnightDust & Motschen + * Single class config library - feel free to copy! + * Based on https://github.com/Minenash/TinyConfig + * Credits to Minenash */ + +@SuppressWarnings("unchecked") +public abstract class MidnightConfig { + private static final Pattern INTEGER_ONLY = Pattern.compile("(-?[0-9]*)"); + private static final Pattern DECIMAL_ONLY = Pattern.compile("-?([\\d]+\\.?[\\d]*|[\\d]*\\.?[\\d]+|\\.)"); + private static final Pattern HEXADECIMAL_ONLY = Pattern.compile("(-?[#0-9a-fA-F]*)"); + + private static final List entries = new ArrayList<>(); + + protected static class EntryInfo { + Field field; + Object widget; + int width; + int max; + boolean centered; + Map.Entry error; + Object defaultValue; + Object value; + String tempValue; + boolean inLimits = true; + String id; + Text name; + int index; + ClickableWidget colorButton; + } + + public static final Map> configClass = new HashMap<>(); + private static Path path; + + private static final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE).addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()).setPrettyPrinting().create(); + + public static void init(String modid, Class config) { + path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json"); + configClass.put(modid, config); + + for (Field field : config.getFields()) { + EntryInfo info = new EntryInfo(); + if ((field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) && !field.isAnnotationPresent(Server.class) && !field.isAnnotationPresent(Hidden.class)) + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) initClient(modid, field, info); + if (field.isAnnotationPresent(Comment.class)) info.centered = field.getAnnotation(Comment.class).centered(); + if (field.isAnnotationPresent(Entry.class)) + try { + info.defaultValue = field.get(null); + } catch (IllegalAccessException ignored) {} + } + try { + gson.fromJson(Files.newBufferedReader(path), config); + } + catch (Exception e) { write(modid); } + + for (EntryInfo info : entries) { + if (info.field.isAnnotationPresent(Entry.class)) + try { + info.value = info.field.get(null); + info.tempValue = info.value.toString(); + } catch (IllegalAccessException ignored) {} + } + } + @Environment(EnvType.CLIENT) + private static void initClient(String modid, Field field, EntryInfo info) { + Class type = field.getType(); + Entry e = field.getAnnotation(Entry.class); + info.width = e != null ? e.width() : 0; + info.field = field; + info.id = modid; + + if (e != null) { + if (!e.name().equals("")) info.name = Text.translatable(e.name()); + if (type == int.class) textField(info, Integer::parseInt, INTEGER_ONLY, (int) e.min(), (int) e.max(), true); + else if (type == float.class) textField(info, Float::parseFloat, DECIMAL_ONLY, (float) e.min(), (float) e.max(), false); + else if (type == double.class) textField(info, Double::parseDouble, DECIMAL_ONLY, e.min(), e.max(), false); + else if (type == String.class || type == List.class) { + info.max = e.max() == Double.MAX_VALUE ? Integer.MAX_VALUE : (int) e.max(); + textField(info, String::length, null, Math.min(e.min(), 0), Math.max(e.max(), 1), true); + } else if (type == boolean.class) { + Function func = value -> Text.translatable((Boolean) value ? "gui.yes" : "gui.no").formatted((Boolean) value ? Formatting.GREEN : Formatting.RED); + info.widget = new AbstractMap.SimpleEntry>(button -> { + info.value = !(Boolean) info.value; + button.setMessage(func.apply(info.value)); + }, func); + } else if (type.isEnum()) { + List values = Arrays.asList(field.getType().getEnumConstants()); + Function func = value -> Text.translatable(modid + ".midnightconfig." + "enum." + type.getSimpleName() + "." + info.value.toString()); + info.widget = new AbstractMap.SimpleEntry>(button -> { + int index = values.indexOf(info.value) + 1; + info.value = values.get(index >= values.size() ? 0 : index); + button.setMessage(func.apply(info.value)); + }, func); + } + } + entries.add(info); + } + + private static void textField(EntryInfo info, Function f, Pattern pattern, double min, double max, boolean cast) { + boolean isNumber = pattern != null; + info.widget = (BiFunction>) (t, b) -> s -> { + s = s.trim(); + if (!(s.isEmpty() || !isNumber || pattern.matcher(s).matches())) return false; + + Number value = 0; + boolean inLimits = false; + info.error = null; + if (!(isNumber && s.isEmpty()) && !s.equals("-") && !s.equals(".")) { + try { value = f.apply(s); } catch(NumberFormatException e){ return false; } + inLimits = value.doubleValue() >= min && value.doubleValue() <= max; + info.error = inLimits? null : new AbstractMap.SimpleEntry<>(t, Text.literal(value.doubleValue() < min ? + "§cMinimum " + (isNumber? "value" : "length") + (cast? " is " + (int)min : " is " + min) : + "§cMaximum " + (isNumber? "value" : "length") + (cast? " is " + (int)max : " is " + max))); + } + + info.tempValue = s; + t.setEditableColor(inLimits? 0xFFFFFFFF : 0xFFFF7777); + info.inLimits = inLimits; + b.active = entries.stream().allMatch(e -> e.inLimits); + + if (inLimits && info.field.getType() != List.class) + info.value = isNumber? value : s; + else if (inLimits) { + if (((List) info.value).size() == info.index) ((List) info.value).add(""); + ((List) info.value).set(info.index, Arrays.stream(info.tempValue.replace("[", "").replace("]", "").split(", ")).toList().get(0)); + } + + if (info.field.getAnnotation(Entry.class).isColor()) { + if (!s.contains("#")) s = '#' + s; + if (!HEXADECIMAL_ONLY.matcher(s).matches()) return false; + try { + info.colorButton.setMessage(Text.literal("⬛").setStyle(Style.EMPTY.withColor(Color.decode(info.tempValue).getRGB()))); + } catch (Exception ignored) {} + } + return true; + }; + } + + public static void write(String modid) { + path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json"); + try { + if (!Files.exists(path)) Files.createFile(path); + Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes()); + } catch (Exception e) { + e.printStackTrace(); + } + } + @Environment(EnvType.CLIENT) + public static Screen getScreen(Screen parent, String modid) { + return new MidnightConfigScreen(parent, modid); + } + @Environment(EnvType.CLIENT) + public static class MidnightConfigScreen extends Screen { + protected MidnightConfigScreen(Screen parent, String modid) { + super(Text.translatable(modid + ".midnightconfig." + "title")); + this.parent = parent; + this.modid = modid; + this.translationPrefix = modid + ".midnightconfig."; + } + public final String translationPrefix; + public final Screen parent; + public final String modid; + public MidnightConfigListWidget list; + public boolean reload = false; + + // Real Time config update // + @Override + public void tick() { + super.tick(); + for (EntryInfo info : entries) { + try {info.field.set(null, info.value);} catch (IllegalAccessException ignored) {} + } + updateResetButtons(); + } + public void updateResetButtons() { + if (this.list != null) { + for (ButtonEntry entry : this.list.children()) { + if (entry.buttons != null && entry.buttons.size() > 1 && entry.buttons.get(1) instanceof ButtonWidget button) { + button.active = !Objects.equals(entry.info.value.toString(), entry.info.defaultValue.toString()); + } + } + } + } + public void loadValues() { + try { gson.fromJson(Files.newBufferedReader(path), configClass.get(modid)); } + catch (Exception e) { write(modid); } + + for (EntryInfo info : entries) { + if (info.field.isAnnotationPresent(Entry.class)) + try { + info.value = info.field.get(null); + info.tempValue = info.value.toString(); + } catch (IllegalAccessException ignored) {} + } + } + public Tooltip getTooltip(EntryInfo info) { + return Tooltip.of(I18n.hasTranslation(translationPrefix+info.field.getName()+".tooltip") ? Text.translatable(translationPrefix+info.field.getName()+".tooltip") : Text.empty()); + } + @Override + public void init() { + super.init(); + if (!reload) loadValues(); + + this.addDrawableChild(ButtonWidget.builder(ScreenTexts.CANCEL, button -> { + loadValues(); + Objects.requireNonNull(client).setScreen(parent); + }).dimensions(this.width / 2 - 154, this.height - 28, 150, 20).build()); + + ButtonWidget done = this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, (button) -> { + for (EntryInfo info : entries) + if (info.id.equals(modid)) { + try { + info.field.set(null, info.value); + } catch (IllegalAccessException ignored) {} + } + write(modid); + Objects.requireNonNull(client).setScreen(parent); + }).dimensions(this.width / 2 + 4, this.height - 28, 150, 20).build()); + + this.list = new MidnightConfigListWidget(this.client, this.width, this.height, 32, this.height - 32, 25); + if (this.client != null && this.client.world != null) this.list.setRenderBackground(false); + this.addSelectableChild(this.list); + for (EntryInfo info : entries) { + if (info.id.equals(modid)) { + Text name = Objects.requireNonNullElseGet(info.name, () -> Text.translatable(translationPrefix + info.field.getName())); + ButtonWidget resetButton = ButtonWidget.builder(Text.literal("Reset").formatted(Formatting.RED), (button -> { + info.value = info.defaultValue; + info.tempValue = info.defaultValue.toString(); + info.index = 0; + double scrollAmount = list.getScrollAmount(); + this.reload = true; + Objects.requireNonNull(client).setScreen(this); + list.setScrollAmount(scrollAmount); + })).dimensions(width - 205, 0, 40, 20).build(); + + if (info.widget instanceof Map.Entry) { + Map.Entry> widget = (Map.Entry>) info.widget; + if (info.field.getType().isEnum()) widget.setValue(value -> Text.translatable(translationPrefix + "enum." + info.field.getType().getSimpleName() + "." + info.value.toString())); + this.list.addButton(List.of(ButtonWidget.builder(widget.getValue().apply(info.value), widget.getKey()).dimensions(width - 160, 0,150, 20).tooltip(getTooltip(info)).build(),resetButton), name, info); + } else if (info.field.getType() == List.class) { + if (!reload) info.index = 0; + TextFieldWidget widget = new TextFieldWidget(textRenderer, width - 160, 0, 150, 20, Text.empty()); + widget.setMaxLength(info.width); + if (info.index < ((List)info.value).size()) widget.setText((String.valueOf(((List)info.value).get(info.index)))); + Predicate processor = ((BiFunction>) info.widget).apply(widget, done); + widget.setTextPredicate(processor); + resetButton.setWidth(20); + resetButton.setMessage(Text.literal("R").formatted(Formatting.RED)); + ButtonWidget cycleButton = ButtonWidget.builder(Text.literal(String.valueOf(info.index)).formatted(Formatting.GOLD), (button -> { + ((List)info.value).remove(""); + double scrollAmount = list.getScrollAmount(); + this.reload = true; + info.index = info.index + 1; + if (info.index > ((List)info.value).size()) info.index = 0; + Objects.requireNonNull(client).setScreen(this); + list.setScrollAmount(scrollAmount); + })).dimensions(width - 185, 0, 20, 20).build(); + widget.setTooltip(getTooltip(info)); + this.list.addButton(List.of(widget, resetButton, cycleButton), name, info); + } else if (info.widget != null) { + ClickableWidget widget; + Entry e = info.field.getAnnotation(Entry.class); + if (e.isSlider()) widget = new MidnightSliderWidget(width - 160, 0, 150, 20, Text.of(info.tempValue), (Double.parseDouble(info.tempValue)-e.min()) / (e.max() - e.min()), info); + else widget = new TextFieldWidget(textRenderer, width - 160, 0, 150, 20, null, Text.of(info.tempValue)); + if (widget instanceof TextFieldWidget textField) { + textField.setMaxLength(info.width); + textField.setText(info.tempValue); + Predicate processor = ((BiFunction>) info.widget).apply(textField, done); + textField.setTextPredicate(processor); + } + widget.setTooltip(getTooltip(info)); + if (e.isColor()) { + resetButton.setWidth(20); + resetButton.setMessage(Text.literal("R").formatted(Formatting.RED)); + ButtonWidget colorButton = ButtonWidget.builder(Text.literal("⬛"), (button -> {})).dimensions(width - 185, 0, 20, 20).build(); + try {colorButton.setMessage(Text.literal("⬛").setStyle(Style.EMPTY.withColor(Color.decode(info.tempValue).getRGB())));} catch (Exception ignored) {} + info.colorButton = colorButton; + colorButton.active = false; + this.list.addButton(List.of(widget, resetButton, colorButton), name, info); + } + else this.list.addButton(List.of(widget, resetButton), name, info); + } else { + this.list.addButton(List.of(),name, info); + } + } + updateResetButtons(); + } + + } + @Override + public void render(DrawContext context, int mouseX, int mouseY, float delta) { + this.renderBackground(context); + this.list.render(context, mouseX, mouseY, delta); + context.drawCenteredTextWithShadow(textRenderer, title, width / 2, 15, 0xFFFFFF); + super.render(context,mouseX,mouseY,delta); + } + } + @Environment(EnvType.CLIENT) + public static class MidnightConfigListWidget extends ElementListWidget { + TextRenderer textRenderer; + + public MidnightConfigListWidget(MinecraftClient minecraftClient, int i, int j, int k, int l, int m) { + super(minecraftClient, i, j, k, l, m); + this.centerListVertically = false; + textRenderer = minecraftClient.textRenderer; + } + @Override + public int getScrollbarPositionX() { return this.width -7; } + + public void addButton(List buttons, Text text, EntryInfo info) { + this.addEntry(new ButtonEntry(buttons, text, info)); + } + @Override + public int getRowWidth() { return 10000; } + } + public static class ButtonEntry extends ElementListWidget.Entry { + private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + public final List buttons; + private final Text text; + public final EntryInfo info; + private final List children = new ArrayList<>(); + public static final Map buttonsWithText = new HashMap<>(); + + private ButtonEntry(List buttons, Text text, EntryInfo info) { + if (!buttons.isEmpty()) buttonsWithText.put(buttons.get(0),text); + this.buttons = buttons; + this.text = text; + this.info = info; + children.addAll(buttons); + } + public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + buttons.forEach(b -> { b.setY(y); b.render(context, mouseX, mouseY, tickDelta); }); + if (text != null && (!text.getString().contains("spacer") || !buttons.isEmpty())) { + if (info.centered) context.drawTextWithShadow(textRenderer, text, (int)(MinecraftClient.getInstance().getWindow().getScaledWidth() / 2f - (textRenderer.getWidth(text) / 2f)), y + 5, 0xFFFFFF); + else context.drawTextWithShadow(textRenderer, text, 12, y + 5, 0xFFFFFF); + } + } + public List children() {return children;} + public List selectableChildren() {return children;} + } + private static class MidnightSliderWidget extends SliderWidget { + private final EntryInfo info; private final Entry e; + public MidnightSliderWidget(int x, int y, int width, int height, Text text, double value, EntryInfo info) { + super(x, y, width, height, text, value); + this.e = info.field.getAnnotation(Entry.class); + this.info = info; + } + + @Override + protected void updateMessage() { + this.setMessage(Text.of(info.tempValue)); + } + + @Override + protected void applyValue() { + if (info.field.getType() == int.class) info.value = ((Number) (e.min() + value * (e.max() - e.min()))).intValue(); + else if (info.field.getType() == double.class) info.value = Math.round((e.min() + value * (e.max() - e.min())) * (double) e.precision()) / (double) e.precision(); + else if (info.field.getType() == float.class) info.value = Math.round((e.min() + value * (e.max() - e.min())) * (float) e.precision()) / (float) e.precision(); + info.tempValue = String.valueOf(info.value); + } + } + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Entry { + int width() default 100; + double min() default Double.MIN_NORMAL; + double max() default Double.MAX_VALUE; + String name() default ""; + boolean isColor() default false; + boolean isSlider() default false; + int precision() default 100; + } + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Client {} + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Server {} + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Hidden {} + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Comment { + boolean centered() default false; + } + + public static class HiddenAnnotationExclusionStrategy implements ExclusionStrategy { + public boolean shouldSkipClass(Class clazz) { return false; } + public boolean shouldSkipField(FieldAttributes fieldAttributes) { + return fieldAttributes.getAnnotation(Entry.class) == null; + } + } +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java index 857a39c..b71d700 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; +import io.github.andrew6rant.autoslabs.config.ClientConfig; import net.minecraft.state.State; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; @@ -15,9 +16,11 @@ public class StateMixin { static { - // Immense amount of trolling - Statement.LOGGER.error("Statement API's logging has been disabled by AutoSlabs!"); - Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); + if (ClientConfig.suppressStatementAPILogger) { + // Immense amount of trolling + Statement.LOGGER.error("Statement API's logging has been disabled by AutoSlabs!"); + Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); + } } } diff --git a/src/main/resources/assets/autoslabs/lang/en_us.json b/src/main/resources/assets/autoslabs/lang/en_us.json new file mode 100644 index 0000000..a34b07a --- /dev/null +++ b/src/main/resources/assets/autoslabs/lang/en_us.json @@ -0,0 +1,4 @@ +{ + "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?" + +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8dec69a..a5a9ac1 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,6 +20,9 @@ ], "client": [ "io.github.andrew6rant.autoslabs.AutoSlabsClient" + ], + "modmenu": [ + "io.github.andrew6rant.autoslabs.config.ConfigEntrypoint" ] }, "mixins": [ From 719f4cae94216d93c65f2404b22dd7a5f41bd2bc Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sat, 5 Aug 2023 13:52:36 -0400 Subject: [PATCH 19/71] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 35bcaca..465d257 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,8 @@ Automatically generate vertical slabs for every instance of SlabBlock. Supports Vanilla, as well as any mod that adds Slabs. https://github.com/Andrew6rant/Auto-Slabs/assets/57331134/84e2186a-f51c-4147-b98d-9eca6235cc46 + +Mixed slab functionality and rendering is being tracked on the [mixedslabs branch](https://github.com/Andrew6rant/Auto-Slabs/tree/mixedslabs) of this repository + +https://github.com/Andrew6rant/Auto-Slabs/assets/57331134/ba89a5bd-cac9-4c24-bb84-bf58e168b73d + From 110737df41552247f894767e586b44c1930a45f3 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sat, 5 Aug 2023 21:36:27 -0400 Subject: [PATCH 20/71] prefix mixins --- .../andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java | 2 +- .../autoslabs/mixin/ClientPlayerInteractionManagerMixin.java | 2 +- .../autoslabs/mixin/FileResourcePackProviderMixin.java | 2 +- .../autoslabs/mixin/ServerPlayerInteractionManagerMixin.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java index a2f46ac..6f82453 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -39,7 +39,7 @@ public class BlockRenderManagerMixin { @Shadow @Final private Random random; @Inject(method = "renderDamage", at = @At("HEAD"), cancellable = true) - public void renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView world, MatrixStack matrices, VertexConsumer vertexConsumer, CallbackInfo ci) { + public void autoslabs$renderSlabDamage(BlockState state, BlockPos pos, BlockRenderView world, MatrixStack matrices, VertexConsumer vertexConsumer, CallbackInfo ci) { if(!(state.getBlock() instanceof SlabBlock)) return; if (state.getRenderType() == BlockRenderType.MODEL) { if (state.get(TYPE) != SlabType.DOUBLE) return; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index 556c144..5289520 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -25,7 +25,7 @@ public class ClientPlayerInteractionManagerMixin { private MinecraftClient client; @Redirect(method = "breakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;I)Z")) - private boolean tryBreakSlab(World instance, BlockPos pos, BlockState state, int flags) { + private boolean autoslabs$tryBreakSlab(World instance, BlockPos pos, BlockState state, int flags) { var breakState = instance.getBlockState(pos); if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java index 33c3de4..8c8f268 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java @@ -33,7 +33,7 @@ private static UnaryOperator getSourceTextSupplier() { } @Inject(method = "register", at = @At("HEAD")) - public void register( + public void autoslabs$registerRuntimeResourcePack( Consumer adder, CallbackInfo ci ) throws ExecutionException, InterruptedException { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java index eea2389..831f61c 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -26,7 +26,7 @@ public class ServerPlayerInteractionManagerMixin { protected ServerWorld world; @Redirect(method = "tryBreakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;removeBlock(Lnet/minecraft/util/math/BlockPos;Z)Z")) - private boolean tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { + private boolean autoslabs$tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { BlockState breakState = instance.getBlockState(pos); if (breakState.getBlock() instanceof SlabBlock) { SlabType slabType = breakState.get(SlabBlock.TYPE); From e39bcc6b32575f954d74406fda0e2155ea9a8209 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sat, 5 Aug 2023 21:37:20 -0400 Subject: [PATCH 21/71] offset HitPart rendering based off of targeted blockState's VoxelShape --- .../andrew6rant/autoslabs/RenderUtil.java | 172 +++++++++--------- .../io/github/andrew6rant/autoslabs/Util.java | 59 ++---- .../autoslabs/mixin/WorldRendererMixin.java | 33 +++- 3 files changed, 127 insertions(+), 137 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 19d5269..87f6df0 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -13,66 +13,68 @@ import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; import org.joml.Vector3f; import java.util.Objects; import static io.github.andrew6rant.autoslabs.Util.*; -// massive thanks to Schauweg for some of this code +// massive thanks to Schauweg for helping with some of this code public class RenderUtil { - public static void renderOverlay(MatrixStack matrices, Camera camera) { + public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult) { ClientPlayerEntity player = MinecraftClient.getInstance().player; if (Block.getBlockFromItem(player.getStackInHand(player.getActiveHand()).getItem()) instanceof SlabBlock || (Block.getBlockFromItem(player.getOffHandStack().getItem()) instanceof SlabBlock && player.getMainHandStack().isEmpty())) { - HitResult hitResult = MinecraftClient.getInstance().crosshairTarget; - if (hitResult.getType() == HitResult.Type.BLOCK) { BlockHitResult result = (BlockHitResult) hitResult; HitPart part = getHitPart(result); - Vec3d camDif = getCameraOffset(camera.getPos(), result.getBlockPos(), result.getSide()); + Vec3d camDif = getCameraOffset(camDif1, shape, result.getSide()); + //Vec3d camDif = getCameraOffset(camera.getPos(), result.getBlockPos(), result.getSide()); - RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); + //RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); // default Minecraft line width - RenderSystem.lineWidth(Math.max(2.5f, (float)MinecraftClient.getInstance().getWindow().getFramebufferWidth() / 1920.0f * 2.5f)); - RenderSystem.disableCull(); + //RenderSystem.lineWidth(Math.max(2.5f, (float)MinecraftClient.getInstance().getWindow().getFramebufferWidth() / 1920.0f * 2.5f)); + //RenderSystem.disableCull(); - matrices.push(); - BlockState state = MinecraftClient.getInstance().world.getBlockState(result.getBlockPos()); + //matrices.push(); + //BlockState state = MinecraftClient.getInstance().world.getBlockState(result.getBlockPos()); if (state.getBlock() instanceof SlabBlock) { - renderOverlayToDirection(state, result.getSide(), matrices, camDif, part); + renderOverlayToDirection(state, result.getSide(), matrices, vertexConsumer, camDif, part); } else { - renderOverlayToDirection(null, result.getSide(), matrices, camDif, part); + renderOverlayToDirection(null, result.getSide(), matrices, vertexConsumer, camDif, part); } - matrices.pop(); - RenderSystem.enableDepthTest(); - RenderSystem.enableCull(); + //matrices.pop(); + //RenderSystem.enableDepthTest(); + //RenderSystem.enableCull(); } } } - private static void drawLine(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f start, Vector3f end) { + private static void drawLine(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f start, Vector3f end, Vec3d camDif) { Vector3f normal = getNormalAngle(start, end); float r = 0; float g = 0; float b = 0; float a = 0.4f; + //Vec3d camDif = getCameraOffset(camera.getPos(), result.getBlockPos(), result.getSide()); + Vector3f startRaw = new Vector3f((float) (start.x + camDif.x), (float) (start.y + camDif.y), (float) (start.z + camDif.z)); Vector3f endRaw = new Vector3f((float) (end.x + camDif.x), (float) (end.y + camDif.y), (float) (end.z + camDif.z)); - - buffer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) + //System.out.println("drawLine"); + vertexConsumer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); - buffer.vertex(entry.getPositionMatrix(), endRaw.x, endRaw.y, endRaw.z) + vertexConsumer.vertex(entry.getPositionMatrix(), endRaw.x, endRaw.y, endRaw.z) .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); } - private static void renderOverlayToDirection(BlockState state, Direction side, MatrixStack matrixStack, Vec3d camDif, HitPart part) { + private static void renderOverlayToDirection(BlockState state, Direction side, MatrixStack matrixStack, VertexConsumer vertexConsumer, Vec3d camDif, HitPart part) { Vector3f vecBottomLeft = null, vecBottomRight = null, vecTopLeft = null, vecTopRight = null, vecCenterBottomLeft = null, vecCenterBottomRight = null, vecCenterTopLeft = null, vecCenterTopRight = null, vecCenterMiddleLeft = null, vecCenterMiddleRight = null, vecCenterMiddleBottom = null, vecCenterMiddleTop = null; @@ -173,178 +175,180 @@ private static void renderOverlayToDirection(BlockState state, Direction side, M verticalType = state.get(VERTICAL_TYPE); } - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - buffer.begin(VertexFormat.DrawMode.LINES, VertexFormats.LINES); + //Tessellator tessellator = Tessellator.getInstance(); + //BufferBuilder buffer = tessellator.getBuffer(); + //buffer.begin(VertexFormat.DrawMode.LINES, VertexFormats.LINES); MatrixStack.Entry entry = matrixStack.peek(); // I have no idea why, but this code only works when // in an if chain and not a switch statement if (part == HitPart.CENTER) { - drawCenterLines(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, verticalType, side); + //System.out.println("center"); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); } else if (part == HitPart.BOTTOM) { - drawTopBottomLines(entry, buffer, camDif, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side); + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); } else if (part == HitPart.TOP) { - drawTopBottomLines(entry, buffer, camDif, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side); + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); } else if (part == HitPart.LEFT) { - drawLeftRightLines(entry, buffer, camDif, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); } else if (part == HitPart.RIGHT) { - drawLeftRightLines(entry, buffer, camDif, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); } - tessellator.draw(); + //tessellator.draw(); } - private static void drawLeftRightLines(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side) { + private static void drawLeftRightLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif) { if (verticalType != null && slabType != null) { switch (verticalType) { case FALSE -> { switch (slabType) { case BOTTOM, TOP -> { if (side == Direction.DOWN || side == Direction.UP) { - drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } else { - drawInternal(entry, buffer, camDif, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType); + drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif); } } - case DOUBLE -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } case NORTH_SOUTH -> { switch (slabType) { case BOTTOM, TOP -> { if (side == Direction.DOWN || side == Direction.UP) { - drawInternal(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType); + drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif); } else { - drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } - case DOUBLE -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } - case EAST_WEST -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + case EAST_WEST -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } else { - drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } - private static void drawCenterLines(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecCenterBottomLeft, Vector3f vecCenterBottomRight, Vector3f vecCenterTopLeft, Vector3f vecCenterTopRight, Vector3f vecCenterMiddleLeft, Vector3f vecCenterMiddleRight, Vector3f vecCenterMiddleBottom, Vector3f vecCenterMiddleTop, SlabType slabType, VerticalType verticalType, Direction side) { + private static void drawCenterLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecCenterBottomLeft, Vector3f vecCenterBottomRight, Vector3f vecCenterTopLeft, Vector3f vecCenterTopRight, Vector3f vecCenterMiddleLeft, Vector3f vecCenterMiddleRight, Vector3f vecCenterMiddleBottom, Vector3f vecCenterMiddleTop, Vec3d camDif, SlabType slabType, VerticalType verticalType, Direction side) { if (verticalType != null && slabType != null) { switch (verticalType) { case FALSE -> { switch (slabType) { case BOTTOM, TOP -> { if (side == Direction.DOWN || side == Direction.UP) { - drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); + drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); } else { - drawInternalSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType); + drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType, camDif); } } - case DOUBLE -> drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); + case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); } } case NORTH_SOUTH -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case DOWN, UP -> drawInternalSquare(entry, buffer, camDif, vecCenterTopLeft, vecCenterTopRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType); - case NORTH, SOUTH -> drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); - case EAST -> drawInternalSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType); - case WEST -> drawInternalSquare(entry, buffer, camDif, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType); + case DOWN, UP -> drawInternalSquare(entry, vertexConsumer, vecCenterTopLeft, vecCenterTopRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType, camDif); + case NORTH, SOUTH -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + case EAST -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); + case WEST -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); } } - case DOUBLE -> drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); + case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); } } case EAST_WEST -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case EAST, WEST -> drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); - case SOUTH, DOWN -> drawInternalSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType); - case NORTH, UP -> drawInternalSquare(entry, buffer, camDif, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType); + case EAST, WEST -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + case SOUTH, DOWN -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); + case NORTH, UP -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); } } - case DOUBLE -> drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); + case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); } } } } else { - drawDefaultSquare(entry, buffer, camDif, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight); + drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); } } - private static void drawTopBottomLines(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side) { + private static void drawTopBottomLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif) { if (verticalType != null && slabType != null) { switch (verticalType) { - case FALSE -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + case FALSE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); case NORTH_SOUTH -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case DOWN, UP, NORTH, SOUTH -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); - case EAST -> drawInternal(entry, buffer, camDif, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType); - case WEST -> drawInternal(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType); + case DOWN, UP, NORTH, SOUTH -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case EAST -> drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif); + case WEST -> drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif); } } - case DOUBLE -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } case EAST_WEST -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case EAST, WEST -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); - case NORTH, UP -> drawInternal(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType); - case SOUTH, DOWN -> drawInternal(entry, buffer, camDif, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType); + case EAST, WEST -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case NORTH, UP -> drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif); + case SOUTH, DOWN -> drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif); } } - case DOUBLE -> drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } } } else { - drawDefaultLines(entry, buffer, camDif, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); } } - private static void drawInternalSquare(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleStart, Vector3f vecCenterMiddleEnd, SlabType slabType) { + private static void drawInternalSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleStart, Vector3f vecCenterMiddleEnd, SlabType slabType, Vec3d camDif) { if (Objects.equals(slabType, SlabType.TOP)) { - drawLine(entry, buffer, camDif, vecCenterMiddleStart, vecCenterStartCorner); - drawLine(entry, buffer, camDif, vecCenterStartCorner, vecCenterEndCorner); - drawLine(entry, buffer, camDif, vecCenterEndCorner, vecCenterMiddleEnd); + drawLine(entry, vertexConsumer, vecCenterMiddleStart, vecCenterStartCorner, camDif); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); + drawLine(entry, vertexConsumer, vecCenterEndCorner, vecCenterMiddleEnd, camDif); } else if (Objects.equals(slabType, SlabType.BOTTOM)) { - drawLine(entry, buffer, camDif, vecStartCorner, vecCenterMiddleStart); - drawLine(entry, buffer, camDif, vecStartCorner, vecEndCorner); - drawLine(entry, buffer, camDif, vecEndCorner, vecCenterMiddleEnd); + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterMiddleStart, camDif); + drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterMiddleEnd, camDif); } } - private static void drawInternal(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType) { + private static void drawInternal(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, Vec3d camDif) { if (Objects.equals(slabType, SlabType.BOTTOM)) { - drawLine(entry, buffer, camDif, vecEndCorner, vecCenterEndCorner); - drawLine(entry, buffer, camDif, vecCenterEndCorner, vecCenterMiddleCorner); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); + drawLine(entry, vertexConsumer, vecCenterEndCorner, vecCenterMiddleCorner, camDif); } else if (Objects.equals(slabType, SlabType.TOP)) { - drawLine(entry, buffer, camDif, vecStartCorner, vecCenterStartCorner); - drawLine(entry, buffer, camDif, vecCenterStartCorner, vecCenterMiddleCorner); + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterMiddleCorner, camDif); } } - private static void drawDefaultLines(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner) { - drawLine(entry, buffer, camDif, vecStartCorner, vecCenterStartCorner); - drawLine(entry, buffer, camDif, vecEndCorner, vecCenterEndCorner); - drawLine(entry, buffer, camDif, vecCenterStartCorner, vecCenterEndCorner); + private static void drawDefaultLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif) { + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); } - private static void drawDefaultSquare(MatrixStack.Entry entry, BufferBuilder buffer, Vec3d camDif, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner) { - drawLine(entry, buffer, camDif, vecStartCorner, vecEndCorner); - drawLine(entry, buffer, camDif, vecStartCorner, vecCenterStartCorner); - drawLine(entry, buffer, camDif, vecEndCorner, vecCenterEndCorner); - drawLine(entry, buffer, camDif, vecCenterStartCorner, vecCenterEndCorner); + private static void drawDefaultSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif) { + //System.out.println("defaultSquare"); + drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif); + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); } public static void drawQuad(Vector3f pos1, Vector3f pos2, Vector3f pos3, Vector3f pos4, Vec3d camDif, MatrixStack matrixStack) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/Util.java index cd82f59..2fa52a9 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/Util.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/Util.java @@ -40,53 +40,18 @@ public class Util { VERTICAL_EAST_WEST_TOP_SHAPE = Block.createCuboidShape(8.0, 0.0, 0.0, 16.0, 16.0, 16.0); } - /** - * Gets the camera offset from a position - * - * @param camera Camera position - * @param pos Position to get difference - * @return Difference - */ - public static Vec3d getCameraOffset(Vec3d camera, BlockPos pos, Direction side) { - BlockState state = MinecraftClient.getInstance().world.getBlockState(pos); - double xDif = (double) pos.getX() - camera.x; - double yDif = (double) pos.getY() - camera.y; - double zDif = (double) pos.getZ() - camera.z; - if (state.getBlock() instanceof SlabBlock) { - SlabType slabType = state.get(SlabBlock.TYPE); - VerticalType verticalType = state.get(VERTICAL_TYPE); - switch (side) { - case UP -> { - if ((slabType == SlabType.BOTTOM) && (verticalType == VerticalType.FALSE)) { - yDif -= 0.5d; - } - } - case DOWN -> { - if ((slabType == SlabType.TOP) && (verticalType == VerticalType.FALSE)) { - yDif += 0.5d; - } - } - case NORTH -> { - if ((verticalType == VerticalType.NORTH_SOUTH) && (slabType == SlabType.BOTTOM)) { - zDif += 0.5d; - } - } - case SOUTH -> { - if ((verticalType == VerticalType.NORTH_SOUTH) && (slabType == SlabType.TOP)) { - zDif -= 0.5d; - } - } - case WEST -> { - if ((verticalType == VerticalType.EAST_WEST) && (slabType == SlabType.TOP)) { - xDif += 0.5d; - } - } - case EAST -> { - if ((verticalType == VerticalType.EAST_WEST) && (slabType == SlabType.BOTTOM)) { - xDif -= 0.5d; - } - } - } + public static Vec3d getCameraOffset(Vec3d camDif, VoxelShape shape, Direction side) { + Direction.Axis axis = side.getAxis(); + double xDif = camDif.x; + double yDif = camDif.y; + double zDif = camDif.z; + switch (side) { + case UP -> yDif = camDif.y + (-1 + shape.getMax(axis)); + case DOWN -> yDif = camDif.y + shape.getMin(axis); + case NORTH -> zDif = camDif.z + shape.getMin(axis); + case SOUTH -> zDif = camDif.z + (-1 + shape.getMax(axis)); + case EAST -> xDif = camDif.x + (-1 + shape.getMax(axis)); + case WEST -> xDif = camDif.x + shape.getMin(axis); } return new Vec3d(xDif, yDif, zDif); } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index 62c6d69..f69114f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -1,23 +1,44 @@ package io.github.andrew6rant.autoslabs.mixin; import io.github.andrew6rant.autoslabs.RenderUtil; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.LightmapTextureManager; -import net.minecraft.client.render.WorldRenderer; +import net.minecraft.block.BlockState; +import net.minecraft.block.ShapeContext; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static io.github.andrew6rant.autoslabs.Util.getCameraOffset; + @Mixin(WorldRenderer.class) public class WorldRendererMixin { - @Inject(method = "render", at = @At("TAIL")) - private void drawBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci) { + /*@Inject(method = "render", at = @At("TAIL")) + private void autoslabs$drawBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci) { RenderUtil.renderOverlay(matrices, camera); + }*/ + + @Shadow @Final private MinecraftClient client; + + @Shadow @Nullable private ClientWorld world; + + @Inject(method = "drawBlockOutline(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/entity/Entity;DDDLnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;)V", at = @At("HEAD")) + private void autoslabs$drawBlockOutline(MatrixStack matrices, VertexConsumer vertexConsumer, Entity entity, double cameraX, double cameraY, double cameraZ, BlockPos pos, BlockState state, CallbackInfo ci) { + Vec3d camDif = new Vec3d((double)pos.getX() - cameraX, (double)pos.getY() - cameraY, (double)pos.getZ() - cameraZ); + VoxelShape shape = state.getOutlineShape(this.world, pos, ShapeContext.of(entity)); + RenderUtil.renderOverlay(matrices, vertexConsumer, camDif, state, shape, this.client.crosshairTarget); } } From 460620281a48597989510f0eb691d8f40a8eb8e6 Mon Sep 17 00:00:00 2001 From: Altirix <19439141+Altirix@users.noreply.github.com> Date: Sun, 6 Aug 2023 08:13:10 +0100 Subject: [PATCH 22/71] dont use cull face on faces that are still visible --- .../io/github/andrew6rant/autoslabs/ModelUtil.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java index c8a397c..782647d 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java @@ -23,12 +23,15 @@ public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) Identifier vertical_east_west_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_bottom"); // Yes, I know these models are incredibly inefficient, but I need to parent them this way for the best mod compatibility. + + // Disable the cull face for the vertical slabs on the to be half empty side. + // Or sodium will trust you and think the face is cullable JModel verticalSlabNorthSouthTopModel = JModel.model().parent(namespace+":block/"+path) .element(JModel.element().from(0, 0, 0).to(16, 16, 8) .faces(JModel.faces() .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) .east(JModel.face("side").cullface(Direction.EAST).uv(8, 0, 16, 16)) - .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) + .south(JModel.face("side").uv(0, 0, 16, 16)) .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 8, 16)) .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 16, 8)) .down(JModel.face("bottom").cullface(Direction.DOWN).uv(0, 0, 16, 8)))); @@ -36,7 +39,7 @@ public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) JModel verticalSlabNorthSouthBottomModel = JModel.model().parent(namespace+":block/"+path) .element(JModel.element().from(0, 0, 8).to(16, 16, 16) .faces(JModel.faces() - .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 16, 16)) + .north(JModel.face("side").uv(0, 0, 16, 16)) .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 8, 16)) .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 16, 16)) .west(JModel.face("side").cullface(Direction.WEST).uv(8, 0, 16, 16)) @@ -49,7 +52,7 @@ public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) .north(JModel.face("side").cullface(Direction.NORTH).uv(0, 0, 8, 16)) .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 16, 16)) .south(JModel.face("side").cullface(Direction.SOUTH).uv(8, 0, 16, 16)) - .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) + .west(JModel.face("side").uv(0, 0, 16, 16)) .up(JModel.face("top").cullface(Direction.UP).uv(8, 0, 16, 16)) .down(JModel.face("bottom").cullface(Direction.DOWN).uv(8, 0, 16, 16)))); @@ -57,7 +60,7 @@ public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) .element(JModel.element().from(0, 0, 0).to(8, 16, 16) .faces(JModel.faces() .north(JModel.face("side").cullface(Direction.NORTH).uv(8, 0, 16, 16)) - .east(JModel.face("side").cullface(Direction.EAST).uv(0, 0, 16, 16)) + .east(JModel.face("side").uv(0, 0, 16, 16)) .south(JModel.face("side").cullface(Direction.SOUTH).uv(0, 0, 8, 16)) .west(JModel.face("side").cullface(Direction.WEST).uv(0, 0, 16, 16)) .up(JModel.face("top").cullface(Direction.UP).uv(0, 0, 8, 16)) From fa601a8986bb6b769dae17cbfe3102a22855cd67 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 7 Aug 2023 16:17:44 -0400 Subject: [PATCH 23/71] fix config not applying --- .../github/andrew6rant/autoslabs/AutoSlabs.java | 10 ++++------ .../andrew6rant/autoslabs/AutoSlabsClient.java | 2 -- .../github/andrew6rant/autoslabs/ModelUtil.java | 3 --- .../github/andrew6rant/autoslabs/RenderUtil.java | 16 ---------------- .../autoslabs/config/ConfigEntrypoint.java | 2 +- .../{ClientConfig.java => ServerConfig.java} | 2 +- .../ClientPlayerInteractionManagerMixin.java | 1 - .../andrew6rant/autoslabs/mixin/StateMixin.java | 14 ++++++++------ .../autoslabs/mixin/WorldRendererMixin.java | 5 ----- 9 files changed, 14 insertions(+), 41 deletions(-) rename src/main/java/io/github/andrew6rant/autoslabs/config/{ClientConfig.java => ServerConfig.java} (70%) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index d12c35c..0f175ad 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -2,25 +2,23 @@ import net.devtech.arrp.api.RRPCallback; import net.devtech.arrp.api.RuntimeResourcePack; -import net.devtech.arrp.json.blockstate.JState; -import net.devtech.arrp.json.blockstate.JVariant; -import net.devtech.arrp.json.models.JModel; import net.fabricmc.api.ModInitializer; import net.minecraft.block.Block; import net.minecraft.block.SlabBlock; import net.minecraft.registry.Registries; -import net.minecraft.state.property.EnumProperty; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.Direction; import virtuoel.statement.api.StateRefresher; +import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; + public class AutoSlabs implements ModInitializer { public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); @Override public void onInitialize() { + // Config is initialized in a static block in StateMixin. I need it to run earlier than State$get, and AutoSlabs$onInitialize is too late. for (Block block : Registries.BLOCK) { if (block instanceof SlabBlock) { + StateRefresher.INSTANCE.addBlockProperty(block, VERTICAL_TYPE, VerticalType.FALSE); ModelUtil.setup(AUTO_SLABS_RESOURCES, block); } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 5e755c8..6eaa262 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,6 +1,5 @@ package io.github.andrew6rant.autoslabs; -import io.github.andrew6rant.autoslabs.config.ClientConfig; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; @@ -15,6 +14,5 @@ public class AutoSlabsClient implements ClientModInitializer { @Override public void onInitializeClient() { ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); - ClientConfig.init("auto_slabs", ClientConfig.class); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java index 782647d..9fa5ce2 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java @@ -6,14 +6,11 @@ import net.devtech.arrp.json.models.JModel; import net.minecraft.block.Block; import net.minecraft.registry.Registries; -import net.minecraft.state.property.EnumProperty; import net.minecraft.util.Identifier; import net.minecraft.util.math.Direction; -import virtuoel.statement.api.StateRefresher; public class ModelUtil { public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) { - StateRefresher.INSTANCE.addBlockProperty(block, EnumProperty.of("vertical_type", VerticalType.class), VerticalType.FALSE); Identifier id = Registries.BLOCK.getId(block); String namespace = id.getNamespace(); String path = id.getPath(); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 87f6df0..6694db0 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -1,6 +1,5 @@ package io.github.andrew6rant.autoslabs; -import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; @@ -26,31 +25,17 @@ public class RenderUtil { public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult) { ClientPlayerEntity player = MinecraftClient.getInstance().player; if (Block.getBlockFromItem(player.getStackInHand(player.getActiveHand()).getItem()) instanceof SlabBlock || (Block.getBlockFromItem(player.getOffHandStack().getItem()) instanceof SlabBlock && player.getMainHandStack().isEmpty())) { - if (hitResult.getType() == HitResult.Type.BLOCK) { BlockHitResult result = (BlockHitResult) hitResult; HitPart part = getHitPart(result); - Vec3d camDif = getCameraOffset(camDif1, shape, result.getSide()); - //Vec3d camDif = getCameraOffset(camera.getPos(), result.getBlockPos(), result.getSide()); - //RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); - // default Minecraft line width - //RenderSystem.lineWidth(Math.max(2.5f, (float)MinecraftClient.getInstance().getWindow().getFramebufferWidth() / 1920.0f * 2.5f)); - //RenderSystem.disableCull(); - - //matrices.push(); - //BlockState state = MinecraftClient.getInstance().world.getBlockState(result.getBlockPos()); if (state.getBlock() instanceof SlabBlock) { renderOverlayToDirection(state, result.getSide(), matrices, vertexConsumer, camDif, part); } else { renderOverlayToDirection(null, result.getSide(), matrices, vertexConsumer, camDif, part); } - - //matrices.pop(); - //RenderSystem.enableDepthTest(); - //RenderSystem.enableCull(); } } } @@ -344,7 +329,6 @@ private static void drawDefaultLines(MatrixStack.Entry entry, VertexConsumer ver } private static void drawDefaultSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif) { - //System.out.println("defaultSquare"); drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif); drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java b/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java index 4663703..d23a5f5 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java @@ -7,7 +7,7 @@ public class ConfigEntrypoint implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> ClientConfig.getScreen(parent,"auto_slabs"); + return parent -> ServerConfig.getScreen(parent,"auto_slabs"); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java similarity index 70% rename from src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java rename to src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java index 72020db..8f149bf 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/ClientConfig.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java @@ -1,5 +1,5 @@ package io.github.andrew6rant.autoslabs.config; -public class ClientConfig extends MidnightConfig { +public class ServerConfig extends MidnightConfig { @Entry public static boolean suppressStatementAPILogger = true; } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index 5289520..23b1fb1 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -15,7 +15,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; - // Massive thanks to Oliver-makes-code for some of the code behind this mixin // https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_ClientPlayerInteractionManager.java @Mixin(ClientPlayerInteractionManager.class) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java index b71d700..4832983 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java @@ -1,14 +1,11 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.config.ClientConfig; +import io.github.andrew6rant.autoslabs.config.ServerConfig; import net.minecraft.state.State; import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.LoggerContext; -import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.Configurator; -import org.apache.logging.log4j.core.config.LoggerConfig; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import virtuoel.statement.Statement; import virtuoel.statement.api.StatementApi; @@ -16,11 +13,16 @@ public class StateMixin { static { - if (ClientConfig.suppressStatementAPILogger) { + // I need to initialize the config earlier than onInitialize() runs in order to suppress Statement API's logger based on a config value + ServerConfig.init("auto_slabs", ServerConfig.class); + if (ServerConfig.suppressStatementAPILogger) { // Immense amount of trolling Statement.LOGGER.error("Statement API's logging has been disabled by AutoSlabs!"); Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); } + else { + Statement.LOGGER.error("AutoSlabs: don't worry about these errors :)"); + } } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index f69114f..9f3dc51 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -25,11 +25,6 @@ @Mixin(WorldRenderer.class) public class WorldRendererMixin { - /*@Inject(method = "render", at = @At("TAIL")) - private void autoslabs$drawBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci) { - RenderUtil.renderOverlay(matrices, camera); - }*/ - @Shadow @Final private MinecraftClient client; @Shadow @Nullable private ClientWorld world; From ffc409f10f929f20a9aff864b49b8228edfb470a Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 8 Aug 2023 17:12:21 -0400 Subject: [PATCH 24/71] support Statement API 4.2.6+ Statement API changed from using `org.apache.logging.log4j.Logger` to `org.spongepowered.asm.logging.ILogger`. I can no longer change the level of the logger programmatically, so I have to use a different method (making a mixin that runs before theirs) --- gradle.properties | 2 +- .../autoslabs/mixin/StateMixin.java | 43 +++++++++++++------ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index 19c4ea0..eac5597 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,6 +15,6 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 -statement_version=4.2.5 +statement_version=4.2.7 arrp_version=0.6.7 modmenu_version = 7.2.1 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java index 4832983..0b2f474 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java @@ -2,26 +2,45 @@ import io.github.andrew6rant.autoslabs.config.ServerConfig; import net.minecraft.state.State; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.core.config.Configurator; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; +import net.minecraft.state.property.Property; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import virtuoel.statement.Statement; -import virtuoel.statement.api.StatementApi; +import virtuoel.statement.util.StatementStateExtensions; + +import java.util.HashMap; +import java.util.Map; @Mixin(State.class) -public class StateMixin { +public class StateMixin implements StatementStateExtensions { + + @Unique String getMissingOwner = ""; + @Shadow @Final @Mutable protected O owner; // cachedFallbacks and owner are modified in Statement API's StateMixin + @Unique final Map, Comparable> cachedFallbacks = new HashMap<>(); + + @Inject(method = "get", cancellable = true, at = @At(value = "INVOKE", target = "Ljava/lang/IllegalArgumentException;(Ljava/lang/String;)V", shift = At.Shift.BEFORE)) + private > void autoslabs$onGet(Property property, CallbackInfoReturnable info) { + final String ownerString = this.owner.toString(); + + if (!getMissingOwner.equals(ownerString)) { + if (!ServerConfig.suppressStatementAPILogger) { + Statement.LOGGER.info("Cannot get property {} as it does not exist in {}", property, this.owner); + } + getMissingOwner = ownerString; + } + + info.setReturnValue(cachedFallbacks.containsKey(property) ? property.getType().cast(cachedFallbacks.get(property)) : property.getValues().iterator().next()); + } static { // I need to initialize the config earlier than onInitialize() runs in order to suppress Statement API's logger based on a config value ServerConfig.init("auto_slabs", ServerConfig.class); if (ServerConfig.suppressStatementAPILogger) { - // Immense amount of trolling - Statement.LOGGER.error("Statement API's logging has been disabled by AutoSlabs!"); - Configurator.setLevel(StatementApi.MOD_ID, Level.FATAL); - } - else { - Statement.LOGGER.error("AutoSlabs: don't worry about these errors :)"); + Statement.LOGGER.warn("Statement API's logging has been disabled by AutoSlabs!"); + } else { + Statement.LOGGER.warn("AutoSlabs: don't worry about these errors :)"); } } From 60df6835c951a0ecccc60fadeb17b1a70d763774 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 8 Aug 2023 17:18:11 -0400 Subject: [PATCH 25/71] fix sodium compat with embedded resource pack models --- .../models/block/slab_vertical_east_west_bottom_template.json | 2 +- .../models/block/slab_vertical_east_west_top_template.json | 2 +- .../models/block/slab_vertical_north_south_bottom_template.json | 2 +- .../models/block/slab_vertical_north_south_top_template.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_bottom_template.json b/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_bottom_template.json index 080d098..a206191 100644 --- a/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_bottom_template.json +++ b/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_bottom_template.json @@ -10,7 +10,7 @@ "to": [8, 16, 16], "faces": { "north": {"uv": [8, 0, 16, 16], "texture": "#side_vertical", "cullface": "north"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#side"}, "south": {"uv": [0, 0, 8, 16], "texture": "#side_vertical", "cullface": "south"}, "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west"}, "up": {"uv": [0, 0, 8, 16], "texture": "#top", "cullface": "up"}, diff --git a/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_top_template.json b/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_top_template.json index 2ab68dd..96dfe34 100644 --- a/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_top_template.json +++ b/src/main/resources/assets/autoslabs/models/block/slab_vertical_east_west_top_template.json @@ -12,7 +12,7 @@ "north": {"uv": [0, 0, 8, 16], "texture": "#side_vertical", "cullface": "north"}, "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east"}, "south": {"uv": [8, 0, 16, 16], "texture": "#side_vertical", "cullface": "south"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#side"}, "up": {"uv": [8, 0, 16, 16], "texture": "#top", "cullface": "up"}, "down": {"uv": [8, 0, 16, 16], "texture": "#bottom", "cullface": "down"} } diff --git a/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_bottom_template.json b/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_bottom_template.json index 641232d..276a8c3 100644 --- a/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_bottom_template.json +++ b/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_bottom_template.json @@ -9,7 +9,7 @@ "from": [0, 0, 8], "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "north"}, + "north": {"uv": [0, 0, 16, 16], "texture": "#side"}, "east": {"uv": [0, 0, 8, 16], "texture": "#side_vertical", "cullface": "east"}, "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south"}, "west": {"uv": [8, 0, 16, 16], "texture": "#side_vertical", "cullface": "west"}, diff --git a/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json b/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json index fff69d6..0fd713c 100644 --- a/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json +++ b/src/main/resources/assets/autoslabs/models/block/slab_vertical_north_south_top_template.json @@ -11,7 +11,7 @@ "faces": { "north": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "north"}, "east": {"uv": [8, 0, 16, 16], "texture": "#side_vertical", "cullface": "east"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#side"}, "west": {"uv": [0, 0, 8, 16], "texture": "#side_vertical", "cullface": "west"}, "up": {"uv": [0, 0, 16, 8], "texture": "#top", "cullface": "up"}, "down": {"uv": [0, 0, 16, 8], "texture": "#bottom", "cullface": "down"} From b9f7e0210a64978fe8df2af07dba9d5860408080 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 8 Aug 2023 20:54:14 -0400 Subject: [PATCH 26/71] add icons --- src/main/resources/assets/autoslabs/icon.png | Bin 453 -> 2491 bytes .../resourcepacks/distinct_slabs/pack.png | Bin 0 -> 2491 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/resourcepacks/distinct_slabs/pack.png diff --git a/src/main/resources/assets/autoslabs/icon.png b/src/main/resources/assets/autoslabs/icon.png index 047b91f2347de5cf95f23284476fddbe21ba23fe..c4149e7b5623c9eb34001203f90647458cf7a055 100644 GIT binary patch literal 2491 zcmYjTdtB1z7yc?LUeh#nB~!btT>VmKQHTke*DQ5bbCrrllP;!CO>rRNrDgl1(oJ+; zyJ@vwS}`?4!P`W$U|LQP4Go0M3nJn-1aY=~KEprWbN)Kdd(Ly7bKdt#Xt2MT@djf6 z0L%gde8N^d`SUR}Sg{?RF}*8JCppaD8>nT&CIGVsUa^yt2E9;luf^mwGw4z>EJR+f`Nf!xXgwzONF1E=sTK0Qar&< zlxn9M{P?L^%)_vi=gO&$eB&zE5ny};ewzhh{?F=XhjCxNU!c+4YF@#=A9Bl;fSXGW z`E97|IgQ>$?Tr#{E#>S!`9GYBHhg)V zcu-*%K+1kVxGEH4DONqd(@>4_is)0PbVV&K`zeCsWl&|K1VK3>^P)(qyU-2RXhiit zXu*F@Dw+*)FYI0{x;w;uKmyK&IM%DWc74$>@o?-p4W-h*Cu@doANbLOufFo_{7Kkf zvmo!kD*Oxd@$K*;P>%t>b*)QI42#Rgt{r9{{n{Ewc$%m;H&ei;awJ5*U#wjQ>kj8M zGbRhHx&K9PGt^~XKsQdap%gX1U=Rwd1D+ZP_Cp(kmJl_RWI%W&_ei{nEW;_)qL7Bs z5nNups)bMsC3O9%V_bUPLF3f|HuUSoRa^=WqS$Wl}JM15a1 z3ZF~JK4e@O{xH03nlY@J*x2pmu;{B99@05JHy$J*#irp*M9$P%K@Mk$4=ujit<-J! zS2!!&${2RtZ-e~jF`+a4`U{%fs=0KJc45gOP1r$BTFDh_Tvb*zDEqC0C7bJ7Gt?P-;CbCl zxVQgT#VPP0_|lyiJI{(1)1;#ql)z*(d3pGzYWXbPHX8W1%>^HzhCe^~E50#8U-@ym za8nDpPMRs5fKYgYoMtZT`!@A?nj@y?y%f29wBmsuBBjK%>kZZwjPxzg_Zfi%AhN>B zTTdA++iMFn;&%DpKgLUI7%VVHi@D@=$bdC>&DeVQHShAR(G2$-#$psSV}efDZrgii zGplD1^Gg%fs*F~=g$WE=yeH_wkfXBO$}@$VMj)fVdTW8Nl$p2w&X2cS&xR&i)qGL} z3SCnTqx4;2%l`McXriIyMg=Pkk}&*yY|44#fTgFCjhFaECX%(4qO@}tZq*FHc@j(AP)4F;1{d{reR3RtOAnQECAD|prdqxsYG#EsG8AO!c3x>09M

WNpbSblvaq;TWUAxvj%Yi9pi*C{wiK)DFMVQmme_xpG60k4UJzHUkDRGS4>q)c>pi@P(~#j5`?gBwxVm zU?#XvhwmtH3YVSyW3aj|{WYfcRPdcud!wf-Bs6L<2C9Po_^8~@b(_nh*Ep{D^84k^ zQrd^Tqx9^nDYeWd{0Oh|LdxTx=Z1HR=kp7$W;YX_n|vcRir@8KpyDMHQCf!e;)LlT zp|&68LHBBE$y1Xm2{G%O{Uq>BggN?!UH5FH*H;k^z*zE&w`|E=VrE=rX*uNhkk#9B z#qu7Kp%y2P1XO1lf~H|R(a)5Y3?WavGGNuxtph$EZ8Uc!%nnInLl2UGPav=VvMpiF z)7M4BSIKPc*8WXXDFq>k=??ki`6|>xuQ>x`UU6%QFOB zbql~AyKxEitZtZk76lk{=^rULX2N28!n(eKx9nxoe@}{ z#-RAKeQT$jr#Ie9ttiCmUl+7#?{BNJFrh5yMKA?aarJEe#;jYBJ3~XizMU^hR{6>m zdj;-%^TLMm={Ho{=EWf4)-{DBJ)SmvBdXPjrTaW;{~x*sC(q>2HglP1g_^d1zTWoH zbLg1N6qWEWXHRZX?CiE5s5T=UD=}w$7Ma1)|Np~zrETTDN~uZafwR#r!Z=WpL0MJL z&R5u$j9Md6?@QV-9Q|fYWBts+cunq!){DRBCk}X?CB|@gupMw0=ym3`E#odx^CSKO zdeN{zn_3%QR|?AQ$ylApN9GpvY{}H3`=Zg7(%w%C)GnNpXH?avebV(r!M1ZdbCY2u zu?O;g2p#d6NGCS-Ye7y0JF*OlDG8V-CA>yYAboO-!`56kV_QG5*AQ)(cUf@EPo5~} z-57hm?K{;v(X>B^jxF_QAn(cX-c#f~oZ27`FY>C0NCG92Rj-gH)um0Lv&FIlFJLq& z*NGlTNDWF4hd1X&Tl5wnSIzGpw!xa;-%R0&HaF3h2 zYDP4El$06C_vkUTWp~_>;|uwcWcAWWqYTz7A@+31)jNX-dCDGF9I~>57wZ<`e@*H) zhc7U@`bVPqs4CJ=t7$zx;?=KMlgJCvA+$zMz2h%!qft71d~HwXQ-~HsZI=Gz-LX0MXYiHZ7!c?i>{II< Go&7ger{{+N delta 439 zcmV;o0Z9J46U76N7=Hl+0002_@bicO000J1OjJbx00960|E1ZV-2eaqdPzhn%o5BQHNuK}!002ovPDHLkV1hiyvv~jj diff --git a/src/main/resources/resourcepacks/distinct_slabs/pack.png b/src/main/resources/resourcepacks/distinct_slabs/pack.png new file mode 100644 index 0000000000000000000000000000000000000000..c4149e7b5623c9eb34001203f90647458cf7a055 GIT binary patch literal 2491 zcmYjTdtB1z7yc?LUeh#nB~!btT>VmKQHTke*DQ5bbCrrllP;!CO>rRNrDgl1(oJ+; zyJ@vwS}`?4!P`W$U|LQP4Go0M3nJn-1aY=~KEprWbN)Kdd(Ly7bKdt#Xt2MT@djf6 z0L%gde8N^d`SUR}Sg{?RF}*8JCppaD8>nT&CIGVsUa^yt2E9;luf^mwGw4z>EJR+f`Nf!xXgwzONF1E=sTK0Qar&< zlxn9M{P?L^%)_vi=gO&$eB&zE5ny};ewzhh{?F=XhjCxNU!c+4YF@#=A9Bl;fSXGW z`E97|IgQ>$?Tr#{E#>S!`9GYBHhg)V zcu-*%K+1kVxGEH4DONqd(@>4_is)0PbVV&K`zeCsWl&|K1VK3>^P)(qyU-2RXhiit zXu*F@Dw+*)FYI0{x;w;uKmyK&IM%DWc74$>@o?-p4W-h*Cu@doANbLOufFo_{7Kkf zvmo!kD*Oxd@$K*;P>%t>b*)QI42#Rgt{r9{{n{Ewc$%m;H&ei;awJ5*U#wjQ>kj8M zGbRhHx&K9PGt^~XKsQdap%gX1U=Rwd1D+ZP_Cp(kmJl_RWI%W&_ei{nEW;_)qL7Bs z5nNups)bMsC3O9%V_bUPLF3f|HuUSoRa^=WqS$Wl}JM15a1 z3ZF~JK4e@O{xH03nlY@J*x2pmu;{B99@05JHy$J*#irp*M9$P%K@Mk$4=ujit<-J! zS2!!&${2RtZ-e~jF`+a4`U{%fs=0KJc45gOP1r$BTFDh_Tvb*zDEqC0C7bJ7Gt?P-;CbCl zxVQgT#VPP0_|lyiJI{(1)1;#ql)z*(d3pGzYWXbPHX8W1%>^HzhCe^~E50#8U-@ym za8nDpPMRs5fKYgYoMtZT`!@A?nj@y?y%f29wBmsuBBjK%>kZZwjPxzg_Zfi%AhN>B zTTdA++iMFn;&%DpKgLUI7%VVHi@D@=$bdC>&DeVQHShAR(G2$-#$psSV}efDZrgii zGplD1^Gg%fs*F~=g$WE=yeH_wkfXBO$}@$VMj)fVdTW8Nl$p2w&X2cS&xR&i)qGL} z3SCnTqx4;2%l`McXriIyMg=Pkk}&*yY|44#fTgFCjhFaECX%(4qO@}tZq*FHc@j(AP)4F;1{d{reR3RtOAnQECAD|prdqxsYG#EsG8AO!c3x>09M

WNpbSblvaq;TWUAxvj%Yi9pi*C{wiK)DFMVQmme_xpG60k4UJzHUkDRGS4>q)c>pi@P(~#j5`?gBwxVm zU?#XvhwmtH3YVSyW3aj|{WYfcRPdcud!wf-Bs6L<2C9Po_^8~@b(_nh*Ep{D^84k^ zQrd^Tqx9^nDYeWd{0Oh|LdxTx=Z1HR=kp7$W;YX_n|vcRir@8KpyDMHQCf!e;)LlT zp|&68LHBBE$y1Xm2{G%O{Uq>BggN?!UH5FH*H;k^z*zE&w`|E=VrE=rX*uNhkk#9B z#qu7Kp%y2P1XO1lf~H|R(a)5Y3?WavGGNuxtph$EZ8Uc!%nnInLl2UGPav=VvMpiF z)7M4BSIKPc*8WXXDFq>k=??ki`6|>xuQ>x`UU6%QFOB zbql~AyKxEitZtZk76lk{=^rULX2N28!n(eKx9nxoe@}{ z#-RAKeQT$jr#Ie9ttiCmUl+7#?{BNJFrh5yMKA?aarJEe#;jYBJ3~XizMU^hR{6>m zdj;-%^TLMm={Ho{=EWf4)-{DBJ)SmvBdXPjrTaW;{~x*sC(q>2HglP1g_^d1zTWoH zbLg1N6qWEWXHRZX?CiE5s5T=UD=}w$7Ma1)|Np~zrETTDN~uZafwR#r!Z=WpL0MJL z&R5u$j9Md6?@QV-9Q|fYWBts+cunq!){DRBCk}X?CB|@gupMw0=ym3`E#odx^CSKO zdeN{zn_3%QR|?AQ$ylApN9GpvY{}H3`=Zg7(%w%C)GnNpXH?avebV(r!M1ZdbCY2u zu?O;g2p#d6NGCS-Ye7y0JF*OlDG8V-CA>yYAboO-!`56kV_QG5*AQ)(cUf@EPo5~} z-57hm?K{;v(X>B^jxF_QAn(cX-c#f~oZ27`FY>C0NCG92Rj-gH)um0Lv&FIlFJLq& z*NGlTNDWF4hd1X&Tl5wnSIzGpw!xa;-%R0&HaF3h2 zYDP4El$06C_vkUTWp~_>;|uwcWcAWWqYTz7A@+31)jNX-dCDGF9I~>57wZ<`e@*H) zhc7U@`bVPqs4CJ=t7$zx;?=KMlgJCvA+$zMz2h%!qft71d~HwXQ-~HsZI=Gz-LX0MXYiHZ7!c?i>{II< Go&7ger{{+N literal 0 HcmV?d00001 From 2e4a64420f45c8e4f13ff54bd45598b82c634a25 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 13 Aug 2023 17:54:13 -0400 Subject: [PATCH 27/71] switch to custom ARRP fork everything works! --- build.gradle | 8 +-- gradle.properties | 2 +- .../andrew6rant/autoslabs/AutoSlabs.java | 2 +- .../mixin/FileResourcePackProviderMixin.java | 59 ------------------- src/main/resources/autoslabs.mixins.json | 1 - 5 files changed, 6 insertions(+), 66 deletions(-) delete mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java diff --git a/build.gradle b/build.gradle index 0e95c16..c45466c 100644 --- a/build.gradle +++ b/build.gradle @@ -20,9 +20,9 @@ repositories { maven { url = "https://jitpack.io" } - maven { - url = uri("https://ueaj.dev/maven") - } + //maven { + // url = uri("https://ueaj.dev/maven") + //} maven { url "https://maven.terraformersmc.com/releases/" } @@ -44,7 +44,7 @@ dependencies { modApi("com.github.Virtuoel:Statement:${project.statement_version}", { exclude group: "net.fabricmc.fabric-api" }) - modImplementation("net.devtech:arrp:${project.arrp_version}") + modImplementation("com.github.Andrew6rant:ARRP:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" diff --git a/gradle.properties b/gradle.properties index eac5597..f2c79e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,5 +16,5 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 statement_version=4.2.7 -arrp_version=0.6.7 +arrp_version=2c1be192cd modmenu_version = 7.2.1 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 0f175ad..2786da9 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -23,7 +23,7 @@ public void onInitialize() { } } StateRefresher.INSTANCE.reorderBlockStates(); - RRPCallback.BEFORE_USER.register(a -> a.add(AUTO_SLABS_RESOURCES)); + RRPCallback.BETWEEN_VANILLA_AND_MODS.register(a -> a.add(AUTO_SLABS_RESOURCES)); //AUTO_SLABS_RESOURCES.dump(); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java deleted file mode 100644 index 8c8f268..0000000 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/FileResourcePackProviderMixin.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.github.andrew6rant.autoslabs.mixin; - -import net.devtech.arrp.ARRP; -import net.devtech.arrp.api.RRPCallback; -import net.minecraft.resource.*; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.function.Consumer; -import java.util.function.UnaryOperator; - -// This mixin is based off of ARRP's FileResourcePackProviderMixin, -// I just need to modify it slightly to automatically enable my BEFORE_USER resource pack -@Mixin(value = FileResourcePackProvider.class, priority = 1100) // default priority is 1000, this will let it run after -public class FileResourcePackProviderMixin { - @Shadow @Final private ResourceType type; - private static final ResourcePackSource RUNTIME = ResourcePackSource.create(getSourceTextSupplier(), true); - private static final Logger ARRP_LOGGER = LogManager.getLogger("AutoSlabs/FileResourcePackProviderMixin"); - - private static UnaryOperator getSourceTextSupplier() { - Text text = Text.translatable("pack.source.runtime"); - return name -> Text.translatable("pack.nameAndSource", name, text).formatted(Formatting.GRAY); - } - - @Inject(method = "register", at = @At("HEAD")) - public void autoslabs$registerRuntimeResourcePack( - Consumer adder, - CallbackInfo ci - ) throws ExecutionException, InterruptedException { - List list = new ArrayList<>(); - ARRP.waitForPregen(); - ARRP_LOGGER.info("AUTOSLABS-MODIFIED: ARRP register - before user"); - RRPCallback.BEFORE_USER.invoker().insert(list); - for (ResourcePack pack : list) { - if(pack.getName().equals("Runtime Resource Packautoslabs:resources")) { // only do this on my resource pack - ARRP_LOGGER.info("AUTOSLABS-MODIFIED: Found autoslabs resource pack, adding to resource pack list"); - adder.accept(ResourcePackProfile.create( - pack.getName(), - Text.literal(pack.getName()), - true, // this is the main difference from ARRP's mixin (I want my pack to be enabled by default) - (name) -> pack, - this.type, - ResourcePackProfile.InsertionPosition.TOP, - RUNTIME - )); - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index b1e914e..9a32668 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -3,7 +3,6 @@ "package": "io.github.andrew6rant.autoslabs.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ - "FileResourcePackProviderMixin", "ServerPlayerInteractionManagerMixin", "SlabBlockMixin", "StateMixin" From d521de516dccafdc4955827b2c487d3e080ec66b Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 13 Aug 2023 18:24:51 -0400 Subject: [PATCH 28/71] small clean-up also embed custom ARRP fork and Statement 4.2.8 --- build.gradle | 4 +-- gradle.properties | 2 +- .../andrew6rant/autoslabs/AutoSlabs.java | 1 + .../andrew6rant/autoslabs/ModelUtil.java | 3 -- .../andrew6rant/autoslabs/RenderUtil.java | 34 +------------------ .../ClientPlayerInteractionManagerMixin.java | 4 +-- .../ServerPlayerInteractionManagerMixin.java | 7 ++-- .../autoslabs/mixin/WorldRendererMixin.java | 3 -- src/main/resources/fabric.mod.json | 3 +- 9 files changed, 9 insertions(+), 52 deletions(-) diff --git a/build.gradle b/build.gradle index c45466c..105c2f6 100644 --- a/build.gradle +++ b/build.gradle @@ -41,10 +41,10 @@ dependencies { // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. // modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}" - modApi("com.github.Virtuoel:Statement:${project.statement_version}", { + include modApi("com.github.Virtuoel:Statement:${project.statement_version}", { exclude group: "net.fabricmc.fabric-api" }) - modImplementation("com.github.Andrew6rant:ARRP:${project.arrp_version}") + include modImplementation("com.github.Andrew6rant:ARRP:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" diff --git a/gradle.properties b/gradle.properties index f2c79e3..b23061b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,6 +15,6 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 -statement_version=4.2.7 +statement_version=4.2.8 arrp_version=2c1be192cd modmenu_version = 7.2.1 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 2786da9..42775b2 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -23,6 +23,7 @@ public void onInitialize() { } } StateRefresher.INSTANCE.reorderBlockStates(); + // custom ARRP entrypoint that is only available in my fork of ARRP RRPCallback.BETWEEN_VANILLA_AND_MODS.register(a -> a.add(AUTO_SLABS_RESOURCES)); //AUTO_SLABS_RESOURCES.dump(); } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java index 9fa5ce2..56638b3 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java @@ -20,9 +20,6 @@ public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) Identifier vertical_east_west_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_bottom"); // Yes, I know these models are incredibly inefficient, but I need to parent them this way for the best mod compatibility. - - // Disable the cull face for the vertical slabs on the to be half empty side. - // Or sodium will trust you and think the face is cullable JModel verticalSlabNorthSouthTopModel = JModel.model().parent(namespace+":block/"+path) .element(JModel.element().from(0, 0, 0).to(16, 16, 8) .faces(JModel.faces() diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 6694db0..ea878e2 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -47,11 +47,9 @@ private static void drawLine(MatrixStack.Entry entry, VertexConsumer vertexConsu float b = 0; float a = 0.4f; - //Vec3d camDif = getCameraOffset(camera.getPos(), result.getBlockPos(), result.getSide()); - Vector3f startRaw = new Vector3f((float) (start.x + camDif.x), (float) (start.y + camDif.y), (float) (start.z + camDif.z)); Vector3f endRaw = new Vector3f((float) (end.x + camDif.x), (float) (end.y + camDif.y), (float) (end.z + camDif.z)); - //System.out.println("drawLine"); + vertexConsumer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); @@ -159,16 +157,11 @@ private static void renderOverlayToDirection(BlockState state, Direction side, M slabType = state.get(SlabBlock.TYPE); verticalType = state.get(VERTICAL_TYPE); } - - //Tessellator tessellator = Tessellator.getInstance(); - //BufferBuilder buffer = tessellator.getBuffer(); - //buffer.begin(VertexFormat.DrawMode.LINES, VertexFormats.LINES); MatrixStack.Entry entry = matrixStack.peek(); // I have no idea why, but this code only works when // in an if chain and not a switch statement if (part == HitPart.CENTER) { - //System.out.println("center"); drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); } else if (part == HitPart.BOTTOM) { @@ -183,7 +176,6 @@ else if (part == HitPart.LEFT) { else if (part == HitPart.RIGHT) { drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); } - //tessellator.draw(); } private static void drawLeftRightLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif) { @@ -335,29 +327,5 @@ private static void drawDefaultSquare(MatrixStack.Entry entry, VertexConsumer ve drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); } - public static void drawQuad(Vector3f pos1, Vector3f pos2, Vector3f pos3, Vector3f pos4, Vec3d camDif, MatrixStack matrixStack) { -/* - Vector3f pos1Raw = new Vector3f((float) (pos1.x + camDif.x), (float) (pos1.y + camDif.y), (float) (pos1.z + camDif.z)); - Vector3f pos2Raw = new Vector3f((float) (pos2.x + camDif.x), (float) (pos2.y + camDif.y), (float) (pos2.z + camDif.z)); - Vector3f pos3Raw = new Vector3f((float) (pos3.x + camDif.x), (float) (pos3.y + camDif.y), (float) (pos3.z + camDif.z)); - Vector3f pos4Raw = new Vector3f((float) (pos4.x + camDif.x), (float) (pos4.y + camDif.y), (float) (pos4.z + camDif.z)); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - - Matrix4f position = matrixStack.peek().getPositionMatrix(); - - buffer.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); - - buffer.vertex(position, pos1Raw.x, pos1Raw.y, pos1Raw.z).color(0f, 0f, 0f, 0.15f).next(); - buffer.vertex(position, pos2Raw.x, pos2Raw.y, pos2Raw.z).color(0f, 0f, 0f, 0.15f).next(); - buffer.vertex(position, pos3Raw.x, pos3Raw.y, pos3Raw.z).color(0f, 0f, 0f, 0.15f).next(); - buffer.vertex(position, pos4Raw.x, pos4Raw.y, pos4Raw.z).color(0f, 0f, 0f, 0.15f).next(); - - tessellator.draw(); - */ - } - - } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index 23b1fb1..e0f8058 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -19,9 +19,7 @@ // https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_ClientPlayerInteractionManager.java @Mixin(ClientPlayerInteractionManager.class) public class ClientPlayerInteractionManagerMixin { - @Shadow - @Final - private MinecraftClient client; + @Shadow @Final private MinecraftClient client; @Redirect(method = "breakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;I)Z")) private boolean autoslabs$tryBreakSlab(World instance, BlockPos pos, BlockState state, int flags) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java index 831f61c..a30b497 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -18,12 +18,9 @@ // https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_ServerPlayerInteractionManager.java @Mixin(ServerPlayerInteractionManager.class) public class ServerPlayerInteractionManagerMixin { - @Shadow - @Final - protected ServerPlayerEntity player; + @Shadow @Final protected ServerPlayerEntity player; - @Shadow - protected ServerWorld world; + @Shadow protected ServerWorld world; @Redirect(method = "tryBreakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;removeBlock(Lnet/minecraft/util/math/BlockPos;Z)Z")) private boolean autoslabs$tryBreakSlab(ServerWorld instance, BlockPos pos, boolean b) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index 9f3dc51..ad386f3 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -12,7 +12,6 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; import org.jetbrains.annotations.Nullable; -import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -20,8 +19,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import static io.github.andrew6rant.autoslabs.Util.getCameraOffset; - @Mixin(WorldRenderer.class) public class WorldRendererMixin { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a5a9ac1..9fa24f2 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -32,8 +32,7 @@ "fabricloader": ">=0.14.12", "minecraft": ">=1.20", "java": ">=17", - "fabric-api": "*", - "statement": ">=4.2.5" + "fabric-api": "*" }, "suggests": { "another-mod": "*" From 19b3b40b8400f38ad2cc796e9b9cb36b69ca5749 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 13 Aug 2023 18:27:09 -0400 Subject: [PATCH 29/71] fix lang and fabric mod json --- src/main/resources/assets/autoslabs/lang/en_us.json | 2 +- src/main/resources/fabric.mod.json | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/resources/assets/autoslabs/lang/en_us.json b/src/main/resources/assets/autoslabs/lang/en_us.json index a34b07a..0c67dea 100644 --- a/src/main/resources/assets/autoslabs/lang/en_us.json +++ b/src/main/resources/assets/autoslabs/lang/en_us.json @@ -1,4 +1,4 @@ { + "auto_slabs.midnightconfig.title": "AutoSlabs", "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?" - } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 9fa24f2..00dd5ea 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -2,14 +2,13 @@ "schemaVersion": 1, "id": "autoslabs", "version": "${version}", - "name": "Auto Slabs", - "description": "Automatically Generate vertical slabs for every instance of SlabBlock", + "name": "AutoSlabs", + "description": "Automatically generate and inject vertical slabs states for every instance of SlabBlock, without adding a single new block!", "authors": [ "Andrew6rant (Andrew Grant)" ], "contact": { - "homepage": "https://fabricmc.net/", - "sources": "https://github.com/FabricMC/fabric-example-mod" + "sources": "https://github.com/Andrew6rant/Auto-Slabs" }, "license": "MIT", "icon": "assets/autoslabs/icon.png", From 9f2bd04b13c307dd56450ea9a72c46ee5d3ecd4c Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 13 Aug 2023 18:49:05 -0400 Subject: [PATCH 30/71] switch back to ARRP now that my PR is merged --- build.gradle | 8 ++++---- gradle.properties | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 105c2f6..22f6d75 100644 --- a/build.gradle +++ b/build.gradle @@ -20,9 +20,9 @@ repositories { maven { url = "https://jitpack.io" } - //maven { - // url = uri("https://ueaj.dev/maven") - //} + maven { + url = uri("https://ueaj.dev/maven") + } maven { url "https://maven.terraformersmc.com/releases/" } @@ -44,7 +44,7 @@ dependencies { include modApi("com.github.Virtuoel:Statement:${project.statement_version}", { exclude group: "net.fabricmc.fabric-api" }) - include modImplementation("com.github.Andrew6rant:ARRP:${project.arrp_version}") + include modImplementation("net.devtech:arrp:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" diff --git a/gradle.properties b/gradle.properties index b23061b..8638df6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,5 +16,5 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 statement_version=4.2.8 -arrp_version=2c1be192cd +arrp_version=0.7.0 modmenu_version = 7.2.1 \ No newline at end of file From 0295174f9c7cf120327d849f7b8a76e4a23a2909 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 14 Aug 2023 14:11:09 -0400 Subject: [PATCH 31/71] fix #4 temporarily switch to my fork of ARRP for the BETWEEN_MODS_AND_USER event --- build.gradle | 2 +- gradle.properties | 3 ++- .../github/andrew6rant/autoslabs/AutoSlabs.java | 17 +++++++++-------- .../io/github/andrew6rant/autoslabs/Util.java | 11 +++++++++++ 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index 22f6d75..0e70e11 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ dependencies { include modApi("com.github.Virtuoel:Statement:${project.statement_version}", { exclude group: "net.fabricmc.fabric-api" }) - include modImplementation("net.devtech:arrp:${project.arrp_version}") + include modImplementation("com.github.Andrew6rant:ARRP:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" diff --git a/gradle.properties b/gradle.properties index 8638df6..6683031 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,5 +16,6 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 statement_version=4.2.8 -arrp_version=0.7.0 +#arrp_version=0.7.0 +arrp_version=c4996752ff modmenu_version = 7.2.1 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 42775b2..a6799e0 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -3,13 +3,11 @@ import net.devtech.arrp.api.RRPCallback; import net.devtech.arrp.api.RuntimeResourcePack; import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback; import net.minecraft.block.Block; -import net.minecraft.block.SlabBlock; import net.minecraft.registry.Registries; import virtuoel.statement.api.StateRefresher; -import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; - public class AutoSlabs implements ModInitializer { public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); @@ -17,14 +15,17 @@ public class AutoSlabs implements ModInitializer { public void onInitialize() { // Config is initialized in a static block in StateMixin. I need it to run earlier than State$get, and AutoSlabs$onInitialize is too late. for (Block block : Registries.BLOCK) { - if (block instanceof SlabBlock) { - StateRefresher.INSTANCE.addBlockProperty(block, VERTICAL_TYPE, VerticalType.FALSE); - ModelUtil.setup(AUTO_SLABS_RESOURCES, block); - } + Util.registerSlab(block); } + + RegistryEntryAddedCallback.event(Registries.BLOCK).register((raw, id, block) -> { + Util.registerSlab(block); + }); + StateRefresher.INSTANCE.reorderBlockStates(); + // custom ARRP entrypoint that is only available in my fork of ARRP - RRPCallback.BETWEEN_VANILLA_AND_MODS.register(a -> a.add(AUTO_SLABS_RESOURCES)); + RRPCallback.BETWEEN_MODS_AND_USER.register(a -> a.add(AUTO_SLABS_RESOURCES)); //AUTO_SLABS_RESOURCES.dump(); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/Util.java index 2fa52a9..638d2fc 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/Util.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/Util.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs; +import net.devtech.arrp.api.RuntimeResourcePack; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; @@ -14,9 +15,12 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; import org.joml.Vector3f; +import virtuoel.statement.api.StateRefresher; import java.util.Optional; +import static io.github.andrew6rant.autoslabs.AutoSlabs.AUTO_SLABS_RESOURCES; + // massive thanks to Schauweg for some of this code public class Util { @@ -40,6 +44,13 @@ public class Util { VERTICAL_EAST_WEST_TOP_SHAPE = Block.createCuboidShape(8.0, 0.0, 0.0, 16.0, 16.0, 16.0); } + public static void registerSlab(Block block) { + if (block instanceof SlabBlock slabBlock) { + StateRefresher.INSTANCE.addBlockProperty(slabBlock, VERTICAL_TYPE, VerticalType.FALSE); + ModelUtil.setup(AUTO_SLABS_RESOURCES, slabBlock); + } + } + public static Vec3d getCameraOffset(Vec3d camDif, VoxelShape shape, Direction side) { Direction.Axis axis = side.getAxis(); double xDif = camDif.x; From 017f00941392dff9b261e11f133fdfb7a779068b Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 15 Aug 2023 23:46:48 -0400 Subject: [PATCH 32/71] add dumpResources config option --- .../java/io/github/andrew6rant/autoslabs/AutoSlabs.java | 6 +++++- .../github/andrew6rant/autoslabs/config/ServerConfig.java | 2 ++ src/main/resources/assets/autoslabs/lang/en_us.json | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index a6799e0..3b76571 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -8,6 +8,8 @@ import net.minecraft.registry.Registries; import virtuoel.statement.api.StateRefresher; +import static io.github.andrew6rant.autoslabs.config.ServerConfig.dumpResources; + public class AutoSlabs implements ModInitializer { public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); @@ -26,6 +28,8 @@ public void onInitialize() { // custom ARRP entrypoint that is only available in my fork of ARRP RRPCallback.BETWEEN_MODS_AND_USER.register(a -> a.add(AUTO_SLABS_RESOURCES)); - //AUTO_SLABS_RESOURCES.dump(); + if (dumpResources) { + AUTO_SLABS_RESOURCES.dump(); + } } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java index 8f149bf..942a66c 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java @@ -2,4 +2,6 @@ public class ServerConfig extends MidnightConfig { @Entry public static boolean suppressStatementAPILogger = true; + @Entry public static boolean dumpResources = false; + } diff --git a/src/main/resources/assets/autoslabs/lang/en_us.json b/src/main/resources/assets/autoslabs/lang/en_us.json index 0c67dea..fa84460 100644 --- a/src/main/resources/assets/autoslabs/lang/en_us.json +++ b/src/main/resources/assets/autoslabs/lang/en_us.json @@ -1,4 +1,6 @@ { "auto_slabs.midnightconfig.title": "AutoSlabs", - "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?" + "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?", + "auto_slabs.midnightconfig.dumpResources": "Dump generated resources on boot?" + } \ No newline at end of file From 1f4d10a2ba0cf0e42773938387c4ba63b66cb733 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 15 Aug 2023 23:51:27 -0400 Subject: [PATCH 33/71] switch back to ARRP again now that my second PR has been merged --- build.gradle | 2 +- gradle.properties | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 0e70e11..22f6d75 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ dependencies { include modApi("com.github.Virtuoel:Statement:${project.statement_version}", { exclude group: "net.fabricmc.fabric-api" }) - include modImplementation("com.github.Andrew6rant:ARRP:${project.arrp_version}") + include modImplementation("net.devtech:arrp:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" diff --git a/gradle.properties b/gradle.properties index 6683031..3e3968b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,6 +16,5 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 statement_version=4.2.8 -#arrp_version=0.7.0 -arrp_version=c4996752ff +arrp_version=0.8.0 modmenu_version = 7.2.1 \ No newline at end of file From df73c6b634fcea4eb661c2011bd4629e139d21a9 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 15 Aug 2023 23:52:10 -0400 Subject: [PATCH 34/71] bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 3e3968b..b71d14a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.1+build.9 loader_version=0.14.21 # Mod Properties -mod_version=1.0.0 +mod_version=1.0.1 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs From 39e9d6c874b64a472b515b7cd5ff7841e21f7f60 Mon Sep 17 00:00:00 2001 From: Superkat32 Date: Wed, 16 Aug 2023 12:56:29 -0400 Subject: [PATCH 35/71] Fix slab duplication FIX: Fixed a bug where if the player mined a single slab while sneaking, it would drop extra slabs, causing slab duplication --- .../io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index b55f148..81e94df 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -69,7 +69,8 @@ public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos po @Override public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) { if (player.isSneaking()) { - super.afterBreak(world, player, pos, state.with(TYPE, DOUBLE), blockEntity, stack); + //Should ensure that if the player mines a single slab, it drops the correct amount + super.afterBreak(world, player, pos, state.with(TYPE, state.get(SlabBlock.TYPE)), blockEntity, stack); } else { super.afterBreak(world, player, pos, state.with(TYPE, TOP), blockEntity, stack); } From 14be16e0070f954dc55f2e985bb41f6a4fd9f456 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Wed, 16 Aug 2023 16:58:32 -0400 Subject: [PATCH 36/71] allow glass panes to connect to vertical slabs --- .../andrew6rant/autoslabs/PlacementUtil.java | 56 +++++++++++++----- .../autoslabs/mixin/PaneBlockMixin.java | 59 +++++++++++++++++++ src/main/resources/autoslabs.mixins.json | 1 + 3 files changed, 100 insertions(+), 16 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 88b87d7..15f9b27 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -1,6 +1,8 @@ package io.github.andrew6rant.autoslabs; import net.minecraft.block.BlockState; +import net.minecraft.block.PaneBlock; +import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; @@ -8,6 +10,8 @@ import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.state.property.BooleanProperty; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; @@ -18,13 +22,33 @@ import net.minecraft.world.RaycastContext; import static io.github.andrew6rant.autoslabs.Util.*; +import static io.github.andrew6rant.autoslabs.VerticalType.*; +import static net.minecraft.block.PaneBlock.cannotConnect; import static net.minecraft.block.SlabBlock.TYPE; import static net.minecraft.block.SlabBlock.WATERLOGGED; import static net.minecraft.block.enums.SlabType.TOP; public class PlacementUtil { - public static VoxelShape getDynamicOutlineShape(VerticalType verticalType, Direction side, BlockHitResult cast) { + public static boolean calcPaneCanConnectToVerticalSlab(Direction paneDirection, BlockState offsetState, boolean sideSolidFullSquare) { + System.out.println("calcPaneCanConnectToVerticalSlab called"); + if (sideSolidFullSquare && !cannotConnect(offsetState)) { + return true; + } + if (offsetState.getBlock() instanceof SlabBlock) { + switch (paneDirection) { + case NORTH, SOUTH -> { + return offsetState.get(VERTICAL_TYPE) == EAST_WEST; + } + case EAST, WEST -> { + return offsetState.get(VERTICAL_TYPE) == NORTH_SOUTH; + } + } + } + return offsetState.getBlock() instanceof PaneBlock || offsetState.isIn(BlockTags.WALLS); + } + + public static VoxelShape getDynamicOutlineShape(VerticalType verticalType, Direction side, BlockHitResult cast) { return switch (verticalType) { case FALSE -> { switch (side) { @@ -113,16 +137,16 @@ public static BlockState getModelState(BlockState state, VerticalType verticalTy case NORTH_SOUTH -> { switch (side) { case NORTH -> { - yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, NORTH_SOUTH).with(TYPE, SlabType.TOP); } case SOUTH -> { - yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); } default -> { var zPos = cast.getPos().z; var zOffset = ((zPos % 1) + 1) % 1; - if (zOffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); - else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(TYPE, SlabType.TOP); + if (zOffset > 0.5) yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, NORTH_SOUTH).with(TYPE, SlabType.BOTTOM); + else yield state.getBlock().getDefaultState().with(VERTICAL_TYPE, NORTH_SOUTH).with(TYPE, SlabType.TOP); } } } @@ -218,7 +242,7 @@ public static boolean canReplace(BlockState state, ItemPlacementContext context) return part == HitPart.CENTER; } } - } else if (verticalType == VerticalType.NORTH_SOUTH) { + } else if (verticalType == NORTH_SOUTH) { if (slabType == SlabType.BOTTOM) { if (direction == Direction.NORTH || !topHalfZ && direction.getAxis().isVertical()) { return part == HitPart.CENTER; @@ -279,9 +303,9 @@ public static BlockState calcUpPlacement(BlockState blockState, BlockState state if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.BOTTOM) { - return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.TOP) { - return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.LEFT) { return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.RIGHT) { @@ -299,9 +323,9 @@ public static BlockState calcDownPlacement(BlockState blockState, BlockState sta if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.BOTTOM) { - return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.TOP) { - return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.LEFT) { return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.RIGHT) { @@ -317,7 +341,7 @@ public static BlockState calcNorthPlacement(BlockState blockState, BlockState st return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } if (part == HitPart.CENTER) { - return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.BOTTOM) { return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.TOP) { @@ -337,7 +361,7 @@ public static BlockState calcSouthPlacement(BlockState blockState, BlockState st return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } if (part == HitPart.CENTER) { - return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.BOTTOM) { return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.TOP) { @@ -363,9 +387,9 @@ public static BlockState calcEastPlacement(BlockState blockState, BlockState sta } else if (part == HitPart.TOP) { return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.LEFT) { - return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.RIGHT) { - return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } } return null; @@ -383,9 +407,9 @@ public static BlockState calcWestPlacement(BlockState blockState, BlockState sta } else if (part == HitPart.TOP) { return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.LEFT) { - return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } else if (part == HitPart.RIGHT) { - return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } } return null; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java new file mode 100644 index 0000000..d50ab57 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java @@ -0,0 +1,59 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import io.github.andrew6rant.autoslabs.PlacementUtil; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalConnectingBlock; +import net.minecraft.block.PaneBlock; +import net.minecraft.block.SlabBlock; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +@Mixin(PaneBlock.class) +public class PaneBlockMixin extends HorizontalConnectingBlock { + + public PaneBlockMixin(float radius1, float radius2, float boundingHeight1, float boundingHeight2, float collisionHeight, Settings settings) { + super(radius1, radius2, boundingHeight1, boundingHeight2, collisionHeight, settings); + } + + @Inject(method = "getStateForNeighborUpdate(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/Direction;Lnet/minecraft/block/BlockState;Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", + at = @At(value = "HEAD"), cancellable = true) + public final void autoslabs$neighborConnectsToVerticalSlab(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos, CallbackInfoReturnable cir) { + if (direction.getAxis().isHorizontal()) { + if (state.get(WATERLOGGED)) { // I'm puttting this here because if the axis isn't horizontal, Vanilla code will still properly check the waterlogged state. My inject changes that so I need this + world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + cir.setReturnValue(state.with(HorizontalConnectingBlock.FACING_PROPERTIES.get(direction), PlacementUtil.calcPaneCanConnectToVerticalSlab(direction, neighborState, neighborState.isSideSolidFullSquare(world, pos, direction.getOpposite())))); + } + } + + @Inject(method = "getPlacementState(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/block/BlockState;", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/BlockView;getBlockState(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", + ordinal = 3, + shift = At.Shift.AFTER), + locals = LocalCapture.CAPTURE_FAILHARD, + cancellable = true) + public final void autoslabs$placementConnectsToVerticalSlab(ItemPlacementContext ctx, CallbackInfoReturnable cir, BlockView blockView, BlockPos panePos, FluidState paneFluid, + BlockPos northPos, BlockPos southPos, BlockPos westPos, BlockPos eastPos, BlockState northState, BlockState southState, BlockState westState) { + + BlockState eastState = blockView.getBlockState(eastPos); + if (northState.getBlock() instanceof SlabBlock || southState.getBlock() instanceof SlabBlock || westState.getBlock() instanceof SlabBlock || eastState.getBlock() instanceof SlabBlock) { + cir.setReturnValue(((PaneBlock)(Object)this).getDefaultState() + .with(NORTH, PlacementUtil.calcPaneCanConnectToVerticalSlab(Direction.NORTH, northState, northState.isSideSolidFullSquare(blockView, northPos, Direction.SOUTH))) + .with(SOUTH, PlacementUtil.calcPaneCanConnectToVerticalSlab(Direction.SOUTH, southState, southState.isSideSolidFullSquare(blockView, southPos, Direction.NORTH))) + .with(WEST, PlacementUtil.calcPaneCanConnectToVerticalSlab(Direction.WEST, westState, westState.isSideSolidFullSquare(blockView, westPos, Direction.EAST))) + .with(EAST, PlacementUtil.calcPaneCanConnectToVerticalSlab(Direction.EAST, eastState, eastState.isSideSolidFullSquare(blockView, eastPos, Direction.WEST))) + .with(WATERLOGGED, paneFluid.getFluid() == Fluids.WATER)); + } + } +} diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index 9a32668..8babd26 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -3,6 +3,7 @@ "package": "io.github.andrew6rant.autoslabs.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "PaneBlockMixin", "ServerPlayerInteractionManagerMixin", "SlabBlockMixin", "StateMixin" From b33cd4be9353e8f10405ac18fa79894ebb8cc778 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 17 Aug 2023 10:31:45 -0400 Subject: [PATCH 37/71] Added textures and models to support Mo Glass' slabs --- .../mo_glass/blockstates/glass_slab.json | 25 ++++++++++++++++++ .../models/block/glass_slab_double.json | 8 ++++++ .../glass_slab_vertical_east_west_bottom.json | 9 +++++++ .../glass_slab_vertical_east_west_double.json | 9 +++++++ .../glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ .../glass_slab_vertical_north_south_top.json | 9 +++++++ .../textures/block/glass_slab_double.png | Bin 0 -> 276 bytes .../textures/block/glass_slab_vertical.png | Bin 0 -> 285 bytes 10 files changed, 87 insertions(+) create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/glass_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/glass_slab.json new file mode 100644 index 0000000..0c1f164 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_double.json new file mode 100644 index 0000000..db11414 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/glass", + "side": "mo_glass:block/glass_slab_double", + "top": "minecraft:block/glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..c9ef911 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/glass_slab_vertical", + "side": "minecraft:block/glass", + "side_vertical": "mo_glass:block/glass_slab_vertical", + "top": "mo_glass:block/glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..3803ed1 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/glass_slab_vertical", + "side": "minecraft:block/glass", + "side_vertical": "mo_glass:block/glass_slab_vertical", + "top": "mo_glass:block/glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..3bc1275 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/glass_slab_vertical", + "side": "minecraft:block/glass", + "side_vertical": "mo_glass:block/glass_slab_vertical", + "top": "mo_glass:block/glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..694b67d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/glass_slab_double", + "side": "minecraft:block/glass", + "side_vertical": "mo_glass:block/glass_slab_vertical", + "top": "mo_glass:block/glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..2dd51ec --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/glass_slab_double", + "side": "minecraft:block/glass", + "side_vertical": "mo_glass:block/glass_slab_vertical", + "top": "mo_glass:block/glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..5714334 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/glass_slab_double", + "side": "minecraft:block/glass", + "side_vertical": "mo_glass:block/glass_slab_vertical", + "top": "mo_glass:block/glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4f705d27668f5d3d2e0f4b3c09860c21b0f694 GIT binary patch literal 276 zcmV+v0qg#WP)Px#&PhZ;R5*>Lk}(Q{KoCX0l2R}bViB+nc3x$>;1Tpd$q|B`eJ+tDMHUMigOHWL z3ig{qB5N!%ZhkrN|2$^CbCpjGOI_{{tNd%&_(FQpj+B9@TNCgm6)iZj{#S+w2+nBCx)OiJ~V!y84TVAF%T a>+uE#xL@jWw~+Dx0000Px#*GWV{R5*>@lRpZBFc`(3(lHRB)S-~IxOo+~;t}*J-PD6_v1Yt;l+FK*Nl~^dx2;ltYHAa1^~+Q#k0XENoN3vccGORRWtkg zGRdAWBlFxTqRKtQgeg)que^T+YY%VCBXe$Rh^s z!Vm*@8^{UPxYOX5`3Hl#7sgUv*U2(!?00000NkvXXu0mjfV{?8A literal 0 HcmV?d00001 From f8cd4aec87d89791c6c6ae2ab811cfc4e1f1c079 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 17 Aug 2023 10:48:14 -0400 Subject: [PATCH 38/71] bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b71d14a..4031031 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.1+build.9 loader_version=0.14.21 # Mod Properties -mod_version=1.0.1 +mod_version=1.1.0 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs From edd1b2781b6a5c90bb91b85ff06212072a7f0ac8 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 18 Aug 2023 16:47:55 -0400 Subject: [PATCH 39/71] fix client code getting called by both sides --- gradle.properties | 2 +- .../andrew6rant/autoslabs/PlacementUtil.java | 101 +++++++++--------- 2 files changed, 50 insertions(+), 53 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4031031..12fbce1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.1+build.9 loader_version=0.14.21 # Mod Properties -mod_version=1.1.0 +mod_version=1.1.1 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 15f9b27..583db1e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -4,8 +4,8 @@ import net.minecraft.block.PaneBlock; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; -import net.minecraft.client.MinecraftClient; 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.ItemPlacementContext; @@ -220,47 +220,46 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) public static boolean canReplace(BlockState state, ItemPlacementContext context) { ItemStack itemStack = context.getStack(); SlabType slabType = state.get(TYPE); + PlayerEntity entity = context.getPlayer(); + if (entity == null) return false; if (slabType != SlabType.DOUBLE && itemStack.isOf(state.getBlock().asItem())) { if (context.canReplaceExisting()) { - HitResult hitResult = MinecraftClient.getInstance().crosshairTarget; - if (hitResult.getType() == HitResult.Type.BLOCK) { - BlockHitResult result = (BlockHitResult) hitResult; - HitPart part = getHitPart(result); - boolean topHalfX = context.getHitPos().x - (double) context.getBlockPos().getX() > 0.5; - boolean topHalfY = context.getHitPos().y - (double) context.getBlockPos().getY() > 0.5; - boolean topHalfZ = context.getHitPos().z - (double) context.getBlockPos().getZ() > 0.5; - Direction direction = context.getSide(); - VerticalType verticalType = state.get(VERTICAL_TYPE); - if (verticalType != null) { - if (verticalType == VerticalType.FALSE) { - if (slabType == SlabType.BOTTOM) { - if (direction == Direction.UP || topHalfY && direction.getAxis().isHorizontal()) { - return part == HitPart.CENTER; - } - } else { - if (direction == Direction.DOWN || !topHalfY && direction.getAxis().isHorizontal()) { - return part == HitPart.CENTER; - } + BlockHitResult blockHitResult = PlacementUtil.calcRaycast(entity); + HitPart part = getHitPart(blockHitResult); + boolean topHalfX = context.getHitPos().x - (double) context.getBlockPos().getX() > 0.5; + boolean topHalfY = context.getHitPos().y - (double) context.getBlockPos().getY() > 0.5; + boolean topHalfZ = context.getHitPos().z - (double) context.getBlockPos().getZ() > 0.5; + Direction direction = context.getSide(); + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (verticalType != null) { + if (verticalType == VerticalType.FALSE) { + if (slabType == SlabType.BOTTOM) { + if (direction == Direction.UP || topHalfY && direction.getAxis().isHorizontal()) { + return part == HitPart.CENTER; } - } else if (verticalType == NORTH_SOUTH) { - if (slabType == SlabType.BOTTOM) { - if (direction == Direction.NORTH || !topHalfZ && direction.getAxis().isVertical()) { - return part == HitPart.CENTER; - } - } else { - if (direction == Direction.SOUTH || topHalfZ && direction.getAxis().isVertical()) { - return part == HitPart.CENTER; - } + } else { + if (direction == Direction.DOWN || !topHalfY && direction.getAxis().isHorizontal()) { + return part == HitPart.CENTER; } - } else if (verticalType == VerticalType.EAST_WEST) { - if (slabType == SlabType.BOTTOM) { - if (direction == Direction.EAST || topHalfX && direction.getAxis().isVertical()) { - return part == HitPart.CENTER; - } - } else { - if (direction == Direction.WEST || !topHalfX && direction.getAxis().isVertical()) { - return part == HitPart.CENTER; - } + } + } else if (verticalType == NORTH_SOUTH) { + if (slabType == SlabType.BOTTOM) { + if (direction == Direction.NORTH || !topHalfZ && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } else { + if (direction == Direction.SOUTH || topHalfZ && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } + } else if (verticalType == VerticalType.EAST_WEST) { + if (slabType == SlabType.BOTTOM) { + if (direction == Direction.EAST || topHalfX && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; + } + } else { + if (direction == Direction.WEST || !topHalfX && direction.getAxis().isVertical()) { + return part == HitPart.CENTER; } } } @@ -279,20 +278,18 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState BlockState blockState = ctx.getWorld().getBlockState(blockPos); Direction ctxSide = ctx.getSide(); FluidState fluidState = ctx.getWorld().getFluidState(blockPos); - HitResult hitResult = MinecraftClient.getInstance().crosshairTarget; - if (hitResult.getType() == HitResult.Type.BLOCK) { - BlockHitResult result = (BlockHitResult) hitResult; - HitPart part = getHitPart(result); - return switch (ctxSide) { - case UP -> calcUpPlacement(blockState, state, part, fluidState); - case DOWN -> calcDownPlacement(blockState, state, part, fluidState); - case NORTH -> calcNorthPlacement(blockState, state, part, fluidState); - case SOUTH -> calcSouthPlacement(blockState, state, part, fluidState); - case EAST -> calcEastPlacement(blockState, state, part, fluidState); - case WEST -> calcWestPlacement(blockState, state, part, fluidState); - }; - } - return null; + PlayerEntity entity = ctx.getPlayer(); + if (entity == null) return null; + BlockHitResult blockHitResult = PlacementUtil.calcRaycast(entity); + HitPart part = getHitPart(blockHitResult); + return switch (ctxSide) { + case UP -> calcUpPlacement(blockState, state, part, fluidState); + case DOWN -> calcDownPlacement(blockState, state, part, fluidState); + case NORTH -> calcNorthPlacement(blockState, state, part, fluidState); + case SOUTH -> calcSouthPlacement(blockState, state, part, fluidState); + case EAST -> calcEastPlacement(blockState, state, part, fluidState); + case WEST -> calcWestPlacement(blockState, state, part, fluidState); + }; } public static BlockState calcUpPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { From e06753119a2b53841175b9c2dc0fcd200fdb30f6 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 18 Aug 2023 17:01:53 -0400 Subject: [PATCH 40/71] small clean up removed a println that should have not made it to prod, whoops! --- .../java/io/github/andrew6rant/autoslabs/PlacementUtil.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 583db1e..3ae3996 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -11,9 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; import net.minecraft.registry.tag.BlockTags; -import net.minecraft.state.property.BooleanProperty; import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; @@ -31,7 +29,6 @@ public class PlacementUtil { public static boolean calcPaneCanConnectToVerticalSlab(Direction paneDirection, BlockState offsetState, boolean sideSolidFullSquare) { - System.out.println("calcPaneCanConnectToVerticalSlab called"); if (sideSolidFullSquare && !cannotConnect(offsetState)) { return true; } @@ -48,7 +45,7 @@ public static boolean calcPaneCanConnectToVerticalSlab(Direction paneDirection, return offsetState.getBlock() instanceof PaneBlock || offsetState.isIn(BlockTags.WALLS); } - public static VoxelShape getDynamicOutlineShape(VerticalType verticalType, Direction side, BlockHitResult cast) { + public static VoxelShape getDynamicOutlineShape(VerticalType verticalType, Direction side, BlockHitResult cast) { return switch (verticalType) { case FALSE -> { switch (side) { From fb843226bc2f459683b2b0f21034aba7a2409a02 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 20 Aug 2023 22:30:50 -0400 Subject: [PATCH 41/71] attempt to mitigate block placement desync --- .../java/io/github/andrew6rant/autoslabs/PlacementUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 3ae3996..bef643e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -11,6 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; import net.minecraft.registry.tag.BlockTags; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -169,7 +170,7 @@ public static BlockState getModelState(BlockState state, VerticalType verticalTy public static BlockHitResult calcRaycast(Entity entity) { Vec3d vec3d = entity.getCameraPosVec(0); Vec3d vec3d2 = entity.getRotationVec(0); - Vec3d vec3d3 = vec3d.add(vec3d2.x * 5, vec3d2.y * 5, vec3d2.z * 5); + Vec3d vec3d3 = vec3d.add(vec3d2.x * 5d, vec3d2.y * 5d, vec3d2.z * 5d); return entity.getWorld().raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, entity)); } @@ -271,6 +272,7 @@ public static boolean canReplace(BlockState state, ItemPlacementContext context) } public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState state) { + if (!(ctx.getWorld() instanceof ServerWorld)) return null; BlockPos blockPos = ctx.getBlockPos(); BlockState blockState = ctx.getWorld().getBlockState(blockPos); Direction ctxSide = ctx.getSide(); From 1b0beaebe1496daf71721fdce3425e4102bc041d Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 20 Aug 2023 22:31:23 -0400 Subject: [PATCH 42/71] bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 12fbce1..fa1c787 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.1+build.9 loader_version=0.14.21 # Mod Properties -mod_version=1.1.1 +mod_version=1.1.2 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs From d7f9e17d8374d4c679d8c293444a742ef76aba40 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 24 Aug 2023 16:42:06 -0400 Subject: [PATCH 43/71] ensure that setting a double slab sets the waterlogged property to false --- .../github/andrew6rant/autoslabs/PlacementUtil.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index bef643e..ad6f42d 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -294,7 +294,7 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState public static BlockState calcUpPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { if (part != null) { if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); @@ -314,7 +314,7 @@ public static BlockState calcUpPlacement(BlockState blockState, BlockState state public static BlockState calcDownPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { if (part != null) { if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); @@ -334,7 +334,7 @@ public static BlockState calcDownPlacement(BlockState blockState, BlockState sta public static BlockState calcNorthPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { if (part != null) { if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); @@ -354,7 +354,7 @@ public static BlockState calcNorthPlacement(BlockState blockState, BlockState st public static BlockState calcSouthPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { if (part != null) { if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); @@ -374,7 +374,7 @@ public static BlockState calcSouthPlacement(BlockState blockState, BlockState st public static BlockState calcEastPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { if (part != null) { if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); @@ -394,7 +394,7 @@ public static BlockState calcEastPlacement(BlockState blockState, BlockState sta public static BlockState calcWestPlacement(BlockState blockState, BlockState state, HitPart part, FluidState fluidState) { if (part != null) { if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); } if (part == HitPart.CENTER) { return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, VerticalType.EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); From bc693169fb634747a4314b98ebc9e69378e9335d Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Mon, 28 Aug 2023 22:57:51 -0400 Subject: [PATCH 44/71] fix #16 --- .../io/github/andrew6rant/autoslabs/PlacementUtil.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index ad6f42d..44a2ed8 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -1,6 +1,7 @@ package io.github.andrew6rant.autoslabs; import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; import net.minecraft.block.PaneBlock; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; @@ -22,6 +23,7 @@ import static io.github.andrew6rant.autoslabs.Util.*; import static io.github.andrew6rant.autoslabs.VerticalType.*; +import static net.minecraft.block.LightBlock.LEVEL_15; import static net.minecraft.block.PaneBlock.cannotConnect; import static net.minecraft.block.SlabBlock.TYPE; import static net.minecraft.block.SlabBlock.WATERLOGGED; @@ -272,7 +274,11 @@ public static boolean canReplace(BlockState state, ItemPlacementContext context) } public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState state) { - if (!(ctx.getWorld() instanceof ServerWorld)) return null; + // horrendous hack to make the client think that it can place down a slab + // without visual desync or server-client communication + // (light blocks with a level of 0 are completely invisible and also have no hitbox + if (!(ctx.getWorld() instanceof ServerWorld)) return Blocks.LIGHT.getDefaultState().with(LEVEL_15, 0); + BlockPos blockPos = ctx.getBlockPos(); BlockState blockState = ctx.getWorld().getBlockState(blockPos); Direction ctxSide = ctx.getSide(); From c21db4afc77d5aebc5fca5a5fd3cbd7c5d4029fb Mon Sep 17 00:00:00 2001 From: Damir Krupic <61109153+dadoirie@users.noreply.github.com> Date: Wed, 30 Aug 2023 03:10:02 +0200 Subject: [PATCH 45/71] mo glass slabs compat resource pack (#17) --- .../blockstates/black_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/blue_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/brown_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/cyan_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/gray_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/green_stained_glass_slab.json | 25 ++++++++++++++++++ .../light_blue_stained_glass_slab.json | 25 ++++++++++++++++++ .../light_gray_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/lime_stained_glass_slab.json | 25 ++++++++++++++++++ .../magenta_stained_glass_slab.json | 25 ++++++++++++++++++ .../orange_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/pink_stained_glass_slab.json | 25 ++++++++++++++++++ .../purple_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/red_stained_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/tinted_glass_slab.json | 25 ++++++++++++++++++ .../blockstates/white_stained_glass_slab.json | 25 ++++++++++++++++++ .../yellow_stained_glass_slab.json | 25 ++++++++++++++++++ .../black_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/blue_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../brown_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/cyan_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/gray_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../green_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../light_blue_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../light_gray_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/lime_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../magenta_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../orange_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/pink_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../purple_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/red_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/tinted_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ted_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../white_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../yellow_stained_glass_slab_double.json | 8 ++++++ ..._glass_slab_vertical_east_west_bottom.json | 9 +++++++ ..._glass_slab_vertical_east_west_double.json | 9 +++++++ ...ned_glass_slab_vertical_east_west_top.json | 9 +++++++ ...lass_slab_vertical_north_south_bottom.json | 9 +++++++ ...lass_slab_vertical_north_south_double.json | 9 +++++++ ...d_glass_slab_vertical_north_south_top.json | 9 +++++++ .../block/black_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../black_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/blue_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../blue_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/brown_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../brown_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/cyan_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../cyan_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/gray_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../gray_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/green_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../green_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../light_blue_stained_glass_slab_double.png | Bin 0 -> 582 bytes ...light_blue_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../light_gray_stained_glass_slab_double.png | Bin 0 -> 583 bytes ...light_gray_stained_glass_slab_vertical.png | Bin 0 -> 602 bytes .../block/lime_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../lime_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../magenta_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../magenta_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../orange_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../orange_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/pink_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../pink_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../purple_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../purple_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/red_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../block/red_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes .../block/tinted_glass_slab_double.png | Bin 0 -> 745 bytes .../block/tinted_glass_slab_vertical.png | Bin 0 -> 738 bytes .../block/white_stained_glass_slab_double.png | Bin 0 -> 583 bytes .../white_stained_glass_slab_vertical.png | Bin 0 -> 596 bytes .../yellow_stained_glass_slab_double.png | Bin 0 -> 582 bytes .../yellow_stained_glass_slab_vertical.png | Bin 0 -> 601 bytes 170 files changed, 1479 insertions(+) create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/black_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/blue_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/brown_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/cyan_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/gray_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/green_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_blue_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_gray_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/lime_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/magenta_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/orange_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/pink_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/purple_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/red_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/tinted_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/white_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/yellow_stained_glass_slab.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_bottom.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_double.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_top.json create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/black_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/black_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/blue_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/blue_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/brown_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/brown_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/cyan_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/cyan_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/gray_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/gray_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/green_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/green_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_blue_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_blue_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_gray_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_gray_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/lime_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/lime_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/magenta_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/magenta_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/orange_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/orange_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/pink_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/pink_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/purple_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/purple_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/red_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/red_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/tinted_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/tinted_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/white_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/white_stained_glass_slab_vertical.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/yellow_stained_glass_slab_double.png create mode 100644 src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/yellow_stained_glass_slab_vertical.png diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/black_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/black_stained_glass_slab.json new file mode 100644 index 0000000..20e4cd9 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/black_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/black_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/black_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/black_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/black_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/black_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/black_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/black_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/blue_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/blue_stained_glass_slab.json new file mode 100644 index 0000000..687b8c6 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/blue_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/blue_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/blue_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/blue_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/blue_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/blue_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/blue_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/blue_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/brown_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/brown_stained_glass_slab.json new file mode 100644 index 0000000..e081a78 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/brown_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/brown_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/brown_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/brown_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/brown_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/brown_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/brown_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/brown_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/cyan_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/cyan_stained_glass_slab.json new file mode 100644 index 0000000..4130a84 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/cyan_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/cyan_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/cyan_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/cyan_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/cyan_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/cyan_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/cyan_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/cyan_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/gray_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/gray_stained_glass_slab.json new file mode 100644 index 0000000..cca2856 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/gray_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/gray_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/gray_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/gray_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/gray_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/gray_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/gray_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/gray_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/green_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/green_stained_glass_slab.json new file mode 100644 index 0000000..1135acf --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/green_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/green_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/green_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/green_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/green_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/green_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/green_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/green_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_blue_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_blue_stained_glass_slab.json new file mode 100644 index 0000000..40aed3c --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_blue_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/light_blue_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/light_blue_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/light_blue_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/light_blue_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/light_blue_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/light_blue_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/light_blue_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_gray_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_gray_stained_glass_slab.json new file mode 100644 index 0000000..e4b5241 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/light_gray_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/light_gray_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/light_gray_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/light_gray_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/light_gray_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/light_gray_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/light_gray_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/light_gray_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/lime_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/lime_stained_glass_slab.json new file mode 100644 index 0000000..2106fe5 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/lime_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/lime_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/lime_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/lime_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/lime_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/lime_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/lime_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/lime_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/magenta_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/magenta_stained_glass_slab.json new file mode 100644 index 0000000..133a53d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/magenta_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/magenta_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/magenta_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/magenta_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/magenta_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/magenta_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/magenta_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/magenta_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/orange_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/orange_stained_glass_slab.json new file mode 100644 index 0000000..30c117c --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/orange_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/orange_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/orange_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/orange_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/orange_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/orange_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/orange_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/orange_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/pink_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/pink_stained_glass_slab.json new file mode 100644 index 0000000..b7e2c91 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/pink_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/pink_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/pink_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/pink_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/pink_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/pink_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/pink_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/pink_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/purple_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/purple_stained_glass_slab.json new file mode 100644 index 0000000..bcb6243 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/purple_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/purple_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/purple_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/purple_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/purple_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/purple_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/purple_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/purple_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/red_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/red_stained_glass_slab.json new file mode 100644 index 0000000..a72f0e5 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/red_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/red_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/red_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/red_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/red_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/red_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/red_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/red_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/tinted_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/tinted_glass_slab.json new file mode 100644 index 0000000..7e88d3b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/tinted_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/tinted_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/tinted_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/tinted_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/tinted_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/tinted_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/tinted_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/tinted_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/white_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/white_stained_glass_slab.json new file mode 100644 index 0000000..215cec4 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/white_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/white_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/white_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/white_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/white_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/white_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/white_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/white_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/yellow_stained_glass_slab.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/yellow_stained_glass_slab.json new file mode 100644 index 0000000..cdd9512 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/blockstates/yellow_stained_glass_slab.json @@ -0,0 +1,25 @@ +{ + "variants": { + "type=double,vertical_type=north_south": { + "model": "mo_glass:block/yellow_stained_glass_slab_vertical_north_south_double" + }, + "type=double,vertical_type=east_west": { + "model": "mo_glass:block/yellow_stained_glass_slab_vertical_east_west_double" + }, + "type=double,vertical_type=false": { + "model": "mo_glass:block/yellow_stained_glass_slab_double" + }, + "type=bottom,vertical_type=north_south": { + "model": "mo_glass:block/yellow_stained_glass_slab_vertical_north_south_bottom" + }, + "type=top,vertical_type=north_south": { + "model": "mo_glass:block/yellow_stained_glass_slab_vertical_north_south_top" + }, + "type=top,vertical_type=east_west": { + "model": "mo_glass:block/yellow_stained_glass_slab_vertical_east_west_top" + }, + "type=bottom,vertical_type=east_west": { + "model": "mo_glass:block/yellow_stained_glass_slab_vertical_east_west_bottom" + } + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_double.json new file mode 100644 index 0000000..0dbd295 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/black_stained_glass", + "side": "mo_glass:block/black_stained_glass_slab_double", + "top": "minecraft:block/black_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..daec946 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/black_stained_glass_slab_vertical", + "side": "minecraft:block/black_stained_glass", + "side_vertical": "mo_glass:block/black_stained_glass_slab_vertical", + "top": "mo_glass:block/black_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..d9b37b0 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/black_stained_glass_slab_vertical", + "side": "minecraft:block/black_stained_glass", + "side_vertical": "mo_glass:block/black_stained_glass_slab_vertical", + "top": "mo_glass:block/black_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..bbc9895 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/black_stained_glass_slab_vertical", + "side": "minecraft:block/black_stained_glass", + "side_vertical": "mo_glass:block/black_stained_glass_slab_vertical", + "top": "mo_glass:block/black_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..b3e6927 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/black_stained_glass_slab_double", + "side": "minecraft:block/black_stained_glass", + "side_vertical": "mo_glass:block/black_stained_glass_slab_vertical", + "top": "mo_glass:block/black_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..ff3a688 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/black_stained_glass_slab_double", + "side": "minecraft:block/black_stained_glass", + "side_vertical": "mo_glass:block/black_stained_glass_slab_vertical", + "top": "mo_glass:block/black_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..2c2897b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/black_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/black_stained_glass_slab_double", + "side": "minecraft:block/black_stained_glass", + "side_vertical": "mo_glass:block/black_stained_glass_slab_vertical", + "top": "mo_glass:block/black_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_double.json new file mode 100644 index 0000000..5ffb6d5 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/blue_stained_glass", + "side": "mo_glass:block/blue_stained_glass_slab_double", + "top": "minecraft:block/blue_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..09981f7 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/blue_stained_glass_slab_vertical", + "side": "minecraft:block/blue_stained_glass", + "side_vertical": "mo_glass:block/blue_stained_glass_slab_vertical", + "top": "mo_glass:block/blue_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..1b2dadf --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/blue_stained_glass_slab_vertical", + "side": "minecraft:block/blue_stained_glass", + "side_vertical": "mo_glass:block/blue_stained_glass_slab_vertical", + "top": "mo_glass:block/blue_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..92c7211 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/blue_stained_glass_slab_vertical", + "side": "minecraft:block/blue_stained_glass", + "side_vertical": "mo_glass:block/blue_stained_glass_slab_vertical", + "top": "mo_glass:block/blue_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..7a25f21 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/blue_stained_glass_slab_double", + "side": "minecraft:block/blue_stained_glass", + "side_vertical": "mo_glass:block/blue_stained_glass_slab_vertical", + "top": "mo_glass:block/blue_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..dc21c09 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/blue_stained_glass_slab_double", + "side": "minecraft:block/blue_stained_glass", + "side_vertical": "mo_glass:block/blue_stained_glass_slab_vertical", + "top": "mo_glass:block/blue_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..33ffeb9 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/blue_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/blue_stained_glass_slab_double", + "side": "minecraft:block/blue_stained_glass", + "side_vertical": "mo_glass:block/blue_stained_glass_slab_vertical", + "top": "mo_glass:block/blue_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_double.json new file mode 100644 index 0000000..fc18042 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/brown_stained_glass", + "side": "mo_glass:block/brown_stained_glass_slab_double", + "top": "minecraft:block/brown_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..3ef0246 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/brown_stained_glass_slab_vertical", + "side": "minecraft:block/brown_stained_glass", + "side_vertical": "mo_glass:block/brown_stained_glass_slab_vertical", + "top": "mo_glass:block/brown_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..b440132 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/brown_stained_glass_slab_vertical", + "side": "minecraft:block/brown_stained_glass", + "side_vertical": "mo_glass:block/brown_stained_glass_slab_vertical", + "top": "mo_glass:block/brown_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..1ea5c0a --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/brown_stained_glass_slab_vertical", + "side": "minecraft:block/brown_stained_glass", + "side_vertical": "mo_glass:block/brown_stained_glass_slab_vertical", + "top": "mo_glass:block/brown_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..d651bc1 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/brown_stained_glass_slab_double", + "side": "minecraft:block/brown_stained_glass", + "side_vertical": "mo_glass:block/brown_stained_glass_slab_vertical", + "top": "mo_glass:block/brown_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..fc42a7b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/brown_stained_glass_slab_double", + "side": "minecraft:block/brown_stained_glass", + "side_vertical": "mo_glass:block/brown_stained_glass_slab_vertical", + "top": "mo_glass:block/brown_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..515bd1a --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/brown_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/brown_stained_glass_slab_double", + "side": "minecraft:block/brown_stained_glass", + "side_vertical": "mo_glass:block/brown_stained_glass_slab_vertical", + "top": "mo_glass:block/brown_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_double.json new file mode 100644 index 0000000..226a5ac --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/cyan_stained_glass", + "side": "mo_glass:block/cyan_stained_glass_slab_double", + "top": "minecraft:block/cyan_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..4e12bb2 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/cyan_stained_glass_slab_vertical", + "side": "minecraft:block/cyan_stained_glass", + "side_vertical": "mo_glass:block/cyan_stained_glass_slab_vertical", + "top": "mo_glass:block/cyan_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..2a95f7d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/cyan_stained_glass_slab_vertical", + "side": "minecraft:block/cyan_stained_glass", + "side_vertical": "mo_glass:block/cyan_stained_glass_slab_vertical", + "top": "mo_glass:block/cyan_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..919c98b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/cyan_stained_glass_slab_vertical", + "side": "minecraft:block/cyan_stained_glass", + "side_vertical": "mo_glass:block/cyan_stained_glass_slab_vertical", + "top": "mo_glass:block/cyan_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..cb7a744 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/cyan_stained_glass_slab_double", + "side": "minecraft:block/cyan_stained_glass", + "side_vertical": "mo_glass:block/cyan_stained_glass_slab_vertical", + "top": "mo_glass:block/cyan_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..34c8bd1 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/cyan_stained_glass_slab_double", + "side": "minecraft:block/cyan_stained_glass", + "side_vertical": "mo_glass:block/cyan_stained_glass_slab_vertical", + "top": "mo_glass:block/cyan_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..623e3e1 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/cyan_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/cyan_stained_glass_slab_double", + "side": "minecraft:block/cyan_stained_glass", + "side_vertical": "mo_glass:block/cyan_stained_glass_slab_vertical", + "top": "mo_glass:block/cyan_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_double.json new file mode 100644 index 0000000..d287c67 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/gray_stained_glass", + "side": "mo_glass:block/gray_stained_glass_slab_double", + "top": "minecraft:block/gray_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..dc30466 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/gray_stained_glass_slab_vertical", + "side": "minecraft:block/gray_stained_glass", + "side_vertical": "mo_glass:block/gray_stained_glass_slab_vertical", + "top": "mo_glass:block/gray_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..8714451 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/gray_stained_glass_slab_vertical", + "side": "minecraft:block/gray_stained_glass", + "side_vertical": "mo_glass:block/gray_stained_glass_slab_vertical", + "top": "mo_glass:block/gray_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..b76641b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/gray_stained_glass_slab_vertical", + "side": "minecraft:block/gray_stained_glass", + "side_vertical": "mo_glass:block/gray_stained_glass_slab_vertical", + "top": "mo_glass:block/gray_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..d9a77ac --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/gray_stained_glass_slab_double", + "side": "minecraft:block/gray_stained_glass", + "side_vertical": "mo_glass:block/gray_stained_glass_slab_vertical", + "top": "mo_glass:block/gray_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..cd0b282 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/gray_stained_glass_slab_double", + "side": "minecraft:block/gray_stained_glass", + "side_vertical": "mo_glass:block/gray_stained_glass_slab_vertical", + "top": "mo_glass:block/gray_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..a5ccbc6 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/gray_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/gray_stained_glass_slab_double", + "side": "minecraft:block/gray_stained_glass", + "side_vertical": "mo_glass:block/gray_stained_glass_slab_vertical", + "top": "mo_glass:block/gray_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_double.json new file mode 100644 index 0000000..7cf2868 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/green_stained_glass", + "side": "mo_glass:block/green_stained_glass_slab_double", + "top": "minecraft:block/green_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..0f452ab --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/green_stained_glass_slab_vertical", + "side": "minecraft:block/green_stained_glass", + "side_vertical": "mo_glass:block/green_stained_glass_slab_vertical", + "top": "mo_glass:block/green_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..376f388 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/green_stained_glass_slab_vertical", + "side": "minecraft:block/green_stained_glass", + "side_vertical": "mo_glass:block/green_stained_glass_slab_vertical", + "top": "mo_glass:block/green_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..30d55c0 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/green_stained_glass_slab_vertical", + "side": "minecraft:block/green_stained_glass", + "side_vertical": "mo_glass:block/green_stained_glass_slab_vertical", + "top": "mo_glass:block/green_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..c7ec84f --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/green_stained_glass_slab_double", + "side": "minecraft:block/green_stained_glass", + "side_vertical": "mo_glass:block/green_stained_glass_slab_vertical", + "top": "mo_glass:block/green_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..3c8539e --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/green_stained_glass_slab_double", + "side": "minecraft:block/green_stained_glass", + "side_vertical": "mo_glass:block/green_stained_glass_slab_vertical", + "top": "mo_glass:block/green_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..a0081e1 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/green_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/green_stained_glass_slab_double", + "side": "minecraft:block/green_stained_glass", + "side_vertical": "mo_glass:block/green_stained_glass_slab_vertical", + "top": "mo_glass:block/green_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_double.json new file mode 100644 index 0000000..a0f8a99 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/light_blue_stained_glass", + "side": "mo_glass:block/light_blue_stained_glass_slab_double", + "top": "minecraft:block/light_blue_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..faeec65 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "side": "minecraft:block/light_blue_stained_glass", + "side_vertical": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "top": "mo_glass:block/light_blue_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..a486ec6 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "side": "minecraft:block/light_blue_stained_glass", + "side_vertical": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "top": "mo_glass:block/light_blue_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..45bfaa4 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "side": "minecraft:block/light_blue_stained_glass", + "side_vertical": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "top": "mo_glass:block/light_blue_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..5ac31d4 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/light_blue_stained_glass_slab_double", + "side": "minecraft:block/light_blue_stained_glass", + "side_vertical": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "top": "mo_glass:block/light_blue_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..6064dee --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/light_blue_stained_glass_slab_double", + "side": "minecraft:block/light_blue_stained_glass", + "side_vertical": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "top": "mo_glass:block/light_blue_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..c14074a --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_blue_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/light_blue_stained_glass_slab_double", + "side": "minecraft:block/light_blue_stained_glass", + "side_vertical": "mo_glass:block/light_blue_stained_glass_slab_vertical", + "top": "mo_glass:block/light_blue_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_double.json new file mode 100644 index 0000000..acd3278 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/light_gray_stained_glass", + "side": "mo_glass:block/light_gray_stained_glass_slab_double", + "top": "minecraft:block/light_gray_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..9a5b48a --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "side": "minecraft:block/light_gray_stained_glass", + "side_vertical": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "top": "mo_glass:block/light_gray_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..876b9a7 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "side": "minecraft:block/light_gray_stained_glass", + "side_vertical": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "top": "mo_glass:block/light_gray_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..bbcfdde --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "side": "minecraft:block/light_gray_stained_glass", + "side_vertical": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "top": "mo_glass:block/light_gray_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..b755455 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/light_gray_stained_glass_slab_double", + "side": "minecraft:block/light_gray_stained_glass", + "side_vertical": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "top": "mo_glass:block/light_gray_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..f5a569d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/light_gray_stained_glass_slab_double", + "side": "minecraft:block/light_gray_stained_glass", + "side_vertical": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "top": "mo_glass:block/light_gray_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..d21f719 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/light_gray_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/light_gray_stained_glass_slab_double", + "side": "minecraft:block/light_gray_stained_glass", + "side_vertical": "mo_glass:block/light_gray_stained_glass_slab_vertical", + "top": "mo_glass:block/light_gray_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_double.json new file mode 100644 index 0000000..067e507 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/lime_stained_glass", + "side": "mo_glass:block/lime_stained_glass_slab_double", + "top": "minecraft:block/lime_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..7180aff --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/lime_stained_glass_slab_vertical", + "side": "minecraft:block/lime_stained_glass", + "side_vertical": "mo_glass:block/lime_stained_glass_slab_vertical", + "top": "mo_glass:block/lime_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..4635936 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/lime_stained_glass_slab_vertical", + "side": "minecraft:block/lime_stained_glass", + "side_vertical": "mo_glass:block/lime_stained_glass_slab_vertical", + "top": "mo_glass:block/lime_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..ae8beac --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/lime_stained_glass_slab_vertical", + "side": "minecraft:block/lime_stained_glass", + "side_vertical": "mo_glass:block/lime_stained_glass_slab_vertical", + "top": "mo_glass:block/lime_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..f6610b8 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/lime_stained_glass_slab_double", + "side": "minecraft:block/lime_stained_glass", + "side_vertical": "mo_glass:block/lime_stained_glass_slab_vertical", + "top": "mo_glass:block/lime_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..9f68522 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/lime_stained_glass_slab_double", + "side": "minecraft:block/lime_stained_glass", + "side_vertical": "mo_glass:block/lime_stained_glass_slab_vertical", + "top": "mo_glass:block/lime_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..ffb7e84 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/lime_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/lime_stained_glass_slab_double", + "side": "minecraft:block/lime_stained_glass", + "side_vertical": "mo_glass:block/lime_stained_glass_slab_vertical", + "top": "mo_glass:block/lime_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_double.json new file mode 100644 index 0000000..0159019 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/magenta_stained_glass", + "side": "mo_glass:block/magenta_stained_glass_slab_double", + "top": "minecraft:block/magenta_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..719f9f7 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/magenta_stained_glass_slab_vertical", + "side": "minecraft:block/magenta_stained_glass", + "side_vertical": "mo_glass:block/magenta_stained_glass_slab_vertical", + "top": "mo_glass:block/magenta_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..7e786a9 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/magenta_stained_glass_slab_vertical", + "side": "minecraft:block/magenta_stained_glass", + "side_vertical": "mo_glass:block/magenta_stained_glass_slab_vertical", + "top": "mo_glass:block/magenta_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..35a9724 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/magenta_stained_glass_slab_vertical", + "side": "minecraft:block/magenta_stained_glass", + "side_vertical": "mo_glass:block/magenta_stained_glass_slab_vertical", + "top": "mo_glass:block/magenta_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..e7b5ed2 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/magenta_stained_glass_slab_double", + "side": "minecraft:block/magenta_stained_glass", + "side_vertical": "mo_glass:block/magenta_stained_glass_slab_vertical", + "top": "mo_glass:block/magenta_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..df47a05 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/magenta_stained_glass_slab_double", + "side": "minecraft:block/magenta_stained_glass", + "side_vertical": "mo_glass:block/magenta_stained_glass_slab_vertical", + "top": "mo_glass:block/magenta_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..ab0c7b7 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/magenta_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/magenta_stained_glass_slab_double", + "side": "minecraft:block/magenta_stained_glass", + "side_vertical": "mo_glass:block/magenta_stained_glass_slab_vertical", + "top": "mo_glass:block/magenta_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_double.json new file mode 100644 index 0000000..6be2db5 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/orange_stained_glass", + "side": "mo_glass:block/orange_stained_glass_slab_double", + "top": "minecraft:block/orange_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..78948aa --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/orange_stained_glass_slab_vertical", + "side": "minecraft:block/orange_stained_glass", + "side_vertical": "mo_glass:block/orange_stained_glass_slab_vertical", + "top": "mo_glass:block/orange_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..5ecd374 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/orange_stained_glass_slab_vertical", + "side": "minecraft:block/orange_stained_glass", + "side_vertical": "mo_glass:block/orange_stained_glass_slab_vertical", + "top": "mo_glass:block/orange_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..f16fe69 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/orange_stained_glass_slab_vertical", + "side": "minecraft:block/orange_stained_glass", + "side_vertical": "mo_glass:block/orange_stained_glass_slab_vertical", + "top": "mo_glass:block/orange_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..1da75eb --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/orange_stained_glass_slab_double", + "side": "minecraft:block/orange_stained_glass", + "side_vertical": "mo_glass:block/orange_stained_glass_slab_vertical", + "top": "mo_glass:block/orange_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..cca7c0a --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/orange_stained_glass_slab_double", + "side": "minecraft:block/orange_stained_glass", + "side_vertical": "mo_glass:block/orange_stained_glass_slab_vertical", + "top": "mo_glass:block/orange_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..f22b5e4 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/orange_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/orange_stained_glass_slab_double", + "side": "minecraft:block/orange_stained_glass", + "side_vertical": "mo_glass:block/orange_stained_glass_slab_vertical", + "top": "mo_glass:block/orange_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_double.json new file mode 100644 index 0000000..d475011 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/pink_stained_glass", + "side": "mo_glass:block/pink_stained_glass_slab_double", + "top": "minecraft:block/pink_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..b7c88a3 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/pink_stained_glass_slab_vertical", + "side": "minecraft:block/pink_stained_glass", + "side_vertical": "mo_glass:block/pink_stained_glass_slab_vertical", + "top": "mo_glass:block/pink_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..c4b835f --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/pink_stained_glass_slab_vertical", + "side": "minecraft:block/pink_stained_glass", + "side_vertical": "mo_glass:block/pink_stained_glass_slab_vertical", + "top": "mo_glass:block/pink_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..3ab252d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/pink_stained_glass_slab_vertical", + "side": "minecraft:block/pink_stained_glass", + "side_vertical": "mo_glass:block/pink_stained_glass_slab_vertical", + "top": "mo_glass:block/pink_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..6259086 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/pink_stained_glass_slab_double", + "side": "minecraft:block/pink_stained_glass", + "side_vertical": "mo_glass:block/pink_stained_glass_slab_vertical", + "top": "mo_glass:block/pink_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..e896ee1 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/pink_stained_glass_slab_double", + "side": "minecraft:block/pink_stained_glass", + "side_vertical": "mo_glass:block/pink_stained_glass_slab_vertical", + "top": "mo_glass:block/pink_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..875d3c5 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/pink_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/pink_stained_glass_slab_double", + "side": "minecraft:block/pink_stained_glass", + "side_vertical": "mo_glass:block/pink_stained_glass_slab_vertical", + "top": "mo_glass:block/pink_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_double.json new file mode 100644 index 0000000..140815b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/purple_stained_glass", + "side": "mo_glass:block/purple_stained_glass_slab_double", + "top": "minecraft:block/purple_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..1c9f243 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/purple_stained_glass_slab_vertical", + "side": "minecraft:block/purple_stained_glass", + "side_vertical": "mo_glass:block/purple_stained_glass_slab_vertical", + "top": "mo_glass:block/purple_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..44e1c6f --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/purple_stained_glass_slab_vertical", + "side": "minecraft:block/purple_stained_glass", + "side_vertical": "mo_glass:block/purple_stained_glass_slab_vertical", + "top": "mo_glass:block/purple_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..8312e1c --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/purple_stained_glass_slab_vertical", + "side": "minecraft:block/purple_stained_glass", + "side_vertical": "mo_glass:block/purple_stained_glass_slab_vertical", + "top": "mo_glass:block/purple_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..514e112 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/purple_stained_glass_slab_double", + "side": "minecraft:block/purple_stained_glass", + "side_vertical": "mo_glass:block/purple_stained_glass_slab_vertical", + "top": "mo_glass:block/purple_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..98fb363 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/purple_stained_glass_slab_double", + "side": "minecraft:block/purple_stained_glass", + "side_vertical": "mo_glass:block/purple_stained_glass_slab_vertical", + "top": "mo_glass:block/purple_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..25f9d7b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/purple_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/purple_stained_glass_slab_double", + "side": "minecraft:block/purple_stained_glass", + "side_vertical": "mo_glass:block/purple_stained_glass_slab_vertical", + "top": "mo_glass:block/purple_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_double.json new file mode 100644 index 0000000..96de605 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/red_stained_glass", + "side": "mo_glass:block/red_stained_glass_slab_double", + "top": "minecraft:block/red_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..a2c0b16 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/red_stained_glass_slab_vertical", + "side": "minecraft:block/red_stained_glass", + "side_vertical": "mo_glass:block/red_stained_glass_slab_vertical", + "top": "mo_glass:block/red_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..138fb1b --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/red_stained_glass_slab_vertical", + "side": "minecraft:block/red_stained_glass", + "side_vertical": "mo_glass:block/red_stained_glass_slab_vertical", + "top": "mo_glass:block/red_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..f0cf3e8 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/red_stained_glass_slab_vertical", + "side": "minecraft:block/red_stained_glass", + "side_vertical": "mo_glass:block/red_stained_glass_slab_vertical", + "top": "mo_glass:block/red_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..8ac76d4 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/red_stained_glass_slab_double", + "side": "minecraft:block/red_stained_glass", + "side_vertical": "mo_glass:block/red_stained_glass_slab_vertical", + "top": "mo_glass:block/red_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..935ef7f --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/red_stained_glass_slab_double", + "side": "minecraft:block/red_stained_glass", + "side_vertical": "mo_glass:block/red_stained_glass_slab_vertical", + "top": "mo_glass:block/red_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..ddd4c4d --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/red_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/red_stained_glass_slab_double", + "side": "minecraft:block/red_stained_glass", + "side_vertical": "mo_glass:block/red_stained_glass_slab_vertical", + "top": "mo_glass:block/red_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_double.json new file mode 100644 index 0000000..737773e --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/tinted_glass", + "side": "mo_glass:block/tinted_glass_slab_double", + "top": "minecraft:block/tinted_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..0dc5ab6 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/tinted_glass_slab_vertical", + "side": "minecraft:block/tinted_glass", + "side_vertical": "mo_glass:block/tinted_glass_slab_vertical", + "top": "mo_glass:block/tinted_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..2c6a046 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/tinted_glass_slab_vertical", + "side": "minecraft:block/tinted_glass", + "side_vertical": "mo_glass:block/tinted_glass_slab_vertical", + "top": "mo_glass:block/tinted_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..852e70e --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/tinted_glass_slab_vertical", + "side": "minecraft:block/tinted_glass", + "side_vertical": "mo_glass:block/tinted_glass_slab_vertical", + "top": "mo_glass:block/tinted_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..db6c7f8 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/tinted_glass_slab_double", + "side": "minecraft:block/tinted_glass", + "side_vertical": "mo_glass:block/tinted_glass_slab_vertical", + "top": "mo_glass:block/tinted_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..6af5e4a --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/tinted_glass_slab_double", + "side": "minecraft:block/tinted_glass", + "side_vertical": "mo_glass:block/tinted_glass_slab_vertical", + "top": "mo_glass:block/tinted_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..d088e97 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/tinted_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/tinted_glass_slab_double", + "side": "minecraft:block/tinted_glass", + "side_vertical": "mo_glass:block/tinted_glass_slab_vertical", + "top": "mo_glass:block/tinted_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_double.json new file mode 100644 index 0000000..abf5526 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/white_stained_glass", + "side": "mo_glass:block/white_stained_glass_slab_double", + "top": "minecraft:block/white_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..bbb2b3f --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/white_stained_glass_slab_vertical", + "side": "minecraft:block/white_stained_glass", + "side_vertical": "mo_glass:block/white_stained_glass_slab_vertical", + "top": "mo_glass:block/white_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..e2b5cb4 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/white_stained_glass_slab_vertical", + "side": "minecraft:block/white_stained_glass", + "side_vertical": "mo_glass:block/white_stained_glass_slab_vertical", + "top": "mo_glass:block/white_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..6cd93c5 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/white_stained_glass_slab_vertical", + "side": "minecraft:block/white_stained_glass", + "side_vertical": "mo_glass:block/white_stained_glass_slab_vertical", + "top": "mo_glass:block/white_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..cafc610 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/white_stained_glass_slab_double", + "side": "minecraft:block/white_stained_glass", + "side_vertical": "mo_glass:block/white_stained_glass_slab_vertical", + "top": "mo_glass:block/white_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..de06dbc --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/white_stained_glass_slab_double", + "side": "minecraft:block/white_stained_glass", + "side_vertical": "mo_glass:block/white_stained_glass_slab_vertical", + "top": "mo_glass:block/white_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..7d3bd65 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/white_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/white_stained_glass_slab_double", + "side": "minecraft:block/white_stained_glass", + "side_vertical": "mo_glass:block/white_stained_glass_slab_vertical", + "top": "mo_glass:block/white_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_double.json new file mode 100644 index 0000000..314380c --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_double.json @@ -0,0 +1,8 @@ +{ + "parent": "autoslabs:block/slab_double_template", + "textures": { + "bottom": "minecraft:block/yellow_stained_glass", + "side": "mo_glass:block/yellow_stained_glass_slab_double", + "top": "minecraft:block/yellow_stained_glass" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_bottom.json new file mode 100644 index 0000000..4c84070 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_bottom_template", + "textures": { + "bottom": "mo_glass:block/yellow_stained_glass_slab_vertical", + "side": "minecraft:block/yellow_stained_glass", + "side_vertical": "mo_glass:block/yellow_stained_glass_slab_vertical", + "top": "mo_glass:block/yellow_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_double.json new file mode 100644 index 0000000..f923d8e --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_double_template", + "textures": { + "bottom": "mo_glass:block/yellow_stained_glass_slab_vertical", + "side": "minecraft:block/yellow_stained_glass", + "side_vertical": "mo_glass:block/yellow_stained_glass_slab_vertical", + "top": "mo_glass:block/yellow_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_top.json new file mode 100644 index 0000000..0de0bce --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_east_west_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_east_west_top_template", + "textures": { + "bottom": "mo_glass:block/yellow_stained_glass_slab_vertical", + "side": "minecraft:block/yellow_stained_glass", + "side_vertical": "mo_glass:block/yellow_stained_glass_slab_vertical", + "top": "mo_glass:block/yellow_stained_glass_slab_vertical" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_bottom.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_bottom.json new file mode 100644 index 0000000..7935fcb --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_bottom.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_bottom_template", + "textures": { + "bottom": "mo_glass:block/yellow_stained_glass_slab_double", + "side": "minecraft:block/yellow_stained_glass", + "side_vertical": "mo_glass:block/yellow_stained_glass_slab_vertical", + "top": "mo_glass:block/yellow_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_double.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_double.json new file mode 100644 index 0000000..6a69650 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_double.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_double_template", + "textures": { + "bottom": "mo_glass:block/yellow_stained_glass_slab_double", + "side": "minecraft:block/yellow_stained_glass", + "side_vertical": "mo_glass:block/yellow_stained_glass_slab_vertical", + "top": "mo_glass:block/yellow_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_top.json b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_top.json new file mode 100644 index 0000000..a17ed57 --- /dev/null +++ b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/models/block/yellow_stained_glass_slab_vertical_north_south_top.json @@ -0,0 +1,9 @@ +{ + "parent": "autoslabs:block/slab_vertical_north_south_top_template", + "textures": { + "bottom": "mo_glass:block/yellow_stained_glass_slab_double", + "side": "minecraft:block/yellow_stained_glass", + "side_vertical": "mo_glass:block/yellow_stained_glass_slab_vertical", + "top": "mo_glass:block/yellow_stained_glass_slab_double" + } +} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/black_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/black_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..bec84da0e01f0da6aa618ae9ee3f665be978a6f8 GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7V9Tzr>+uQ&E07FScK~y-)W0aJXT+BcLV1d$y z$<%MlghkMl6cd=RXg*D@0iEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7V9WNeel4rsqXiC6R6nQ2rlBWr1K8?!&k~O0naGHSAvC1EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7WAq~0MF>U|=07FScK~y-)V>I^Jw1t5JzyhT= zk*VL035%dQDJC#s(R`C!14z-Vj?Dm4G~dMK1!BNWY_Z@+ZZtA6PzXlT!LUdN03G2D UsqI_6>Hq)$07*qoM6N<$f@jg{tpET3 literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/blue_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/blue_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..9c94b7c856a695d5ebc74cd0682468bc35368b56 GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7WAt8$ZU5x+$09HvvK~y-)V>I^Jw1t5JzyhT= z;gI(uB+rCJP@RCKDDq5LBySSXd=r-eBx^=D;3fg5W0hxOpb(52KtltFPK`{&CKz1u nOvEM_T=FbvxsHKAuEYQUQ9cf(wGWKA00000NkvXXu0mjfgI(_- literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/brown_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/brown_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..323e7a31ab0aff63d749ba272c95351785bc26c1 GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7W9WatZ1b_el07FScK~y-)V@&fgUd%uNV1d$y z$<%MlghkMl6cd=RXg*D@0iEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7W9Ua%4SoHt^09HvvK~y-)V@&fgUd%uNV1d$y zamd>el4rsqXiC6R6nQ2rlBWr1K8?!&k~O0naGHSAvC1EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X1tEW@s;&S407FScK~y-)WAv$?xtM_hzyhTY zld0d935%d9DJC#s(R`X*14z+qip>C0G@r)h1!BNyY_VWVZZtA6PzXlT!LUdN0I2g0 UsqlzMs{jB107*qoM6N<$f^WC#Qvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/cyan_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/cyan_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..e41452a3a120d0006c87acb8bf506ee5c232cc0b GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X1_OcWxQPG&09HvvK~y-)WAv$?xtM_hzyhTY zWSlBx^=D;4}fJW0hxOpb(52KtltFPK`{&CKz1u nOvEM_T=FbvxsHKAuEYQU{J0LKyBdlR00000NkvXXu0mjfAvy5| literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/gray_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/gray_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b8ad3d8d0f2caa8e2aacb56f1ea0d829ffeabe GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X5hK3`9M=E<07FScK~y-)WAyRySEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X5(eKcn^OP)09HvvK~y-)WAyRySel4rsqXiC6R6nQ2rlBWr1K8?!&k~O0naGHSAvC1EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7W7aPP76-odA07FScK~y-)V@#_zUd%uNV1d$y z$<%MlghkMl6cd=RXg*D@0iEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7W7C8uOW$yq009HvvK~y-)V@#_zUd%uNV1d$y zamd>el4rsqXiC6R6nQ2rlBWr1K8?!&k~O0naGHSAvC1op0l7Y00000NkvXXu0mjf|J&=a literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_blue_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_blue_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..2272b64eec4c7cfe400121eae9896112ebae06ff GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XAPPI^g9!it07FScK~y-)V@#WQV=)5-fCWk) zCR4vH6Ba>JQcPgNqWLtr29ToJ6q^C0Xg-b03&eoa*kZw!+-PKCpb(6vgJF>l0DCqM U9D{6Z_W%F@07*qoM6N<$f>JN$-T(jq literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_blue_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/light_blue_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..466e48df27ebd793d48f381e1d9cea044ef46f89 GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XAR(7jdPx8P09HvvK~y-)V@#WQV=)5-fCWk) z#vyM@NS+CcpeX@MQRJDhNS-F3`7|yANY;#Qz-aEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X4K_5brC|U707OYdK~y-)W1Km2=3)j401K2p zOs0NYCM<%cq?o{jMe}KL4Io9cDK-O0(R>=07l;9;vBiQdxzWhPKp_}S2g4#A002t> V4-jg%Q?CF3002ovPDHLkV1h>OEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X4Hgf>g{c4l09Q#wK~y-)W1Km2=3)j401K2p zj6>d*kUSF>K~n;jqR2C0kvvU6^J!cLkgOTqfYSt=j#ZwCfkH5901XWwIyEv8n_zIs oGZC9$aLKcvEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X83#+C0G@r)h1!BNyY_VWVZZtA6PzXlT!LUdN0I8-9 UsiDDfOaK4?07*qoM6N<$g1KGiu>b%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/lime_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/lime_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..c07123aea7707fddb925069916da544a514c86bc GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X85yzCPi+7I09HvvK~y-)W2`?TxtM_hzyhTY zWSlBx^=D;4}fJW0hxOpb(52KtltFPK`{&CKz1u nOvEM_T=FbvxsHKAuEYQU{c8@TRj!|~00000NkvXXu0mjfmgDd% literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/magenta_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/magenta_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..65ca5337aa1d13662fb1de14029307c587b6e018 GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XEGN=}kZ=G107FScK~y-)W8CC(V=)5-fCWk) zCR4vH6Ba>JQcPgNqWLtr29ToJ6q^C0Xg-b03&eoa*kZw!+-PKCpb(6vgJF>l0C#i` U8zp`Gv;Y7A07*qoM6N<$g5z=MxBvhE literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/magenta_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/magenta_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf2b2daff139a0c7a85e8b2ae5b860ac17dbe42 GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XEe#MNXy*U`09HvvK~y-)W8CC(V=)5-fCWk) z#vyM@NS+CcpeX@MQRJDhNS-F3`7|yANY;#Qz-aEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XE&(#RcMkvn07FScK~y-)W4uvsyqJLkzyhTY zld0d935%d9DJC#s(R`X*14z+qip>C0G@r)h1!BNyY_VWVZZtA6PzXlT!LUdN07M85 U&sXt%G5`Po07*qoM6N<$g1O7)^#A|> literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/orange_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/orange_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..a304fa33a6bb6e85f36376426a530b188f592a27 GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XEhEhIWheju09HvvK~y-)W4uvsyqJLkzyhTY zWSlBx^=D;4}fJW0hxOpb(52KtltFPK`{&CKz1u nOvEM_T=FbvxsHKAuEYQUm(32#U$R=000000NkvXXu0mjf)1UB` literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/pink_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/pink_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..d69b1306a4149ea6fc4fb248ed8c444e0665bf7c GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X6%`cGOiBO%07FScK~y-)WBgRVbTI=3fCWk) zCR4vH6Ba>JQcPgNqWLtr29ToJ6q^C0Xg-b03&eoa*kZw!+-PKCpb(6vgJF>l0DE>1 UTk^~bv;Y7A07*qoM6N<$f`;Dc6951J literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/pink_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/pink_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3f11c1b359b925d401868e679e34b0abc0552c GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X6)vUPrEUNK09HvvK~y-)WBgRVbTI=3fCWk) z#vyM@NS+CcpeX@MQRJDhNS-F3`7|yANY;#Qz-aEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7WB@xNBs3iaZ07FScK~y-)W30E|w3vYczyhTY zld0d935%d9DJC#s(R`X*14z+qip>C0G@r)h1!BNyY_VWVZZtA6PzXlT!LUdN0NJ$; UwLNrXK>z>%07*qoM6N<$f>XNb8UO$Q literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/purple_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/purple_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd7a9545e0e9869d53e97221db36bf4339e5ea8 GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7WBszQ&U?czl09HvvK~y-)W30E|w3vYczyhTY zWSlBx^=D;4}fJW0hxOpb(52KtltFPK`{&CKz1u nOvEM_T=FbvxsHKAuEYQUEr|}X@jf*$00000NkvXXu0mjff}-y9 literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/red_stained_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/red_stained_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..37a4cc73ed8493cff9339326f11fa705ca7d9e19 GIT binary patch literal 582 zcmV-M0=fN(P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7VIxQ+funPbH07FScK~y-)W1MMhe4l{=zyhTg zlBqwQ35%c(DJC#s(R_tm14z-VgUtX^G+)8x1!BMzY_SkeZZtA6PzXlT!LUdN05NI~ U#M@EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7VIyE^iC|v*m09HvvK~y-)W1MMhe4l{=zyhTg z;*gIgB+rCJP=|n}DDq5LB(D(Adyhno literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/tinted_glass_slab_double.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/tinted_glass_slab_double.png new file mode 100644 index 0000000000000000000000000000000000000000..bb82dbc37939e42707fa5fcc501894eb2caaeb1b GIT binary patch literal 745 zcmVEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XFDi!~zYYKZ0OmvRW?`zPR@G^Vu&@C{5^q5G{Za&%rCml_TOz!|=x z;V=*+;%Z^D>&)MO;WQ?KL|QM7eFbcCwt*TLpm~4!IGLZU1ut&1woBP%wnpImh(RL# zt_Pss^&2>AA#2%W!_)#yxh@BH{^98U>h;>(?K!B0)0oIwaEs1Wux;t49Aqst_MK~T bu;|PWS4)?*$9{IJ00000NkvXXu0mjfYIr*k literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/tinted_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/tinted_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..c5836714bc66db02e51b8c7e8569e7b5808fecac GIT binary patch literal 738 zcmV<80v-K{P)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XFA}dD2ao^&0N+VOK~y-)rIRs^!Y~j;9}|#9 zc0oh6#fnWqL&JGE;GTt31c@37BH40*BMM{`vW{Ksw9nT3`SWM7-yTje3;;AL7`6D| zFlxzFVm>$kmPRf8>h=rp0QwkccP#+d%l!z@#}@}+1)J|LV9oV%KgzU2`}6wTox7}p zDVGvVGD}=aos%~uE!G%BEX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XE;$;z&yfHC07OYdK~y-)WBmXB|6&FT01K2p zOs0NYCM<%cq?o{jMe}KL4Io9cDK-O0(R>=07l;9;vBiQdxzWhPKp_}S2g4#A001Nh V5JKp|$zcEh002ovPDHLkV1f(t=qUgI literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/white_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/white_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..2d5033c7cb18fb3bc12c6bfe6d5f0a06ee6417e1 GIT binary patch literal 596 zcmV-a0;~OrP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7XE*7zB^2h)H08vRqK~y-)WBmXB|6&FT01K2p zj6>d*kUSF>K~n;jqR2C0kvvU6^J!cLkgOTqfYSt=j#ZwCfkH5901XWwIyEv8n_zIs iGZC9$aLF@Lnw?utE0000EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X93YdRGavu}07FScK~y-)V|@D5crgP7fCWk) zCR4vH6Ba>JQcPgNqWLtr29ToJ6q^C0Xg-b03&eoa*kZw!+-PKCpb(6vgJF>l02X}@ ULI_60$N&HU07*qoM6N<$f{`8PRsaA1 literal 0 HcmV?d00001 diff --git a/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/yellow_stained_glass_slab_vertical.png b/src/main/resources/resourcepacks/distinct_slabs/assets/mo_glass/textures/block/yellow_stained_glass_slab_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8fd1bad1bcf6a7e2ab296215bf9fa84f1c7e7f GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iTct%Rf_4z;kfC;JK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwR~IKm7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#)?v6#;}Xj3{CvGqhB8F$dT2bq^0;@8Uem{oJ2pP%at_@Cd|nOw&!`4dR(i zQ{%i(9AXtwCO#*Q>2yKjN3Kf_zi}?x?B$suJ(rm$4iO9G9+rBTRdj`Tnm8gWD&>3g z4$GXkI4iXV>)eySFj!PqvRtPbMiNU%Aq@c%8mOWM6LDHqQVe8hKjGpZv;ApuN#v@6 zkz)aMC=hKw_#gc4)+kL)I!VC<(EnmtALD?37ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)gnj0&^B;!-PNQ$;Bp5TebPi-v?U)+Z>a>lpV2oJfRS5ZV9n{RvyamUAV*y--v9@P zK(tKR>n`sO^!E1enNEK{<*9PjW7ce|00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=Lj7X95MM26Vd Date: Tue, 29 Aug 2023 21:12:26 -0400 Subject: [PATCH 46/71] fix client desync when changing a slab to a double slab --- .../andrew6rant/autoslabs/PlacementUtil.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index 44a2ed8..bc59003 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -274,13 +274,21 @@ public static boolean canReplace(BlockState state, ItemPlacementContext context) } public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState state) { + BlockPos blockPos = ctx.getBlockPos(); + BlockState blockState = ctx.getWorld().getBlockState(blockPos); + // horrendous hack to make the client think that it can place down a slab // without visual desync or server-client communication // (light blocks with a level of 0 are completely invisible and also have no hitbox - if (!(ctx.getWorld() instanceof ServerWorld)) return Blocks.LIGHT.getDefaultState().with(LEVEL_15, 0); + // If I return null, the client does not play the "block place" animation + if (!(ctx.getWorld() instanceof ServerWorld)) { + if (blockState.isOf(state.getBlock())) { + return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); + } else { + return Blocks.LIGHT.getDefaultState().with(LEVEL_15, 0); + } + } - BlockPos blockPos = ctx.getBlockPos(); - BlockState blockState = ctx.getWorld().getBlockState(blockPos); Direction ctxSide = ctx.getSide(); FluidState fluidState = ctx.getWorld().getFluidState(blockPos); PlayerEntity entity = ctx.getPlayer(); From 83f96f77006b365b7e81770ca26eed711932d505 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 29 Aug 2023 21:17:22 -0400 Subject: [PATCH 47/71] Create jitpack.yml --- jitpack.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 jitpack.yml diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000..f29a667 --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,5 @@ +jdk: + - openjdk17 +before_install: + - sdk install java 17.0.1-open + - sdk use java 17.0.1-open \ No newline at end of file From 64bbc37448e95bee00fb7b7950bd564a80b157b1 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 14:09:42 -0400 Subject: [PATCH 48/71] bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index fa1c787..6ec113d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.1+build.9 loader_version=0.14.21 # Mod Properties -mod_version=1.1.2 +mod_version=1.1.3 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs From a23be7850bc43e36c026507d2a064344b6ff3145 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 15:02:24 -0400 Subject: [PATCH 49/71] properly declare transitive dependencies --- build.gradle | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 22f6d75..32a7b43 100644 --- a/build.gradle +++ b/build.gradle @@ -36,19 +36,20 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - - // Uncomment the following line to enable the deprecated Fabric API modules. - // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. - // modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}" include modApi("com.github.Virtuoel:Statement:${project.statement_version}", { exclude group: "net.fabricmc.fabric-api" }) - include modImplementation("net.devtech:arrp:${project.arrp_version}") + include modApi("net.devtech:arrp:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" } + + // Uncomment the following line to enable the deprecated Fabric API modules. + // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. + + // modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}" } processResources { From a034660e029964886ea4bd394448a16d4a77c1ac Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 18:39:02 -0400 Subject: [PATCH 50/71] initial keybind registration no functionality yet --- .../autoslabs/AutoSlabsClient.java | 60 +++++++++++++++++++ .../andrew6rant/autoslabs/SlabLockEnum.java | 31 ++++++++++ 2 files changed, 91 insertions(+) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 6eaa262..6298c47 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,18 +1,78 @@ package io.github.andrew6rant.autoslabs; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; +import net.minecraft.block.SlabBlock; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import org.lwjgl.glfw.GLFW; public class AutoSlabsClient implements ClientModInitializer { final ModContainer container = FabricLoader.getInstance().getModContainer("autoslabs").get(); + public static KeyBinding SLAB_LOCK_KEYBIND = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.autoslabs.slablock", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_K, KeyBinding.GAMEPLAY_CATEGORY) + ); + + private static Boolean validKeyPress = true; + private static SlabLockEnum slabLockPosition = SlabLockEnum.DEFAULT_ALL; + @Override public void onInitializeClient() { ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); + + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.player != null) { + if (SLAB_LOCK_KEYBIND.isPressed() && validKeyPress) { + ItemStack heldItem = client.player.getStackInHand(client.player.getActiveHand()); + if (heldItem != null && !heldItem.isEmpty() && heldItem.getItem() instanceof BlockItem && ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock) { + validKeyPress = false; + + switch (slabLockPosition) { + case DEFAULT_ALL -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.DEFAULT_ALL"), true); + } + case BOTTOM_SLAB -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.BOTTOM_SLAB"), true); + } + case TOP_SLAB -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.TOP_SLAB"), true); + } + case NORTH_SLAB_VERTICAL -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.NORTH_SLAB_VERTICAL"), true); + } + case SOUTH_SLAB_VERTICAL -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.SOUTH_SLAB_VERTICAL"), true); + } + case EAST_SLAB_VERTICAL -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.EAST_SLAB_VERTICAL"), true); + } + case WEST_SLAB_VERTICAL -> { + slabLockPosition = slabLockPosition.loop(client); + client.player.sendMessage(Text.translatable("text.autoslabs.slablock.WEST_SLAB_VERTICAL"), true); + } + } + } + } + if (!SLAB_LOCK_KEYBIND.isPressed() && !validKeyPress){ + validKeyPress = true; + } + } + }); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java new file mode 100644 index 0000000..122a6c3 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java @@ -0,0 +1,31 @@ +package io.github.andrew6rant.autoslabs; + +import net.minecraft.client.MinecraftClient; + +public enum SlabLockEnum { + DEFAULT_ALL, + BOTTOM_SLAB, + TOP_SLAB, + NORTH_SLAB_VERTICAL, + SOUTH_SLAB_VERTICAL, + EAST_SLAB_VERTICAL, + WEST_SLAB_VERTICAL; + + public static final SlabLockEnum[] POSITION_VALUES = values(); + + public SlabLockEnum loopForward() { + return POSITION_VALUES[(ordinal() + 1) % POSITION_VALUES.length]; + } + + public SlabLockEnum loopBackward() { + return POSITION_VALUES[(ordinal() - 1 + POSITION_VALUES.length) % POSITION_VALUES.length]; + } + + public SlabLockEnum loop(MinecraftClient client) { + if (client.options.sneakKey.isPressed()) { + return loopBackward(); + } else { + return loopForward(); + } + } +} From 0ff3de15c03c95fc9634ea1c23f665c946bc2a50 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 18:48:46 -0400 Subject: [PATCH 51/71] reduce boilerplate and set up keybind network sending --- .../autoslabs/AutoSlabsClient.java | 52 +++++++------------ 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 6298c47..5ef1440 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -3,15 +3,19 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.minecraft.block.SlabBlock; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.lwjgl.glfw.GLFW; @@ -20,12 +24,24 @@ public class AutoSlabsClient implements ClientModInitializer { final ModContainer container = FabricLoader.getInstance().getModContainer("autoslabs").get(); public static KeyBinding SLAB_LOCK_KEYBIND = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.autoslabs.slablock", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_K, KeyBinding.GAMEPLAY_CATEGORY) + new KeyBinding("key.autoslabs.slab_lock", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_K, KeyBinding.GAMEPLAY_CATEGORY) ); private static Boolean validKeyPress = true; private static SlabLockEnum slabLockPosition = SlabLockEnum.DEFAULT_ALL; + private void sendKeybind(SlabLockEnum lockedPosition) { + PacketByteBuf buf = PacketByteBufs.create(); + buf.writeEnumConstant(lockedPosition); + ClientPlayNetworking.send(new Identifier("autoslabs", "slab_lock"), buf); + } + + private void setKeybind(SlabLockEnum lockedPosition, MinecraftClient client) { + slabLockPosition = slabLockPosition.loop(client); + sendKeybind(slabLockPosition); + client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+lockedPosition.toString()), true); + } + @Override public void onInitializeClient() { ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); @@ -36,40 +52,10 @@ public void onInitializeClient() { ItemStack heldItem = client.player.getStackInHand(client.player.getActiveHand()); if (heldItem != null && !heldItem.isEmpty() && heldItem.getItem() instanceof BlockItem && ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock) { validKeyPress = false; - - switch (slabLockPosition) { - case DEFAULT_ALL -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.DEFAULT_ALL"), true); - } - case BOTTOM_SLAB -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.BOTTOM_SLAB"), true); - } - case TOP_SLAB -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.TOP_SLAB"), true); - } - case NORTH_SLAB_VERTICAL -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.NORTH_SLAB_VERTICAL"), true); - } - case SOUTH_SLAB_VERTICAL -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.SOUTH_SLAB_VERTICAL"), true); - } - case EAST_SLAB_VERTICAL -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.EAST_SLAB_VERTICAL"), true); - } - case WEST_SLAB_VERTICAL -> { - slabLockPosition = slabLockPosition.loop(client); - client.player.sendMessage(Text.translatable("text.autoslabs.slablock.WEST_SLAB_VERTICAL"), true); - } - } + setKeybind(slabLockPosition, client); } } - if (!SLAB_LOCK_KEYBIND.isPressed() && !validKeyPress){ + if (!SLAB_LOCK_KEYBIND.isPressed() && !validKeyPress) { validKeyPress = true; } } From fff2ec9079f5e38cb595e29adb6da4a974c2f013 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 19:27:07 -0400 Subject: [PATCH 52/71] implement full keybind functionality --- .../andrew6rant/autoslabs/AutoSlabs.java | 15 +++++++ .../autoslabs/AutoSlabsClient.java | 8 ++-- .../andrew6rant/autoslabs/PlacementUtil.java | 39 ++++++++++++++----- .../andrew6rant/autoslabs/SlabLockEnum.java | 4 +- 4 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 3b76571..02147da 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -4,15 +4,25 @@ import net.devtech.arrp.api.RuntimeResourcePack; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.Block; +import net.minecraft.entity.attribute.EntityAttributeInstance; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.registry.Registries; +import net.minecraft.util.Identifier; import virtuoel.statement.api.StateRefresher; +import java.util.HashMap; +import java.util.Map; + import static io.github.andrew6rant.autoslabs.config.ServerConfig.dumpResources; public class AutoSlabs implements ModInitializer { public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); + public static final Map slabLockPosition = new HashMap<>(); + @Override public void onInitialize() { // Config is initialized in a static block in StateMixin. I need it to run earlier than State$get, and AutoSlabs$onInitialize is too late. @@ -31,5 +41,10 @@ public void onInitialize() { if (dumpResources) { AUTO_SLABS_RESOURCES.dump(); } + + ServerPlayNetworking.registerGlobalReceiver(new Identifier("autoslabs", "slab_lock"), (server, player, handler, buf, responseSender) -> { + SlabLockEnum slabLockBuf = buf.readEnumConstant(SlabLockEnum.class); + slabLockPosition.put(player, slabLockBuf); + }); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 5ef1440..3b96214 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -36,10 +36,10 @@ private void sendKeybind(SlabLockEnum lockedPosition) { ClientPlayNetworking.send(new Identifier("autoslabs", "slab_lock"), buf); } - private void setKeybind(SlabLockEnum lockedPosition, MinecraftClient client) { - slabLockPosition = slabLockPosition.loop(client); + private void setKeybind(MinecraftClient client) { + slabLockPosition = slabLockPosition.loop(client.options.sneakKey.isPressed()); sendKeybind(slabLockPosition); - client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+lockedPosition.toString()), true); + client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+slabLockPosition.toString()), true); } @Override @@ -52,7 +52,7 @@ public void onInitializeClient() { ItemStack heldItem = client.player.getStackInHand(client.player.getActiveHand()); if (heldItem != null && !heldItem.isEmpty() && heldItem.getItem() instanceof BlockItem && ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock) { validKeyPress = false; - setKeybind(slabLockPosition, client); + setKeybind(client); } } if (!SLAB_LOCK_KEYBIND.isPressed() && !validKeyPress) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index bc59003..bcc9a0f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -218,13 +218,16 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) } public static boolean canReplace(BlockState state, ItemPlacementContext context) { + PlayerEntity player = context.getPlayer(); + if (player == null) return false; + if (!AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_ALL).equals(SlabLockEnum.DEFAULT_ALL)) { + return false; + } ItemStack itemStack = context.getStack(); SlabType slabType = state.get(TYPE); - PlayerEntity entity = context.getPlayer(); - if (entity == null) return false; if (slabType != SlabType.DOUBLE && itemStack.isOf(state.getBlock().asItem())) { if (context.canReplaceExisting()) { - BlockHitResult blockHitResult = PlacementUtil.calcRaycast(entity); + BlockHitResult blockHitResult = PlacementUtil.calcRaycast(player); HitPart part = getHitPart(blockHitResult); boolean topHalfX = context.getHitPos().x - (double) context.getBlockPos().getX() > 0.5; boolean topHalfY = context.getHitPos().y - (double) context.getBlockPos().getY() > 0.5; @@ -274,9 +277,31 @@ public static boolean canReplace(BlockState state, ItemPlacementContext context) } public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState state) { + PlayerEntity player = ctx.getPlayer(); + if (player == null) return null; BlockPos blockPos = ctx.getBlockPos(); + FluidState fluidState = ctx.getWorld().getFluidState(blockPos); + switch (AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_ALL)) { + case BOTTOM_SLAB -> { + return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + case TOP_SLAB -> { + return state.with(TYPE, SlabType.TOP).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + case NORTH_SLAB_VERTICAL -> { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + case SOUTH_SLAB_VERTICAL -> { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, NORTH_SOUTH).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + case EAST_SLAB_VERTICAL -> { + return state.with(TYPE, SlabType.TOP).with(VERTICAL_TYPE, EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + case WEST_SLAB_VERTICAL -> { + return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + } BlockState blockState = ctx.getWorld().getBlockState(blockPos); - // horrendous hack to make the client think that it can place down a slab // without visual desync or server-client communication // (light blocks with a level of 0 are completely invisible and also have no hitbox @@ -288,12 +313,8 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState return Blocks.LIGHT.getDefaultState().with(LEVEL_15, 0); } } - Direction ctxSide = ctx.getSide(); - FluidState fluidState = ctx.getWorld().getFluidState(blockPos); - PlayerEntity entity = ctx.getPlayer(); - if (entity == null) return null; - BlockHitResult blockHitResult = PlacementUtil.calcRaycast(entity); + BlockHitResult blockHitResult = PlacementUtil.calcRaycast(player); HitPart part = getHitPart(blockHitResult); return switch (ctxSide) { case UP -> calcUpPlacement(blockState, state, part, fluidState); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java index 122a6c3..90c4c97 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java @@ -21,8 +21,8 @@ public SlabLockEnum loopBackward() { return POSITION_VALUES[(ordinal() - 1 + POSITION_VALUES.length) % POSITION_VALUES.length]; } - public SlabLockEnum loop(MinecraftClient client) { - if (client.options.sneakKey.isPressed()) { + public SlabLockEnum loop(boolean sneaking) { + if (sneaking) { return loopBackward(); } else { return loopForward(); From fa2a1e76fb8990e12ba43ee75101eb037c563492 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 19:47:39 -0400 Subject: [PATCH 53/71] implement keybind to switch back to vanilla placement also added a config option to disable enhanced slab placement rendering + switched some slab overrides to inject mixins for better compatibility --- .../andrew6rant/autoslabs/AutoSlabs.java | 4 +--- .../autoslabs/AutoSlabsClient.java | 8 +++---- .../andrew6rant/autoslabs/SlabLockEnum.java | 3 ++- .../{ServerConfig.java => CommonConfig.java} | 3 ++- .../autoslabs/config/ConfigEntrypoint.java | 2 +- .../autoslabs/mixin/SlabBlockMixin.java | 24 ++++++++++++------- .../autoslabs/mixin/StateMixin.java | 8 +++---- .../autoslabs/mixin/WorldRendererMixin.java | 6 +++++ 8 files changed, 36 insertions(+), 22 deletions(-) rename src/main/java/io/github/andrew6rant/autoslabs/config/{ServerConfig.java => CommonConfig.java} (60%) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 02147da..e007e89 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -6,8 +6,6 @@ import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.Block; -import net.minecraft.entity.attribute.EntityAttributeInstance; -import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; @@ -16,7 +14,7 @@ import java.util.HashMap; import java.util.Map; -import static io.github.andrew6rant.autoslabs.config.ServerConfig.dumpResources; +import static io.github.andrew6rant.autoslabs.config.CommonConfig.dumpResources; public class AutoSlabs implements ModInitializer { public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 3b96214..4e23500 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -28,7 +28,7 @@ public class AutoSlabsClient implements ClientModInitializer { ); private static Boolean validKeyPress = true; - private static SlabLockEnum slabLockPosition = SlabLockEnum.DEFAULT_ALL; + public static SlabLockEnum clientSlabLockPosition = SlabLockEnum.DEFAULT_ALL; private void sendKeybind(SlabLockEnum lockedPosition) { PacketByteBuf buf = PacketByteBufs.create(); @@ -37,9 +37,9 @@ private void sendKeybind(SlabLockEnum lockedPosition) { } private void setKeybind(MinecraftClient client) { - slabLockPosition = slabLockPosition.loop(client.options.sneakKey.isPressed()); - sendKeybind(slabLockPosition); - client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+slabLockPosition.toString()), true); + clientSlabLockPosition = clientSlabLockPosition.loop(client.options.sneakKey.isPressed()); + sendKeybind(clientSlabLockPosition); + client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+ clientSlabLockPosition.toString()), true); } @Override diff --git a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java index 90c4c97..1420631 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java @@ -9,7 +9,8 @@ public enum SlabLockEnum { NORTH_SLAB_VERTICAL, SOUTH_SLAB_VERTICAL, EAST_SLAB_VERTICAL, - WEST_SLAB_VERTICAL; + WEST_SLAB_VERTICAL, + VANILLA_PLACEMENT; public static final SlabLockEnum[] POSITION_VALUES = values(); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java similarity index 60% rename from src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java rename to src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java index 942a66c..a77792e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/ServerConfig.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java @@ -1,7 +1,8 @@ package io.github.andrew6rant.autoslabs.config; -public class ServerConfig extends MidnightConfig { +public class CommonConfig extends MidnightConfig { @Entry public static boolean suppressStatementAPILogger = true; @Entry public static boolean dumpResources = false; + @Entry public static boolean showEnhancedSlabLines = true; } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java b/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java index d23a5f5..eefed91 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/ConfigEntrypoint.java @@ -7,7 +7,7 @@ public class ConfigEntrypoint implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> ServerConfig.getScreen(parent,"auto_slabs"); + return parent -> CommonConfig.getScreen(parent,"auto_slabs"); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 81e94df..19e7b4f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -1,6 +1,8 @@ package io.github.andrew6rant.autoslabs.mixin; +import io.github.andrew6rant.autoslabs.AutoSlabs; import io.github.andrew6rant.autoslabs.PlacementUtil; +import io.github.andrew6rant.autoslabs.SlabLockEnum; import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; @@ -33,20 +35,26 @@ private SlabBlockMixin(Settings settings) { super(settings); } - @Override - public BlockState getPlacementState(ItemPlacementContext ctx) { - return PlacementUtil.calcPlacementState(ctx, this.getDefaultState()); + @Inject(at = @At("HEAD"), method = "canReplace(Lnet/minecraft/block/BlockState;Lnet/minecraft/item/ItemPlacementContext;)Z", cancellable = true) + private void autoslabs$canSlabReplace(BlockState state, ItemPlacementContext ctx, CallbackInfoReturnable cir) { + if (ctx.getPlayer() == null) return; + if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_ALL).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + cir.setReturnValue(PlacementUtil.canReplace(state, ctx)); + } } - @Override - public boolean canReplace(BlockState state, ItemPlacementContext context) { - return PlacementUtil.canReplace(state, context); + @Inject(at = @At("HEAD"), method = "getPlacementState(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/block/BlockState;", cancellable = true) + private void autoslabs$getSlabPlacementState(ItemPlacementContext ctx, CallbackInfoReturnable cir) { + if (ctx.getPlayer() == null) return; + if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_ALL).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + cir.setReturnValue(PlacementUtil.calcPlacementState(ctx, this.getDefaultState())); + } } // Massive thanks to Oliver-makes-code for some of the code behind this mixin // https://github.com/Oliver-makes-code/autoslab/blob/1.19/src/main/java/olivermakesco/de/autoslab/mixin/Mixin_SlabBlock.java - @Inject(at = @At("RETURN"), method = "getOutlineShape", cancellable = true) - private void autoslabs$getBetterOutline(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + @Inject(at = @At("RETURN"), method = "getOutlineShape(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/ShapeContext;)Lnet/minecraft/util/shape/VoxelShape;",cancellable = true) + private void autoslabs$getBetterSlabOutline(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (!(context instanceof EntityShapeContext entityContext)) return; SlabType slabType = state.get(TYPE); if (slabType != SlabType.DOUBLE) return; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java index 0b2f474..beeb009 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java @@ -1,6 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.config.ServerConfig; +import io.github.andrew6rant.autoslabs.config.CommonConfig; import net.minecraft.state.State; import net.minecraft.state.property.Property; import org.spongepowered.asm.mixin.*; @@ -25,7 +25,7 @@ public class StateMixin implements StatementStateExtensions { final String ownerString = this.owner.toString(); if (!getMissingOwner.equals(ownerString)) { - if (!ServerConfig.suppressStatementAPILogger) { + if (!CommonConfig.suppressStatementAPILogger) { Statement.LOGGER.info("Cannot get property {} as it does not exist in {}", property, this.owner); } getMissingOwner = ownerString; @@ -36,8 +36,8 @@ public class StateMixin implements StatementStateExtensions { static { // I need to initialize the config earlier than onInitialize() runs in order to suppress Statement API's logger based on a config value - ServerConfig.init("auto_slabs", ServerConfig.class); - if (ServerConfig.suppressStatementAPILogger) { + CommonConfig.init("auto_slabs", CommonConfig.class); + if (CommonConfig.suppressStatementAPILogger) { Statement.LOGGER.warn("Statement API's logging has been disabled by AutoSlabs!"); } else { Statement.LOGGER.warn("AutoSlabs: don't worry about these errors :)"); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index ad386f3..2fa798d 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -1,6 +1,7 @@ package io.github.andrew6rant.autoslabs.mixin; import io.github.andrew6rant.autoslabs.RenderUtil; +import io.github.andrew6rant.autoslabs.SlabLockEnum; import net.minecraft.block.BlockState; import net.minecraft.block.ShapeContext; import net.minecraft.client.MinecraftClient; @@ -19,6 +20,9 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static io.github.andrew6rant.autoslabs.AutoSlabsClient.clientSlabLockPosition; +import static io.github.andrew6rant.autoslabs.config.CommonConfig.showEnhancedSlabLines; + @Mixin(WorldRenderer.class) public class WorldRendererMixin { @@ -28,6 +32,8 @@ public class WorldRendererMixin { @Inject(method = "drawBlockOutline(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/entity/Entity;DDDLnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;)V", at = @At("HEAD")) private void autoslabs$drawBlockOutline(MatrixStack matrices, VertexConsumer vertexConsumer, Entity entity, double cameraX, double cameraY, double cameraZ, BlockPos pos, BlockState state, CallbackInfo ci) { + if (!showEnhancedSlabLines) return; + if (clientSlabLockPosition.equals(SlabLockEnum.VANILLA_PLACEMENT)) return; Vec3d camDif = new Vec3d((double)pos.getX() - cameraX, (double)pos.getY() - cameraY, (double)pos.getZ() - cameraZ); VoxelShape shape = state.getOutlineShape(this.world, pos, ShapeContext.of(entity)); RenderUtil.renderOverlay(matrices, vertexConsumer, camDif, state, shape, this.client.crosshairTarget); From ad9efe9a3f68e7b732557a573cb81f3512eb3d91 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 23:08:55 -0400 Subject: [PATCH 54/71] initial hud render right now it shows all the time dependent on the placement state, I want it to only show when the player is holding a slab block --- .../autoslabs/AutoSlabsClient.java | 23 +++++++++++++++++- .../andrew6rant/autoslabs/PlacementUtil.java | 4 +-- .../andrew6rant/autoslabs/SlabLockEnum.java | 4 +-- .../autoslabs/mixin/SlabBlockMixin.java | 5 ++-- .../textures/gui/autoslabs_position_lock.png | Bin 0 -> 712 bytes 5 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/assets/autoslabs/textures/gui/autoslabs_position_lock.png diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 4e23500..94b58bb 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,9 +1,12 @@ package io.github.andrew6rant.autoslabs; +import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; @@ -11,6 +14,7 @@ import net.fabricmc.loader.api.ModContainer; import net.minecraft.block.SlabBlock; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; import net.minecraft.item.BlockItem; @@ -28,7 +32,7 @@ public class AutoSlabsClient implements ClientModInitializer { ); private static Boolean validKeyPress = true; - public static SlabLockEnum clientSlabLockPosition = SlabLockEnum.DEFAULT_ALL; + public static SlabLockEnum clientSlabLockPosition = SlabLockEnum.DEFAULT_AUTOSLABS; private void sendKeybind(SlabLockEnum lockedPosition) { PacketByteBuf buf = PacketByteBufs.create(); @@ -42,10 +46,27 @@ private void setKeybind(MinecraftClient client) { client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+ clientSlabLockPosition.toString()), true); } + private void drawSlabIcon(DrawContext context, int u, int v) { + RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.ONE_MINUS_DST_COLOR, GlStateManager.DstFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ZERO); + context.drawTexture(new Identifier("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); + RenderSystem.defaultBlendFunc(); + } + @Override public void onInitializeClient() { ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); + HudRenderCallback.EVENT.register((context, tickDelta) -> { + switch (clientSlabLockPosition) { + case BOTTOM_SLAB -> drawSlabIcon(context, 0, 0); + case TOP_SLAB -> drawSlabIcon(context, 16, 0); + case NORTH_SLAB_VERTICAL -> drawSlabIcon(context, 0, 16); + case SOUTH_SLAB_VERTICAL -> drawSlabIcon(context, 16, 16); + case EAST_SLAB_VERTICAL -> drawSlabIcon(context, 0, 32); + case WEST_SLAB_VERTICAL -> drawSlabIcon(context, 16, 32); + } + }); + ClientTickEvents.END_CLIENT_TICK.register(client -> { if (client.player != null) { if (SLAB_LOCK_KEYBIND.isPressed() && validKeyPress) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java index bcc9a0f..04e1011 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java @@ -220,7 +220,7 @@ public static SlabType calcKleeSlab(BlockState breakState, BlockHitResult cast) public static boolean canReplace(BlockState state, ItemPlacementContext context) { PlayerEntity player = context.getPlayer(); if (player == null) return false; - if (!AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_ALL).equals(SlabLockEnum.DEFAULT_ALL)) { + if (!AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.DEFAULT_AUTOSLABS)) { return false; } ItemStack itemStack = context.getStack(); @@ -281,7 +281,7 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState if (player == null) return null; BlockPos blockPos = ctx.getBlockPos(); FluidState fluidState = ctx.getWorld().getFluidState(blockPos); - switch (AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_ALL)) { + switch (AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_AUTOSLABS)) { case BOTTOM_SLAB -> { return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java index 1420631..a52bbfa 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockEnum.java @@ -1,9 +1,7 @@ package io.github.andrew6rant.autoslabs; -import net.minecraft.client.MinecraftClient; - public enum SlabLockEnum { - DEFAULT_ALL, + DEFAULT_AUTOSLABS, BOTTOM_SLAB, TOP_SLAB, NORTH_SLAB_VERTICAL, diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 19e7b4f..cac0ad8 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -25,7 +25,6 @@ import static io.github.andrew6rant.autoslabs.Util.TYPE; import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; -import static net.minecraft.block.enums.SlabType.DOUBLE; import static net.minecraft.block.enums.SlabType.TOP; @Mixin(SlabBlock.class) @@ -38,7 +37,7 @@ private SlabBlockMixin(Settings settings) { @Inject(at = @At("HEAD"), method = "canReplace(Lnet/minecraft/block/BlockState;Lnet/minecraft/item/ItemPlacementContext;)Z", cancellable = true) private void autoslabs$canSlabReplace(BlockState state, ItemPlacementContext ctx, CallbackInfoReturnable cir) { if (ctx.getPlayer() == null) return; - if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_ALL).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { cir.setReturnValue(PlacementUtil.canReplace(state, ctx)); } } @@ -46,7 +45,7 @@ private SlabBlockMixin(Settings settings) { @Inject(at = @At("HEAD"), method = "getPlacementState(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/block/BlockState;", cancellable = true) private void autoslabs$getSlabPlacementState(ItemPlacementContext ctx, CallbackInfoReturnable cir) { if (ctx.getPlayer() == null) return; - if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_ALL).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { cir.setReturnValue(PlacementUtil.calcPlacementState(ctx, this.getDefaultState())); } } diff --git a/src/main/resources/assets/autoslabs/textures/gui/autoslabs_position_lock.png b/src/main/resources/assets/autoslabs/textures/gui/autoslabs_position_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..0515db1136a25b054d1e8bcbf7ebe6bffb8f7875 GIT binary patch literal 712 zcmV;(0yq7MP)Px%f=NU{RCt{2SlN!lFbIrS`Tt+`zO1X1atz?3S}`xJ90tY)oY?JJgx-4}|66Nq zRU9P#Rt^0R*4WPYTQnd6R*FDDai*RQ98ob*wK%BSM8Y1LrgH#KRk&Vx3 z_*ekW5#oG2i}Ed7%ZC_qnvL_>4|kMuC*TeiqEs-qJ~c50c@ z-qJD{-2*J1)Zg9;vG{KfXm&hV=4=tZWP|!bHHsCW1@^9PhEFSEQ~*+89N!w>eoRF% zyTl_&oB~h#{HyrZ?)$azvqCL?_W82-voba~h>+9qd+&XEM$n15g-(wDvW;fUYsU$p zzcUsBjX%cB!%(CQIXvIx(sM1o#gE1}4@0vT!h-j7m&K1I

(r7Z)IdUDYxJ;;k?T ztt_?P&CB$mcl?Iv_7Jp<$#YYasSqh%Gy%7Vz}Z-Q?S|;-7tI)YV+7w2X_FknJmsuq zJaSngRStaR#c-c?Uwt3&TmUo)Xp6kGp~7~oe-jr@~L)hE?<2gfQ(ywD+$M6 uQ4-LKSj8_C3WY+UP$(1%g+ih5fAI@h!{PrRijK7a0000 Date: Fri, 8 Sep 2023 23:25:29 -0400 Subject: [PATCH 55/71] properly implement slab placement HUD rendering --- .../autoslabs/AutoSlabsClient.java | 15 +------ .../andrew6rant/autoslabs/RenderUtil.java | 14 +++++++ .../autoslabs/mixin/InGameHudMixin.java | 40 +++++++++++++++++++ src/main/resources/autoslabs.mixins.json | 1 + 4 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 94b58bb..a07f1f5 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -46,25 +46,12 @@ private void setKeybind(MinecraftClient client) { client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+ clientSlabLockPosition.toString()), true); } - private void drawSlabIcon(DrawContext context, int u, int v) { - RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.ONE_MINUS_DST_COLOR, GlStateManager.DstFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ZERO); - context.drawTexture(new Identifier("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); - RenderSystem.defaultBlendFunc(); - } - @Override public void onInitializeClient() { ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); HudRenderCallback.EVENT.register((context, tickDelta) -> { - switch (clientSlabLockPosition) { - case BOTTOM_SLAB -> drawSlabIcon(context, 0, 0); - case TOP_SLAB -> drawSlabIcon(context, 16, 0); - case NORTH_SLAB_VERTICAL -> drawSlabIcon(context, 0, 16); - case SOUTH_SLAB_VERTICAL -> drawSlabIcon(context, 16, 16); - case EAST_SLAB_VERTICAL -> drawSlabIcon(context, 0, 32); - case WEST_SLAB_VERTICAL -> drawSlabIcon(context, 16, 32); - } + }); ClientTickEvents.END_CLIENT_TICK.register(client -> { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index ea878e2..8716cc3 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -1,13 +1,20 @@ package io.github.andrew6rant.autoslabs; +import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Direction; @@ -22,6 +29,13 @@ // massive thanks to Schauweg for helping with some of this code public class RenderUtil { + public static void drawSlabIcon(PlayerEntity player, DrawContext context, int u, int v) { + ItemStack heldItem = player.getStackInHand(player.getActiveHand()); + if (heldItem != null && !heldItem.isEmpty() && heldItem.getItem() instanceof BlockItem && ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock) { + context.drawTexture(new Identifier("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); + } + } + public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult) { ClientPlayerEntity player = MinecraftClient.getInstance().player; if (Block.getBlockFromItem(player.getStackInHand(player.getActiveHand()).getItem()) instanceof SlabBlock || (Block.getBlockFromItem(player.getOffHandStack().getItem()) instanceof SlabBlock && player.getMainHandStack().isEmpty())) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java new file mode 100644 index 0000000..680bd3c --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java @@ -0,0 +1,40 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import io.github.andrew6rant.autoslabs.RenderUtil; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.hud.InGameHud; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static io.github.andrew6rant.autoslabs.AutoSlabsClient.clientSlabLockPosition; + +@Mixin(InGameHud.class) +public class InGameHudMixin { + @Shadow @Final private MinecraftClient client; + + @Inject( + method = "renderCrosshair(Lnet/minecraft/client/gui/DrawContext;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/DrawContext;drawTexture(Lnet/minecraft/util/Identifier;IIIIII)V", + ordinal = 0, + shift = At.Shift.AFTER + ) + ) + private void autoSlabs$renderSlabCrosshairIcons(DrawContext context, CallbackInfo ci) { + switch (clientSlabLockPosition) { + case BOTTOM_SLAB -> RenderUtil.drawSlabIcon(this.client.player, context, 0, 0); + case TOP_SLAB -> RenderUtil.drawSlabIcon(this.client.player, context, 16, 0); + case NORTH_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 0, 16); + case SOUTH_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 16, 16); + case EAST_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 0, 32); + case WEST_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 16, 32); + } + } +} \ No newline at end of file diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index 8babd26..0f292ac 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -11,6 +11,7 @@ "client": [ "BlockRenderManagerMixin", "ClientPlayerInteractionManagerMixin", + "InGameHudMixin", "WorldRendererMixin" ], "injectors": { From 4c46cd39dfa4981fe462115aefb00ec55f866c2d Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Fri, 8 Sep 2023 23:52:00 -0400 Subject: [PATCH 56/71] change wireframe render based on slab placement keybind yes, I know this code is atrocious, but it works. I'll clean it up later. --- .../andrew6rant/autoslabs/RenderUtil.java | 131 +++++++++++++++--- 1 file changed, 112 insertions(+), 19 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 8716cc3..533fa6e 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -1,7 +1,5 @@ package io.github.andrew6rant.autoslabs; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; @@ -9,7 +7,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.render.*; +import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItem; @@ -24,6 +22,7 @@ import java.util.Objects; +import static io.github.andrew6rant.autoslabs.AutoSlabsClient.clientSlabLockPosition; import static io.github.andrew6rant.autoslabs.Util.*; // massive thanks to Schauweg for helping with some of this code @@ -173,22 +172,116 @@ private static void renderOverlayToDirection(BlockState state, Direction side, M } MatrixStack.Entry entry = matrixStack.peek(); - // I have no idea why, but this code only works when - // in an if chain and not a switch statement - if (part == HitPart.CENTER) { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); - } - else if (part == HitPart.BOTTOM) { - drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); - } - else if (part == HitPart.TOP) { - drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); - } - else if (part == HitPart.LEFT) { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); - } - else if (part == HitPart.RIGHT) { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + switch (clientSlabLockPosition) { + case DEFAULT_AUTOSLABS -> { + // I have no idea why, but this code only works when + // in an if chain and not a switch statement + if (part == HitPart.CENTER) { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + else if (part == HitPart.BOTTOM) { + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); + } + else if (part == HitPart.TOP) { + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); + } + else if (part == HitPart.LEFT) { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + else if (part == HitPart.RIGHT) { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + } + case BOTTOM_SLAB -> { + switch (side) { + case UP, DOWN -> { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + case NORTH, SOUTH, EAST, WEST -> { + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); + } + } + } + case TOP_SLAB -> { + switch (side) { + case UP, DOWN -> { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + case NORTH, SOUTH, EAST, WEST -> { + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); + } + } + } + case NORTH_SLAB_VERTICAL -> { + switch (side) { + case UP, DOWN -> { + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); + } + case NORTH, SOUTH -> { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + case EAST -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + case WEST -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + } + } + case SOUTH_SLAB_VERTICAL -> { + switch (side) { + case UP, DOWN -> { + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); + } + case NORTH, SOUTH -> { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + case EAST -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + case WEST -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + } + } + case EAST_SLAB_VERTICAL -> { + switch (side) { + case UP -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + case DOWN -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + case EAST, WEST -> { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + case NORTH -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + case SOUTH -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + } + } + case WEST_SLAB_VERTICAL -> { + switch (side) { + case UP -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + case DOWN -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + case EAST, WEST -> { + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + } + case NORTH -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + } + case SOUTH -> { + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + } + } + } } } From d02803ccdad311cc65afb446a3ceb697e69e176b Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sat, 9 Sep 2023 16:27:00 -0400 Subject: [PATCH 57/71] modify rendering to allow for other mods to change the line colors I know this code is really messy haha --- .../andrew6rant/autoslabs/RenderUtil.java | 182 +++++++++--------- .../autoslabs/mixin/WorldRendererMixin.java | 19 +- 2 files changed, 104 insertions(+), 97 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 533fa6e..b91c283 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -35,7 +35,7 @@ public static void drawSlabIcon(PlayerEntity player, DrawContext context, int u, } } - public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult) { + public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult, float red, float green, float blue, float alpha) { ClientPlayerEntity player = MinecraftClient.getInstance().player; if (Block.getBlockFromItem(player.getStackInHand(player.getActiveHand()).getItem()) instanceof SlabBlock || (Block.getBlockFromItem(player.getOffHandStack().getItem()) instanceof SlabBlock && player.getMainHandStack().isEmpty())) { if (hitResult.getType() == HitResult.Type.BLOCK) { @@ -45,32 +45,28 @@ public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexCons Vec3d camDif = getCameraOffset(camDif1, shape, result.getSide()); if (state.getBlock() instanceof SlabBlock) { - renderOverlayToDirection(state, result.getSide(), matrices, vertexConsumer, camDif, part); + renderOverlayToDirection(state, result.getSide(), matrices, vertexConsumer, camDif, part, red, green, blue, alpha); } else { - renderOverlayToDirection(null, result.getSide(), matrices, vertexConsumer, camDif, part); + renderOverlayToDirection(null, result.getSide(), matrices, vertexConsumer, camDif, part, red, green, blue, alpha); } } } } - private static void drawLine(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f start, Vector3f end, Vec3d camDif) { + private static void drawLine(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f start, Vector3f end, Vec3d camDif, float red, float green, float blue, float alpha) { Vector3f normal = getNormalAngle(start, end); - float r = 0; - float g = 0; - float b = 0; - float a = 0.4f; Vector3f startRaw = new Vector3f((float) (start.x + camDif.x), (float) (start.y + camDif.y), (float) (start.z + camDif.z)); Vector3f endRaw = new Vector3f((float) (end.x + camDif.x), (float) (end.y + camDif.y), (float) (end.z + camDif.z)); vertexConsumer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) - .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); + .color(red, green, blue, alpha).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); vertexConsumer.vertex(entry.getPositionMatrix(), endRaw.x, endRaw.y, endRaw.z) - .color(r, g, b, a).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); + .color(red, green, blue, alpha).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); } - private static void renderOverlayToDirection(BlockState state, Direction side, MatrixStack matrixStack, VertexConsumer vertexConsumer, Vec3d camDif, HitPart part) { + private static void renderOverlayToDirection(BlockState state, Direction side, MatrixStack matrixStack, VertexConsumer vertexConsumer, Vec3d camDif, HitPart part, float red, float green, float blue, float alpha) { Vector3f vecBottomLeft = null, vecBottomRight = null, vecTopLeft = null, vecTopRight = null, vecCenterBottomLeft = null, vecCenterBottomRight = null, vecCenterTopLeft = null, vecCenterTopRight = null, vecCenterMiddleLeft = null, vecCenterMiddleRight = null, vecCenterMiddleBottom = null, vecCenterMiddleTop = null; @@ -177,261 +173,261 @@ private static void renderOverlayToDirection(BlockState state, Direction side, M // I have no idea why, but this code only works when // in an if chain and not a switch statement if (part == HitPart.CENTER) { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } else if (part == HitPart.BOTTOM) { - drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); } else if (part == HitPart.TOP) { - drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); } else if (part == HitPart.LEFT) { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } else if (part == HitPart.RIGHT) { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } } case BOTTOM_SLAB -> { switch (side) { case UP, DOWN -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } case NORTH, SOUTH, EAST, WEST -> { - drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); } } } case TOP_SLAB -> { switch (side) { case UP, DOWN -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } case NORTH, SOUTH, EAST, WEST -> { - drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); } } } case NORTH_SLAB_VERTICAL -> { switch (side) { case UP, DOWN -> { - drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif); + drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); } case NORTH, SOUTH -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } case EAST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } case WEST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } } } case SOUTH_SLAB_VERTICAL -> { switch (side) { case UP, DOWN -> { - drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif); + drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); } case NORTH, SOUTH -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } case EAST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } case WEST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } } } case EAST_SLAB_VERTICAL -> { switch (side) { case UP -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } case DOWN -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } case EAST, WEST -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } case NORTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } case SOUTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } } } case WEST_SLAB_VERTICAL -> { switch (side) { case UP -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } case DOWN -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } case EAST, WEST -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side); + drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } case NORTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } case SOUTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif); + drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } } } } } - private static void drawLeftRightLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif) { + private static void drawLeftRightLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif, float red, float green, float blue, float alpha) { if (verticalType != null && slabType != null) { switch (verticalType) { case FALSE -> { switch (slabType) { case BOTTOM, TOP -> { if (side == Direction.DOWN || side == Direction.UP) { - drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } else { - drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif); + drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } case NORTH_SOUTH -> { switch (slabType) { case BOTTOM, TOP -> { if (side == Direction.DOWN || side == Direction.UP) { - drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif); + drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif, red, green, blue, alpha); } else { - drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } - case EAST_WEST -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case EAST_WEST -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } else { - drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } - private static void drawCenterLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecCenterBottomLeft, Vector3f vecCenterBottomRight, Vector3f vecCenterTopLeft, Vector3f vecCenterTopRight, Vector3f vecCenterMiddleLeft, Vector3f vecCenterMiddleRight, Vector3f vecCenterMiddleBottom, Vector3f vecCenterMiddleTop, Vec3d camDif, SlabType slabType, VerticalType verticalType, Direction side) { + private static void drawCenterLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecCenterBottomLeft, Vector3f vecCenterBottomRight, Vector3f vecCenterTopLeft, Vector3f vecCenterTopRight, Vector3f vecCenterMiddleLeft, Vector3f vecCenterMiddleRight, Vector3f vecCenterMiddleBottom, Vector3f vecCenterMiddleTop, Vec3d camDif, SlabType slabType, VerticalType verticalType, Direction side, float red, float green, float blue, float alpha) { if (verticalType != null && slabType != null) { switch (verticalType) { case FALSE -> { switch (slabType) { case BOTTOM, TOP -> { if (side == Direction.DOWN || side == Direction.UP) { - drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); } else { - drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType, camDif); + drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); } } case NORTH_SOUTH -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case DOWN, UP -> drawInternalSquare(entry, vertexConsumer, vecCenterTopLeft, vecCenterTopRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType, camDif); - case NORTH, SOUTH -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); - case EAST -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); - case WEST -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); + case DOWN, UP -> drawInternalSquare(entry, vertexConsumer, vecCenterTopLeft, vecCenterTopRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleLeft, vecCenterMiddleRight, slabType, camDif, red, green, blue, alpha); + case NORTH, SOUTH -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); + case EAST -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif, red, green, blue, alpha); + case WEST -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); } } case EAST_WEST -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case EAST, WEST -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); - case SOUTH, DOWN -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); - case NORTH, UP -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif); + case EAST, WEST -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); + case SOUTH, DOWN -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterTopLeft, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif, red, green, blue, alpha); + case NORTH, UP -> drawInternalSquare(entry, vertexConsumer, vecCenterBottomRight, vecCenterTopRight, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleBottom, vecCenterMiddleTop, slabType, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + case DOUBLE -> drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); } } } } else { - drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif); + drawDefaultSquare(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, camDif, red, green, blue, alpha); } } - private static void drawTopBottomLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif) { + private static void drawTopBottomLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, VerticalType verticalType, Direction side, Vec3d camDif, float red, float green, float blue, float alpha) { if (verticalType != null && slabType != null) { switch (verticalType) { - case FALSE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case FALSE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); case NORTH_SOUTH -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case DOWN, UP, NORTH, SOUTH -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); - case EAST -> drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif); - case WEST -> drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif); + case DOWN, UP, NORTH, SOUTH -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); + case EAST -> drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif, red, green, blue, alpha); + case WEST -> drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } case EAST_WEST -> { switch (slabType) { case BOTTOM, TOP -> { switch (side) { - case EAST, WEST -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); - case NORTH, UP -> drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif); - case SOUTH, DOWN -> drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif); + case EAST, WEST -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); + case NORTH, UP -> drawInternal(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, vecCenterMiddleCorner, slabType, camDif, red, green, blue, alpha); + case SOUTH, DOWN -> drawInternal(entry, vertexConsumer, vecEndCorner, vecStartCorner, vecCenterEndCorner, vecCenterStartCorner, vecCenterMiddleCorner, slabType, camDif, red, green, blue, alpha); } } - case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + case DOUBLE -> drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } } } else { - drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif); + drawDefaultLines(entry, vertexConsumer, vecStartCorner, vecEndCorner, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } - private static void drawInternalSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleStart, Vector3f vecCenterMiddleEnd, SlabType slabType, Vec3d camDif) { + private static void drawInternalSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleStart, Vector3f vecCenterMiddleEnd, SlabType slabType, Vec3d camDif, float red, float green, float blue, float alpha) { if (Objects.equals(slabType, SlabType.TOP)) { - drawLine(entry, vertexConsumer, vecCenterMiddleStart, vecCenterStartCorner, camDif); - drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); - drawLine(entry, vertexConsumer, vecCenterEndCorner, vecCenterMiddleEnd, camDif); + drawLine(entry, vertexConsumer, vecCenterMiddleStart, vecCenterStartCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecCenterEndCorner, vecCenterMiddleEnd, camDif, red, green, blue, alpha); } else if (Objects.equals(slabType, SlabType.BOTTOM)) { - drawLine(entry, vertexConsumer, vecStartCorner, vecCenterMiddleStart, camDif); - drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif); - drawLine(entry, vertexConsumer, vecEndCorner, vecCenterMiddleEnd, camDif); + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterMiddleStart, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterMiddleEnd, camDif, red, green, blue, alpha); } } - private static void drawInternal(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, Vec3d camDif) { + private static void drawInternal(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vector3f vecCenterMiddleCorner, SlabType slabType, Vec3d camDif, float red, float green, float blue, float alpha) { if (Objects.equals(slabType, SlabType.BOTTOM)) { - drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); - drawLine(entry, vertexConsumer, vecCenterEndCorner, vecCenterMiddleCorner, camDif); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecCenterEndCorner, vecCenterMiddleCorner, camDif, red, green, blue, alpha); } else if (Objects.equals(slabType, SlabType.TOP)) { - drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); - drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterMiddleCorner, camDif); + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterMiddleCorner, camDif, red, green, blue, alpha); } } - private static void drawDefaultLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif) { - drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); - drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); - drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); + private static void drawDefaultLines(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif, float red, float green, float blue, float alpha) { + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } - private static void drawDefaultSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif) { - drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif); - drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif); - drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif); - drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif); + private static void drawDefaultSquare(MatrixStack.Entry entry, VertexConsumer vertexConsumer, Vector3f vecStartCorner, Vector3f vecEndCorner, Vector3f vecCenterStartCorner, Vector3f vecCenterEndCorner, Vec3d camDif, float red, float green, float blue, float alpha) { + drawLine(entry, vertexConsumer, vecStartCorner, vecEndCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecStartCorner, vecCenterStartCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecEndCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); + drawLine(entry, vertexConsumer, vecCenterStartCorner, vecCenterEndCorner, camDif, red, green, blue, alpha); } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index 2fa798d..dd40023 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -9,6 +9,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.Entity; +import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; @@ -16,6 +17,7 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -30,13 +32,22 @@ public class WorldRendererMixin { @Shadow @Nullable private ClientWorld world; + @Unique private static HitResult autoslabs$captureCrosshairTarget; + @Unique private static BlockState autoslabs$captureBlockState; + @Inject(method = "drawBlockOutline(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/entity/Entity;DDDLnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;)V", at = @At("HEAD")) private void autoslabs$drawBlockOutline(MatrixStack matrices, VertexConsumer vertexConsumer, Entity entity, double cameraX, double cameraY, double cameraZ, BlockPos pos, BlockState state, CallbackInfo ci) { + autoslabs$captureCrosshairTarget = this.client.crosshairTarget; + autoslabs$captureBlockState = state; + } + + @Inject(method = "drawCuboidShapeOutline(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/util/shape/VoxelShape;DDDFFFF)V", at = @At("HEAD")) + private static void autoslabs$drawBlockOutline(MatrixStack matrices, VertexConsumer vertexConsumer, VoxelShape shape, double offsetX, double offsetY, double offsetZ, float red, float green, float blue, float alpha, CallbackInfo ci) { if (!showEnhancedSlabLines) return; if (clientSlabLockPosition.equals(SlabLockEnum.VANILLA_PLACEMENT)) return; - Vec3d camDif = new Vec3d((double)pos.getX() - cameraX, (double)pos.getY() - cameraY, (double)pos.getZ() - cameraZ); - VoxelShape shape = state.getOutlineShape(this.world, pos, ShapeContext.of(entity)); - RenderUtil.renderOverlay(matrices, vertexConsumer, camDif, state, shape, this.client.crosshairTarget); + Vec3d camDif = new Vec3d(offsetX, offsetY, offsetZ); + if (autoslabs$captureCrosshairTarget != null && autoslabs$captureBlockState != null) { + RenderUtil.renderOverlay(matrices, vertexConsumer, camDif, autoslabs$captureBlockState, shape, autoslabs$captureCrosshairTarget, red, green, blue, alpha); + } } - } From e46ca02003d29ff50096d6131ebf44b4ee9393ce Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Sun, 6 Jul 2025 02:25:30 +0300 Subject: [PATCH 58/71] Dependency update --- .gitattributes | 2 +- build.gradle | 2 +- gradle.properties | 8 ++++---- gradle/wrapper/gradle-wrapper.properties | 2 +- .../io/github/andrew6rant/autoslabs/AutoSlabsClient.java | 3 --- src/main/java/io/github/andrew6rant/autoslabs/Util.java | 3 --- .../andrew6rant/autoslabs/mixin/InGameHudMixin.java | 1 - .../andrew6rant/autoslabs/mixin/WorldRendererMixin.java | 1 - src/main/resources/fabric.mod.json | 3 --- 9 files changed, 7 insertions(+), 18 deletions(-) diff --git a/.gitattributes b/.gitattributes index dfe0770..5a0d5e4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ # Auto detect text files and perform LF normalization -* text=auto +* text=auto eol=lf diff --git a/build.gradle b/build.gradle index 32a7b43..f64c959 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.0-SNAPSHOT' + id 'fabric-loom' version '1.11-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 6ec113d..ee43841 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,16 +5,16 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop minecraft_version=1.20.1 -yarn_mappings=1.20.1+build.9 -loader_version=0.14.21 +yarn_mappings=1.20.1+build.10 +loader_version=0.15.0 # Mod Properties -mod_version=1.1.3 +mod_version=1.1.4 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 -statement_version=4.2.8 +statement_version=4.2.9 arrp_version=0.8.0 modmenu_version = 7.2.1 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f398c33..3c44eb1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index a07f1f5..4e375c4 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,7 +1,5 @@ package io.github.andrew6rant.autoslabs; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; @@ -14,7 +12,6 @@ import net.fabricmc.loader.api.ModContainer; import net.minecraft.block.SlabBlock; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; import net.minecraft.item.BlockItem; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/Util.java index 638d2fc..6ad8882 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/Util.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/Util.java @@ -1,11 +1,8 @@ package io.github.andrew6rant.autoslabs; -import net.devtech.arrp.api.RuntimeResourcePack; import net.minecraft.block.Block; -import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; -import net.minecraft.client.MinecraftClient; import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.hit.BlockHitResult; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java index 680bd3c..a7cc90b 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java @@ -4,7 +4,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index dd40023..b951298 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -3,7 +3,6 @@ import io.github.andrew6rant.autoslabs.RenderUtil; import io.github.andrew6rant.autoslabs.SlabLockEnum; import net.minecraft.block.BlockState; -import net.minecraft.block.ShapeContext; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 00dd5ea..c2f0482 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -32,8 +32,5 @@ "minecraft": ">=1.20", "java": ">=17", "fabric-api": "*" - }, - "suggests": { - "another-mod": "*" } } \ No newline at end of file From ab92c87cfd1fd140a9a4545557c3dcc80d80d230 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Sun, 6 Jul 2025 03:53:49 +0300 Subject: [PATCH 59/71] Integrated Statement API for efficiency --- build.gradle | 32 ++++++++----- gradle.properties | 2 +- jitpack.yml | 5 -- .../andrew6rant/autoslabs/AutoSlabs.java | 4 +- .../io/github/andrew6rant/autoslabs/Util.java | 4 +- .../autoslabs/mixin/SlabBlockMixin.java | 8 ++++ .../autoslabs/mixin/StateMixin.java | 47 ------------------- .../autoslabs/mixin/StatementStateMixin.java | 37 +++++++++++++++ .../statement/StatementStateExtensions.java | 7 +++ .../StatementStateManagerExtensions.java | 13 +++++ .../statement/StatementStateRefresher.java | 41 ++++++++++++++++ src/main/resources/autoslabs.mixins.json | 2 +- src/main/resources/fabric.mod.json | 2 +- 13 files changed, 133 insertions(+), 71 deletions(-) delete mode 100644 jitpack.yml delete mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateExtensions.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateManagerExtensions.java create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateRefresher.java diff --git a/build.gradle b/build.gradle index f64c959..249d864 100644 --- a/build.gradle +++ b/build.gradle @@ -4,9 +4,6 @@ plugins { } -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group @@ -17,9 +14,6 @@ repositories { // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. - maven { - url = "https://jitpack.io" - } maven { url = uri("https://ueaj.dev/maven") } @@ -37,9 +31,7 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - include modApi("com.github.Virtuoel:Statement:${project.statement_version}", { - exclude group: "net.fabricmc.fabric-api" - }) + // Removed Statement API dependency - using internal fork instead include modApi("net.devtech:arrp:${project.arrp_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { @@ -54,17 +46,32 @@ dependencies { processResources { inputs.property "version", project.version + inputs.property "loader_version", project.loader_version + filteringCharset "UTF-8" filesMatching("fabric.mod.json") { - expand "version": project.version + expand "version": project.version, + "loader_version": project.loader_version } } +def targetJavaVersion = 17 tasks.withType(JavaCompile).configureEach { - it.options.release = 17 + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + it.options.release.set(targetJavaVersion) + } } java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task // if it is present. // If you remove this line, sources will not be generated. @@ -80,7 +87,8 @@ jar { // configure the maven publication publishing { publications { - mavenJava(MavenPublication) { + create("mavenJava", MavenPublication) { + artifactId = project.archives_base_name from components.java } } diff --git a/gradle.properties b/gradle.properties index ee43841..eccebfb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,6 +15,6 @@ archives_base_name=autoslabs # Dependencies fabric_version=0.85.0+1.20.1 -statement_version=4.2.9 +# statement_version=4.2.9 # Removed - using internal fork arrp_version=0.8.0 modmenu_version = 7.2.1 \ No newline at end of file diff --git a/jitpack.yml b/jitpack.yml deleted file mode 100644 index f29a667..0000000 --- a/jitpack.yml +++ /dev/null @@ -1,5 +0,0 @@ -jdk: - - openjdk17 -before_install: - - sdk install java 17.0.1-open - - sdk use java 17.0.1-open \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index e007e89..6281696 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -9,7 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; -import virtuoel.statement.api.StateRefresher; +import io.github.andrew6rant.autoslabs.statement.StatementStateRefresher; import java.util.HashMap; import java.util.Map; @@ -32,7 +32,7 @@ public void onInitialize() { Util.registerSlab(block); }); - StateRefresher.INSTANCE.reorderBlockStates(); + StatementStateRefresher.INSTANCE.reorderBlockStates(); // custom ARRP entrypoint that is only available in my fork of ARRP RRPCallback.BETWEEN_MODS_AND_USER.register(a -> a.add(AUTO_SLABS_RESOURCES)); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/Util.java index 6ad8882..dc2f78f 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/Util.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/Util.java @@ -12,7 +12,7 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; import org.joml.Vector3f; -import virtuoel.statement.api.StateRefresher; +import io.github.andrew6rant.autoslabs.statement.StatementStateRefresher; import java.util.Optional; @@ -43,7 +43,7 @@ public class Util { public static void registerSlab(Block block) { if (block instanceof SlabBlock slabBlock) { - StateRefresher.INSTANCE.addBlockProperty(slabBlock, VERTICAL_TYPE, VerticalType.FALSE); + StatementStateRefresher.INSTANCE.addBlockProperty(slabBlock, VERTICAL_TYPE, VerticalType.FALSE); ModelUtil.setup(AUTO_SLABS_RESOURCES, slabBlock); } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index cac0ad8..e4841f9 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -21,7 +21,10 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import net.minecraft.state.StateManager; +import io.github.andrew6rant.autoslabs.Util; import static io.github.andrew6rant.autoslabs.Util.TYPE; import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; @@ -83,4 +86,9 @@ public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockStat } } + @Inject(method = "appendProperties", at = @At("RETURN")) + private void autoslabs$addVerticalTypeProperty(StateManager.Builder builder, CallbackInfo ci) { + builder.add(Util.VERTICAL_TYPE); + } + } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java deleted file mode 100644 index beeb009..0000000 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StateMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.github.andrew6rant.autoslabs.mixin; - -import io.github.andrew6rant.autoslabs.config.CommonConfig; -import net.minecraft.state.State; -import net.minecraft.state.property.Property; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import virtuoel.statement.Statement; -import virtuoel.statement.util.StatementStateExtensions; - -import java.util.HashMap; -import java.util.Map; - -@Mixin(State.class) -public class StateMixin implements StatementStateExtensions { - - @Unique String getMissingOwner = ""; - @Shadow @Final @Mutable protected O owner; // cachedFallbacks and owner are modified in Statement API's StateMixin - @Unique final Map, Comparable> cachedFallbacks = new HashMap<>(); - - @Inject(method = "get", cancellable = true, at = @At(value = "INVOKE", target = "Ljava/lang/IllegalArgumentException;(Ljava/lang/String;)V", shift = At.Shift.BEFORE)) - private > void autoslabs$onGet(Property property, CallbackInfoReturnable info) { - final String ownerString = this.owner.toString(); - - if (!getMissingOwner.equals(ownerString)) { - if (!CommonConfig.suppressStatementAPILogger) { - Statement.LOGGER.info("Cannot get property {} as it does not exist in {}", property, this.owner); - } - getMissingOwner = ownerString; - } - - info.setReturnValue(cachedFallbacks.containsKey(property) ? property.getType().cast(cachedFallbacks.get(property)) : property.getValues().iterator().next()); - } - - static { - // I need to initialize the config earlier than onInitialize() runs in order to suppress Statement API's logger based on a config value - CommonConfig.init("auto_slabs", CommonConfig.class); - if (CommonConfig.suppressStatementAPILogger) { - Statement.LOGGER.warn("Statement API's logging has been disabled by AutoSlabs!"); - } else { - Statement.LOGGER.warn("AutoSlabs: don't worry about these errors :)"); - } - } - -} diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java new file mode 100644 index 0000000..5bd667d --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java @@ -0,0 +1,37 @@ +package io.github.andrew6rant.autoslabs.mixin; + +import io.github.andrew6rant.autoslabs.statement.StatementStateExtensions; +import net.minecraft.block.SlabBlock; +import net.minecraft.state.State; +import net.minecraft.state.property.Property; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(State.class) +public class StatementStateMixin implements StatementStateExtensions { + @Shadow @Final protected O owner; + + @Inject(method = "get", cancellable = true, at = @At(value = "INVOKE", target = "Ljava/lang/IllegalArgumentException;(Ljava/lang/String;)V", shift = At.Shift.BEFORE)) + private > void statement$onGet(Property property, CallbackInfoReturnable info) { + // Only handle slab-related properties on slab blocks + if (this.owner instanceof SlabBlock && isSlabProperty(property)) { + // Provide fallback value for slab properties + info.setReturnValue(property.getValues().iterator().next()); + } + // For all other properties (including sculk_sensor_phase), let the exception be thrown + // This preserves the vanilla sculk sensor bug + } + + private boolean isSlabProperty(Property property) { + return property.getName().equals("vertical_type") || property.getName().equals("type"); + } + + @Override + public void statement_initShapeCache() { + // No-op for our minimal implementation + } +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateExtensions.java b/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateExtensions.java new file mode 100644 index 0000000..e17501d --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateExtensions.java @@ -0,0 +1,7 @@ +package io.github.andrew6rant.autoslabs.statement; + +import net.minecraft.state.State; + +public interface StatementStateExtensions { + void statement_initShapeCache(); +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateManagerExtensions.java b/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateManagerExtensions.java new file mode 100644 index 0000000..a986196 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateManagerExtensions.java @@ -0,0 +1,13 @@ +package io.github.andrew6rant.autoslabs.statement; + +import net.minecraft.state.State; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.Property; + +import java.util.Collection; +import java.util.Map; + +public interface StatementStateManagerExtensions> { + boolean statement_addProperty(Property property, Object defaultValue); + Collection statement_reconstructStateList(Map, Collection> propertyValues); +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateRefresher.java b/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateRefresher.java new file mode 100644 index 0000000..4845fb9 --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/statement/StatementStateRefresher.java @@ -0,0 +1,41 @@ +package io.github.andrew6rant.autoslabs.statement; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.State; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.Property; +import net.minecraft.util.collection.IdList; + +import java.util.Collection; +import java.util.Collections; +import java.util.function.Supplier; + +public class StatementStateRefresher { + public static final StatementStateRefresher INSTANCE = new StatementStateRefresher(); + + public > Collection addBlockProperty(final Block owner, final Property property, final V defaultValue) { + return addProperty(owner::getStateManager, Block.STATE_IDS, property, defaultValue); + } + + public , V extends Comparable> Collection addProperty(final Supplier> stateManagerGetter, final IdList idList, final Property property, final V defaultValue) { + // Only handle slab-related properties + if (isSlabProperty(property)) { + // For our minimal implementation, we'll just return an empty collection + // The actual property handling is done by the StatementStateMixin + return Collections.emptyList(); + } + + return Collections.emptyList(); + } + + public void reorderBlockStates() { + // This is called to ensure proper state ordering + // For our minimal implementation, we don't need to do anything special + } + + private boolean isSlabProperty(Property property) { + // Only handle properties that are used by this mod + return property.getName().equals("vertical_type") || property.getName().equals("type"); + } +} \ No newline at end of file diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index 0f292ac..c84372a 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -6,7 +6,7 @@ "PaneBlockMixin", "ServerPlayerInteractionManagerMixin", "SlabBlockMixin", - "StateMixin" + "StatementStateMixin" ], "client": [ "BlockRenderManagerMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c2f0482..0eb9f0b 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -28,7 +28,7 @@ "autoslabs.mixins.json" ], "depends": { - "fabricloader": ">=0.14.12", + "fabricloader": ">=${loader_version}", "minecraft": ">=1.20", "java": ">=17", "fabric-api": "*" From 3e2294ae43082fbca882550571c70bb7f79d9883 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Sun, 6 Jul 2025 04:34:53 +0300 Subject: [PATCH 60/71] Merged rotate() and mirror() fix from MUKSC --- .../autoslabs/mixin/SlabBlockMixin.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index e4841f9..efd7142 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -11,6 +11,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockMirror; +import net.minecraft.util.BlockRotation; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -28,6 +30,8 @@ import static io.github.andrew6rant.autoslabs.Util.TYPE; import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; +import static io.github.andrew6rant.autoslabs.VerticalType.*; +import static net.minecraft.block.enums.SlabType.BOTTOM; import static net.minecraft.block.enums.SlabType.TOP; @Mixin(SlabBlock.class) @@ -91,4 +95,50 @@ public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockStat builder.add(Util.VERTICAL_TYPE); } + @Override + public BlockState rotate(BlockState state, BlockRotation rotation) { + SlabType slabType = state.get(TYPE); + if (slabType == null) return super.rotate(state, rotation); + if (slabType == SlabType.DOUBLE) return state; + + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (verticalType == null) return super.rotate(state, rotation); + if (verticalType == FALSE || rotation == BlockRotation.NONE) return state; + + return switch (rotation) { + case CLOCKWISE_90 -> state + .with(VERTICAL_TYPE, verticalType == NORTH_SOUTH ? EAST_WEST : NORTH_SOUTH) + .with(TYPE, verticalType == EAST_WEST ? (slabType == TOP ? BOTTOM : TOP) : slabType); + case CLOCKWISE_180 -> state + .with(TYPE, slabType == TOP ? BOTTOM : TOP); + case COUNTERCLOCKWISE_90 -> state + .with(VERTICAL_TYPE, verticalType == NORTH_SOUTH ? EAST_WEST : NORTH_SOUTH) + .with(TYPE, verticalType == NORTH_SOUTH ? (slabType == TOP ? BOTTOM : TOP) : slabType); + default -> state; + }; + } + + @Override + public BlockState mirror(BlockState state, BlockMirror mirror) { + SlabType slabType = state.get(TYPE); + if (slabType == null) return super.mirror(state, mirror); + if (slabType == SlabType.DOUBLE) return state; + + VerticalType verticalType = state.get(VERTICAL_TYPE); + if (verticalType == null) return super.mirror(state, mirror); + if (verticalType == FALSE || mirror == BlockMirror.NONE) return state; + + return switch (mirror) { + case LEFT_RIGHT -> switch (verticalType) { + case EAST_WEST -> state; + default -> state.with(TYPE, state.get(TYPE) == TOP ? BOTTOM : TOP); + }; + case FRONT_BACK -> switch (verticalType) { + case NORTH_SOUTH -> state; + default -> state.with(TYPE, state.get(TYPE) == TOP ? BOTTOM : TOP); + }; + default -> state; + }; + } + } \ No newline at end of file From d27c29b8b9ef384eb545bf0ada22796e55eae742 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Sun, 6 Jul 2025 05:01:51 +0300 Subject: [PATCH 61/71] Small clean-up --- .../andrew6rant/autoslabs/AutoSlabs.java | 4 +- .../andrew6rant/autoslabs/RenderUtil.java | 84 ++++--------------- .../andrew6rant/autoslabs/VerticalType.java | 2 +- .../autoslabs/mixin/StatementStateMixin.java | 2 + .../autoslabs/mixin/WorldRendererMixin.java | 4 - 5 files changed, 22 insertions(+), 74 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 6281696..8c008e3 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -28,9 +28,7 @@ public void onInitialize() { Util.registerSlab(block); } - RegistryEntryAddedCallback.event(Registries.BLOCK).register((raw, id, block) -> { - Util.registerSlab(block); - }); + RegistryEntryAddedCallback.event(Registries.BLOCK).register((raw, id, block) -> Util.registerSlab(block)); StatementStateRefresher.INSTANCE.reorderBlockStates(); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index b91c283..49559c1 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -190,92 +190,44 @@ else if (part == HitPart.RIGHT) { } case BOTTOM_SLAB -> { switch (side) { - case UP, DOWN -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); - } - case NORTH, SOUTH, EAST, WEST -> { - drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); - } + case UP, DOWN -> drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); + case NORTH, SOUTH, EAST, WEST -> drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); } } case TOP_SLAB -> { switch (side) { - case UP, DOWN -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); - } - case NORTH, SOUTH, EAST, WEST -> { - drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); - } + case UP, DOWN -> drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); + case NORTH, SOUTH, EAST, WEST -> drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); } } case NORTH_SLAB_VERTICAL -> { switch (side) { - case UP, DOWN -> { - drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case NORTH, SOUTH -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); - } - case EAST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case WEST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); - } + case UP, DOWN -> drawTopBottomLines(entry, vertexConsumer, vecBottomLeft, vecBottomRight, vecCenterBottomLeft, vecCenterBottomRight, vecCenterMiddleBottom, slabType, verticalType, side, camDif, red, green, blue, alpha); + case NORTH, SOUTH -> drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); + case EAST -> drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); + case WEST -> drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); } } case SOUTH_SLAB_VERTICAL -> { switch (side) { - case UP, DOWN -> { - drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case NORTH, SOUTH -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); - } - case EAST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case WEST -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); - } + case UP, DOWN -> drawTopBottomLines(entry, vertexConsumer, vecTopLeft, vecTopRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleTop, slabType, verticalType, side, camDif, red, green, blue, alpha); + case NORTH, SOUTH -> drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); + case EAST -> drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); + case WEST -> drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); } } case EAST_SLAB_VERTICAL -> { switch (side) { - case UP -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case DOWN -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case EAST, WEST -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); - } - case NORTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case SOUTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); - } + case UP, NORTH -> drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); + case DOWN, SOUTH -> drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); + case EAST, WEST -> drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } } case WEST_SLAB_VERTICAL -> { switch (side) { - case UP -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case DOWN -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case EAST, WEST -> { - drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); - } - case NORTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); - } - case SOUTH -> { - drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); - } + case UP, NORTH -> drawLeftRightLines(entry, vertexConsumer, vecBottomRight, vecTopRight, vecCenterBottomRight, vecCenterTopRight, vecCenterMiddleRight, slabType, verticalType, side, camDif, red, green, blue, alpha); + case DOWN, SOUTH -> drawLeftRightLines(entry, vertexConsumer, vecBottomLeft, vecTopLeft, vecCenterBottomLeft, vecCenterTopLeft, vecCenterMiddleLeft, slabType, verticalType, side, camDif, red, green, blue, alpha); + case EAST, WEST -> drawCenterLines(entry, vertexConsumer, vecCenterBottomLeft, vecCenterBottomRight, vecCenterTopLeft, vecCenterTopRight, vecCenterMiddleLeft, vecCenterMiddleRight, vecCenterMiddleBottom, vecCenterMiddleTop, camDif, slabType, verticalType, side, red, green, blue, alpha); } } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/VerticalType.java b/src/main/java/io/github/andrew6rant/autoslabs/VerticalType.java index 37d11cd..7074428 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/VerticalType.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/VerticalType.java @@ -9,7 +9,7 @@ public enum VerticalType implements StringIdentifiable { private final String name; - private VerticalType(String name) { + VerticalType(String name) { this.name = name; } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java index 5bd667d..1d997c8 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/StatementStateMixin.java @@ -7,6 +7,7 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -26,6 +27,7 @@ public class StatementStateMixin implements StatementStateExtensions { // This preserves the vanilla sculk sensor bug } + @Unique private boolean isSlabProperty(Property property) { return property.getName().equals("vertical_type") || property.getName().equals("type"); } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index b951298..497e813 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -6,13 +6,11 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.Entity; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.util.shape.VoxelShape; -import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -29,8 +27,6 @@ public class WorldRendererMixin { @Shadow @Final private MinecraftClient client; - @Shadow @Nullable private ClientWorld world; - @Unique private static HitResult autoslabs$captureCrosshairTarget; @Unique private static BlockState autoslabs$captureBlockState; From 2f4c74ade240143f69a109ac5574e2b6034fe3ed Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 01:18:26 +0300 Subject: [PATCH 62/71] 1.21.1 port + switch to TriibuNupsik/ARRP --- build.gradle | 13 +- gradle.properties | 15 +- .../andrew6rant/autoslabs/AutoSlabs.java | 16 +- .../autoslabs/AutoSlabsClient.java | 9 +- .../andrew6rant/autoslabs/ModelUtil.java | 8 +- .../andrew6rant/autoslabs/RenderUtil.java | 6 +- .../autoslabs/SlabLockPayload.java | 18 + .../autoslabs/config/CommonConfig.java | 3 +- .../autoslabs/config/MidnightConfig.java | 422 ------------------ .../autoslabs/mixin/InGameHudMixin.java | 39 -- .../autoslabs/mixin/PaneBlockMixin.java | 26 +- .../assets/autoslabs/lang/en_us.json | 4 +- src/main/resources/autoslabs.mixins.json | 1 - src/main/resources/fabric.mod.json | 2 +- 14 files changed, 81 insertions(+), 501 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/SlabLockPayload.java delete mode 100644 src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java delete mode 100644 src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java diff --git a/build.gradle b/build.gradle index 249d864..e363ad0 100644 --- a/build.gradle +++ b/build.gradle @@ -20,6 +20,12 @@ repositories { maven { url "https://maven.terraformersmc.com/releases/" } + maven { + url "https://jitpack.io" + } + maven { + url = "https://api.modrinth.com/maven" + } } dependencies { @@ -31,8 +37,11 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - // Removed Statement API dependency - using internal fork instead - include modApi("net.devtech:arrp:${project.arrp_version}") + // ARRP from JitPack + modImplementation "com.github.TriibuNupsik:ARRP:${project.arrp_version}" + + // MidnightLib from TeamMidnightDust + modImplementation include ("maven.modrinth:midnightlib:${project.midnightlib_version}") modImplementation ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude module: "fabric-api" diff --git a/gradle.properties b/gradle.properties index eccebfb..c2cfef2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,17 +4,18 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.20.1 -yarn_mappings=1.20.1+build.10 -loader_version=0.15.0 +minecraft_version=1.21.1 +yarn_mappings=1.21.1+build.3 +loader_version=0.16.0 # Mod Properties -mod_version=1.1.4 +mod_version=1.2.0 maven_group=io.github.andrew6rant.autoslabs archives_base_name=autoslabs # Dependencies -fabric_version=0.85.0+1.20.1 +fabric_version=0.116.4+1.21.1 # statement_version=4.2.9 # Removed - using internal fork -arrp_version=0.8.0 -modmenu_version = 7.2.1 \ No newline at end of file +arrp_version=0.10.0 +midnightlib_version=1.6.9+1.21-fabric +modmenu_version=11.0.3 \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 8c008e3..16f51dd 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -4,12 +4,14 @@ import net.devtech.arrp.api.RuntimeResourcePack; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; import io.github.andrew6rant.autoslabs.statement.StatementStateRefresher; +import net.minecraft.util.Identifier; +import io.github.andrew6rant.autoslabs.config.CommonConfig; import java.util.HashMap; import java.util.Map; @@ -17,18 +19,22 @@ import static io.github.andrew6rant.autoslabs.config.CommonConfig.dumpResources; public class AutoSlabs implements ModInitializer { - public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create("autoslabs:resources", 15); + public static final RuntimeResourcePack AUTO_SLABS_RESOURCES = RuntimeResourcePack.create(Identifier.of("autoslabs", "resources")); public static final Map slabLockPosition = new HashMap<>(); @Override public void onInitialize() { + // Register config with MidnightLib + CommonConfig.init("auto_slabs", CommonConfig.class); + // Config is initialized in a static block in StateMixin. I need it to run earlier than State$get, and AutoSlabs$onInitialize is too late. for (Block block : Registries.BLOCK) { Util.registerSlab(block); } RegistryEntryAddedCallback.event(Registries.BLOCK).register((raw, id, block) -> Util.registerSlab(block)); + PayloadTypeRegistry.playC2S().register(SlabLockPayload.ID, SlabLockPayload.CODEC); StatementStateRefresher.INSTANCE.reorderBlockStates(); @@ -38,9 +44,9 @@ public void onInitialize() { AUTO_SLABS_RESOURCES.dump(); } - ServerPlayNetworking.registerGlobalReceiver(new Identifier("autoslabs", "slab_lock"), (server, player, handler, buf, responseSender) -> { - SlabLockEnum slabLockBuf = buf.readEnumConstant(SlabLockEnum.class); - slabLockPosition.put(player, slabLockBuf); + ServerPlayNetworking.registerGlobalReceiver(SlabLockPayload.ID, (payload, context) -> { + SlabLockEnum slabLockBuf = SlabLockEnum.POSITION_VALUES[payload.slabLock()]; + slabLockPosition.put(context.player(), slabLockBuf); }); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 4e375c4..89c64c4 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -5,7 +5,6 @@ import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.loader.api.FabricLoader; @@ -16,7 +15,6 @@ import net.minecraft.client.util.InputUtil; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketByteBuf; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.lwjgl.glfw.GLFW; @@ -32,9 +30,8 @@ public class AutoSlabsClient implements ClientModInitializer { public static SlabLockEnum clientSlabLockPosition = SlabLockEnum.DEFAULT_AUTOSLABS; private void sendKeybind(SlabLockEnum lockedPosition) { - PacketByteBuf buf = PacketByteBufs.create(); - buf.writeEnumConstant(lockedPosition); - ClientPlayNetworking.send(new Identifier("autoslabs", "slab_lock"), buf); + SlabLockPayload payload = new SlabLockPayload(lockedPosition.ordinal()); + ClientPlayNetworking.send(payload); } private void setKeybind(MinecraftClient client) { @@ -45,7 +42,7 @@ private void setKeybind(MinecraftClient client) { @Override public void onInitializeClient() { - ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); + ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); HudRenderCallback.EVENT.register((context, tickDelta) -> { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java index 56638b3..dad8bb9 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java @@ -14,10 +14,10 @@ public static void setup(RuntimeResourcePack AUTO_SLABS_RESOURCES, Block block) Identifier id = Registries.BLOCK.getId(block); String namespace = id.getNamespace(); String path = id.getPath(); - Identifier vertical_north_south_top_slab = new Identifier(namespace, "block/"+path + "_vertical_north_south_top"); - Identifier vertical_north_south_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_north_south_bottom"); - Identifier vertical_east_west_top_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_top"); - Identifier vertical_east_west_bottom_slab = new Identifier(namespace, "block/"+path + "_vertical_east_west_bottom"); + Identifier vertical_north_south_top_slab = Identifier.of(namespace, "block/"+path + "_vertical_north_south_top"); + Identifier vertical_north_south_bottom_slab = Identifier.of(namespace, "block/"+path + "_vertical_north_south_bottom"); + Identifier vertical_east_west_top_slab = Identifier.of(namespace, "block/"+path + "_vertical_east_west_top"); + Identifier vertical_east_west_bottom_slab = Identifier.of(namespace, "block/"+path + "_vertical_east_west_bottom"); // Yes, I know these models are incredibly inefficient, but I need to parent them this way for the best mod compatibility. JModel verticalSlabNorthSouthTopModel = JModel.model().parent(namespace+":block/"+path) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java index 49559c1..59aac64 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java @@ -31,7 +31,7 @@ public class RenderUtil { public static void drawSlabIcon(PlayerEntity player, DrawContext context, int u, int v) { ItemStack heldItem = player.getStackInHand(player.getActiveHand()); if (heldItem != null && !heldItem.isEmpty() && heldItem.getItem() instanceof BlockItem && ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock) { - context.drawTexture(new Identifier("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); + context.drawTexture(Identifier.of("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); } } @@ -60,10 +60,10 @@ private static void drawLine(MatrixStack.Entry entry, VertexConsumer vertexConsu Vector3f endRaw = new Vector3f((float) (end.x + camDif.x), (float) (end.y + camDif.y), (float) (end.z + camDif.z)); vertexConsumer.vertex(entry.getPositionMatrix(), startRaw.x, startRaw.y, startRaw.z) - .color(red, green, blue, alpha).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); + .color(red, green, blue, alpha).normal(normal.x, normal.y, normal.z); vertexConsumer.vertex(entry.getPositionMatrix(), endRaw.x, endRaw.y, endRaw.z) - .color(red, green, blue, alpha).normal(entry.getNormalMatrix(), normal.x, normal.y, normal.z).next(); + .color(red, green, blue, alpha).normal(normal.x, normal.y, normal.z); } private static void renderOverlayToDirection(BlockState state, Direction side, MatrixStack matrixStack, VertexConsumer vertexConsumer, Vec3d camDif, HitPart part, float red, float green, float blue, float alpha) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/SlabLockPayload.java b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockPayload.java new file mode 100644 index 0000000..b5d18aa --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/SlabLockPayload.java @@ -0,0 +1,18 @@ +package io.github.andrew6rant.autoslabs; + +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.util.Identifier; + +public record SlabLockPayload(int slabLock) implements CustomPayload { + public static final Identifier SLAB = Identifier.of("autoslabs", "slab_lock"); + public static final CustomPayload.Id ID = new CustomPayload.Id<>(SLAB); + public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, SlabLockPayload::slabLock, SlabLockPayload::new); + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java index a77792e..a1f2264 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java @@ -1,8 +1,9 @@ package io.github.andrew6rant.autoslabs.config; +import eu.midnightdust.lib.config.MidnightConfig; + public class CommonConfig extends MidnightConfig { @Entry public static boolean suppressStatementAPILogger = true; @Entry public static boolean dumpResources = false; @Entry public static boolean showEnhancedSlabLines = true; - } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java deleted file mode 100644 index f324034..0000000 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/MidnightConfig.java +++ /dev/null @@ -1,422 +0,0 @@ -package io.github.andrew6rant.autoslabs.config; - -import com.google.gson.ExclusionStrategy; -import com.google.gson.FieldAttributes; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.Selectable; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.tooltip.Tooltip; -import net.minecraft.client.gui.widget.*; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.screen.ScreenTexts; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; - -import java.awt.Color; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.*; -import java.util.List; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.regex.Pattern; - -/** MidnightConfig v2.4.0 by TeamMidnightDust & Motschen - * Single class config library - feel free to copy! - * Based on https://github.com/Minenash/TinyConfig - * Credits to Minenash */ - -@SuppressWarnings("unchecked") -public abstract class MidnightConfig { - private static final Pattern INTEGER_ONLY = Pattern.compile("(-?[0-9]*)"); - private static final Pattern DECIMAL_ONLY = Pattern.compile("-?([\\d]+\\.?[\\d]*|[\\d]*\\.?[\\d]+|\\.)"); - private static final Pattern HEXADECIMAL_ONLY = Pattern.compile("(-?[#0-9a-fA-F]*)"); - - private static final List entries = new ArrayList<>(); - - protected static class EntryInfo { - Field field; - Object widget; - int width; - int max; - boolean centered; - Map.Entry error; - Object defaultValue; - Object value; - String tempValue; - boolean inLimits = true; - String id; - Text name; - int index; - ClickableWidget colorButton; - } - - public static final Map> configClass = new HashMap<>(); - private static Path path; - - private static final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE).addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()).setPrettyPrinting().create(); - - public static void init(String modid, Class config) { - path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json"); - configClass.put(modid, config); - - for (Field field : config.getFields()) { - EntryInfo info = new EntryInfo(); - if ((field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) && !field.isAnnotationPresent(Server.class) && !field.isAnnotationPresent(Hidden.class)) - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) initClient(modid, field, info); - if (field.isAnnotationPresent(Comment.class)) info.centered = field.getAnnotation(Comment.class).centered(); - if (field.isAnnotationPresent(Entry.class)) - try { - info.defaultValue = field.get(null); - } catch (IllegalAccessException ignored) {} - } - try { - gson.fromJson(Files.newBufferedReader(path), config); - } - catch (Exception e) { write(modid); } - - for (EntryInfo info : entries) { - if (info.field.isAnnotationPresent(Entry.class)) - try { - info.value = info.field.get(null); - info.tempValue = info.value.toString(); - } catch (IllegalAccessException ignored) {} - } - } - @Environment(EnvType.CLIENT) - private static void initClient(String modid, Field field, EntryInfo info) { - Class type = field.getType(); - Entry e = field.getAnnotation(Entry.class); - info.width = e != null ? e.width() : 0; - info.field = field; - info.id = modid; - - if (e != null) { - if (!e.name().equals("")) info.name = Text.translatable(e.name()); - if (type == int.class) textField(info, Integer::parseInt, INTEGER_ONLY, (int) e.min(), (int) e.max(), true); - else if (type == float.class) textField(info, Float::parseFloat, DECIMAL_ONLY, (float) e.min(), (float) e.max(), false); - else if (type == double.class) textField(info, Double::parseDouble, DECIMAL_ONLY, e.min(), e.max(), false); - else if (type == String.class || type == List.class) { - info.max = e.max() == Double.MAX_VALUE ? Integer.MAX_VALUE : (int) e.max(); - textField(info, String::length, null, Math.min(e.min(), 0), Math.max(e.max(), 1), true); - } else if (type == boolean.class) { - Function func = value -> Text.translatable((Boolean) value ? "gui.yes" : "gui.no").formatted((Boolean) value ? Formatting.GREEN : Formatting.RED); - info.widget = new AbstractMap.SimpleEntry>(button -> { - info.value = !(Boolean) info.value; - button.setMessage(func.apply(info.value)); - }, func); - } else if (type.isEnum()) { - List values = Arrays.asList(field.getType().getEnumConstants()); - Function func = value -> Text.translatable(modid + ".midnightconfig." + "enum." + type.getSimpleName() + "." + info.value.toString()); - info.widget = new AbstractMap.SimpleEntry>(button -> { - int index = values.indexOf(info.value) + 1; - info.value = values.get(index >= values.size() ? 0 : index); - button.setMessage(func.apply(info.value)); - }, func); - } - } - entries.add(info); - } - - private static void textField(EntryInfo info, Function f, Pattern pattern, double min, double max, boolean cast) { - boolean isNumber = pattern != null; - info.widget = (BiFunction>) (t, b) -> s -> { - s = s.trim(); - if (!(s.isEmpty() || !isNumber || pattern.matcher(s).matches())) return false; - - Number value = 0; - boolean inLimits = false; - info.error = null; - if (!(isNumber && s.isEmpty()) && !s.equals("-") && !s.equals(".")) { - try { value = f.apply(s); } catch(NumberFormatException e){ return false; } - inLimits = value.doubleValue() >= min && value.doubleValue() <= max; - info.error = inLimits? null : new AbstractMap.SimpleEntry<>(t, Text.literal(value.doubleValue() < min ? - "§cMinimum " + (isNumber? "value" : "length") + (cast? " is " + (int)min : " is " + min) : - "§cMaximum " + (isNumber? "value" : "length") + (cast? " is " + (int)max : " is " + max))); - } - - info.tempValue = s; - t.setEditableColor(inLimits? 0xFFFFFFFF : 0xFFFF7777); - info.inLimits = inLimits; - b.active = entries.stream().allMatch(e -> e.inLimits); - - if (inLimits && info.field.getType() != List.class) - info.value = isNumber? value : s; - else if (inLimits) { - if (((List) info.value).size() == info.index) ((List) info.value).add(""); - ((List) info.value).set(info.index, Arrays.stream(info.tempValue.replace("[", "").replace("]", "").split(", ")).toList().get(0)); - } - - if (info.field.getAnnotation(Entry.class).isColor()) { - if (!s.contains("#")) s = '#' + s; - if (!HEXADECIMAL_ONLY.matcher(s).matches()) return false; - try { - info.colorButton.setMessage(Text.literal("⬛").setStyle(Style.EMPTY.withColor(Color.decode(info.tempValue).getRGB()))); - } catch (Exception ignored) {} - } - return true; - }; - } - - public static void write(String modid) { - path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json"); - try { - if (!Files.exists(path)) Files.createFile(path); - Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes()); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Environment(EnvType.CLIENT) - public static Screen getScreen(Screen parent, String modid) { - return new MidnightConfigScreen(parent, modid); - } - @Environment(EnvType.CLIENT) - public static class MidnightConfigScreen extends Screen { - protected MidnightConfigScreen(Screen parent, String modid) { - super(Text.translatable(modid + ".midnightconfig." + "title")); - this.parent = parent; - this.modid = modid; - this.translationPrefix = modid + ".midnightconfig."; - } - public final String translationPrefix; - public final Screen parent; - public final String modid; - public MidnightConfigListWidget list; - public boolean reload = false; - - // Real Time config update // - @Override - public void tick() { - super.tick(); - for (EntryInfo info : entries) { - try {info.field.set(null, info.value);} catch (IllegalAccessException ignored) {} - } - updateResetButtons(); - } - public void updateResetButtons() { - if (this.list != null) { - for (ButtonEntry entry : this.list.children()) { - if (entry.buttons != null && entry.buttons.size() > 1 && entry.buttons.get(1) instanceof ButtonWidget button) { - button.active = !Objects.equals(entry.info.value.toString(), entry.info.defaultValue.toString()); - } - } - } - } - public void loadValues() { - try { gson.fromJson(Files.newBufferedReader(path), configClass.get(modid)); } - catch (Exception e) { write(modid); } - - for (EntryInfo info : entries) { - if (info.field.isAnnotationPresent(Entry.class)) - try { - info.value = info.field.get(null); - info.tempValue = info.value.toString(); - } catch (IllegalAccessException ignored) {} - } - } - public Tooltip getTooltip(EntryInfo info) { - return Tooltip.of(I18n.hasTranslation(translationPrefix+info.field.getName()+".tooltip") ? Text.translatable(translationPrefix+info.field.getName()+".tooltip") : Text.empty()); - } - @Override - public void init() { - super.init(); - if (!reload) loadValues(); - - this.addDrawableChild(ButtonWidget.builder(ScreenTexts.CANCEL, button -> { - loadValues(); - Objects.requireNonNull(client).setScreen(parent); - }).dimensions(this.width / 2 - 154, this.height - 28, 150, 20).build()); - - ButtonWidget done = this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, (button) -> { - for (EntryInfo info : entries) - if (info.id.equals(modid)) { - try { - info.field.set(null, info.value); - } catch (IllegalAccessException ignored) {} - } - write(modid); - Objects.requireNonNull(client).setScreen(parent); - }).dimensions(this.width / 2 + 4, this.height - 28, 150, 20).build()); - - this.list = new MidnightConfigListWidget(this.client, this.width, this.height, 32, this.height - 32, 25); - if (this.client != null && this.client.world != null) this.list.setRenderBackground(false); - this.addSelectableChild(this.list); - for (EntryInfo info : entries) { - if (info.id.equals(modid)) { - Text name = Objects.requireNonNullElseGet(info.name, () -> Text.translatable(translationPrefix + info.field.getName())); - ButtonWidget resetButton = ButtonWidget.builder(Text.literal("Reset").formatted(Formatting.RED), (button -> { - info.value = info.defaultValue; - info.tempValue = info.defaultValue.toString(); - info.index = 0; - double scrollAmount = list.getScrollAmount(); - this.reload = true; - Objects.requireNonNull(client).setScreen(this); - list.setScrollAmount(scrollAmount); - })).dimensions(width - 205, 0, 40, 20).build(); - - if (info.widget instanceof Map.Entry) { - Map.Entry> widget = (Map.Entry>) info.widget; - if (info.field.getType().isEnum()) widget.setValue(value -> Text.translatable(translationPrefix + "enum." + info.field.getType().getSimpleName() + "." + info.value.toString())); - this.list.addButton(List.of(ButtonWidget.builder(widget.getValue().apply(info.value), widget.getKey()).dimensions(width - 160, 0,150, 20).tooltip(getTooltip(info)).build(),resetButton), name, info); - } else if (info.field.getType() == List.class) { - if (!reload) info.index = 0; - TextFieldWidget widget = new TextFieldWidget(textRenderer, width - 160, 0, 150, 20, Text.empty()); - widget.setMaxLength(info.width); - if (info.index < ((List)info.value).size()) widget.setText((String.valueOf(((List)info.value).get(info.index)))); - Predicate processor = ((BiFunction>) info.widget).apply(widget, done); - widget.setTextPredicate(processor); - resetButton.setWidth(20); - resetButton.setMessage(Text.literal("R").formatted(Formatting.RED)); - ButtonWidget cycleButton = ButtonWidget.builder(Text.literal(String.valueOf(info.index)).formatted(Formatting.GOLD), (button -> { - ((List)info.value).remove(""); - double scrollAmount = list.getScrollAmount(); - this.reload = true; - info.index = info.index + 1; - if (info.index > ((List)info.value).size()) info.index = 0; - Objects.requireNonNull(client).setScreen(this); - list.setScrollAmount(scrollAmount); - })).dimensions(width - 185, 0, 20, 20).build(); - widget.setTooltip(getTooltip(info)); - this.list.addButton(List.of(widget, resetButton, cycleButton), name, info); - } else if (info.widget != null) { - ClickableWidget widget; - Entry e = info.field.getAnnotation(Entry.class); - if (e.isSlider()) widget = new MidnightSliderWidget(width - 160, 0, 150, 20, Text.of(info.tempValue), (Double.parseDouble(info.tempValue)-e.min()) / (e.max() - e.min()), info); - else widget = new TextFieldWidget(textRenderer, width - 160, 0, 150, 20, null, Text.of(info.tempValue)); - if (widget instanceof TextFieldWidget textField) { - textField.setMaxLength(info.width); - textField.setText(info.tempValue); - Predicate processor = ((BiFunction>) info.widget).apply(textField, done); - textField.setTextPredicate(processor); - } - widget.setTooltip(getTooltip(info)); - if (e.isColor()) { - resetButton.setWidth(20); - resetButton.setMessage(Text.literal("R").formatted(Formatting.RED)); - ButtonWidget colorButton = ButtonWidget.builder(Text.literal("⬛"), (button -> {})).dimensions(width - 185, 0, 20, 20).build(); - try {colorButton.setMessage(Text.literal("⬛").setStyle(Style.EMPTY.withColor(Color.decode(info.tempValue).getRGB())));} catch (Exception ignored) {} - info.colorButton = colorButton; - colorButton.active = false; - this.list.addButton(List.of(widget, resetButton, colorButton), name, info); - } - else this.list.addButton(List.of(widget, resetButton), name, info); - } else { - this.list.addButton(List.of(),name, info); - } - } - updateResetButtons(); - } - - } - @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - this.renderBackground(context); - this.list.render(context, mouseX, mouseY, delta); - context.drawCenteredTextWithShadow(textRenderer, title, width / 2, 15, 0xFFFFFF); - super.render(context,mouseX,mouseY,delta); - } - } - @Environment(EnvType.CLIENT) - public static class MidnightConfigListWidget extends ElementListWidget { - TextRenderer textRenderer; - - public MidnightConfigListWidget(MinecraftClient minecraftClient, int i, int j, int k, int l, int m) { - super(minecraftClient, i, j, k, l, m); - this.centerListVertically = false; - textRenderer = minecraftClient.textRenderer; - } - @Override - public int getScrollbarPositionX() { return this.width -7; } - - public void addButton(List buttons, Text text, EntryInfo info) { - this.addEntry(new ButtonEntry(buttons, text, info)); - } - @Override - public int getRowWidth() { return 10000; } - } - public static class ButtonEntry extends ElementListWidget.Entry { - private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - public final List buttons; - private final Text text; - public final EntryInfo info; - private final List children = new ArrayList<>(); - public static final Map buttonsWithText = new HashMap<>(); - - private ButtonEntry(List buttons, Text text, EntryInfo info) { - if (!buttons.isEmpty()) buttonsWithText.put(buttons.get(0),text); - this.buttons = buttons; - this.text = text; - this.info = info; - children.addAll(buttons); - } - public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - buttons.forEach(b -> { b.setY(y); b.render(context, mouseX, mouseY, tickDelta); }); - if (text != null && (!text.getString().contains("spacer") || !buttons.isEmpty())) { - if (info.centered) context.drawTextWithShadow(textRenderer, text, (int)(MinecraftClient.getInstance().getWindow().getScaledWidth() / 2f - (textRenderer.getWidth(text) / 2f)), y + 5, 0xFFFFFF); - else context.drawTextWithShadow(textRenderer, text, 12, y + 5, 0xFFFFFF); - } - } - public List children() {return children;} - public List selectableChildren() {return children;} - } - private static class MidnightSliderWidget extends SliderWidget { - private final EntryInfo info; private final Entry e; - public MidnightSliderWidget(int x, int y, int width, int height, Text text, double value, EntryInfo info) { - super(x, y, width, height, text, value); - this.e = info.field.getAnnotation(Entry.class); - this.info = info; - } - - @Override - protected void updateMessage() { - this.setMessage(Text.of(info.tempValue)); - } - - @Override - protected void applyValue() { - if (info.field.getType() == int.class) info.value = ((Number) (e.min() + value * (e.max() - e.min()))).intValue(); - else if (info.field.getType() == double.class) info.value = Math.round((e.min() + value * (e.max() - e.min())) * (double) e.precision()) / (double) e.precision(); - else if (info.field.getType() == float.class) info.value = Math.round((e.min() + value * (e.max() - e.min())) * (float) e.precision()) / (float) e.precision(); - info.tempValue = String.valueOf(info.value); - } - } - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Entry { - int width() default 100; - double min() default Double.MIN_NORMAL; - double max() default Double.MAX_VALUE; - String name() default ""; - boolean isColor() default false; - boolean isSlider() default false; - int precision() default 100; - } - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Client {} - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Server {} - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Hidden {} - @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Comment { - boolean centered() default false; - } - - public static class HiddenAnnotationExclusionStrategy implements ExclusionStrategy { - public boolean shouldSkipClass(Class clazz) { return false; } - public boolean shouldSkipField(FieldAttributes fieldAttributes) { - return fieldAttributes.getAnnotation(Entry.class) == null; - } - } -} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java deleted file mode 100644 index a7cc90b..0000000 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/InGameHudMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.github.andrew6rant.autoslabs.mixin; - -import io.github.andrew6rant.autoslabs.RenderUtil; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.hud.InGameHud; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import static io.github.andrew6rant.autoslabs.AutoSlabsClient.clientSlabLockPosition; - -@Mixin(InGameHud.class) -public class InGameHudMixin { - @Shadow @Final private MinecraftClient client; - - @Inject( - method = "renderCrosshair(Lnet/minecraft/client/gui/DrawContext;)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/gui/DrawContext;drawTexture(Lnet/minecraft/util/Identifier;IIIIII)V", - ordinal = 0, - shift = At.Shift.AFTER - ) - ) - private void autoSlabs$renderSlabCrosshairIcons(DrawContext context, CallbackInfo ci) { - switch (clientSlabLockPosition) { - case BOTTOM_SLAB -> RenderUtil.drawSlabIcon(this.client.player, context, 0, 0); - case TOP_SLAB -> RenderUtil.drawSlabIcon(this.client.player, context, 16, 0); - case NORTH_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 0, 16); - case SOUTH_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 16, 16); - case EAST_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 0, 32); - case WEST_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(this.client.player, context, 16, 32); - } - } -} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java index d50ab57..7dca398 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java @@ -2,7 +2,6 @@ import io.github.andrew6rant.autoslabs.PlacementUtil; import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalConnectingBlock; import net.minecraft.block.PaneBlock; import net.minecraft.block.SlabBlock; import net.minecraft.fluid.FluidState; @@ -18,21 +17,32 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -@Mixin(PaneBlock.class) -public class PaneBlockMixin extends HorizontalConnectingBlock { +import static net.minecraft.block.HorizontalConnectingBlock.NORTH; +import static net.minecraft.block.HorizontalConnectingBlock.SOUTH; +import static net.minecraft.block.HorizontalConnectingBlock.WEST; +import static net.minecraft.block.HorizontalConnectingBlock.EAST; +import static net.minecraft.block.HorizontalConnectingBlock.WATERLOGGED; - public PaneBlockMixin(float radius1, float radius2, float boundingHeight1, float boundingHeight2, float collisionHeight, Settings settings) { - super(radius1, radius2, boundingHeight1, boundingHeight2, collisionHeight, settings); - } +@Mixin(PaneBlock.class) +public class PaneBlockMixin { @Inject(method = "getStateForNeighborUpdate(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/Direction;Lnet/minecraft/block/BlockState;Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", at = @At(value = "HEAD"), cancellable = true) public final void autoslabs$neighborConnectsToVerticalSlab(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos, CallbackInfoReturnable cir) { if (direction.getAxis().isHorizontal()) { - if (state.get(WATERLOGGED)) { // I'm puttting this here because if the axis isn't horizontal, Vanilla code will still properly check the waterlogged state. My inject changes that so I need this + if (state.get(WATERLOGGED)) { world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); } - cir.setReturnValue(state.with(HorizontalConnectingBlock.FACING_PROPERTIES.get(direction), PlacementUtil.calcPaneCanConnectToVerticalSlab(direction, neighborState, neighborState.isSideSolidFullSquare(world, pos, direction.getOpposite())))); + // Use the correct property for each direction + if (direction == Direction.NORTH) { + cir.setReturnValue(state.with(NORTH, PlacementUtil.calcPaneCanConnectToVerticalSlab(direction, neighborState, neighborState.isSideSolidFullSquare(world, pos, direction.getOpposite())))); + } else if (direction == Direction.SOUTH) { + cir.setReturnValue(state.with(SOUTH, PlacementUtil.calcPaneCanConnectToVerticalSlab(direction, neighborState, neighborState.isSideSolidFullSquare(world, pos, direction.getOpposite())))); + } else if (direction == Direction.WEST) { + cir.setReturnValue(state.with(WEST, PlacementUtil.calcPaneCanConnectToVerticalSlab(direction, neighborState, neighborState.isSideSolidFullSquare(world, pos, direction.getOpposite())))); + } else if (direction == Direction.EAST) { + cir.setReturnValue(state.with(EAST, PlacementUtil.calcPaneCanConnectToVerticalSlab(direction, neighborState, neighborState.isSideSolidFullSquare(world, pos, direction.getOpposite())))); + } } } diff --git a/src/main/resources/assets/autoslabs/lang/en_us.json b/src/main/resources/assets/autoslabs/lang/en_us.json index fa84460..7766f24 100644 --- a/src/main/resources/assets/autoslabs/lang/en_us.json +++ b/src/main/resources/assets/autoslabs/lang/en_us.json @@ -1,6 +1,6 @@ { "auto_slabs.midnightconfig.title": "AutoSlabs", "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?", - "auto_slabs.midnightconfig.dumpResources": "Dump generated resources on boot?" - + "auto_slabs.midnightconfig.dumpResources": "Dump generated resources on boot?", + "auto_slabs.midnightconfig.showEnhancedSlabLines": "Show enhanced slab lines?" } \ No newline at end of file diff --git a/src/main/resources/autoslabs.mixins.json b/src/main/resources/autoslabs.mixins.json index c84372a..9ed0a4b 100644 --- a/src/main/resources/autoslabs.mixins.json +++ b/src/main/resources/autoslabs.mixins.json @@ -11,7 +11,6 @@ "client": [ "BlockRenderManagerMixin", "ClientPlayerInteractionManagerMixin", - "InGameHudMixin", "WorldRendererMixin" ], "injectors": { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 0eb9f0b..0df7e1c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,7 +29,7 @@ ], "depends": { "fabricloader": ">=${loader_version}", - "minecraft": ">=1.20", + "minecraft": ">=1.21 <=1.21.1", "java": ">=17", "fabric-api": "*" } From 3541a35684014cab3c6919aaab444a6aa908d174 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 02:25:25 +0300 Subject: [PATCH 63/71] Moved utilities to util package --- .../autoslabs/{ => util}/ModelUtil.java | 2 +- .../autoslabs/{ => util}/PlacementUtil.java | 7 +++++-- .../autoslabs/{ => util}/RenderUtil.java | 20 +++++++++---------- .../autoslabs/{ => util}/Util.java | 3 ++- 4 files changed, 18 insertions(+), 14 deletions(-) rename src/main/java/io/github/andrew6rant/autoslabs/{ => util}/ModelUtil.java (99%) rename src/main/java/io/github/andrew6rant/autoslabs/{ => util}/PlacementUtil.java (98%) rename src/main/java/io/github/andrew6rant/autoslabs/{ => util}/RenderUtil.java (97%) rename src/main/java/io/github/andrew6rant/autoslabs/{ => util}/Util.java (98%) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/util/ModelUtil.java similarity index 99% rename from src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java rename to src/main/java/io/github/andrew6rant/autoslabs/util/ModelUtil.java index dad8bb9..09e53cc 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/ModelUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/util/ModelUtil.java @@ -1,4 +1,4 @@ -package io.github.andrew6rant.autoslabs; +package io.github.andrew6rant.autoslabs.util; import net.devtech.arrp.api.RuntimeResourcePack; import net.devtech.arrp.json.blockstate.JState; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java similarity index 98% rename from src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java rename to src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java index 04e1011..43e0f51 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java @@ -1,5 +1,8 @@ -package io.github.andrew6rant.autoslabs; +package io.github.andrew6rant.autoslabs.util; +import io.github.andrew6rant.autoslabs.AutoSlabs; +import io.github.andrew6rant.autoslabs.SlabLockEnum; +import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.PaneBlock; @@ -21,7 +24,7 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.RaycastContext; -import static io.github.andrew6rant.autoslabs.Util.*; +import static io.github.andrew6rant.autoslabs.util.Util.*; import static io.github.andrew6rant.autoslabs.VerticalType.*; import static net.minecraft.block.LightBlock.LEVEL_15; import static net.minecraft.block.PaneBlock.cannotConnect; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java similarity index 97% rename from src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java rename to src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java index 59aac64..10016a5 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java @@ -1,5 +1,6 @@ -package io.github.andrew6rant.autoslabs; +package io.github.andrew6rant.autoslabs.util; +import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; @@ -10,8 +11,6 @@ import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; @@ -23,16 +22,17 @@ import java.util.Objects; import static io.github.andrew6rant.autoslabs.AutoSlabsClient.clientSlabLockPosition; -import static io.github.andrew6rant.autoslabs.Util.*; +import static io.github.andrew6rant.autoslabs.util.Util.*; // massive thanks to Schauweg for helping with some of this code public class RenderUtil { - public static void drawSlabIcon(PlayerEntity player, DrawContext context, int u, int v) { - ItemStack heldItem = player.getStackInHand(player.getActiveHand()); - if (heldItem != null && !heldItem.isEmpty() && heldItem.getItem() instanceof BlockItem && ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock) { - context.drawTexture(Identifier.of("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); - } + public static void drawSlabIcon(DrawContext context, int u, int v) { + context.drawTexture(Identifier.of("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); + } + + public static void drawSlabIcon(PlayerEntity player, DrawContext context, int u, int v, int x, int y) { + context.drawTexture(Identifier.of("autoslabs","textures/gui/autoslabs_position_lock.png"), x, y, u, v, 15, 15, 64, 64); } public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult, float red, float green, float blue, float alpha) { @@ -41,7 +41,7 @@ public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexCons if (hitResult.getType() == HitResult.Type.BLOCK) { BlockHitResult result = (BlockHitResult) hitResult; - HitPart part = getHitPart(result); + Util.HitPart part = getHitPart(result); Vec3d camDif = getCameraOffset(camDif1, shape, result.getSide()); if (state.getBlock() instanceof SlabBlock) { diff --git a/src/main/java/io/github/andrew6rant/autoslabs/Util.java b/src/main/java/io/github/andrew6rant/autoslabs/util/Util.java similarity index 98% rename from src/main/java/io/github/andrew6rant/autoslabs/Util.java rename to src/main/java/io/github/andrew6rant/autoslabs/util/Util.java index dc2f78f..998e920 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/Util.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/util/Util.java @@ -1,5 +1,6 @@ -package io.github.andrew6rant.autoslabs; +package io.github.andrew6rant.autoslabs.util; +import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.Block; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; From 5657d40f9b7bd0344bbd12e2581f799d971a9c76 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 02:26:25 +0300 Subject: [PATCH 64/71] Added translations for the placement modes --- .../resources/assets/autoslabs/lang/en_us.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/autoslabs/lang/en_us.json b/src/main/resources/assets/autoslabs/lang/en_us.json index 7766f24..dcb55fd 100644 --- a/src/main/resources/assets/autoslabs/lang/en_us.json +++ b/src/main/resources/assets/autoslabs/lang/en_us.json @@ -2,5 +2,19 @@ "auto_slabs.midnightconfig.title": "AutoSlabs", "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?", "auto_slabs.midnightconfig.dumpResources": "Dump generated resources on boot?", - "auto_slabs.midnightconfig.showEnhancedSlabLines": "Show enhanced slab lines?" + "auto_slabs.midnightconfig.showEnhancedSlabLines": "Show enhanced slab lines?", + "auto_slabs.midnightconfig.showCrosshairIcon": "Crosshair Icon Visibility", + "auto_slabs.midnightconfig.enum.ShowCrosshairIcon.ALWAYS": "Always", + "auto_slabs.midnightconfig.enum.ShowCrosshairIcon.ON_CHANGE": "On Change", + "auto_slabs.midnightconfig.enum.ShowCrosshairIcon.NEVER": "Never", + "category.autoslabs.keybinds": "AutoSlabs", + "key.autoslabs.place_mode": "Toggle Placement Mode", + "text.autoslabs.slab_lock.DEFAULT_AUTOSLABS": "AutoSlabs Mode: Default", + "text.autoslabs.slab_lock.BOTTOM_SLAB": "AutoSlabs Mode: Bottom Slab", + "text.autoslabs.slab_lock.TOP_SLAB": "AutoSlabs Mode: Top Slab", + "text.autoslabs.slab_lock.NORTH_SLAB_VERTICAL": "AutoSlabs Mode: North Vertical Slab", + "text.autoslabs.slab_lock.SOUTH_SLAB_VERTICAL": "AutoSlabs Mode: South Vertical Slab", + "text.autoslabs.slab_lock.EAST_SLAB_VERTICAL": "AutoSlabs Mode: East Vertical Slab", + "text.autoslabs.slab_lock.WEST_SLAB_VERTICAL": "AutoSlabs Mode: West Vertical Slab", + "text.autoslabs.slab_lock.VANILLA_PLACEMENT": "AutoSlabs Mode: Vanilla Placement" } \ No newline at end of file From ca03fc9504fdc0021e5b2303f1c6299e6592adf9 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 03:05:16 +0300 Subject: [PATCH 65/71] Added back placement mode icons --- .../andrew6rant/autoslabs/AutoSlabs.java | 1 + .../autoslabs/AutoSlabsClient.java | 47 +++++++++++++++++-- .../autoslabs/config/CommonConfig.java | 7 ++- .../mixin/BlockRenderManagerMixin.java | 4 +- .../ClientPlayerInteractionManagerMixin.java | 2 +- .../autoslabs/mixin/PaneBlockMixin.java | 2 +- .../ServerPlayerInteractionManagerMixin.java | 2 +- .../autoslabs/mixin/SlabBlockMixin.java | 8 ++-- .../autoslabs/mixin/WorldRendererMixin.java | 2 +- .../autoslabs/util/RenderUtil.java | 5 -- 10 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index 16f51dd..a909842 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs; +import io.github.andrew6rant.autoslabs.util.Util; import net.devtech.arrp.api.RRPCallback; import net.devtech.arrp.api.RuntimeResourcePack; import net.fabricmc.api.ModInitializer; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java index 89c64c4..1de61bc 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabsClient.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs; +import io.github.andrew6rant.autoslabs.util.RenderUtil; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; @@ -18,16 +19,18 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.lwjgl.glfw.GLFW; +import static io.github.andrew6rant.autoslabs.config.CommonConfig.showCrosshairIcon; public class AutoSlabsClient implements ClientModInitializer { final ModContainer container = FabricLoader.getInstance().getModContainer("autoslabs").get(); public static KeyBinding SLAB_LOCK_KEYBIND = KeyBindingHelper.registerKeyBinding( - new KeyBinding("key.autoslabs.slab_lock", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_K, KeyBinding.GAMEPLAY_CATEGORY) + new KeyBinding("key.autoslabs.place_mode", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_K, "category.autoslabs.keybinds") ); private static Boolean validKeyPress = true; public static SlabLockEnum clientSlabLockPosition = SlabLockEnum.DEFAULT_AUTOSLABS; + private static long slabIconVisibleUntil = 0; private void sendKeybind(SlabLockEnum lockedPosition) { SlabLockPayload payload = new SlabLockPayload(lockedPosition.ordinal()); @@ -38,16 +41,14 @@ private void setKeybind(MinecraftClient client) { clientSlabLockPosition = clientSlabLockPosition.loop(client.options.sneakKey.isPressed()); sendKeybind(clientSlabLockPosition); client.player.sendMessage(Text.translatable("text.autoslabs.slab_lock."+ clientSlabLockPosition.toString()), true); + // Show icon for 3 seconds when mode changes + slabIconVisibleUntil = System.currentTimeMillis() + 3000; } @Override public void onInitializeClient() { ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("autoslabs", "distinct_slabs"), container, Text.literal("Distinct Slabs (Built-In)"), ResourcePackActivationType.DEFAULT_ENABLED); - HudRenderCallback.EVENT.register((context, tickDelta) -> { - - }); - ClientTickEvents.END_CLIENT_TICK.register(client -> { if (client.player != null) { if (SLAB_LOCK_KEYBIND.isPressed() && validKeyPress) { @@ -62,5 +63,41 @@ public void onInitializeClient() { } } }); + + HudRenderCallback.EVENT.register((drawContext, tickDelta) -> { + MinecraftClient client = MinecraftClient.getInstance(); + if (client.player == null) return; + + // Check if player is holding a slab + ItemStack heldItem = client.player.getStackInHand(client.player.getActiveHand()); + boolean holdingSlab = heldItem != null && !heldItem.isEmpty() && + heldItem.getItem() instanceof BlockItem && + ((BlockItem) heldItem.getItem()).getBlock() instanceof SlabBlock; + + // Don't show icon if not holding slab + if (!holdingSlab) return; + + // Handle different visibility modes + switch (showCrosshairIcon) { + case NEVER -> { return; } + case ON_CHANGE -> { + if (System.currentTimeMillis() > slabIconVisibleUntil) return; + } + case ALWAYS -> { + // Always show, no additional checks needed + } + } + + switch (clientSlabLockPosition) { + case DEFAULT_AUTOSLABS -> RenderUtil.drawSlabIcon(drawContext, 0, 48); + case BOTTOM_SLAB -> RenderUtil.drawSlabIcon(drawContext, 0, 0); + case TOP_SLAB -> RenderUtil.drawSlabIcon(drawContext, 16, 0); + case NORTH_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(drawContext, 0, 16); + case SOUTH_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(drawContext, 16, 16); + case EAST_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(drawContext, 0, 32); + case WEST_SLAB_VERTICAL -> RenderUtil.drawSlabIcon(drawContext, 16, 32); + case VANILLA_PLACEMENT -> RenderUtil.drawSlabIcon(drawContext, 32, 0); + } + }); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java index a1f2264..be0b32c 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java @@ -3,7 +3,12 @@ import eu.midnightdust.lib.config.MidnightConfig; public class CommonConfig extends MidnightConfig { - @Entry public static boolean suppressStatementAPILogger = true; @Entry public static boolean dumpResources = false; @Entry public static boolean showEnhancedSlabLines = true; + @Entry public static ShowCrosshairIcon showCrosshairIcon = ShowCrosshairIcon.ON_CHANGE; + public enum ShowCrosshairIcon { + ALWAYS, + ON_CHANGE, + NEVER + } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java index 6f82453..044c8ca 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/BlockRenderManagerMixin.java @@ -1,6 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.PlacementUtil; +import io.github.andrew6rant.autoslabs.util.PlacementUtil; import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; @@ -26,7 +26,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; +import static io.github.andrew6rant.autoslabs.util.Util.VERTICAL_TYPE; import static net.minecraft.block.SlabBlock.TYPE; @Mixin(BlockRenderManager.class) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java index e0f8058..059b567 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ClientPlayerInteractionManagerMixin.java @@ -1,6 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.PlacementUtil; +import io.github.andrew6rant.autoslabs.util.PlacementUtil; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java index 7dca398..0b35e33 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/PaneBlockMixin.java @@ -1,6 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.PlacementUtil; +import io.github.andrew6rant.autoslabs.util.PlacementUtil; import net.minecraft.block.BlockState; import net.minecraft.block.PaneBlock; import net.minecraft.block.SlabBlock; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java index a30b497..5b72b78 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/ServerPlayerInteractionManagerMixin.java @@ -1,6 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.PlacementUtil; +import io.github.andrew6rant.autoslabs.util.PlacementUtil; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index efd7142..6fab9d5 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -1,7 +1,7 @@ package io.github.andrew6rant.autoslabs.mixin; import io.github.andrew6rant.autoslabs.AutoSlabs; -import io.github.andrew6rant.autoslabs.PlacementUtil; +import io.github.andrew6rant.autoslabs.util.PlacementUtil; import io.github.andrew6rant.autoslabs.SlabLockEnum; import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.*; @@ -26,10 +26,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.state.StateManager; -import io.github.andrew6rant.autoslabs.Util; +import io.github.andrew6rant.autoslabs.util.Util; -import static io.github.andrew6rant.autoslabs.Util.TYPE; -import static io.github.andrew6rant.autoslabs.Util.VERTICAL_TYPE; +import static io.github.andrew6rant.autoslabs.util.Util.TYPE; +import static io.github.andrew6rant.autoslabs.util.Util.VERTICAL_TYPE; import static io.github.andrew6rant.autoslabs.VerticalType.*; import static net.minecraft.block.enums.SlabType.BOTTOM; import static net.minecraft.block.enums.SlabType.TOP; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index 497e813..204e7bd 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -1,6 +1,6 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.RenderUtil; +import io.github.andrew6rant.autoslabs.util.RenderUtil; import io.github.andrew6rant.autoslabs.SlabLockEnum; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java index 10016a5..b7a0f52 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/util/RenderUtil.java @@ -10,7 +10,6 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.Identifier; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; @@ -31,10 +30,6 @@ public static void drawSlabIcon(DrawContext context, int u, int v) { context.drawTexture(Identifier.of("autoslabs","textures/gui/autoslabs_position_lock.png"), (context.getScaledWindowWidth() - 15) / 2, (context.getScaledWindowHeight() - 42) / 2, u, v, 15, 15, 64, 64); } - public static void drawSlabIcon(PlayerEntity player, DrawContext context, int u, int v, int x, int y) { - context.drawTexture(Identifier.of("autoslabs","textures/gui/autoslabs_position_lock.png"), x, y, u, v, 15, 15, 64, 64); - } - public static void renderOverlay(MatrixStack matrices, VertexConsumer vertexConsumer, Vec3d camDif1, BlockState state, VoxelShape shape, HitResult hitResult, float red, float green, float blue, float alpha) { ClientPlayerEntity player = MinecraftClient.getInstance().player; if (Block.getBlockFromItem(player.getStackInHand(player.getActiveHand()).getItem()) instanceof SlabBlock || (Block.getBlockFromItem(player.getOffHandStack().getItem()) instanceof SlabBlock && player.getMainHandStack().isEmpty())) { From 42726b7e285fe0a1bb4082a1da5c7bb6cd1e7250 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 03:32:36 +0300 Subject: [PATCH 66/71] Updated build.yml --- .github/workflows/build.yml | 66 +++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ca3795..286eae4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,40 +1,42 @@ -# Automatically build the project and run any configured tests for every push -# and submitted pull request. This can help catch issues that only occur on -# certain platforms or Java versions, and provides a first line of defence -# against bad commits. - -name: build -on: [pull_request, push] +name: Build +on: + - pull_request + - push jobs: build: - strategy: - matrix: - # Use these Java versions - java: [ - 17, # Current Java LTS & minimum supported by Minecraft - ] - # and run on both Linux and Windows - os: [ubuntu-22.04, windows-2022] - runs-on: ${{ matrix.os }} + if: "! contains(toJSON(github.event.commits.*.message), '[ci skip]')" + runs-on: ubuntu-latest steps: - - name: checkout repository - uses: actions/checkout@v3 - - name: validate gradle wrapper - uses: gradle/wrapper-validation-action@v1 - - name: setup jdk ${{ matrix.java }} - uses: actions/setup-java@v3 + - name: Checkout repository + uses: actions/checkout@v4 + - name: Validate Gradle wrapper + uses: gradle/actions/wrapper-validation@v3 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + - name: Use Gradle cache for faster builds + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + - name: Cleanup Gradle Cache + # Remove some files from the Gradle cache, so they aren't cached by GitHub Actions. + # Restoring these files from a GitHub Actions cache might cause problems for future builds. + run: | + rm -f ~/.gradle/caches/modules-2/modules-2.lock + rm -f ~/.gradle/caches/modules-2/gc.properties + - name: Setup Gradle Wrapper Cache + uses: actions/cache@v4 with: - java-version: ${{ matrix.java }} - distribution: 'microsoft' - - name: make gradle wrapper executable - if: ${{ runner.os != 'Windows' }} - run: chmod +x ./gradlew - - name: build + path: ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + - name: Build run: ./gradlew build - - name: capture build artifacts - if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS - uses: actions/upload-artifact@v3 + - name: Upload artifacts + uses: actions/upload-artifact@v4 with: - name: Artifacts + name: AutoSlabs path: build/libs/ \ No newline at end of file From 349bd2dfa56d10e179f67262bcc1639cff163b29 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 03:44:32 +0300 Subject: [PATCH 67/71] Grant execute permission to gradlew --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 286eae4..c48defc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,6 +33,8 @@ jobs: with: path: ~/.gradle/wrapper key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + - name: Grant execute permission to gradlew + run: chmod +x gradlew - name: Build run: ./gradlew build - name: Upload artifacts From 5273081109cef1396369c082ec5d69af673a939e Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 06:31:10 +0300 Subject: [PATCH 68/71] Fixed https://github.com/Andrew6rant/Auto-Slabs/issues/41 and https://github.com/Andrew6rant/Auto-Slabs/issues/26 --- .../andrew6rant/autoslabs/AutoSlabs.java | 7 +- .../autoslabs/PlacementHandler.java | 121 ++++++++++++++++++ .../autoslabs/mixin/SlabBlockMixin.java | 10 +- .../autoslabs/util/PlacementUtil.java | 22 +--- 4 files changed, 139 insertions(+), 21 deletions(-) create mode 100644 src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java diff --git a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java index a909842..8d26499 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/AutoSlabs.java @@ -1,5 +1,7 @@ package io.github.andrew6rant.autoslabs; +import io.github.andrew6rant.autoslabs.config.CommonConfig; +import io.github.andrew6rant.autoslabs.statement.StatementStateRefresher; import io.github.andrew6rant.autoslabs.util.Util; import net.devtech.arrp.api.RRPCallback; import net.devtech.arrp.api.RuntimeResourcePack; @@ -10,9 +12,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.registry.Registries; -import io.github.andrew6rant.autoslabs.statement.StatementStateRefresher; import net.minecraft.util.Identifier; -import io.github.andrew6rant.autoslabs.config.CommonConfig; import java.util.HashMap; import java.util.Map; @@ -49,5 +49,8 @@ public void onInitialize() { SlabLockEnum slabLockBuf = SlabLockEnum.POSITION_VALUES[payload.slabLock()]; slabLockPosition.put(context.player(), slabLockBuf); }); + + // Initialize placement handler + PlacementHandler.init(); } } \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java new file mode 100644 index 0000000..63ae8be --- /dev/null +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java @@ -0,0 +1,121 @@ +package io.github.andrew6rant.autoslabs; + +import io.github.andrew6rant.autoslabs.util.PlacementUtil; +import net.fabricmc.fabric.api.event.player.UseBlockCallback; +import net.minecraft.block.BlockState; +import net.minecraft.block.SlabBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +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.Box; +import net.minecraft.world.World; + +public class PlacementHandler { + + public static void init() { + UseBlockCallback.EVENT.register(PlacementHandler::onUseBlock); + } + + private static ActionResult onUseBlock(PlayerEntity player, World world, Hand hand, BlockHitResult hitResult) { + ItemStack stack = player.getStackInHand(hand); + + // Check if this is a slab item + if (!(stack.getItem() instanceof BlockItem blockItem) || !(blockItem.getBlock() instanceof SlabBlock)) { + return ActionResult.PASS; // Let vanilla handle non-slab items + } + + // Check if player is using autoslabs mode + if (AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + return ActionResult.PASS; // Let vanilla handle vanilla placement mode + } + + // Create placement context to check if this is actually a valid slab placement + ItemPlacementContext context = new ItemPlacementContext(player, hand, stack, hitResult); + BlockPos placementPos = context.getBlockPos(); + BlockState currentState = world.getBlockState(placementPos); + + // Only handle if we're placing on a slab or empty space (not on other blocks) + boolean shouldHandle = currentState.getBlock() instanceof SlabBlock || currentState.isAir(); + + // If we shouldn't handle this placement, let vanilla handle it + if (!shouldHandle) { + return ActionResult.PASS; + } + + // Client-side: Return SUCCESS to allow animation but prevent vanilla placement + if (world.isClient) { + return ActionResult.SUCCESS; + } + + // Server-side: Handle actual placement + if (player instanceof ServerPlayerEntity serverPlayer && world instanceof ServerWorld serverWorld) { + return handleServerPlacement(serverPlayer, serverWorld, hand, hitResult, stack, blockItem); + } + + return ActionResult.PASS; + } + + private static ActionResult handleServerPlacement(ServerPlayerEntity player, ServerWorld world, Hand hand, + BlockHitResult hitResult, ItemStack stack, BlockItem blockItem) { + // Create placement context + ItemPlacementContext context = new ItemPlacementContext(player, hand, stack, hitResult); + + // Get the actual placement position (context handles offset logic) + BlockPos placementPos = context.getBlockPos(); + BlockState currentState = world.getBlockState(placementPos); + + // Check if player can place at this position + if (!player.canPlaceOn(placementPos, hitResult.getSide(), stack)) { + return ActionResult.FAIL; + } + + // Check if there's an entity in the way (simplified check) + if (!world.getOtherEntities(null, new Box(placementPos)).isEmpty()) { + return ActionResult.FAIL; + } + + // Calculate placement state + BlockState placementState = PlacementUtil.calcPlacementState(context, blockItem.getBlock().getDefaultState()); + + if (placementState == null) { + // Placement not valid + return ActionResult.FAIL; + } + + // Check if we can replace the existing block (only if it's a slab) + if (currentState.getBlock() instanceof SlabBlock && !PlacementUtil.canReplace(currentState, context)) { + return ActionResult.FAIL; + } + + // Check if the placement state can be placed at this position + if (!placementState.canPlaceAt(world, placementPos)) { + return ActionResult.FAIL; + } + + // Place the block at the correct position + boolean placed = world.setBlockState(placementPos, placementState); + + if (placed) { + // Play placement sound + world.playSound(null, placementPos, SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1.0f, 1.0f); + + // Decrement item stack (only on server) + if (!player.getAbilities().creativeMode) { + stack.decrement(1); + } + + return ActionResult.SUCCESS; + } + + return ActionResult.FAIL; + } +} \ No newline at end of file diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index 6fab9d5..e19ce35 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -1,9 +1,10 @@ package io.github.andrew6rant.autoslabs.mixin; import io.github.andrew6rant.autoslabs.AutoSlabs; -import io.github.andrew6rant.autoslabs.util.PlacementUtil; import io.github.andrew6rant.autoslabs.SlabLockEnum; import io.github.andrew6rant.autoslabs.VerticalType; +import io.github.andrew6rant.autoslabs.util.PlacementUtil; +import io.github.andrew6rant.autoslabs.util.Util; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.enums.SlabType; @@ -11,6 +12,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; +import net.minecraft.state.StateManager; import net.minecraft.util.BlockMirror; import net.minecraft.util.BlockRotation; import net.minecraft.util.hit.BlockHitResult; @@ -25,12 +27,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import net.minecraft.state.StateManager; -import io.github.andrew6rant.autoslabs.util.Util; +import static io.github.andrew6rant.autoslabs.VerticalType.*; import static io.github.andrew6rant.autoslabs.util.Util.TYPE; import static io.github.andrew6rant.autoslabs.util.Util.VERTICAL_TYPE; -import static io.github.andrew6rant.autoslabs.VerticalType.*; import static net.minecraft.block.enums.SlabType.BOTTOM; import static net.minecraft.block.enums.SlabType.TOP; @@ -53,6 +53,8 @@ private SlabBlockMixin(Settings settings) { private void autoslabs$getSlabPlacementState(ItemPlacementContext ctx, CallbackInfoReturnable cir) { if (ctx.getPlayer() == null) return; if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + // Return the calculated state for prediction (both client and server) + // The UseBlockCallback will handle actual placement cir.setReturnValue(PlacementUtil.calcPlacementState(ctx, this.getDefaultState())); } } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java b/src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java index 43e0f51..682138a 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/util/PlacementUtil.java @@ -4,7 +4,6 @@ import io.github.andrew6rant.autoslabs.SlabLockEnum; import io.github.andrew6rant.autoslabs.VerticalType; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.block.PaneBlock; import net.minecraft.block.SlabBlock; import net.minecraft.block.enums.SlabType; @@ -15,7 +14,6 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; import net.minecraft.registry.tag.BlockTags; -import net.minecraft.server.world.ServerWorld; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -24,9 +22,9 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.RaycastContext; +import static io.github.andrew6rant.autoslabs.VerticalType.EAST_WEST; +import static io.github.andrew6rant.autoslabs.VerticalType.NORTH_SOUTH; import static io.github.andrew6rant.autoslabs.util.Util.*; -import static io.github.andrew6rant.autoslabs.VerticalType.*; -import static net.minecraft.block.LightBlock.LEVEL_15; import static net.minecraft.block.PaneBlock.cannotConnect; import static net.minecraft.block.SlabBlock.TYPE; import static net.minecraft.block.SlabBlock.WATERLOGGED; @@ -284,6 +282,8 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState if (player == null) return null; BlockPos blockPos = ctx.getBlockPos(); FluidState fluidState = ctx.getWorld().getFluidState(blockPos); + + // Handle locked positions first switch (AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_AUTOSLABS)) { case BOTTOM_SLAB -> { return state.with(TYPE, SlabType.BOTTOM).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); @@ -304,21 +304,13 @@ public static BlockState calcPlacementState(ItemPlacementContext ctx, BlockState return state.with(TYPE, SlabType.BOTTOM).with(VERTICAL_TYPE, EAST_WEST).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } } + + // Handle dynamic placement based on hit position BlockState blockState = ctx.getWorld().getBlockState(blockPos); - // horrendous hack to make the client think that it can place down a slab - // without visual desync or server-client communication - // (light blocks with a level of 0 are completely invisible and also have no hitbox - // If I return null, the client does not play the "block place" animation - if (!(ctx.getWorld() instanceof ServerWorld)) { - if (blockState.isOf(state.getBlock())) { - return blockState.with(TYPE, SlabType.DOUBLE).with(WATERLOGGED, false); - } else { - return Blocks.LIGHT.getDefaultState().with(LEVEL_15, 0); - } - } Direction ctxSide = ctx.getSide(); BlockHitResult blockHitResult = PlacementUtil.calcRaycast(player); HitPart part = getHitPart(blockHitResult); + return switch (ctxSide) { case UP -> calcUpPlacement(blockState, state, part, fluidState); case DOWN -> calcDownPlacement(blockState, state, part, fluidState); From 64fcdfd628c8117e119e37653f013da9e8d416fe Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 07:28:21 +0300 Subject: [PATCH 69/71] Added a main toggle --- .../github/andrew6rant/autoslabs/PlacementHandler.java | 10 +++++----- .../andrew6rant/autoslabs/config/CommonConfig.java | 5 +++-- .../andrew6rant/autoslabs/mixin/SlabBlockMixin.java | 7 +++++-- .../autoslabs/mixin/WorldRendererMixin.java | 8 +++++--- src/main/resources/assets/autoslabs/lang/en_us.json | 2 +- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java b/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java index 63ae8be..075fd49 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/PlacementHandler.java @@ -1,5 +1,6 @@ package io.github.andrew6rant.autoslabs; +import io.github.andrew6rant.autoslabs.config.CommonConfig; import io.github.andrew6rant.autoslabs.util.PlacementUtil; import net.fabricmc.fabric.api.event.player.UseBlockCallback; import net.minecraft.block.BlockState; @@ -33,9 +34,10 @@ private static ActionResult onUseBlock(PlayerEntity player, World world, Hand ha return ActionResult.PASS; // Let vanilla handle non-slab items } - // Check if player is using autoslabs mode - if (AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { - return ActionResult.PASS; // Let vanilla handle vanilla placement mode + // Check if autoslabs is enabled and player is not using vanilla placement mode + if (!CommonConfig.enableSlabLock || + AutoSlabs.slabLockPosition.getOrDefault(player, SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + return ActionResult.PASS; // Let vanilla handle when disabled or in vanilla placement mode } // Create placement context to check if this is actually a valid slab placement @@ -46,7 +48,6 @@ private static ActionResult onUseBlock(PlayerEntity player, World world, Hand ha // Only handle if we're placing on a slab or empty space (not on other blocks) boolean shouldHandle = currentState.getBlock() instanceof SlabBlock || currentState.isAir(); - // If we shouldn't handle this placement, let vanilla handle it if (!shouldHandle) { return ActionResult.PASS; } @@ -87,7 +88,6 @@ private static ActionResult handleServerPlacement(ServerPlayerEntity player, Ser BlockState placementState = PlacementUtil.calcPlacementState(context, blockItem.getBlock().getDefaultState()); if (placementState == null) { - // Placement not valid return ActionResult.FAIL; } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java index be0b32c..0557a27 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/config/CommonConfig.java @@ -3,12 +3,13 @@ import eu.midnightdust.lib.config.MidnightConfig; public class CommonConfig extends MidnightConfig { - @Entry public static boolean dumpResources = false; - @Entry public static boolean showEnhancedSlabLines = true; + @Entry public static boolean enableSlabLock = true; @Entry public static ShowCrosshairIcon showCrosshairIcon = ShowCrosshairIcon.ON_CHANGE; public enum ShowCrosshairIcon { ALWAYS, ON_CHANGE, NEVER } + @Entry public static boolean showEnhancedSlabLines = true; + @Entry public static boolean dumpResources = false; } diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java index e19ce35..d1fc98c 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/SlabBlockMixin.java @@ -3,6 +3,7 @@ import io.github.andrew6rant.autoslabs.AutoSlabs; import io.github.andrew6rant.autoslabs.SlabLockEnum; import io.github.andrew6rant.autoslabs.VerticalType; +import io.github.andrew6rant.autoslabs.config.CommonConfig; import io.github.andrew6rant.autoslabs.util.PlacementUtil; import io.github.andrew6rant.autoslabs.util.Util; import net.minecraft.block.*; @@ -44,7 +45,8 @@ private SlabBlockMixin(Settings settings) { @Inject(at = @At("HEAD"), method = "canReplace(Lnet/minecraft/block/BlockState;Lnet/minecraft/item/ItemPlacementContext;)Z", cancellable = true) private void autoslabs$canSlabReplace(BlockState state, ItemPlacementContext ctx, CallbackInfoReturnable cir) { if (ctx.getPlayer() == null) return; - if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + if (CommonConfig.enableSlabLock && + !AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { cir.setReturnValue(PlacementUtil.canReplace(state, ctx)); } } @@ -52,7 +54,8 @@ private SlabBlockMixin(Settings settings) { @Inject(at = @At("HEAD"), method = "getPlacementState(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/block/BlockState;", cancellable = true) private void autoslabs$getSlabPlacementState(ItemPlacementContext ctx, CallbackInfoReturnable cir) { if (ctx.getPlayer() == null) return; - if (!AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { + if (CommonConfig.enableSlabLock && + !AutoSlabs.slabLockPosition.getOrDefault(ctx.getPlayer(), SlabLockEnum.DEFAULT_AUTOSLABS).equals(SlabLockEnum.VANILLA_PLACEMENT)) { // Return the calculated state for prediction (both client and server) // The UseBlockCallback will handle actual placement cir.setReturnValue(PlacementUtil.calcPlacementState(ctx, this.getDefaultState())); diff --git a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java index 204e7bd..4bbb589 100644 --- a/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java +++ b/src/main/java/io/github/andrew6rant/autoslabs/mixin/WorldRendererMixin.java @@ -1,10 +1,11 @@ package io.github.andrew6rant.autoslabs.mixin; -import io.github.andrew6rant.autoslabs.util.RenderUtil; import io.github.andrew6rant.autoslabs.SlabLockEnum; +import io.github.andrew6rant.autoslabs.util.RenderUtil; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.*; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.WorldRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.util.hit.HitResult; @@ -20,6 +21,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import static io.github.andrew6rant.autoslabs.AutoSlabsClient.clientSlabLockPosition; +import static io.github.andrew6rant.autoslabs.config.CommonConfig.enableSlabLock; import static io.github.andrew6rant.autoslabs.config.CommonConfig.showEnhancedSlabLines; @Mixin(WorldRenderer.class) @@ -38,7 +40,7 @@ public class WorldRendererMixin { @Inject(method = "drawCuboidShapeOutline(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/util/shape/VoxelShape;DDDFFFF)V", at = @At("HEAD")) private static void autoslabs$drawBlockOutline(MatrixStack matrices, VertexConsumer vertexConsumer, VoxelShape shape, double offsetX, double offsetY, double offsetZ, float red, float green, float blue, float alpha, CallbackInfo ci) { - if (!showEnhancedSlabLines) return; + if (!enableSlabLock || !showEnhancedSlabLines) return; if (clientSlabLockPosition.equals(SlabLockEnum.VANILLA_PLACEMENT)) return; Vec3d camDif = new Vec3d(offsetX, offsetY, offsetZ); if (autoslabs$captureCrosshairTarget != null && autoslabs$captureBlockState != null) { diff --git a/src/main/resources/assets/autoslabs/lang/en_us.json b/src/main/resources/assets/autoslabs/lang/en_us.json index dcb55fd..507ff9c 100644 --- a/src/main/resources/assets/autoslabs/lang/en_us.json +++ b/src/main/resources/assets/autoslabs/lang/en_us.json @@ -1,8 +1,8 @@ { "auto_slabs.midnightconfig.title": "AutoSlabs", - "auto_slabs.midnightconfig.suppressStatementAPILogger": "Suppress Statement API's Logger?", "auto_slabs.midnightconfig.dumpResources": "Dump generated resources on boot?", "auto_slabs.midnightconfig.showEnhancedSlabLines": "Show enhanced slab lines?", + "auto_slabs.midnightconfig.enableSlabLock": "Placement Master Toggle", "auto_slabs.midnightconfig.showCrosshairIcon": "Crosshair Icon Visibility", "auto_slabs.midnightconfig.enum.ShowCrosshairIcon.ALWAYS": "Always", "auto_slabs.midnightconfig.enum.ShowCrosshairIcon.ON_CHANGE": "On Change", From 02f6a5802eb0ad6f25d2b05a344be489aa93223f Mon Sep 17 00:00:00 2001 From: Triibu Nupsik Date: Mon, 7 Jul 2025 07:36:57 +0300 Subject: [PATCH 70/71] Fixed not including ARRP --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index e363ad0..e16126d 100644 --- a/build.gradle +++ b/build.gradle @@ -38,7 +38,7 @@ dependencies { modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" // ARRP from JitPack - modImplementation "com.github.TriibuNupsik:ARRP:${project.arrp_version}" + modImplementation include("com.github.TriibuNupsik:ARRP:${project.arrp_version}") // MidnightLib from TeamMidnightDust modImplementation include ("maven.modrinth:midnightlib:${project.midnightlib_version}") From 7e2a2d09fa04db00127d158ae7ee5a6304344ff7 Mon Sep 17 00:00:00 2001 From: Triibu Nupsik <57480159+TriibuNupsik@users.noreply.github.com> Date: Mon, 7 Jul 2025 07:49:36 +0300 Subject: [PATCH 71/71] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 465d257..c15aa99 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,16 @@ # Auto Slabs Automatically generate vertical slabs for every instance of SlabBlock. Supports Vanilla, as well as any mod that adds Slabs. +#### A key bind to change the placement mode `K` (Can be changed in the key binds menu) + +## Easy config with modmenu +- Placement Master Toggle: Toggles the ability to vertical slabs +- Crosshair Icon Visibility: How long will the icon be showed for after changing the placement mode +- Slab Lines: Toggles the placement guid when looking at blocks + +![config-menu](https://github.com/user-attachments/assets/7bd51ab0-819b-413e-a9f8-f7b1a1ef35fd) + + https://github.com/Andrew6rant/Auto-Slabs/assets/57331134/84e2186a-f51c-4147-b98d-9eca6235cc46 Mixed slab functionality and rendering is being tracked on the [mixedslabs branch](https://github.com/Andrew6rant/Auto-Slabs/tree/mixedslabs) of this repository