From 9fc9370adcc33532db2b5d89426f06a6f53ad726 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 10 Dec 2020 20:59:29 +0300 Subject: [PATCH] Glowing pillar prototype --- .../betterend/blocks/BlockBlueVineSeed.java | 2 +- .../blocks/BlockGlowingPillarLuminophor.java | 52 ++++++++ .../blocks/BlockGlowingPillarRoots.java | 23 ++++ .../blocks/BlockGlowingPillarSeed.java | 55 ++++++++ .../blocks/BlockHelixTreeLuminophor.java | 19 --- .../java/ru/betterend/registry/EndBlocks.java | 10 +- .../java/ru/betterend/util/BlocksHelper.java | 9 ++ .../blockstates/glowing_pillar_leaves.json | 26 ++++ .../glowing_pillar_luminophor.json | 7 + .../blockstates/glowing_pillar_roots.json | 7 + .../blockstates/helix_tree_luminophor.json | 7 - .../block/glowing_pillar_leaves_01.json | 97 ++++++++++++++ .../block/glowing_pillar_leaves_02.json | 64 ++++++++++ .../block/glowing_pillar_leaves_03.json | 64 ++++++++++ .../block/glowing_pillar_leaves_up.json | 120 ++++++++++++++++++ ...or.json => glowing_pillar_luminophor.json} | 2 +- .../block/glowing_pillar_roots_both.json | 6 + .../block/glowing_pillar_roots_bottom.json | 6 + .../block/glowing_pillar_roots_top.json | 6 + .../models/block/helix_tree_leaves.json | 2 +- .../models/item/glowing_pillar_leaves.json | 6 + .../item/glowing_pillar_luminophor.json | 3 + .../textures/block/glowing_pillar_leaves.png | Bin 0 -> 1857 bytes ...phor.png => glowing_pillar_luminophor.png} | Bin .../block/glowing_pillar_roots_both.png | Bin 0 -> 2285 bytes .../block/glowing_pillar_roots_bottom.png | Bin 0 -> 2080 bytes .../block/glowing_pillar_roots_top.png | Bin 0 -> 2278 bytes 27 files changed, 562 insertions(+), 31 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockGlowingPillarLuminophor.java create mode 100644 src/main/java/ru/betterend/blocks/BlockGlowingPillarRoots.java create mode 100644 src/main/java/ru/betterend/blocks/BlockGlowingPillarSeed.java delete mode 100644 src/main/java/ru/betterend/blocks/BlockHelixTreeLuminophor.java create mode 100644 src/main/resources/assets/betterend/blockstates/glowing_pillar_leaves.json create mode 100644 src/main/resources/assets/betterend/blockstates/glowing_pillar_luminophor.json create mode 100644 src/main/resources/assets/betterend/blockstates/glowing_pillar_roots.json delete mode 100644 src/main/resources/assets/betterend/blockstates/helix_tree_luminophor.json create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_01.json create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_02.json create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_03.json create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_up.json rename src/main/resources/assets/betterend/models/block/{helix_tree_luminophor.json => glowing_pillar_luminophor.json} (50%) create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_roots_both.json create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_roots_bottom.json create mode 100644 src/main/resources/assets/betterend/models/block/glowing_pillar_roots_top.json create mode 100644 src/main/resources/assets/betterend/models/item/glowing_pillar_leaves.json create mode 100644 src/main/resources/assets/betterend/models/item/glowing_pillar_luminophor.json create mode 100644 src/main/resources/assets/betterend/textures/block/glowing_pillar_leaves.png rename src/main/resources/assets/betterend/textures/block/{helix_tree_luminophor.png => glowing_pillar_luminophor.png} (100%) create mode 100644 src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_both.png create mode 100644 src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_top.png diff --git a/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java b/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java index feaedc89..6b99ee18 100644 --- a/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java +++ b/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java @@ -44,6 +44,6 @@ public class BlockBlueVineSeed extends BlockPlantWithAge { @Override protected boolean isTerrain(BlockState state) { - return state.getBlock() == EndBlocks.END_MOSS || state.getBlock() == EndBlocks.END_MYCELIUM; + return state.isOf(EndBlocks.END_MOSS) || state.isOf(EndBlocks.END_MYCELIUM); } } diff --git a/src/main/java/ru/betterend/blocks/BlockGlowingPillarLuminophor.java b/src/main/java/ru/betterend/blocks/BlockGlowingPillarLuminophor.java new file mode 100644 index 00000000..1ad2970f --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockGlowingPillarLuminophor.java @@ -0,0 +1,52 @@ +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.blocks.basis.BlockBase; +import ru.betterend.registry.EndBlocks; + +public class BlockGlowingPillarLuminophor extends BlockBase { + public static final BooleanProperty NATURAL = BooleanProperty.of("natural"); + + public BlockGlowingPillarLuminophor() { + super(FabricBlockSettings.of(Material.LEAVES) + .materialColor(MaterialColor.ORANGE) + .breakByTool(FabricToolTags.SHEARS) + .sounds(BlockSoundGroup.GRASS) + .strength(0.2F) + .luminance(15)); + this.setDefaultState(this.stateManager.getDefaultState().with(NATURAL, false)); + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return state.get(NATURAL) ? world.getBlockState(pos.down()).isOf(EndBlocks.GLOWING_PILLAR_ROOTS) : true; + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (!canPlaceAt(state, world, pos)) { + return Blocks.AIR.getDefaultState(); + } + else { + return state; + } + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(NATURAL); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockGlowingPillarRoots.java b/src/main/java/ru/betterend/blocks/BlockGlowingPillarRoots.java new file mode 100644 index 00000000..e393ee96 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockGlowingPillarRoots.java @@ -0,0 +1,23 @@ +package ru.betterend.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.basis.BlockUpDownPlant; +import ru.betterend.registry.EndBlocks; + +public class BlockGlowingPillarRoots extends BlockUpDownPlant { + public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(SHAPE); + } + + @Override + protected boolean isTerrain(BlockState state) { + return state.isOf(EndBlocks.AMBER_MOSS); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockGlowingPillarSeed.java b/src/main/java/ru/betterend/blocks/BlockGlowingPillarSeed.java new file mode 100644 index 00000000..9efc0fd4 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockGlowingPillarSeed.java @@ -0,0 +1,55 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.minecraft.block.BlockState; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockPos.Mutable; +import net.minecraft.util.math.Direction; +import net.minecraft.world.StructureWorldAccess; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.basis.BlockPlantWithAge; +import ru.betterend.registry.EndBlocks; +import ru.betterend.util.BlocksHelper; +import ru.betterend.util.MHelper; + +public class BlockGlowingPillarSeed extends BlockPlantWithAge { + @Override + public void growAdult(StructureWorldAccess world, Random random, BlockPos pos) { + int height = MHelper.randRange(1, 2, random); + int h = BlocksHelper.upRay(world, pos, height + 2); + if (h < height) { + return; + } + + Mutable mut = new Mutable().set(pos); + BlockState roots = EndBlocks.GLOWING_PILLAR_ROOTS.getDefaultState(); + if (height < 2) { + BlocksHelper.setWithUpdate(world, mut, roots.with(BlockProperties.TRIPLE_SHAPE, TripleShape.MIDDLE)); + mut.move(Direction.UP); + } + else { + BlocksHelper.setWithUpdate(world, mut, roots.with(BlockProperties.TRIPLE_SHAPE, TripleShape.BOTTOM)); + mut.move(Direction.UP); + BlocksHelper.setWithUpdate(world, mut, roots.with(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP)); + mut.move(Direction.UP); + } + BlocksHelper.setWithUpdate(world, mut, EndBlocks.GLOWING_PILLAR_LUMINOPHOR.getDefaultState().with(BlockBlueVineLantern.NATURAL, true)); + for (Direction dir: BlocksHelper.DIRECTIONS) { + pos = mut.offset(dir); + if (world.isAir(pos)) { + BlocksHelper.setWithUpdate(world, pos, EndBlocks.GLOWING_PILLAR_LEAVES.getDefaultState().with(Properties.FACING, dir)); + } + } + mut.move(Direction.UP); + if (world.isAir(mut)) { + BlocksHelper.setWithUpdate(world, mut, EndBlocks.GLOWING_PILLAR_LEAVES.getDefaultState().with(Properties.FACING, Direction.UP)); + } + } + + @Override + protected boolean isTerrain(BlockState state) { + return state.isOf(EndBlocks.AMBER_MOSS); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockHelixTreeLuminophor.java b/src/main/java/ru/betterend/blocks/BlockHelixTreeLuminophor.java deleted file mode 100644 index 4097916e..00000000 --- a/src/main/java/ru/betterend/blocks/BlockHelixTreeLuminophor.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.betterend.blocks; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.block.Material; -import net.minecraft.block.MaterialColor; -import net.minecraft.sound.BlockSoundGroup; -import ru.betterend.blocks.basis.BlockBase; - -public class BlockHelixTreeLuminophor extends BlockBase { - public BlockHelixTreeLuminophor() { - super(FabricBlockSettings.of(Material.LEAVES) - .materialColor(MaterialColor.ORANGE) - .breakByTool(FabricToolTags.SHEARS) - .sounds(BlockSoundGroup.GRASS) - .strength(0.2F) - .luminance(15)); - } -} diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 1c052c0e..493c7bb9 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -29,7 +29,9 @@ import ru.betterend.blocks.BlockEndLotusStem; import ru.betterend.blocks.BlockEndstoneDust; import ru.betterend.blocks.BlockGlowingMoss; import ru.betterend.blocks.BlockHelixTreeLeaves; -import ru.betterend.blocks.BlockHelixTreeLuminophor; +import ru.betterend.blocks.BlockGlowingPillarLuminophor; +import ru.betterend.blocks.BlockGlowingPillarRoots; +import ru.betterend.blocks.BlockGlowingPillarSeed; import ru.betterend.blocks.BlockHelixTreeSapling; import ru.betterend.blocks.BlockHydralux; import ru.betterend.blocks.BlockHydraluxPetal; @@ -158,7 +160,6 @@ public class EndBlocks { public static final Block HELIX_TREE_SAPLING = registerBlock("helix_tree_sapling", new BlockHelixTreeSapling()); public static final Block HELIX_TREE_LEAVES = registerBlock("helix_tree_leaves", new BlockHelixTreeLeaves()); - public static final Block HELIX_TREE_LUMINOPHOR = registerBlock("helix_tree_luminophor", new BlockHelixTreeLuminophor()); public static final WoodenMaterial HELIX_TREE = new WoodenMaterial("helix_tree", MaterialColor.GRAY, MaterialColor.ORANGE); // Small Plants // @@ -180,6 +181,11 @@ public class EndBlocks { public static final Block LANCELEAF_SEED = registerBlock("lanceleaf_seed", new BlockLanceleafSeed()); public static final Block LANCELEAF = registerBlockNI("lanceleaf", new BlockLanceleaf()); + public static final Block GLOWING_PILLAR_SEED = registerBlock("glowing_pillar_seed", new BlockGlowingPillarSeed()); + public static final Block GLOWING_PILLAR_ROOTS = registerBlockNI("glowing_pillar_roots", new BlockGlowingPillarRoots()); + public static final Block GLOWING_PILLAR_LUMINOPHOR = registerBlock("glowing_pillar_luminophor", new BlockGlowingPillarLuminophor()); + public static final Block GLOWING_PILLAR_LEAVES = registerBlock("glowing_pillar_leaves", new BlockFur(GLOWING_PILLAR_SEED, 15, 3)); + public static final Block BUBBLE_CORAL = registerBlock("bubble_coral", new BlockBubbleCoral()); public static final Block MENGER_SPONGE = registerBlock("menger_sponge", new BlockMengerSponge()); public static final Block MENGER_SPONGE_WET = registerBlock("menger_sponge_wet", new BlockMengerSpongeWet()); diff --git a/src/main/java/ru/betterend/util/BlocksHelper.java b/src/main/java/ru/betterend/util/BlocksHelper.java index d2e2f652..f49c5c21 100644 --- a/src/main/java/ru/betterend/util/BlocksHelper.java +++ b/src/main/java/ru/betterend/util/BlocksHelper.java @@ -38,6 +38,7 @@ public class BlocksHelper { public static final int FLAG_IGNORE_OBSERVERS = 16; public static final int SET_SILENT = FLAG_UPDATE_BLOCK | FLAG_IGNORE_OBSERVERS | FLAG_SEND_CLIENT_CHANGES; + public static final int SET_OBSERV = FLAG_UPDATE_BLOCK | FLAG_SEND_CLIENT_CHANGES; public static final Direction[] HORIZONTAL = makeHorizontal(); public static final Direction[] DIRECTIONS = Direction.values(); @@ -66,6 +67,14 @@ public class BlocksHelper { public static void setWithoutUpdate(WorldAccess world, BlockPos pos, Block block) { world.setBlockState(pos, block.getDefaultState(), SET_SILENT); } + + public static void setWithUpdate(WorldAccess world, BlockPos pos, BlockState state) { + world.setBlockState(pos, state, SET_OBSERV); + } + + public static void setWithUpdate(WorldAccess world, BlockPos pos, Block block) { + world.setBlockState(pos, block.getDefaultState(), SET_OBSERV); + } public static int upRay(WorldAccess world, BlockPos pos, int maxDist) { int length = 0; diff --git a/src/main/resources/assets/betterend/blockstates/glowing_pillar_leaves.json b/src/main/resources/assets/betterend/blockstates/glowing_pillar_leaves.json new file mode 100644 index 00000000..ee13b531 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/glowing_pillar_leaves.json @@ -0,0 +1,26 @@ +{ + "variants": { + "facing=north": [ + { "model": "betterend:block/glowing_pillar_leaves_01", "y": 180 }, + { "model": "betterend:block/glowing_pillar_leaves_02", "y": 180 }, + { "model": "betterend:block/glowing_pillar_leaves_03", "y": 180 } + ], + "facing=south": [ + { "model": "betterend:block/glowing_pillar_leaves_01" }, + { "model": "betterend:block/glowing_pillar_leaves_02" }, + { "model": "betterend:block/glowing_pillar_leaves_03" } + ], + "facing=east": [ + { "model": "betterend:block/glowing_pillar_leaves_01", "y": 270 }, + { "model": "betterend:block/glowing_pillar_leaves_02", "y": 270 }, + { "model": "betterend:block/glowing_pillar_leaves_03", "y": 270 } + ], + "facing=west": [ + { "model": "betterend:block/glowing_pillar_leaves_01", "y": 90 }, + { "model": "betterend:block/glowing_pillar_leaves_02", "y": 90 }, + { "model": "betterend:block/glowing_pillar_leaves_03", "y": 90 } + ], + "facing=up": { "model": "betterend:block/glowing_pillar_leaves_up" }, + "facing=down": { "model": "betterend:block/glowing_pillar_leaves_up", "x": 180 } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/glowing_pillar_luminophor.json b/src/main/resources/assets/betterend/blockstates/glowing_pillar_luminophor.json new file mode 100644 index 00000000..4606aaf6 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/glowing_pillar_luminophor.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/glowing_pillar_luminophor" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/glowing_pillar_roots.json b/src/main/resources/assets/betterend/blockstates/glowing_pillar_roots.json new file mode 100644 index 00000000..2a362c09 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/glowing_pillar_roots.json @@ -0,0 +1,7 @@ +{ + "variants": { + "shape=top": { "model": "betterend:block/glowing_pillar_roots_top" }, + "shape=middle": { "model": "betterend:block/glowing_pillar_roots_both" }, + "shape=bottom": { "model": "betterend:block/glowing_pillar_roots_bottom" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/helix_tree_luminophor.json b/src/main/resources/assets/betterend/blockstates/helix_tree_luminophor.json deleted file mode 100644 index 9e8a627a..00000000 --- a/src/main/resources/assets/betterend/blockstates/helix_tree_luminophor.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "betterend:block/helix_tree_luminophor" - } - } -} diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_01.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_01.json new file mode 100644 index 00000000..69d95184 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_01.json @@ -0,0 +1,97 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "texture": "betterend:block/glowing_pillar_leaves", + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 3, 15, 0 ], + "to": [ 19, 15.001, 16 ], + "rotation": { "origin": [ 3, 15, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 1, 11, 0 ], + "to": [ 17, 11.001, 16 ], + "rotation": { "origin": [ 1, 11, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 1, -10, 0 ], + "to": [ 17, 6, 0.001 ], + "rotation": { "origin": [ 1, 6, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -3, 13.5, 0 ], + "to": [ 13, 13.501, 16 ], + "rotation": { "origin": [ -3, 13.5, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 1, 1, 0 ], + "to": [ 17, 1.001, 16 ], + "rotation": { "origin": [ 1, 1, 0 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -1, -9, 0 ], + "to": [ 15, 7, 0.001 ], + "rotation": { "origin": [ -1, 7, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -1.5, 16, 0 ], + "to": [ 14.5, 16.001, 16 ], + "rotation": { "origin": [ -1.5, 16, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -2, 0.5, 0 ], + "to": [ 14, 0.501, 16 ], + "rotation": { "origin": [ -2, 0.5, 0 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_02.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_02.json new file mode 100644 index 00000000..ba9365f1 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_02.json @@ -0,0 +1,64 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "texture": "betterend:block/glowing_pillar_leaves", + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 3, 15, 0 ], + "to": [ 19, 15.001, 16 ], + "rotation": { "origin": [ 3, 15, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -15, 0 ], + "to": [ 16, 1, 0.001 ], + "rotation": { "origin": [ 0, 1, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -2, -12, 0 ], + "to": [ 14, 4, 0.001 ], + "rotation": { "origin": [ -2, 4, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -9, 0 ], + "to": [ 16, 7, 0.001 ], + "rotation": { "origin": [ 0, 7, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -3, 0 ], + "to": [ 16, 13, 0.001 ], + "rotation": { "origin": [ 0, 13, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_03.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_03.json new file mode 100644 index 00000000..4bb2058f --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_03.json @@ -0,0 +1,64 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "texture": "betterend:block/glowing_pillar_leaves", + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ -1, 0, 0 ], + "to": [ 15, 16, 0.001 ], + "rotation": { "origin": [ -1, 16, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 2, -3, 0 ], + "to": [ 18, 13, 0.001 ], + "rotation": { "origin": [ 2, 13, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -8, 0 ], + "to": [ 16, 8, 0.001 ], + "rotation": { "origin": [ 0, 8, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -3, -12, 0 ], + "to": [ 13, 4, 0.001 ], + "rotation": { "origin": [ -3, 4, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 3, -15, 0 ], + "to": [ 19, 1, 0.001 ], + "rotation": { "origin": [ 3, 1, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_up.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_up.json new file mode 100644 index 00000000..6c9c9559 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_leaves_up.json @@ -0,0 +1,120 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/glowing_pillar_leaves", + "texture": "betterend:block/glowing_pillar_leaves", + "spore": "betterend:block/glowing_pillar_leaves" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -10 ], + "to": [ 16, 0, 6 ], + "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 10 ], + "to": [ 16, 0.001, 26 ], + "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 10, -0.001, 0 ], + "to": [ 26, 0, 16 ], + "rotation": { "origin": [ 10, 0, 16 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -10, 0, 2 ], + "to": [ 6, 0.001, 18 ], + "rotation": { "origin": [ 6, 0, 18 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneX6", + "from": [ 0, 0, -6.5 ], + "to": [ 0.001, 16, 16 ], + "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX6", + "from": [ -6.5, 0, 15.999 ], + "to": [ 16, 16, 16 ], + "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 9, -0.001, 0 ], + "to": [ 25, 0, 16 ], + "rotation": { "origin": [ 9, 0, 16 ], "axis": "z", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -9, 0, 2 ], + "to": [ 7, 0.001, 18 ], + "rotation": { "origin": [ 7, 0, 18 ], "axis": "z", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/helix_tree_luminophor.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_luminophor.json similarity index 50% rename from src/main/resources/assets/betterend/models/block/helix_tree_luminophor.json rename to src/main/resources/assets/betterend/models/block/glowing_pillar_luminophor.json index 633bd7fc..359bb01b 100644 --- a/src/main/resources/assets/betterend/models/block/helix_tree_luminophor.json +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_luminophor.json @@ -1,6 +1,6 @@ { "parent": "betterend:block/cube_noshade", "textures": { - "texture": "betterend:block/helix_tree_luminophor" + "texture": "betterend:block/glowing_pillar_luminophor" } } diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_both.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_both.json new file mode 100644 index 00000000..c8248867 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_both.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/glowing_pillar_roots_both" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_bottom.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_bottom.json new file mode 100644 index 00000000..379bdb39 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/glowing_pillar_roots_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_top.json b/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_top.json new file mode 100644 index 00000000..1b0564e0 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/glowing_pillar_roots_top.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/glowing_pillar_roots_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/helix_tree_leaves.json b/src/main/resources/assets/betterend/models/block/helix_tree_leaves.json index 741d59cf..b1fb61a1 100644 --- a/src/main/resources/assets/betterend/models/block/helix_tree_leaves.json +++ b/src/main/resources/assets/betterend/models/block/helix_tree_leaves.json @@ -1,5 +1,5 @@ { - "parent": "betterend:block/tint_cube_noshade", + "parent": "betterend:block/tint_cube", "textures": { "texture": "betterend:block/helix_tree_leaves" } diff --git a/src/main/resources/assets/betterend/models/item/glowing_pillar_leaves.json b/src/main/resources/assets/betterend/models/item/glowing_pillar_leaves.json new file mode 100644 index 00000000..568fef26 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/glowing_pillar_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:block/glowing_pillar_leaves" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/glowing_pillar_luminophor.json b/src/main/resources/assets/betterend/models/item/glowing_pillar_luminophor.json new file mode 100644 index 00000000..10c6b79d --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/glowing_pillar_luminophor.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/glowing_pillar_luminophor" +} diff --git a/src/main/resources/assets/betterend/textures/block/glowing_pillar_leaves.png b/src/main/resources/assets/betterend/textures/block/glowing_pillar_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..146aa766a231c5a095e0f87c7f7a4657eae4389a GIT binary patch literal 1857 zcmbVNZA{!`94`(Q+zm4Y7nwSm&Nt?IecIj&ZMYG*Lpj4CFPGg-U7*)Kch_)zp)K4U zF;h%5?8D+*SPVpTN{D_CUt-imgNm5UY>}YG=?6zNbMi%4Hea@A6rUbYufA6 z_V@q&Uw;4Re}~%J9<121V+)316~UH3C%SL5uky|4x8~Os0o`uYTlSk6=BTu<5^U^+ z+c2zbRt`t4XsDGJHN`1NS`0cfijL42R^O1(1+f=ecnl_F)kmEF@M8j(B_9!Shd@a8 z!=&6YXuz()wy-$ZD{>Oiuoth-@Q6TxmVjrJlxp%BACcqb(b|4Z5qJ(__4Jx~?M$;y%}7u*$8i*3D25>sf;6+LC1gm|+*M!*KvOhi-I6sGw;6?))^GU; z6zOUTie98u&3u_q!KjR&Q?wJo#aI%0T`b8#NRu4Lz&NafqCnRb>;szEZ;M;7 zmyo>+)WujYjFBG1MACu_kb=wOAw6y;E{Yt@0I#=T|F9vW%_XF+o5$XAc31E%vWfJ{ z<~Kzb?8~oGGM;M$UJ&gD_YtD4ER=}+Yk8dtY%GIS+H?{k(rd`Q3Ny91l@<)xm_XIq zNJmjui{BImt{wfx^jk0bbvp1mqt6#tObTiOqM1n%c0QCnT~?)`{;OK<+ZB_j07v7^ zUKZyndMHk2s3K|u&E3*B0|bVZ+!YKohU-o(b|7cv(aD9kthDBo%{6J5v_fGTyZQ6KIsNaz5jg1I+ip3-=yc| z;NqRpDgVyygUU@mjXphDo>~6W@pCXbzImd$r|&&*elA`5(%+8_-|a|FM29xbwBhY|oLE`I5m8CiibTxqUg=viyFR()i8cJ(q`Gjp$P) zTW|UNi}9L!#-4lT^36?E6)ZP>!`ZUqubh6px)%KP=nog~nErkwJG|qqeI0OY=3Bge jlKbxKy=QLsHl6a88r|C>@9ti(|Kx(rZGktMdY<|ht$=D# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/helix_tree_luminophor.png b/src/main/resources/assets/betterend/textures/block/glowing_pillar_luminophor.png similarity index 100% rename from src/main/resources/assets/betterend/textures/block/helix_tree_luminophor.png rename to src/main/resources/assets/betterend/textures/block/glowing_pillar_luminophor.png diff --git a/src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_both.png b/src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_both.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab44e1c394695a420794e8e4c72e492e37d9075 GIT binary patch literal 2285 zcmbVO3s4kg96ykNK!lP4wb66&mAbbN?zwv4afia>Ap#?4D(&rl$1U95p0^8kV7@?n zgfcwD9y;RqD9r|woGk4j4P{Ew)Sx-mOh%H*j8IWbCTQQn-I)!VQh9{v3ev|WyZ}eBd~F4 zWp0pNmXX7h6)`#%Nluc_^-_?)0YqBvb=aK(<<%oYycAqZ+ZZArf`~`9)%}S!Mh7ELZ{PVIEj%Y3K6JK>J(`&>J$?E3??8jZq6lgyi+bQ(iXm0 z)FUv`;S?OM0IgH-l?fIM^U^MiP~cKZLqL`Z;9SLS`;c>%!GIk&fKwD8mIz>BmCWV< zd_-D@BY+mf)DjqxFSilVLQbg*U|B%mi`@)JErA{r{DHY_yvPeS{sDOeehy^gqKs}p zi@ZCB=k0!>GW{%aqfrt@E1!|eIa%H#JTE!&*#HwQ0zE?FB#sg!O5iypPLU*~#Ao4& z6pjx=&9D_%TBJt;t4JvHePEvDtfl`8Wf{uKyB#zv6z8A|0OoQQ40$t~sdT3x(oP1X zoAd|_Rl#vAr6a7k8W1{^U>Oz4sFXBHvjCuKjmoOAC<(0!(0+Rp&lF1{`t4b0pU4up zMyIo)YO9q+fmTVNS`t^GG&E*(Dn`YUD!=_AHwO<9ZGU{8fJl^)xASf@&%!DvN-aFp zN>myrK)p(RhawxS@~!Nge5iXUnvoh@k1&$5fJJ=U+z6Fut`Cm>zW#g6=zYayY_zigz?q35Qa+e8U52H>{;S$O zef>RRfc+|ID)=gqLKg&Tk~BP2S)PH7c+b=V7?oD5fya)aY0r$0!Z-uHD#-QoCi zU5?mE3u^}~ZS74Jry8^K=H#Yof+9+HF85A;cdfCryKl@Z2hHT^hB3F#w{$m9+it~N z-HF~X$*glXdbwmGM-UYcyU_G0B%3rBa1YSO#sO{v|oVAWCOes%E#Rn551 zI(HG?>MDZ;HG4DX+%I(~WL@sn7`4qJm`>b{iNo{42CHLpJx z)*o`|iQL%}7w5MdsyvIoEWLW6EPUCs@BC^AJy5;M)Mb4O+$qc0-V$=NB&;&J@p|u? z@zqQ1>v9I`*I&?uHQCjb13#4B$}d0jLUhAm)vIsDUMgNTGxJV!9;ebe6mg)MCKo;~Rm_18L*Kf$8Zzs-0#V)?)o zZ|mgXF`HZLx1(zci*paJ`*G%xxb8XoJHLa^`Oj*DFx_snY(@~6Gu&isKbY21kA d-OXD!YJOKp!^OC|4(Sg`dTNHLDdnZ|e*icuAeR6D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_bottom.png b/src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..fea7c949b6e0506e86b25c5b9da753827edd9ef7 GIT binary patch literal 2080 zcmcIlUu+ab9NtoULJQQ=Xxgf{E{F*1?d-q1+l8}~UbPLq+LR_eA4)p6Guv)@x4Z0a zd)K}on1Cc=HIPt@5;Z)S&?xl<37VpI)n{#}^<$4t;$FjyGQYihk)aI~WxC`z zh}(_0&uAWY@V?=;PHnhfQxH@CD7`DI5`r}LAe~L8OjpfDnH;Z5#{M+N&^d_LA7vW+ zfOI0>PB&T(rsZIW)p$vu!%C130Y#8@&;sDY90+r~$O2vkAyri9{Es2g9HgrqvB&bU z$WxT*^E_MSxJ)J!%!onD>E(DuQ8*xQg1{04>kgS7%(AAtslX7!uI3oFXILifGs2`b z;6)jd=|TxeMSlY*(mtbSIAFp7u=VMWo|kgg*ZMWLucf;Ha9(-dwvQ_HgEwbhK6Gm2#P`3S8(Djl+mF%2s+#fIS6F{Zh-%$Nb;2lP+AK{hll^08{JlwXYrByxh%kFG)z^sv8xvf#%ZYXHPtR|Cx!N{S7>I z@@iRG_Jb|+e_pHD5pdM!FH=#{tFyy BqrU(E literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_top.png b/src/main/resources/assets/betterend/textures/block/glowing_pillar_roots_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5190e456b4a7e436024a7137ce566829476937a0 GIT binary patch literal 2278 zcmb_d2}~4M7+xwEgd!@|Vy$%?n~2rfIrf|hiyR9=$|~Zj&}wyd=FKv)JG1T#>_S7V zXpGeot%(&$t6*x>YN@e`tw+5YO6!q&R2qvt6pcrfc-Gp0eX}fEZO|IiO=joKo9})9 z_y7O*-n?5daY91eOL01#E+H@1UI_04v@5nR{2y`a0Sj;ae7VJnP8Xk~T~WHa50iDe zz73+YNG)>YGo0+zv%KsA`k>bb(K=n~_@IyFN`Z>FfLoMoXvgk-C?fJUbh^nwIDA>4 zM9i)9gDI60om^!pNAu|TG$b|1KmspNStRK7ND33Qp&?!djWGU-YS>EFl^r>ypb< z8w!V zL3BeM&&}1elAqx-g11@@5ywnhBv>EnIJxxiYPZ+WKxk^D+lH zBBf(ofHPUG7ML+h@R(pU5}3=(Qy82iDUzdj-bMAOndBGYmSQ~*vudh%$Y|h6!a~ym zW)=h<16Cu6St-JVu@;w+qfMNNr%WjFPuwioBl{gP4{L7F3>`8SlPfB)dllg=G6l>H zk31q0@)E;xn%!+Er}Y`|Xn0!erA|+$sGBxW0wC!Vn%@mmWI+wEevsjYHGLX?;g8d= zu;ouyZ#9`&!OX*>1yD3>wb6>vR#;DgAWTMJa#_v1r6>Dd)teZS>T%;Ust*^JD`6!! zfF~%9K6^e-=i0}2teAN>y`S%|;#f52 zIR5L6yP#^!^&J^a3yv-`EIz1DJNx=iEvaaW5VvVT?CG?YGEdvQDr8Gibjp!k#I=`? zu+<-R?92ELDUXuwTw0#KW4BoLPGjaZcG0W3V%xRbbALM*XWn`9N4bei&LNn~^=aJq zv9|{dUw7sD$jM87KQV6W2IRHqHEUZpw9mdr&RMy5U3vAEs|Sw`=hG`|M%Vi<44U5I z+@3Hpx&MTXRb83ibPTQ4O(vzc-dNpwbJ9WkbK>&nqr2ML8a~|=`$=i*z56v&)kE|9 z-!kSqkrV5Sn~-V8?7p_oifE-T*P?bFII+y|!u)%y+^HXo|GDMVkmkY*1HZj}vOT`5 ZPy3zIwfj&00^6?B