diff --git a/src/main/java/ru/betterend/blocks/basis/BlockSlab.java b/src/main/java/ru/betterend/blocks/basis/BlockSlab.java index 7209eea3..3622685d 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockSlab.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockSlab.java @@ -4,19 +4,36 @@ import java.util.Collections; import java.util.List; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.item.ItemStack; import net.minecraft.loot.context.LootContext; +import net.minecraft.util.Identifier; -public class BlockSlab extends SlabBlock { +import ru.betterend.BetterEnd; +import ru.betterend.interfaces.Patterned; + +public class BlockSlab extends SlabBlock implements Patterned { public BlockSlab(Block source) { - super(FabricBlockSettings.copyOf(source).nonOpaque()); + super(FabricBlockSettings.copyOf(source)); } @Override public List getDroppedStacks(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } + + @Override + public String blockStatePattern(String name) { + Identifier patternId = BetterEnd.makeID("patterns/blockstate/pattern_slab.json"); + return Patterned.createJson(patternId, name.replace("_slab", "")); + } + + @Override + public String modelPattern(String name) { + Identifier patternId = BetterEnd.makeID("patterns/block/pattern_slab.json"); + return Patterned.createJson(patternId, name.replace("_slab", "")); + } } diff --git a/src/main/java/ru/betterend/blocks/model/EndModelProvider.java b/src/main/java/ru/betterend/blocks/model/EndModelProvider.java index 653fbcd4..3d661303 100644 --- a/src/main/java/ru/betterend/blocks/model/EndModelProvider.java +++ b/src/main/java/ru/betterend/blocks/model/EndModelProvider.java @@ -19,7 +19,6 @@ public class EndModelProvider implements ModelResourceProvider { public static final UnbakedModel FLAVOLITE_BLOCK = new BaseBlockModel("block/flavolite"); public static final UnbakedModel FLAVOLITE_SLAB = new SlabModel("block/flavolite"); - public static final UnbakedModel FLAVOLITE_SLAB_TOP = new SlabTopModel("block/flavolite"); public static void registerModel(String path, UnbakedModel model) { MODELS.put(BetterEnd.makeID(path), model); @@ -39,7 +38,5 @@ public class EndModelProvider implements ModelResourceProvider { registerModel("item/flavolite", FLAVOLITE_BLOCK); registerModel("block/flavolite", FLAVOLITE_BLOCK); registerModel("item/flavolite_slab", FLAVOLITE_SLAB); - registerModel("block/flavolite_slab", FLAVOLITE_SLAB); - registerModel("block/flavolite_slab_top", FLAVOLITE_SLAB_TOP); } } diff --git a/src/main/java/ru/betterend/interfaces/IdentifiedContext.java b/src/main/java/ru/betterend/interfaces/IdentifiedContext.java new file mode 100644 index 00000000..d17a4a75 --- /dev/null +++ b/src/main/java/ru/betterend/interfaces/IdentifiedContext.java @@ -0,0 +1,8 @@ +package ru.betterend.interfaces; + +import net.minecraft.util.Identifier; + +public interface IdentifiedContext { + public Identifier getContextId(); + public void setContextId(Identifier id); +} diff --git a/src/main/java/ru/betterend/interfaces/Patterned.java b/src/main/java/ru/betterend/interfaces/Patterned.java new file mode 100644 index 00000000..22d06dab --- /dev/null +++ b/src/main/java/ru/betterend/interfaces/Patterned.java @@ -0,0 +1,32 @@ +package ru.betterend.interfaces; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.stream.Collectors; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.Identifier; + +public interface Patterned { + default String blockStatePattern(String name) { + return null; + } + default String modelPattern(String name) { + return null; + } + + public static String createJson(Identifier patternId, String name) { + ResourceManager resourceManager = MinecraftClient.getInstance().getResourceManager(); + try (InputStream input = resourceManager.getResource(patternId).getInputStream()) { + return new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8)) + .lines() + .collect(Collectors.joining()).replace("%name%", name); + + } catch (Exception ex) {} + + return null; + } +} diff --git a/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java b/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java new file mode 100644 index 00000000..35adb265 --- /dev/null +++ b/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java @@ -0,0 +1,23 @@ +package ru.betterend.mixin.client; + +import org.spongepowered.asm.mixin.Mixin; + +import net.minecraft.client.render.model.json.ModelVariantMap.DeserializationContext; +import net.minecraft.util.Identifier; +import ru.betterend.interfaces.IdentifiedContext; + +@Mixin(DeserializationContext.class) +public class DeserializationContextMixin implements IdentifiedContext { + + private Identifier contextId; + + @Override + public Identifier getContextId() { + return this.contextId; + } + + @Override + public void setContextId(Identifier id) { + this.contextId = id; + } +} diff --git a/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java b/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java index 100e739e..ca265947 100644 --- a/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java +++ b/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java @@ -1,23 +1,55 @@ package ru.betterend.mixin.client; 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.At.Shift; 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.block.Block; import net.minecraft.client.render.model.ModelLoader; import net.minecraft.client.render.model.json.JsonUnbakedModel; +import net.minecraft.client.render.model.json.ModelVariantMap.DeserializationContext; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + import ru.betterend.BetterEnd; +import ru.betterend.interfaces.IdentifiedContext; +import ru.betterend.interfaces.Patterned; @Mixin(ModelLoader.class) public class ModelLoaderMixin { + @Shadow + private DeserializationContext variantMapDeserializationContext; + @Inject(method = "loadModelFromJson", at = @At("HEAD"), cancellable = true) private void loadModelFromJson(Identifier id, CallbackInfoReturnable info) { if (id.getNamespace().equals(BetterEnd.MOD_ID) && id.getPath().contains("pattern")) { - System.out.println(id.getPath()); - info.cancel(); + String data[] = id.getPath().split("/"); + Identifier blockId = new Identifier(id.getNamespace(), data[1]); + Block block = Registry.BLOCK.get(blockId); + if (block instanceof Patterned) { + String pattern = ((Patterned) block).modelPattern(data[1]); + info.setReturnValue(JsonUnbakedModel.deserialize(pattern)); + info.cancel(); + } + } + } + + @Inject(method = "loadModel", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/render/model/json/ModelVariantMap$DeserializationContext;setStateFactory(Lnet/minecraft/state/StateManager;)V", + shift = Shift.AFTER)) + private void loadModel(Identifier id, CallbackInfo info) { + IdentifiedContext context = IdentifiedContext.class.cast(variantMapDeserializationContext); + if (id.getNamespace().equals(BetterEnd.MOD_ID)) { + Identifier blockstateId = new Identifier(id.getNamespace(), "pattern/" + id.getPath()); + context.setContextId(blockstateId); + } else { + context.setContextId(null); } } } diff --git a/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java b/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java new file mode 100644 index 00000000..5d7c639b --- /dev/null +++ b/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java @@ -0,0 +1,44 @@ +package ru.betterend.mixin.client; + +import java.io.Reader; +import java.io.StringReader; + +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 net.minecraft.block.Block; +import net.minecraft.client.render.model.json.ModelVariantMap; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +import ru.betterend.interfaces.IdentifiedContext; +import ru.betterend.interfaces.Patterned; + +@Mixin(ModelVariantMap.class) +public abstract class ModelVariantMapMixin { + + @Shadow + static ModelVariantMap deserialize(ModelVariantMap.DeserializationContext context, Reader reader) { + return null; + } + + @Inject(method = "deserialize", at = @At("HEAD"), cancellable = true) + private static void deserializeBlockState(ModelVariantMap.DeserializationContext context, Reader reader, CallbackInfoReturnable info) { + IdentifiedContext idContext = IdentifiedContext.class.cast(context); + Identifier id = idContext.getContextId(); + if (id != null && id.getPath().contains("pattern")) { + String[] data = id.getPath().split("/"); + Identifier blockId = new Identifier(id.getNamespace(), data[1]); + Block block = Registry.BLOCK.get(blockId); + if (block instanceof Patterned) { + String pattern = ((Patterned) block).blockStatePattern(data[1]); + idContext.setContextId(null); + info.setReturnValue(deserialize(context, new StringReader(pattern))); + info.cancel(); + } + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/flavolite_slab.json b/src/main/resources/assets/betterend/blockstates/flavolite_slab.json index 85af9593..4b9eda1d 100644 --- a/src/main/resources/assets/betterend/blockstates/flavolite_slab.json +++ b/src/main/resources/assets/betterend/blockstates/flavolite_slab.json @@ -1,13 +1,15 @@ { "variants": { "type=bottom": { - "model": "betterend:pattern/slab/flavolite" + "model": "betterend:block/flavolite_slab" }, "type=double": { "model": "betterend:block/flavolite" }, "type=top": { - "model": "betterend:pattern/slab_top/flavolite" - } + "model": "betterend:block/flavolite_slab", + "uvlock": true, + "x": 180 + } } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_block.json b/src/main/resources/assets/betterend/patterns/block/pattern_block.json new file mode 100644 index 00000000..15906496 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_button.json b/src/main/resources/assets/betterend/patterns/block/pattern_button.json new file mode 100644 index 00000000..a2e8c3ce --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_button_inventory.json b/src/main/resources/assets/betterend/patterns/block/pattern_button_inventory.json new file mode 100644 index 00000000..42b61783 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json b/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json new file mode 100644 index 00000000..d0094062 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json b/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json new file mode 100644 index 00000000..e95454c6 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json b/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json new file mode 100644 index 00000000..670e267d --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json b/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json new file mode 100644 index 00000000..837248a3 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "betterend:block/%name%_pillar_top", + "side": "betterend:block/%name%_pillar_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json new file mode 100644 index 00000000..ef2fec3b --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json new file mode 100644 index 00000000..9fe8a247 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_slab.json b/src/main/resources/assets/betterend/patterns/block/pattern_slab.json new file mode 100644 index 00000000..d5f30423 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_small_tiles.json b/src/main/resources/assets/betterend/patterns/block/pattern_small_tiles.json new file mode 100644 index 00000000..a0c1a8eb --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_small_tiles.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_small_tiles" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json b/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json new file mode 100644 index 00000000..61115016 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_tile.json b/src/main/resources/assets/betterend/patterns/block/pattern_tile.json new file mode 100644 index 00000000..632959b1 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_tile.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_tile" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json new file mode 100644 index 00000000..fdb5d169 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json new file mode 100644 index 00000000..2c3195b1 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json new file mode 100644 index 00000000..2c228e96 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json new file mode 100644 index 00000000..4eeefe22 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json new file mode 100644 index 00000000..79dd6729 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json new file mode 100644 index 00000000..a65801cf --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "betterend:block/%name%_button" + }, + "face=floor,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json new file mode 100644 index 00000000..fddcfc6c --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=x": { "model": "betterend:block/%name%_pillar", "x": 90, "y": 90 }, + "axis=y": { "model": "betterend:block/%name%_pillar" }, + "axis=z": { "model": "betterend:block/%name%_pillar", "x": 90 } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json new file mode 100644 index 00000000..f8ad4900 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "betterend:block/%name%_pressure_plate_up" + }, + "powered=true": { + "model": "betterend:block/%name%_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json new file mode 100644 index 00000000..ddaf9e4f --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json @@ -0,0 +1,15 @@ +{ + "variants": { + "type=bottom": { + "model": "betterend:pattern/%name%_slab" + }, + "type=double": { + "model": "betterend:block/%name%" + }, + "type=top": { + "model": "betterend:pattern/%name%_slab", + "uvlock": true, + "x": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_small_tiles.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_small_tiles.json new file mode 100644 index 00000000..5913e0d4 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_small_tiles.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%_small_tiles" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json new file mode 100644 index 00000000..e0a17faf --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_tile.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_tile.json new file mode 100644 index 00000000..4dc91e5e --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_tile.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%_tile" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json new file mode 100644 index 00000000..115da727 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/%name%_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_block.json b/src/main/resources/assets/betterend/patterns/item/pattern_block.json new file mode 100644 index 00000000..92b1fef5 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_block.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_brick_slab.json b/src/main/resources/assets/betterend/patterns/item/pattern_brick_slab.json new file mode 100644 index 00000000..aee61fa8 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_brick_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_brick_stairs.json b/src/main/resources/assets/betterend/patterns/item/pattern_brick_stairs.json new file mode 100644 index 00000000..89ecaa54 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_brick_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_brick_wall.json b/src/main/resources/assets/betterend/patterns/item/pattern_brick_wall.json new file mode 100644 index 00000000..8719d7c1 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_brick_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_bricks.json b/src/main/resources/assets/betterend/patterns/item/pattern_bricks.json new file mode 100644 index 00000000..14d8a30b --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_bricks" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_button.json b/src/main/resources/assets/betterend/patterns/item/pattern_button.json new file mode 100644 index 00000000..3dc32368 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_button.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_pillar.json b/src/main/resources/assets/betterend/patterns/item/pattern_pillar.json new file mode 100644 index 00000000..0f7de019 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_pillar.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_pillar" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_plate.json b/src/main/resources/assets/betterend/patterns/item/pattern_plate.json new file mode 100644 index 00000000..484a02f9 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_pressure_plate_up" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_slab.json b/src/main/resources/assets/betterend/patterns/item/pattern_slab.json new file mode 100644 index 00000000..0d93f4ca --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_small_tiles.json b/src/main/resources/assets/betterend/patterns/item/pattern_small_tiles.json new file mode 100644 index 00000000..2d8006df --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_small_tiles.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_small_tiles" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_stairs.json b/src/main/resources/assets/betterend/patterns/item/pattern_stairs.json new file mode 100644 index 00000000..0f51c6ec --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_tile.json b/src/main/resources/assets/betterend/patterns/item/pattern_tile.json new file mode 100644 index 00000000..4b981468 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_tile.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_tile" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_wall.json b/src/main/resources/assets/betterend/patterns/item/pattern_wall.json new file mode 100644 index 00000000..eee0e6ae --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/betterend.mixins.client.json b/src/main/resources/betterend.mixins.client.json index 427e0d6e..9fd09093 100644 --- a/src/main/resources/betterend.mixins.client.json +++ b/src/main/resources/betterend.mixins.client.json @@ -8,6 +8,8 @@ "BackgroundRendererMixin", "ClientRecipeBookMixin", "ModelLoaderMixin", + "ModelVariantMapMixin", + "DeserializationContextMixin", "ClientPlayNetworkHandlerMixin", "MinecraftClientMixin" ],