From 7de70c95539c014f1baa9f12c6588d1f02d7de3d Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 26 Oct 2020 06:03:54 +0300 Subject: [PATCH] Crystal grass & small changes --- .../ru/betterend/registry/BlockRegistry.java | 1 + .../betterend/registry/BlockTagRegistry.java | 15 ++- .../betterend/registry/FeatureRegistry.java | 3 +- .../world/biome/BiomeCrystalMountains.java | 4 +- .../world/features/ScatterFeature.java | 2 +- .../world/features/SinglePlantFeature.java | 11 ++ .../world/structures/piece/MountainPiece.java | 4 +- .../betterend/blockstates/crystal_grass.json | 22 +++ .../assets/betterend/lang/en_us.json | 3 +- .../assets/betterend/lang/ru_ru.json | 5 +- .../models/block/crystal_grass_1.json | 126 ++++++++++++++++++ .../models/block/crystal_grass_2.json | 107 +++++++++++++++ .../models/block/crystal_grass_3.json | 50 +++++++ .../models/block/crystal_grass_4.json | 31 +++++ .../betterend/models/item/crystal_grass.json | 6 + .../textures/block/crystal_grass_1.png | Bin 0 -> 2048 bytes .../textures/block/crystal_grass_2.png | Bin 0 -> 2081 bytes .../textures/block/crystal_grass_3.png | Bin 0 -> 2199 bytes .../textures/block/crystal_grass_4.png | Bin 0 -> 2215 bytes .../textures/block/crystal_grass_5.png | Bin 0 -> 1953 bytes .../textures/block/crystal_moss_side.png | Bin 2151 -> 2621 bytes .../textures/block/crystal_moss_top.png | Bin 1992 -> 2252 bytes 22 files changed, 376 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/assets/betterend/blockstates/crystal_grass.json create mode 100644 src/main/resources/assets/betterend/models/block/crystal_grass_1.json create mode 100644 src/main/resources/assets/betterend/models/block/crystal_grass_2.json create mode 100644 src/main/resources/assets/betterend/models/block/crystal_grass_3.json create mode 100644 src/main/resources/assets/betterend/models/block/crystal_grass_4.json create mode 100644 src/main/resources/assets/betterend/models/item/crystal_grass.json create mode 100644 src/main/resources/assets/betterend/textures/block/crystal_grass_1.png create mode 100644 src/main/resources/assets/betterend/textures/block/crystal_grass_2.png create mode 100644 src/main/resources/assets/betterend/textures/block/crystal_grass_3.png create mode 100644 src/main/resources/assets/betterend/textures/block/crystal_grass_4.png create mode 100644 src/main/resources/assets/betterend/textures/block/crystal_grass_5.png diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index ecb93bee..80b19e1a 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -90,6 +90,7 @@ public class BlockRegistry { public static final Block CREEPING_MOSS = registerBlock("creeping_moss", new BlockGlowingMoss(11)); public static final Block CHORUS_GRASS = registerBlock("chorus_grass", new BlockChorusGrass()); public static final Block CAVE_GRASS = registerBlock("cave_grass", new BlockTerrainPlant(CAVE_MOSS)); + public static final Block CRYSTAL_GRASS = registerBlock("crystal_grass", new BlockTerrainPlant(CRYSTAL_MOSS)); public static final Block BLUE_VINE_SEED = registerBlock("blue_vine_seed", new BlockBlueVineSeed()); public static final Block BLUE_VINE = registerBlockNI("blue_vine", new BlockBlueVine()); diff --git a/src/main/java/ru/betterend/registry/BlockTagRegistry.java b/src/main/java/ru/betterend/registry/BlockTagRegistry.java index 956cc4c2..f072cd6f 100644 --- a/src/main/java/ru/betterend/registry/BlockTagRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockTagRegistry.java @@ -3,6 +3,7 @@ package ru.betterend.registry; import net.fabricmc.fabric.api.tag.TagRegistry; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItem; import net.minecraft.tag.BlockTags; import net.minecraft.tag.Tag; import net.minecraft.tag.Tag.Identified; @@ -11,6 +12,7 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Category; import net.minecraft.world.gen.surfacebuilder.SurfaceConfig; import ru.betterend.BetterEnd; +import ru.betterend.blocks.BlockTerrain; import ru.betterend.util.TagHelper; public class BlockTagRegistry { @@ -22,14 +24,17 @@ public class BlockTagRegistry { } public static void register() { - addSurfaceBlock(BlockRegistry.END_MOSS); - addSurfaceBlock(BlockRegistry.END_MYCELIUM); - addSurfaceBlock(BlockRegistry.CHORUS_NYLIUM); addSurfaceBlock(BlockRegistry.ENDSTONE_DUST); - addSurfaceBlock(BlockRegistry.CAVE_MOSS); + + ItemRegistry.getModBlocks().forEach((item) -> { + Block block = ((BlockItem) item).getBlock(); + if (block instanceof BlockTerrain) { + addSurfaceBlock(block); + TagHelper.addTag(BlockTags.NYLIUM, block); + } + }); TagHelper.addTag(GEN_TERRAIN, BlockRegistry.ENDER_ORE, BlockRegistry.FLAVOLITE.stone, BlockRegistry.VIOLECITE.stone); - TagHelper.addTag(BlockTags.NYLIUM, BlockRegistry.END_MOSS, BlockRegistry.END_MYCELIUM, BlockRegistry.CHORUS_NYLIUM, BlockRegistry.CAVE_MOSS); } public static void addSurfaceBlock(Block block) { diff --git a/src/main/java/ru/betterend/registry/FeatureRegistry.java b/src/main/java/ru/betterend/registry/FeatureRegistry.java index 5151d2f8..c3a7b699 100644 --- a/src/main/java/ru/betterend/registry/FeatureRegistry.java +++ b/src/main/java/ru/betterend/registry/FeatureRegistry.java @@ -42,6 +42,7 @@ public class FeatureRegistry { public static final EndFeature BLUE_VINE = new EndFeature("blue_vine", new BlueVineFeature(), 1); public static final EndFeature CHORUS_GRASS = new EndFeature("chorus_grass", new SinglePlantFeature(BlockRegistry.CHORUS_GRASS, 4), 5); public static final EndFeature CAVE_GRASS = new EndFeature("cave_grass", new CavePlantFeature(BlockRegistry.CAVE_GRASS, 7), 7); + public static final EndFeature CRYSTAL_GRASS = new EndFeature("crystal_grass", new SinglePlantFeature(BlockRegistry.CRYSTAL_GRASS, 8, false), 5); public static final EndFeature DENSE_VINE = new EndFeature("dense_vine", new VineFeature(BlockRegistry.DENSE_VINE, 24), 3); @@ -75,7 +76,7 @@ public class FeatureRegistry { if (pos < features.size()) { List>> list = features.get(pos); // If only chorus plants are enabled - if (list.size() < 2) { + if (list.size() == 1) { features.get(pos).clear(); } } diff --git a/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java b/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java index fb4584d6..a023bf9a 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java +++ b/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java @@ -1,6 +1,5 @@ package ru.betterend.world.biome; -import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; import ru.betterend.registry.BlockRegistry; import ru.betterend.registry.FeatureRegistry; @@ -11,10 +10,11 @@ public class BiomeCrystalMountains extends EndBiome { public BiomeCrystalMountains() { super(new BiomeDefinition("crystal_mountains") .setPlantsColor(255, 133, 211) - .setSurface(BlockRegistry.CRYSTAL_MOSS, Blocks.END_STONE) + .setSurface(BlockRegistry.CRYSTAL_MOSS) .setMusic(SoundRegistry.MUSIC_CRYSTAL_MOUNTAINS) .addStructureFeature(StructureRegistry.MOUNTAIN) .addFeature(FeatureRegistry.ROUND_CAVE) + .addFeature(FeatureRegistry.CRYSTAL_GRASS) .addMobSpawn(EntityType.ENDERMAN, 50, 1, 2)); } } diff --git a/src/main/java/ru/betterend/world/features/ScatterFeature.java b/src/main/java/ru/betterend/world/features/ScatterFeature.java index 377ca2c4..bc2b6bf7 100644 --- a/src/main/java/ru/betterend/world/features/ScatterFeature.java +++ b/src/main/java/ru/betterend/world/features/ScatterFeature.java @@ -39,7 +39,7 @@ public abstract class ScatterFeature extends DefaultFeature { protected boolean getGroundPlant(StructureWorldAccess world, Mutable pos) { int down = BlocksHelper.downRay(world, pos, 16); - if (down > 10) { + if (down > Math.abs(getYOffset() * 2)) { return false; } pos.setY(pos.getY() - down); diff --git a/src/main/java/ru/betterend/world/features/SinglePlantFeature.java b/src/main/java/ru/betterend/world/features/SinglePlantFeature.java index 7d4d34aa..35171b8d 100644 --- a/src/main/java/ru/betterend/world/features/SinglePlantFeature.java +++ b/src/main/java/ru/betterend/world/features/SinglePlantFeature.java @@ -11,10 +11,21 @@ import ru.betterend.util.BlocksHelper; public class SinglePlantFeature extends ScatterFeature { private final Block plant; + private final boolean rawHeightmap; public SinglePlantFeature(Block plant, int radius) { + this(plant, radius, true); + } + + public SinglePlantFeature(Block plant, int radius, boolean rawHeightmap) { super(radius); this.plant = plant; + this.rawHeightmap = rawHeightmap; + } + + @Override + protected BlockPos getCenterGround(StructureWorldAccess world, BlockPos pos) { + return rawHeightmap ? getPosOnSurfaceWG(world, pos) : getPosOnSurface(world, pos); } @Override diff --git a/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java b/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java index 1384023b..aa305fbd 100644 --- a/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java @@ -104,8 +104,8 @@ public class MountainPiece extends BasePiece { maxY *= (float) noise.eval(px * 0.1, pz * 0.1) * 0.1F + 0.8F; maxY += 56; int cover = (int) (maxY - 1); - boolean needCover = noise.eval(px * 0.3, pz * 0.3) > 0 && (noise.eval(px * 0.03, pz * 0.03) - (maxY - 60) * 0.2) > 0; - for (int y = minY; y < maxY; y++) { + boolean needCover = (noise.eval(px * 0.1, pz * 0.1) + MHelper.randRange(-0.4, 0.4, random) - (maxY - 70) * 0.1) > 0; + for (int y = minY - 1; y < maxY; y++) { pos.setY(y); chunk.setBlockState(pos, needCover && y >= cover ? top : Blocks.END_STONE.getDefaultState(), false); } diff --git a/src/main/resources/assets/betterend/blockstates/crystal_grass.json b/src/main/resources/assets/betterend/blockstates/crystal_grass.json new file mode 100644 index 00000000..f9e4cf89 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/crystal_grass.json @@ -0,0 +1,22 @@ +{ + "variants": { + "": [ + { "model": "betterend:block/crystal_grass_1" }, + { "model": "betterend:block/crystal_grass_2", "weight": 1 }, + { "model": "betterend:block/crystal_grass_3", "weight": 2 }, + { "model": "betterend:block/crystal_grass_4", "weight": 3 }, + { "model": "betterend:block/crystal_grass_1", "y": 90 }, + { "model": "betterend:block/crystal_grass_2", "y": 90, "weight": 1 }, + { "model": "betterend:block/crystal_grass_3", "y": 90, "weight": 2 }, + { "model": "betterend:block/crystal_grass_4", "y": 90, "weight": 3 }, + { "model": "betterend:block/crystal_grass_1", "y": 180 }, + { "model": "betterend:block/crystal_grass_2", "y": 180, "weight": 1 }, + { "model": "betterend:block/crystal_grass_3", "y": 180, "weight": 2 }, + { "model": "betterend:block/crystal_grass_4", "y": 180, "weight": 3 }, + { "model": "betterend:block/crystal_grass_1", "y": 270 }, + { "model": "betterend:block/crystal_grass_2", "y": 270, "weight": 1 }, + { "model": "betterend:block/crystal_grass_3", "y": 270, "weight": 2 }, + { "model": "betterend:block/crystal_grass_4", "y": 270, "weight": 3 } + ] + } +} diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index cbd5519f..55255ae2 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -196,5 +196,6 @@ "block.betterend.crystal_moss_path": "Crystal Moss Path", "block.betterend.pythadendron_leaves": "Pythadendron Leaves", "item.betterend.eternal_crystal": "Eternal Crystal", - "item.betterend.spawn_egg_end_fish": "End Fish Spawn Egg" + "item.betterend.spawn_egg_end_fish": "End Fish Spawn Egg", + "block.betterend.crystal_grass": "Crystal Grass" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index fab8e5e6..79d1b2ce 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -192,11 +192,12 @@ "block.betterend.cave_bush": "Пещерный куст", "block.betterend.cave_moss_path": "Тропа из пещерного мха", - "block.betterend.crystal_moss": "Кристаллический мох", + "block.betterend.crystal_moss": "Кристальный мох", "block.betterend.crystal_moss_path": "Тропа из кристаллический мох", "block.betterend.pythadendron_leaves": "Листья пифодендрона", "block.betterend.violecite_polished": "Полированный виолецит", "block.betterend.violecite_tiles": "Виолецитовая плитка", "item.betterend.eternal_crystal": "Вечный кристалл", - "item.betterend.spawn_egg_end_fish": "Яйцо призыва рыбы Края" + "item.betterend.spawn_egg_end_fish": "Яйцо призыва рыбы Края", + "block.betterend.crystal_grass": "Кристальная трава" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_1.json b/src/main/resources/assets/betterend/models/block/crystal_grass_1.json new file mode 100644 index 00000000..02f092b4 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_1.json @@ -0,0 +1,126 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_2", + "texture": "betterend:block/crystal_grass_2" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2, 0, 2 ], + "to": [ 2.001, 9, 18 ], + "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 14, 0, 2 ], + "to": [ 14.001, 9, 18 ], + "rotation": { "origin": [ 14, 0, 2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 5.5, 8.5, 5.5 ], + "to": [ 10.5, 8.501, 10.5 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 4.5, 8, 8 ], + "to": [ 9.5, 8.001, 13 ], + "rotation": { "origin": [ 4.5, 8, 8 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 1.125, 3.5, 1 ], + "to": [ 6.125, 3.501, 6 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 0.125, 3, 3.5 ], + "to": [ 5.125, 3.001, 8.5 ], + "rotation": { "origin": [ 0.125, 3, 3.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 9.75, 3.5, 1.25 ], + "to": [ 14.75, 3.501, 6.25 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8.75, 3, 3.75 ], + "to": [ 13.75, 3.001, 8.75 ], + "rotation": { "origin": [ 8.75, 3, 3.75 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 9, 4.5, 9.125 ], + "to": [ 14, 4.501, 14.125 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 4, 11.625 ], + "to": [ 13, 4.001, 16.625 ], + "rotation": { "origin": [ 8, 4, 11.625 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 2, 4.5, 9 ], + "to": [ 7, 4.501, 14 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 1, 4, 11.5 ], + "to": [ 6, 4.001, 16.5 ], + "rotation": { "origin": [ 1, 4, 11.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_2.json b/src/main/resources/assets/betterend/models/block/crystal_grass_2.json new file mode 100644 index 00000000..efecc979 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_2.json @@ -0,0 +1,107 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_3", + "texture": "betterend:block/crystal_grass_3" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2, 0, 2 ], + "to": [ 2.001, 9, 18 ], + "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 14, 0, 2 ], + "to": [ 14.001, 9, 18 ], + "rotation": { "origin": [ 14, 0, 2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 3, 8.5, 3 ], + "to": [ 8, 8.501, 8 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 2, 8, 5.5 ], + "to": [ 7, 8.001, 10.5 ], + "rotation": { "origin": [ 2, 8, 5.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8.375, 8.5, 2.625 ], + "to": [ 13.375, 8.501, 7.625 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 7.375, 8, 5.125 ], + "to": [ 12.375, 8.001, 10.125 ], + "rotation": { "origin": [ 7.375, 8, 5.125 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 3.5, 4.5, 7.5 ], + "to": [ 8.5, 4.501, 12.5 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 2.5, 4, 10 ], + "to": [ 7.5, 4.001, 15 ], + "rotation": { "origin": [ 2.5, 4, 10 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 5, 7 ], + "to": [ 13, 5.001, 12 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 7, 4.5, 9.5 ], + "to": [ 12, 4.501, 14.5 ], + "rotation": { "origin": [ 7, 4.5, 9.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_3.json b/src/main/resources/assets/betterend/models/block/crystal_grass_3.json new file mode 100644 index 00000000..496b9e74 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_3.json @@ -0,0 +1,50 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_4", + "texture": "betterend:block/crystal_grass_4" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 9, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 13.5, 0, 2.5 ], + "to": [ 13.501, 9, 18.5 ], + "rotation": { "origin": [ 13.5, 0, 2.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 5.5, 8.5, 5.5 ], + "to": [ 10.5, 8.501, 10.5 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 4.5, 8, 8 ], + "to": [ 9.5, 8.001, 13 ], + "rotation": { "origin": [ 4.5, 8, 8 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_4.json b/src/main/resources/assets/betterend/models/block/crystal_grass_4.json new file mode 100644 index 00000000..7bc54778 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_4.json @@ -0,0 +1,31 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_5", + "texture": "betterend:block/crystal_grass_5" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 10, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 6, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 6, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 13.5, 0, 2.5 ], + "to": [ 13.501, 10, 18.5 ], + "rotation": { "origin": [ 13.5, 0, 2.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 6, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 6, 0, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/crystal_grass.json b/src/main/resources/assets/betterend/models/item/crystal_grass.json new file mode 100644 index 00000000..837d614f --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/crystal_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/crystal_grass_5" + } +} diff --git a/src/main/resources/assets/betterend/textures/block/crystal_grass_1.png b/src/main/resources/assets/betterend/textures/block/crystal_grass_1.png new file mode 100644 index 0000000000000000000000000000000000000000..92940db0ce17ae2072eb52f10d5ded9ffd263669 GIT binary patch literal 2048 zcmcIleNYr-7(a**L{pPQV@7sXD$4eD?{4p77Y>0t1jIwW1am~)d-pxqxZ6E<7w*8) z&|wmFEXf%sQwnsX(LyUTl4h8uF*GtYb%rU)3@xiko2ax8v3I%SavF8`r=8i|clZ50 zzvuUS?6WP!MR}7aK0HyU(@ieOcb202RPBt5Mc0(!TO7K@`}3btbh?D;+8L$Wv2&(Q zcmHXje2KcmwU7mpPtWm^8|s5TKSJwt8S{dE4%9*wbHi#uwBy%$dT~tP?RcfxMY;SA zSR>>&%CM}ls2nub0*1%uWnvjY77_TM%3(pDS5(-b9UtXo(OP>=;@Buet+nIXnnP@f zs~B@gGQ`Y!3jqwY5wkLSgN0&@^plv8GFVB9gdQ=uI{IV)kM zXb%NFHn)l9M|B~4rv&P>3~KhF&gCV5I3h`60kkn@+Uh1ang;~nX_~MZ+&02!Gn-8o zBL{4jP?U&mku0E(hx6Xfs;S};BQ&{r8vqo+c+6J9W2KFR+v714fc5~IgBH#R0FLp1 z^+>XhL#-nCxN1oH#cCY;SB*pRO0rAhQO-?TLnC(NH(yXt^%}yTNEuueUU>yc?06 z|5trDxuAvT1HcN*Ff^` zI$hMc0%vx)t$(n@RhV3oXqQ@x;~t2wSU+ROy0jlYU$L_Cp*`unSMus_Mjg!^+|ae` z{b@-#303Op`ZLWVy4-{{Q=?ny3j&s%4o;-5TDbrCLgRsJnTD%JPVJhaAO7~Mz-RXB z%RXlMsW}*E`zMQ*SF96X?=Cxd<9f%5mQN2oJ+n%1-+Z?Kwk_Xy=);(8gM(t)n-zui zoi^q@e(J30=l2R5d!A1;L_2dX-1x5L`hx=%S*`I|?TeF*X_d9~Yx|y$y#Z zlNwXxFAqx@n8n@k=;dC^-Uoik_xAkUaXGKF@S8&wIah0wVplA_VQ%Rg+UknycW+uv zeG+S(wEm})n~&$U=g&^*TnoOgnlUmVbHQ6HsbdWp_f>bldiL$k{U;A>dnx-!m+4}2 zOz$77HkY%_k4Zzv$SLj5lteX|U5z}JrnVa*5W7`A!2H5lSZAneVM@OQr+!{%$Dtl+W_Kz;eEpm3{tX%gG%2vq` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/crystal_grass_2.png b/src/main/resources/assets/betterend/textures/block/crystal_grass_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d8bcc8b4da08ba507343930bb9ba16d48c3f77e5 GIT binary patch literal 2081 zcmb_de`wrP9M4vJ%w4OMS-7g$G@D>?x%|3c3A@#L*V+Sb>$=08Q1#xuyxfJ}B{4~R z*9zKoZdlPjRAe}WRn#GZ!#NRkXy=bYhr0daoPs|#a8xH+VT_Hr5nrx%ht9Q@VIaxN z%jbQ*zdrB#Ci^$t+r0Xg)dWE_C;H+8_}${(t33GGe%1l_b-mH|fJG4AHSWEF*z=N) zAUw~jskEI=-X}r5=m)Z%MgDTpz-WTl&{Z}796~mkMLAWAQuBwVDN>cA)V5%fO&T$j zSNq0Hv~_G#3XTmyQKq^!k{ikrCMY5skmX`Qv!rsAs_;s9>`pTjS%KI?QL5WDNT!qh zWK1^^8T5x}$OU*ZEc&?+EAoN$B+qhTh7B{EK(n00h9p5Gs~3f>nX)1c#Cxl@@K=<| z+qNMwOsQ1zmju6V<`_;CMTX@Wo~JQ_wnjA@lxfXcTVseL3!187tGY(Ij3BEI+ffR8 zx)4IqsMBgzHBC5SOc@vq=V#rJDnJ?5amKJ&s2Ghu8zf7N+#>@tI`&W zb+l#oj9`zdv0W8yrA7_J3?NG%HX-U6!4}un95eE|ty_70kvQtV>(Lle%tXM}&6KVe zYK7{rv5>KtTbKxW=QdT7^^(=;8mg{AabTk;#j`w1b1cn=Qn+xOAaRkqSV3ah1!xjW zK?XMXH#j6=7$^J#tjnr0`kzo4N{Vh40Zx=!1UbYQTCQR(nUoTmWdjYOL_A7iSN*Cg zOQNELWg!rtvycm8c?BR1f_#|f!XOYrp@_mOd~JPPhr@0WYwKlqeFz{P%3)fDVvuI# z0HU)36zOmvEI=rTN`yzX^_xu~lEDNrLD^imBR14Q@w7My_ zqDQKuf=X7@BLV0NJW4^gvPhBEqZ^6meaa@E&)Wx>&E#`zk%m11*Pe z&t#};k7s#0T`Zm}_S63w594;r1*tJts<86!Z=DsFvoeL-wL7ez6ZoTk(jX0|%Eaf$ zj-4lW6U2%@BHo>fd=4);PFKUK!9&s3&oW;Pe5sI)>_k)fqIvG|jt;P^H2=fI%&Rl8 z$?(ZDZ+1GZt%0^ky1DJKOB;_F&d0-^fx(sh`1ZYgeLgal@tDd{r(|3T_cjT$YmJ4U+Zfx*+y@M;)9i5$>{bTQ`Xk^T}d>URjKi}RU z2txXX_$$6~ukY(~&I!wu(?4epKY60@y}K`M_c{-6c=RaQamVEGmI=@6b17$9eC>s2 zGrr8hw)l?1k8P(Xv&8yAU)yyzc}VXk5mSsN#CXs{+ZQ@olg4~ zzvkj2$G?5%);9n7xtBj6*1dnY`}Uc}Z<>1NK5b@)UcBg}lA+$rFZbJ*r@z~>i`xHS gzvG;FqW3Kyv7+;xQ=?5kaqc0W=-CwCe@|xOFEXjImjD0& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/crystal_grass_3.png b/src/main/resources/assets/betterend/textures/block/crystal_grass_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d41be86994b94e9cb8b2e2c3c5041e8238764a8a GIT binary patch literal 2199 zcmb_eTWl0n7@ndOgf=B14J|QYI^_WZvvb|c8MUV{GDs;sYe6idtCD>09&L8ip3kg@xkW9SmZ84NNZ*CCyV z_0eI&!nD`pW04?>v>$i`9}h%%CoS@VpX2?UAhEol@IFNXbmd@(H%m<^{gH<%zQ|LM z$vBRwa9lp0_v9syVWl|%0KoAgCyFdVu=a@Vzyhn=?Nx>dwvnZoj%Mhz%LtRkkP~D` zq~#QHW{p<2D`g@D;|kE^1P||~R067~hBJq(Y{|KbIGn{ftUETr3N&Lb+WFg!=Ogy$%12Z#*W7rvEi9BkbYuT7e*uu~;thixh ztBvZbve4nM+n4~o?SQ7MM&91;I;z;<2y}3e5qXhk1)ddsand+JQiQ+`UQ&3z42=;f zsL+A`1p5>h_II$MYN?Tbg{nwN8CDLGLTNde#+<3AOWtBJC92yF)DezGf(!}OqiL!F z_+-F~=v5%99SDq}V&A;9`& zzl4wkQUMV&^liUkBWqYOLnSqrTtSzFrSxbv>E1|XitNXaRYqBjE@?@D$d!ALL2jQh z$+P@gTdYniil}U#&tO8jO!Lby+ekTiXyH(r)O02K;+BfvhQrH8A4sLtq}MC3-XtIw zD64Eh^a54}KnMVoOnCvR=Q7cgHK(S=dyKw9k1|kCW3qyB%)RHcGSx1X&t0?Yf6a$; z*UqxkxVu$&Td!5khsbPnHELHnyBnr!J?{K3lcA&JH>(lr(x^RecdHMM93)cCuV*Pue zBLm66;eo_g#Ybl^JqJ%s*0mpe-EI?P~g9{q?h}UJ4wo`>6SFk;}gT=O>0kH;Zp?+`R7xs(;Umb7!W%e%JkVh<5iz J&g>qT_zN(f)*S!< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/crystal_grass_4.png b/src/main/resources/assets/betterend/textures/block/crystal_grass_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b4415ff9d0dbf0f1c9e177bb8431189c7f0f84 GIT binary patch literal 2215 zcmb_eduSX*9Ns+I^pUn|tBq20vsG-dd;7e-+a;Hf+@-x>F2*#_RBFlG%-m(|-R`=( z$zA$SHDa+K6-BCus8l6?7;37h!77cKV9-|a5l{+Rf)I*et3e5-ZJfPVYi(mJ9_;Sy z?DzYAuWx4VKzrM^RV!{=K~dDImT07dJa6!>WlPEZj+uEt9?PxhPKTmauJx`m>V+3; zD5^@(JG@j+43(V$L2r&d@pvF+2P*K4yh+ zj~?A?70o5lcyei6DXpt8J93S8WiRA^2S2Rhb3qOW4c8%9p@bz>ip5IstJ0>^ zCA8x<_mPMSxm^|QboN`A>%flLYeU@JM?7vU24?k`uIcoc*T|#vxs;8ig>4L6)9y6Q zRIyR*MHV_7_8JqUH|@|3WM-Vro}+>djsO>j7?BrwR^VAt=_HL4Buxn3!%G^^=bm69Y0(crF1%{B@IAN?jZ(xea46> zOzT&v)8Zn^(`I@wAzh&Pd6;7++zhaBW0KT#G5X@J6~6=e7LGocNT9giFR=c&N^U?# zY*6&8tgNa+P=)b?UnTWiAbPUrl%#u|(HH1p4=|FL?4TTT{rN0Twb#n$iq-YM=EHe= zXI^UDl`6cX*P`Yd$!hd8>J&QL1d^p5*Z-HrP?z(Y(us9$lqcdA_LxInw(l2>$zkFR zOQ#rlDV>AZAg!~>Dd$d6KT}lMhL%WUXYg})ety28V%e@^p_|9LzwJ1gpqKCi)!9Go z-}lwlg8iAZKMah&HXc5pJhB`~QK{;U+KMMG&Yqdv*RgA~@~s=u%u_#3f8;woy%yd% zNe#b!wqfK8`mSG^o=IeD+RLA>*;KjZyUNBRafHz9m*;NZ@Xq|j-yR*GzcBad=!p~6 zhpN5`K1h9CUB0z&~y~sQ!3pXsEiiwbeRV`QaZB%c2qS<(K}@$)600YH4nZ9BJwv_zPfx;C%o9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/crystal_grass_5.png b/src/main/resources/assets/betterend/textures/block/crystal_grass_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2612c7b428dfbe9bb6b12aeb1aaa1265d37da7e3 GIT binary patch literal 1953 zcmb_dU1%It6rLDNYc(`jD5*jmCrT=IcK(0qXJ)gT z^+gMUEfPgUL_}K!K??p95uu0_p)Kl5AARV96%qA8jNpS>;+_2&YfWM(4$RD*JKz1z zIo~<=+!G7)4-M|QYY)RPgLAXF0(}o9_wE7uyyw>qKwq~7vyVm$bNjyJ?qgnieVAbe zPJ6|rcq#v|4M{Bn5GmnIvldV^!yKMy1^_POm@VP5=R4fb=RV_D4>{bTmKXCu7FWF4 zR)~+b=8Lek3@yY>jI)QEHYKRx7_iM+)sO6^!?k&BI!>kqj%`EYWrv$e46;l41vX1U z%xW2(hmtC@hLw?Y(UR3etSm}~AR2|Cccg2JemPtvjssf| z8jVJ#p=3x{79`8E1W^`bnWqRoTJ>Yl4#`=U7l7F^MWaM{#5MzgvMOow}k(c!%O`N3IlKG&h*rM2h=4mM)5QBe%b&9cN z>mOi(Ja_d!p$OV832T4~<<&qL3xQv5Tg&I|IX{Yl5Aj^i;i#(_&qFqJB?V}*&bz9D zc-K&6zEpxHuNx+WhAHWiV)oYO2&^YbOxAbm84*Z1Qt516lN2QCCawGUnL7 z?Pf`pgn5Ff=1Nk~?ZUEWy@+OSwYx=*;wQVKs>il#$p$bfcZY*Xo-yLO)7~aJ?aZSN zZKHxI={Cvlz#`(t4G`j~GSze^^(AcOe*{*x_uh0}RMIqw*Gd+B02T43tXaHjS(0hN zlB-!%&uzS?Jtr;QoAka*4=cbgW7j9Fs(fBpI73gQcjj_aMe|Ge=f=iF|NT#&cxGCBf*I+* zy7w5HX-!^!ZtdIO-rU&x)|FTMKVHa>9Dw!n)4TeQ3|;&2!r<}D`MU>N^J{kqZ#Wmp z?(y&6#f#T2e&-BdI55CIKQbVWpEdV=JhbcCzDqycS$OH-hwJOV*TtvGFOQ8LyX8s| zjeRk;|I{aw=T3by@l}2JvB{PFXHQ=`dHK^@ufF~2n*ZYb>e$IMAFcniaH#K>z7O74 VwXg4O-IpAqb2Ia~_og2|{uhxgaFhT5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/crystal_moss_side.png b/src/main/resources/assets/betterend/textures/block/crystal_moss_side.png index 9c1308c8c1ee070115ae7a45f7106f4824c68f97..8f828d9786fbcfdbec04656046be0e3675ef9a3c 100644 GIT binary patch delta 1014 zcmaDZuvcV)1rxjBMyp;XF0&8=Q!7&oDI9b|UM#djCd;rwj~C zn><|{Lp08-PCV@|Tqtn-`_*@gZ{N)=_rCv$L!?W=$%TVct;<~h$dTsGU;LHE_iRrb zJknj>+u6ZrC?vQ+qs=}3_9flevfJ;fuN&T}GyXjD{h6Bj7ni!X-m45g@%(Mv{_9r9 zJ&g>_)ZV{etnunLU(>>e9!JV!?|-iUku&XCC6D8TnNzF1x2JpRoqAq$=|jiDRVgY- zS<~009${nOS~d025BC1BcJ=PQ)Wl=1y91|ZXPJN4vu@FkM*n~<7hg^YYbcKQ4Jj+tyu_cuudzA3dbIC5!sx_#N2xceE}60>~* zo9Yb$B(BbW?hvEN>gZt56Q$d(ap}refx|pLeuo`IjvLx@6f~`PFF#|~F|{RCJ8xN8 zF{z&4W^BBfxwUEKs&$DwmMuJOdP7(|P3%EU*d&?5Isa{6ZH>B{*1SN{#NmsZtoq82 zKcmf;tCd|hmk4BHF37CASsZh|>_<*pU$@)txie?i7w1OjpGcYVJw~0Qy;&gg-_CA9 z#Yw$FTQnL!uJqZpT~|YG`)TTN7trZu?C+v1t}&uFD|i(yLpG@`i(39134yLlR6t=miwKzGT(o7 zn1H>9Z>)XXe-?&apI+TP`TXm3|4SD>l=v=Vnb*}>;QaQsS;~$(rXt55L~r>dX~6Jc z#f--ADy6ydXZ4St-F~~vz(VDHP5YC>(ihF8w_Z)}FTYpcuwh38OEAOVPaiG!IP@sJ zn0$Fsl&J&TDW|?=k&bp#);k55?9vLk*le%wd$fahDXZgz)ypq%-qilp)xdKhKsR@) b2G>vag={CZo@FaUw4tDnm{r-UW|;wicu delta 651 zcmV;60(AYo6z33-I06OHu{w*gCg~(?W->IUNv&-nq82wbpbJqD@fWz% zmD_?l7X{q~>_%`Q2rm2s(ybp*EFx7GB}|)|CdQ;Q(IhjOq?t4|sb_dF_!gIU?>*<- zb1!*$cfH*=5~5^}hQ^WM_xjWE)V@|G#D8-#KJgF_7huPe@nkZQrs4u85D=D9i{V&g zr?>+|kPQxw2bSGyS#3g?jFc{EKTj0*I@V9UMhZ99ASqAF2Zxn*ucL_a zt!rB$HrO3lWc}7t-p?t~#G#?V>BadAREc32XJ9nJ`U3a^t#^O-hezbu%_k8)3@WM# zQO1__P6H_rvM5QBxZ2nY`1~O@w67n;1d*)eADvCie=Kf-ker?c!LqF|CwM&G(cfb% zeJ;6xlf3<~QEUB*2~lSU&Cu_^SbqlL)x+;|@l-~d)6M2?ql8L!c9EXs^}9E~06-or z-NR2z@@CzpoNKxKrn==yfCDm8C97z=8u|3TkXy-_rfF0)ZpNVjgf_=9|EEv{pT`cx z(sNYN&RlkAcHcxw+Y|v+7mepkaN9~UjmY_Uy`|xUw)$CxRy3{9RI68=30xEkd0HB_ zY)nIuqG1f$n2d-b=?pdir2^1ax4+>(95NW|;t<{8LICAReCGeG!;U0*K;hv l16)!+6z2-ld(bX*_z%%TIJ>HGTj9002ovPDHLkV1iXAGYzX86B&MVo8d|1W7;KJWu4Ak(N=dWI$y6vVaV;ycN=z=v%+Iq`Do!j* zO;LghX66-_B<3Zjdb-#uRpb`vWoD*W5o10~e|bhK&`2W#BLiJS16?D8!?g{JttQW8 zu@;0{l$?>6m!6tptE4~qGD}>2J$#*VI%D*|y=BVbXE&KGoRcUk`t7}Ne(3;zK*q~2o-^GLqIcI^C@AWSp zKAdZ-HT&Ug--TOWWk^l++x<)F%bY)-HrdHtiv0KS^YXQ8&mQ<}kZw2m*dq_)$r?tY zs(wjLX)>WpjUpd3O@A4r+ULx`;3LiR;f~++@;f_C9(t+PT2y^_VRvf72gz!=Xq~84 zTuSp2<7zCw>D->FDG|Q%($1Kjd((WDHS9?8s-M)75Sd%yd1*?vgv#k@+shmTjuz_p z3C&SBws&9lix^Ldc)q8bjT5?R_V3#rp0_>Lms?i7MAliR(cfl!HN*4bCIO3gZ?4Z& zJ^jo@NkYt5z**|C$li;4@7~;3`01N$w1@&j%!_;7O$MKs_XVbNxu%<~e*eCGU%rRZ z)Q5`=Jc8<1wk*-xKQDpBvrw{0lS`mxYuxXD4;Qc12r=Vcxtz5zB}41<>HEKonlzq2 zKl+t7+vs4Brp|_32lJvit97|nuP)fG*LCW=e9dCcQ<{2*L$y>~v+Msie2yvRTppck z-g8X2^@&lN#l1b%3~~xDSR5ZKEcg+#O+~=u?M$_nof149^?y!D1#7s>(y|ePIAH7^@C!L;cs*oZPik2t z(Uly)9j?J7J2UO$nQQ-U#VxNcSpEIqBftaD-Shfr!pVk_e##{8!t20-~FnwSKrKZGUDk< z{5f@6(Ld{8&FIgP;d-x&L-+1r(1>_6`}#jdr47wjx2-??l>rDmUHx3vIVCg!0I-ao A=Kufz delta 711 zcmV;&0yzE55y%gaI06Lou{w_elbiw*5rL-Z?7E(Z!N-GeLfZ&Y};~DYH-=M1E zrF2yVO`6S)_jotMA{|-Qz2}^nJ2T|Vhfk)zSZTDDNwf$S9K)^aYv;F@gwSc8(u5Xy zAusZxC|Y&BB35XMq7JwBcOUO6f`4q(TV1W=Ecp8H?j1;s zICEx6o;H-axAXuKMB$H{voH>w(51C%vnp2Z>38RzS(j`7HkD;5a>B%(vVRO4M1jPM zo2_+_XK04T9ZoOCS7E$VmBw&7x}N>SCeY}&dz;36FY@Cojl4@hUHm` zprm=m5tbv|>F|uD86dEjgMaXbW*nU#gNY)_P#wzfERVNcO|QWa$ZJ~H`s)%4Cg`p< zYe5`zwKkpvTuctucJP%2S*tX|B)ql9U9Bs!JhRj2CrM(Orp(JT*L>F71qTRCC;~nJ zf!sVR1aSz$V`s*8n(c;MM+#6BRRRj~VG=<=ST4qwFbAIYRyHi(Du0TceEs+tvYrf2 z_1Yaj3YN(do3Ns!%DHP2LZCf(*5p5nU`KykQ&|!-q%h{@9)tWgeyRKksQm;H(om|Fh)y4m1%s9(nGl tt2gGTSyd6irlQ)uGaOpn;uiGa)o)O$i%TuxHQE3G002ovPDHLkV1k1-Pd5Mn