From ecf2e35a33cf842e0633a964e657e85ecdccf024 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 3 Nov 2018 13:23:10 +0100 Subject: [PATCH] add a bunch of decorative items --- .../naturesaura/blocks/BlockSlabsNA.java | 168 +++++++++++++ .../naturesaura/blocks/BlockStairsNA.java | 70 ++++++ .../ellpeck/naturesaura/blocks/ModBlocks.java | 7 + .../ellpeck/naturesaura/items/ItemSlabNA.java | 79 +++++++ .../naturesaura/blockstates/ancient_slab.json | 22 ++ .../blockstates/ancient_slab_double.json | 14 ++ .../blockstates/ancient_stairs.json | 223 ++++++++++++++++++ .../blockstates/infused_brick.json | 14 ++ .../blockstates/infused_brick_slab.json | 22 ++ .../infused_brick_slab_double.json | 14 ++ .../blockstates/infused_brick_stairs.json | 223 ++++++++++++++++++ .../naturesaura/blockstates/infused_slab.json | 22 ++ .../blockstates/infused_slab_double.json | 14 ++ .../blockstates/infused_stairs.json | 223 ++++++++++++++++++ .../assets/naturesaura/lang/en_US.lang | 10 + .../book/en_us/entries/using/altar.json | 2 +- .../naturesaura/recipes/ancient_slab.json | 15 ++ .../naturesaura/recipes/ancient_stairs.json | 17 ++ .../naturesaura/recipes/infused_brick.json | 16 ++ .../recipes/infused_brick_slab.json | 15 ++ .../recipes/infused_brick_stairs.json | 17 ++ .../naturesaura/recipes/infused_slab.json | 15 ++ .../naturesaura/recipes/infused_stairs.json | 17 ++ .../textures/blocks/infused_brick.png | Bin 0 -> 324 bytes 24 files changed, 1238 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/ellpeck/naturesaura/blocks/BlockSlabsNA.java create mode 100644 src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java create mode 100644 src/main/java/de/ellpeck/naturesaura/items/ItemSlabNA.java create mode 100644 src/main/resources/assets/naturesaura/blockstates/ancient_slab.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/ancient_slab_double.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/ancient_stairs.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_brick.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_brick_slab.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_brick_slab_double.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_brick_stairs.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_slab.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_slab_double.json create mode 100644 src/main/resources/assets/naturesaura/blockstates/infused_stairs.json create mode 100644 src/main/resources/assets/naturesaura/recipes/ancient_slab.json create mode 100644 src/main/resources/assets/naturesaura/recipes/ancient_stairs.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_brick.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_brick_slab.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_brick_stairs.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_slab.json create mode 100644 src/main/resources/assets/naturesaura/recipes/infused_stairs.json create mode 100644 src/main/resources/assets/naturesaura/textures/blocks/infused_brick.png diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlabsNA.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlabsNA.java new file mode 100644 index 00000000..1cab451e --- /dev/null +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockSlabsNA.java @@ -0,0 +1,168 @@ +package de.ellpeck.naturesaura.blocks; + +import de.ellpeck.naturesaura.items.ItemSlabNA; +import de.ellpeck.naturesaura.reg.ICustomItemBlockProvider; +import net.minecraft.block.BlockSlab.EnumBlockHalf; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockFaceShape; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeModContainer; +import org.apache.commons.lang3.mutable.MutableObject; + +import java.util.Random; +import java.util.function.Supplier; + +public abstract class BlockSlabsNA extends BlockImpl implements ICustomItemBlockProvider { + + protected static final PropertyEnum HALF = PropertyEnum.create("half", EnumBlockHalf.class); + protected static final AxisAlignedBB AABB_BOTTOM_HALF = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D); + protected static final AxisAlignedBB AABB_TOP_HALF = new AxisAlignedBB(0.0D, 0.5D, 0.0D, 1.0D, 1.0D, 1.0D); + + private final Supplier singleSlab; + private final Supplier doubleSlab; + + public BlockSlabsNA(String baseName, Material materialIn, Supplier singleSlab, Supplier doubleSlab) { + super(baseName, materialIn); + this.singleSlab = singleSlab; + this.doubleSlab = doubleSlab; + } + + @Override + public boolean shouldAddCreative() { + return !this.isDouble(); + } + + @Override + protected boolean canSilkHarvest() { + return false; + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { + if (this.isDouble()) + return FULL_BLOCK_AABB; + else + return state.getValue(HALF) == EnumBlockHalf.TOP ? AABB_TOP_HALF : AABB_BOTTOM_HALF; + } + + @Override + public boolean isTopSolid(IBlockState state) { + return this.isDouble() || state.getValue(HALF) == EnumBlockHalf.TOP; + } + + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { + if (this.isDouble()) + return BlockFaceShape.SOLID; + else if (face == EnumFacing.UP && state.getValue(HALF) == EnumBlockHalf.TOP) + return BlockFaceShape.SOLID; + else + return face == EnumFacing.DOWN && state.getValue(HALF) == EnumBlockHalf.BOTTOM ? BlockFaceShape.SOLID : BlockFaceShape.UNDEFINED; + } + + @Override + public boolean isOpaqueCube(IBlockState state) { + return this.isDouble(); + } + + @Override + public boolean isFullCube(IBlockState state) { + return this.isDouble(); + } + + @Override + public boolean isFullBlock(IBlockState state) { + return this.isDouble(); + } + + @Override + public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos) { + return this.isDouble(); + } + + @Override + public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face) { + if (ForgeModContainer.disableStairSlabCulling) + return super.doesSideBlockRendering(state, world, pos, face); + + if (state.isOpaqueCube()) + return true; + + EnumBlockHalf side = state.getValue(HALF); + return (side == EnumBlockHalf.TOP && face == EnumFacing.UP) || (side == EnumBlockHalf.BOTTOM && face == EnumFacing.DOWN); + } + + @Override + public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { + if (this.isDouble()) + return this.getDefaultState(); + else { + IBlockState state = this.getStateFromMeta(meta); + return facing != EnumFacing.DOWN && (facing == EnumFacing.UP || (double) hitY <= 0.5D) ? + state.withProperty(HALF, EnumBlockHalf.BOTTOM) : state.withProperty(HALF, EnumBlockHalf.TOP); + } + } + + @Override + public int quantityDropped(Random random) { + return this.isDouble() ? 2 : 1; + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) { + return Item.getItemFromBlock(this.singleSlab.get()); + } + + @Override + public ItemBlock getItemBlock() { + return new ItemSlabNA(this, this.singleSlab, this.doubleSlab); + } + + @Override + protected BlockStateContainer createBlockState() { + return this.isDouble() ? new BlockStateContainer(this) : new BlockStateContainer(this, HALF); + } + + @Override + public int getMetaFromState(IBlockState state) { + return this.isDouble() ? 0 : (state.getValue(HALF) == EnumBlockHalf.TOP ? 1 : 0); + } + + @Override + public IBlockState getStateFromMeta(int meta) { + return this.isDouble() ? this.getDefaultState() : this.getDefaultState().withProperty(HALF, meta == 1 ? EnumBlockHalf.TOP : EnumBlockHalf.BOTTOM); + } + + public abstract boolean isDouble(); + + public static BlockSlabsNA makeSlab(String baseName, Material material, SoundType soundType, float hardness) { + MutableObject singl = new MutableObject<>(); + MutableObject doubl = new MutableObject<>(); + singl.setValue(new BlockSlabsNA(baseName, material, singl::getValue, doubl::getValue) { + @Override + public boolean isDouble() { + return false; + } + }); + singl.getValue().setSoundType(soundType).setHardness(hardness); + doubl.setValue(new BlockSlabsNA(baseName + "_double", material, singl::getValue, doubl::getValue) { + @Override + public boolean isDouble() { + return true; + } + }); + doubl.getValue().setSoundType(soundType).setHardness(hardness); + return singl.getValue(); + } +} diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java new file mode 100644 index 00000000..4020b718 --- /dev/null +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockStairsNA.java @@ -0,0 +1,70 @@ +package de.ellpeck.naturesaura.blocks; + +import de.ellpeck.naturesaura.reg.IModItem; +import de.ellpeck.naturesaura.reg.IModelProvider; +import de.ellpeck.naturesaura.reg.ModRegistry; +import net.minecraft.block.BlockStairs; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; + +public class BlockStairsNA extends BlockStairs implements IModItem, IModelProvider { + + private final String baseName; + + protected BlockStairsNA(String baseName, IBlockState modelState) { + super(modelState); + this.baseName = baseName; + ModRegistry.addItemOrBlock(this); + this.fullBlock = false; + this.lightOpacity = 0; + } + + @Override + public String getBaseName() { + return this.baseName; + } + + @Override + public boolean shouldAddCreative() { + return true; + } + + @Override + public void onPreInit(FMLPreInitializationEvent event) { + + } + + @Override + public void onInit(FMLInitializationEvent event) { + + } + + @Override + public void onPostInit(FMLPostInitializationEvent event) { + + } + + @Override + public boolean isFullCube(IBlockState state) { + return false; + } + + @Override + public boolean isFullBlock(IBlockState state) { + return false; + } + + @Override + public boolean isOpaqueCube(IBlockState state) { + return false; + } + + @Override + public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos) { + return false; + } +} diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/ModBlocks.java b/src/main/java/de/ellpeck/naturesaura/blocks/ModBlocks.java index c81a63de..3fcfac8c 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/ModBlocks.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/ModBlocks.java @@ -9,6 +9,8 @@ public final class ModBlocks { public static final Block ANCIENT_LOG = new BlockAncientLog(); public static final Block ANCIENT_BARK = new BlockImpl("ancient_bark", Material.WOOD).setSoundType(SoundType.WOOD).setHardness(2F); public static final Block ANCIENT_PLANKS = new BlockImpl("ancient_planks", Material.WOOD).setSoundType(SoundType.WOOD).setHardness(2F); + public static final Block ANCIENT_STAIRS = new BlockStairsNA("ancient_stairs", ANCIENT_PLANKS.getDefaultState()); + public static final Block ANCIENT_SLAB = BlockSlabsNA.makeSlab("ancient_slab", Material.WOOD, SoundType.WOOD, 1.5F); public static final Block ANCIENT_LEAVES = new BlockAncientLeaves(); public static final Block ANCIENT_SAPLING = new BlockAncientSapling(); public static final Block NATURE_ALTAR = new BlockNatureAltar(); @@ -17,6 +19,11 @@ public final class ModBlocks { public static final Block GOLD_POWDER = new BlockGoldPowder(); public static final Block WOOD_STAND = new BlockWoodStand(); public static final Block INFUSED_STONE = new BlockImpl("infused_stone", Material.ROCK).setSoundType(SoundType.STONE).setHardness(1.75F); + public static final Block INFUSED_STAIRS = new BlockStairsNA("infused_stairs", INFUSED_STONE.getDefaultState()); + public static final Block INFUSED_SLAB = BlockSlabsNA.makeSlab("infused_slab", Material.ROCK, SoundType.STONE, 1.25F); + public static final Block INFUSED_BRICK = new BlockImpl("infused_brick", Material.ROCK).setSoundType(SoundType.STONE).setHardness(1.5F); + public static final Block INFUSED_BRICK_STAIRS = new BlockStairsNA("infused_brick_stairs", INFUSED_BRICK.getDefaultState()); + public static final Block INFUSED_BRICK_SLAB = BlockSlabsNA.makeSlab("infused_brick_slab", Material.ROCK, SoundType.STONE, 1.25F); public static final Block FURNACE_HEATER = new BlockFurnaceHeater(); public static final Block POTION_GENERATOR = new BlockPotionGenerator(); public static final Block AURA_DETECTOR = new BlockAuraDetector(); diff --git a/src/main/java/de/ellpeck/naturesaura/items/ItemSlabNA.java b/src/main/java/de/ellpeck/naturesaura/items/ItemSlabNA.java new file mode 100644 index 00000000..1e67b420 --- /dev/null +++ b/src/main/java/de/ellpeck/naturesaura/items/ItemSlabNA.java @@ -0,0 +1,79 @@ +package de.ellpeck.naturesaura.items; + +import de.ellpeck.naturesaura.blocks.BlockSlabsNA; +import net.minecraft.advancements.CriteriaTriggers; +import net.minecraft.block.Block; +import net.minecraft.block.BlockSlab; +import net.minecraft.block.BlockSlab.EnumBlockHalf; +import net.minecraft.block.SoundType; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.function.Supplier; + +public class ItemSlabNA extends ItemBlock { + + private final Supplier singleSlab; + private final Supplier doubleSlab; + + public ItemSlabNA(Block block, Supplier singleSlab, Supplier doubleSlab) { + super(block); + this.singleSlab = singleSlab; + this.doubleSlab = doubleSlab; + } + + @Override + public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + ItemStack stack = player.getHeldItem(hand); + if (!stack.isEmpty() && player.canPlayerEdit(pos.offset(facing), facing, stack)) { + IBlockState state = worldIn.getBlockState(pos); + if (state.getBlock() == this.singleSlab.get()) { + EnumBlockHalf half = state.getValue(BlockSlab.HALF); + if (facing == EnumFacing.UP && half == EnumBlockHalf.BOTTOM || facing == EnumFacing.DOWN && half == EnumBlockHalf.TOP) { + IBlockState newState = this.doubleSlab.get().getDefaultState(); + AxisAlignedBB bound = newState.getCollisionBoundingBox(worldIn, pos); + + if (bound != Block.NULL_AABB && worldIn.checkNoEntityCollision(bound.offset(pos)) && worldIn.setBlockState(pos, newState, 11)) { + SoundType sound = this.doubleSlab.get().getSoundType(newState, worldIn, pos, player); + worldIn.playSound(player, pos, sound.getPlaceSound(), SoundCategory.BLOCKS, + (sound.getVolume() + 1.0F) / 2.0F, sound.getPitch() * 0.8F); + stack.shrink(1); + + if (player instanceof EntityPlayerMP) { + CriteriaTriggers.PLACED_BLOCK.trigger((EntityPlayerMP) player, pos, stack); + } + } + + return EnumActionResult.SUCCESS; + } + } + return super.onItemUse(player, worldIn, pos, hand, facing, hitX, hitY, hitZ); + } else { + return EnumActionResult.FAIL; + } + } + + @Override + @SideOnly(Side.CLIENT) + public boolean canPlaceBlockOnSide(World worldIn, BlockPos pos, EnumFacing side, EntityPlayer player, ItemStack stack) { + IBlockState state = worldIn.getBlockState(pos); + if (state.getBlock() == this.singleSlab.get()) + if (state.getValue(BlockSlab.HALF) == EnumBlockHalf.TOP ? side == EnumFacing.DOWN : side == EnumFacing.UP) + return true; + + IBlockState other = worldIn.getBlockState(pos.offset(side)); + return other.getBlock() == this.singleSlab.get() || super.canPlaceBlockOnSide(worldIn, pos, side, player, stack); + } +} diff --git a/src/main/resources/assets/naturesaura/blockstates/ancient_slab.json b/src/main/resources/assets/naturesaura/blockstates/ancient_slab.json new file mode 100644 index 00000000..72d0a6c5 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/ancient_slab.json @@ -0,0 +1,22 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:half_slab", + "textures": { + "bottom": "naturesaura:blocks/ancient_planks", + "top": "naturesaura:blocks/ancient_planks", + "side": "naturesaura:blocks/ancient_planks" + }, + "transform": "forge:default-block" + }, + "variants": { + "half=top": [ + { + "x": 180, + "uvlock": true + } + ], + "half=bottom": [{}], + "inventory": [{}] + } +} diff --git a/src/main/resources/assets/naturesaura/blockstates/ancient_slab_double.json b/src/main/resources/assets/naturesaura/blockstates/ancient_slab_double.json new file mode 100644 index 00000000..5fe35ed4 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/ancient_slab_double.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:cube_all", + "textures": { + "all": "naturesaura:blocks/ancient_planks" + }, + "transform": "forge:default-block" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/blockstates/ancient_stairs.json b/src/main/resources/assets/naturesaura/blockstates/ancient_stairs.json new file mode 100644 index 00000000..9caa20db --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/ancient_stairs.json @@ -0,0 +1,223 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": { + "bottom": "naturesaura:blocks/ancient_planks", + "top": "naturesaura:blocks/ancient_planks", + "side": "naturesaura:blocks/ancient_planks" + } + }, + "variants": { + "normal": { + "model": "minecraft:stairs" + }, + "inventory": { + "model": "minecraft:stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "minecraft:stairs" + }, + "facing=west,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs" + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 270, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs" + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 180, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs" + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 270, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs" + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 180, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 270, + "uvlock": true + } + } +} diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_brick.json b/src/main/resources/assets/naturesaura/blockstates/infused_brick.json new file mode 100644 index 00000000..34ff2593 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_brick.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:cube_all", + "textures": { + "all": "naturesaura:blocks/infused_brick" + }, + "transform": "forge:default-block" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_brick_slab.json b/src/main/resources/assets/naturesaura/blockstates/infused_brick_slab.json new file mode 100644 index 00000000..7ba38b85 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_brick_slab.json @@ -0,0 +1,22 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:half_slab", + "textures": { + "bottom": "naturesaura:blocks/infused_brick", + "top": "naturesaura:blocks/infused_brick", + "side": "naturesaura:blocks/infused_brick" + }, + "transform": "forge:default-block" + }, + "variants": { + "half=top": [ + { + "x": 180, + "uvlock": true + } + ], + "half=bottom": [{}], + "inventory": [{}] + } +} diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_brick_slab_double.json b/src/main/resources/assets/naturesaura/blockstates/infused_brick_slab_double.json new file mode 100644 index 00000000..34ff2593 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_brick_slab_double.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:cube_all", + "textures": { + "all": "naturesaura:blocks/infused_brick" + }, + "transform": "forge:default-block" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_brick_stairs.json b/src/main/resources/assets/naturesaura/blockstates/infused_brick_stairs.json new file mode 100644 index 00000000..a1641c36 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_brick_stairs.json @@ -0,0 +1,223 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": { + "bottom": "naturesaura:blocks/infused_brick", + "top": "naturesaura:blocks/infused_brick", + "side": "naturesaura:blocks/infused_brick" + } + }, + "variants": { + "normal": { + "model": "minecraft:stairs" + }, + "inventory": { + "model": "minecraft:stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "minecraft:stairs" + }, + "facing=west,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs" + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 270, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs" + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 180, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs" + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 270, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs" + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 180, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 270, + "uvlock": true + } + } +} diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_slab.json b/src/main/resources/assets/naturesaura/blockstates/infused_slab.json new file mode 100644 index 00000000..7ca71aba --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_slab.json @@ -0,0 +1,22 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:half_slab", + "textures": { + "bottom": "naturesaura:blocks/infused_stone", + "top": "naturesaura:blocks/infused_stone", + "side": "naturesaura:blocks/infused_stone" + }, + "transform": "forge:default-block" + }, + "variants": { + "half=top": [ + { + "x": 180, + "uvlock": true + } + ], + "half=bottom": [{}], + "inventory": [{}] + } +} diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_slab_double.json b/src/main/resources/assets/naturesaura/blockstates/infused_slab_double.json new file mode 100644 index 00000000..1b276290 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_slab_double.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:cube_all", + "textures": { + "all": "naturesaura:blocks/infused_stone" + }, + "transform": "forge:default-block" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/blockstates/infused_stairs.json b/src/main/resources/assets/naturesaura/blockstates/infused_stairs.json new file mode 100644 index 00000000..c7e25c28 --- /dev/null +++ b/src/main/resources/assets/naturesaura/blockstates/infused_stairs.json @@ -0,0 +1,223 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": { + "bottom": "naturesaura:blocks/infused_stone", + "top": "naturesaura:blocks/infused_stone", + "side": "naturesaura:blocks/infused_stone" + } + }, + "variants": { + "normal": { + "model": "minecraft:stairs" + }, + "inventory": { + "model": "minecraft:stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "minecraft:stairs" + }, + "facing=west,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "minecraft:stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs" + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "minecraft:outer_stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 270, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs" + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "minecraft:outer_stairs", + "y": 180, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs" + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 180, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 90, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "minecraft:inner_stairs", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 270, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs" + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "minecraft:inner_stairs", + "y": 180, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "minecraft:stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "minecraft:outer_stairs", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "minecraft:outer_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "minecraft:inner_stairs", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "minecraft:inner_stairs", + "x": 180, + "y": 270, + "uvlock": true + } + } +} diff --git a/src/main/resources/assets/naturesaura/lang/en_US.lang b/src/main/resources/assets/naturesaura/lang/en_US.lang index dc01108a..7f6a0305 100644 --- a/src/main/resources/assets/naturesaura/lang/en_US.lang +++ b/src/main/resources/assets/naturesaura/lang/en_US.lang @@ -15,6 +15,16 @@ tile.naturesaura.furnace_heater.name=Extraneous Firestarter tile.naturesaura.potion_generator.name=Lingering Absorber tile.naturesaura.aura_detector.name=Aura Detector tile.naturesaura.conversion_catalyst.name=Transmutation Catalyst +tile.naturesaura.infused_stairs.name=Infused Rock Stairs +tile.naturesaura.infused_slab.name=Infused Rock Slab +tile.naturesaura.infused_slab_double.name=Infused Rock Double Slab +tile.naturesaura.ancient_stairs.name=Ancient Wood Stairs +tile.naturesaura.ancient_slab.name=Ancient Wood Slab +tile.naturesaura.ancient_slab_double.name=Ancient Wood Double Slab +tile.naturesaura.infused_brick.name=Infused Brick +tile.naturesaura.infused_brick_stairs.name=Infused Brick Stairs +tile.naturesaura.infused_brick_slab.name=Infused Brick Slab +tile.naturesaura.infused_brick_slab_double.name=Infused Brick Double Slab item.naturesaura.eye.name=Environmental Eye item.naturesaura.gold_fiber.name=Brilliant Fiber diff --git a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/using/altar.json b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/using/altar.json index b3134d6e..807c1b3b 100644 --- a/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/using/altar.json +++ b/src/main/resources/assets/naturesaura/patchouli_books/book/en_us/entries/using/altar.json @@ -16,7 +16,7 @@ }, { "type": "naturesaura:altar", - "text": "Creating $(item)Infused Rock$(), a material, similar looking to the fabric of $(italic)balance$() itself, infused with $(aura).", + "text": "Creating $(item)Infused Rock$(), an earthly material infused with $(aura).", "recipe": "naturesaura:infused_stone" } ] diff --git a/src/main/resources/assets/naturesaura/recipes/ancient_slab.json b/src/main/resources/assets/naturesaura/recipes/ancient_slab.json new file mode 100644 index 00000000..7029d402 --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/ancient_slab.json @@ -0,0 +1,15 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "WWW" + ], + "key": { + "W": { + "item": "naturesaura:ancient_planks" + } + }, + "result": { + "item": "naturesaura:ancient_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/ancient_stairs.json b/src/main/resources/assets/naturesaura/recipes/ancient_stairs.json new file mode 100644 index 00000000..16261921 --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/ancient_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "W ", + "WW ", + "WWW" + ], + "key": { + "W": { + "item": "naturesaura:ancient_planks" + } + }, + "result": { + "item": "naturesaura:ancient_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_brick.json b/src/main/resources/assets/naturesaura/recipes/infused_brick.json new file mode 100644 index 00000000..c5457cec --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_brick.json @@ -0,0 +1,16 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "WW", + "WW" + ], + "key": { + "W": { + "item": "naturesaura:infused_stone" + } + }, + "result": { + "item": "naturesaura:infused_brick", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_brick_slab.json b/src/main/resources/assets/naturesaura/recipes/infused_brick_slab.json new file mode 100644 index 00000000..8fbb8bfd --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_brick_slab.json @@ -0,0 +1,15 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "WWW" + ], + "key": { + "W": { + "item": "naturesaura:infused_brick" + } + }, + "result": { + "item": "naturesaura:infused_brick_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_brick_stairs.json b/src/main/resources/assets/naturesaura/recipes/infused_brick_stairs.json new file mode 100644 index 00000000..65ba85c6 --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_brick_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "W ", + "WW ", + "WWW" + ], + "key": { + "W": { + "item": "naturesaura:infused_brick" + } + }, + "result": { + "item": "naturesaura:infused_brick_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_slab.json b/src/main/resources/assets/naturesaura/recipes/infused_slab.json new file mode 100644 index 00000000..59fb007b --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_slab.json @@ -0,0 +1,15 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "WWW" + ], + "key": { + "W": { + "item": "naturesaura:infused_stone" + } + }, + "result": { + "item": "naturesaura:infused_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/recipes/infused_stairs.json b/src/main/resources/assets/naturesaura/recipes/infused_stairs.json new file mode 100644 index 00000000..94de66e6 --- /dev/null +++ b/src/main/resources/assets/naturesaura/recipes/infused_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "forge:ore_shaped", + "pattern": [ + "W ", + "WW ", + "WWW" + ], + "key": { + "W": { + "item": "naturesaura:infused_stone" + } + }, + "result": { + "item": "naturesaura:infused_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/textures/blocks/infused_brick.png b/src/main/resources/assets/naturesaura/textures/blocks/infused_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..c03c7fe696dbb74509ce25f53b0888a7ecea4e60 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXPB%t#~Y~Tkf)1d zh=u>sNgKHi8Hl)kKHL;-?{?v!Cp+u(rjnA6tCf})9LmiQx1RG%_5HJN`z{&v-v7nl ze|xtazw=z)W7n4#+S;3cpMJUa*e=N%40A*|(|0cKFEmbg{8U6Gv#W1&+Jk7}b5$k_ z(_(ujD7ALZy0czw!MnxYeV5!GY;3nYD8_N^+~g#iWXr{Zf?qeQw=TPXKyvSb#_6UW zhbQ@-T_KppbjDb*HbdD#>Ip}-c&ee(B(}^u>yKt|vYGs5nU%ixv%SPC{;nf$Ct5Hk RO$Pdg!PC{xWt~$(699v}dnEt> literal 0 HcmV?d00001