From cb12b35ce6d722967a46fafb5fdb2c71970a1ac2 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 27 Aug 2022 19:45:17 +0200 Subject: [PATCH] block stacker for all 6 directions --- gradle.properties | 2 +- .../blockentity/BlockSpreaderEntity.java | 71 +----------------- .../blockentity/BlockStackerEntity.java | 7 +- .../blocks/BlockStackerDown.java | 67 +++++++++++++++++ .../blocks/BlockStackerEast.java | 67 +++++++++++++++++ .../blocks/BlockStackerNorth.java | 67 +++++++++++++++++ .../blocks/BlockStackerSouth.java | 67 +++++++++++++++++ ...{BlockStacker.java => BlockStackerUp.java} | 28 ++++++- .../blocks/BlockStackerWest.java | 67 +++++++++++++++++ .../quickiefabric/blocks/QuickieBlocks.java | 7 +- .../blocks/help/BlockStacker.java | 24 ++++++ .../quickiefabric/init/RegistryManager.java | 18 ++++- .../blockstates/blockstacker.json | 7 -- .../blockstates/blockstackerdown.json | 7 ++ .../blockstates/blockstackereast.json | 7 ++ .../blockstates/blockstackernorth.json | 7 ++ .../blockstates/blockstackersouth.json | 7 ++ .../blockstates/blockstackerup.json | 7 ++ .../blockstates/blockstackerwest.json | 7 ++ .../assets/quickiefabric/lang/de_de.json | 7 +- .../assets/quickiefabric/lang/en_us.json | 7 +- .../models/block/blockstacker.json | 8 -- .../models/block/blockstackerdown.json | 8 ++ .../models/block/blockstackereast.json | 11 +++ .../models/block/blockstackernorth.json | 11 +++ .../models/block/blockstackersouth.json | 11 +++ .../models/block/blockstackerup.json | 8 ++ .../models/block/blockstackerwest.json | 11 +++ .../models/item/blockstackerdown.json | 10 +++ .../models/item/blockstackereast.json | 10 +++ .../models/item/blockstackernorth.json | 10 +++ .../models/item/blockstackersouth.json | 10 +++ ...{blockstacker.json => blockstackerup.json} | 2 +- .../models/item/blockstackerwest.json | 10 +++ .../textures/block/blockstackerdown.png | Bin 0 -> 5939 bytes ...ckstackerbottom.png => blockstackerin.png} | Bin .../textures/block/blockstackerleft.png | Bin 0 -> 5926 bytes ...lockstackertop.png => blockstackerout.png} | Bin .../textures/block/blockstackerright.png | Bin 0 -> 5928 bytes .../{blockstacker.png => blockstackerup.png} | Bin .../recipes/blockstackerdown.json | 20 +++++ .../recipes/blockstackerdown_up.json | 12 +++ .../recipes/blockstackereast.json | 20 +++++ .../recipes/blockstackereast_down.json | 12 +++ .../recipes/blockstackernorth.json | 20 +++++ .../recipes/blockstackernorth_west.json | 12 +++ .../recipes/blockstackersouth.json | 20 +++++ .../recipes/blockstackersouth_east.json | 12 +++ ...{blockstacker.json => blockstackerup.json} | 2 +- .../recipes/blockstackerup_north.json | 12 +++ .../recipes/blockstackerwest.json | 20 +++++ .../recipes/blockstackerwest_south.json | 12 +++ 52 files changed, 751 insertions(+), 98 deletions(-) create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerDown.java create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerEast.java create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerNorth.java create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerSouth.java rename src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/{BlockStacker.java => BlockStackerUp.java} (64%) create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerWest.java create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/help/BlockStacker.java delete mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstacker.json create mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstackerdown.json create mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstackereast.json create mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstackernorth.json create mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstackersouth.json create mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstackerup.json create mode 100644 src/main/resources/assets/quickiefabric/blockstates/blockstackerwest.json delete mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstacker.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstackerdown.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstackereast.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstackernorth.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstackersouth.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstackerup.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/blockstackerwest.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/blockstackerdown.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/blockstackereast.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/blockstackernorth.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/blockstackersouth.json rename src/main/resources/assets/quickiefabric/models/item/{blockstacker.json => blockstackerup.json} (76%) create mode 100644 src/main/resources/assets/quickiefabric/models/item/blockstackerwest.json create mode 100644 src/main/resources/assets/quickiefabric/textures/block/blockstackerdown.png rename src/main/resources/assets/quickiefabric/textures/block/{blockstackerbottom.png => blockstackerin.png} (100%) create mode 100644 src/main/resources/assets/quickiefabric/textures/block/blockstackerleft.png rename src/main/resources/assets/quickiefabric/textures/block/{blockstackertop.png => blockstackerout.png} (100%) create mode 100644 src/main/resources/assets/quickiefabric/textures/block/blockstackerright.png rename src/main/resources/assets/quickiefabric/textures/block/{blockstacker.png => blockstackerup.png} (100%) create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackerdown.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackerdown_up.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackereast.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackereast_down.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackernorth.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackernorth_west.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackersouth.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackersouth_east.json rename src/main/resources/data/quickiefabric/recipes/{blockstacker.json => blockstackerup.json} (83%) create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackerup_north.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackerwest.json create mode 100644 src/main/resources/data/quickiefabric/recipes/blockstackerwest_south.json diff --git a/gradle.properties b/gradle.properties index eb36e07..77ef68b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ loader_version=0.14.8 # Mod Properties - mod_version = 1.19.0.2 + mod_version = 1.19.0.3 maven_group = de.jottyfan.minecraft archives_base_name = quickiefabric diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockSpreaderEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockSpreaderEntity.java index 5c5b305..36b0bc9 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockSpreaderEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockSpreaderEntity.java @@ -5,9 +5,6 @@ import org.apache.logging.log4j.Logger; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.LootableContainerBlockEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -24,72 +21,6 @@ public class BlockSpreaderEntity extends BlockEntity { } public static void tick(World world, BlockPos pos, BlockState state, BlockSpreaderEntity entity) { - if (!world.isClient) { - // TODO: source is a chest type below - BlockEntity source = world.getBlockEntity(pos.down()); - // dest is the block that fits to the filter of the gui (north, south, west, east only) - BlockEntity dest = world.getBlockEntity(pos.north()); - Boolean sourceIsLootable = source instanceof LootableContainerBlockEntity; - Boolean destIsLootable = dest instanceof LootableContainerBlockEntity; - if (sourceIsLootable && destIsLootable) { - LootableContainerBlockEntity lootableSource = (LootableContainerBlockEntity) source; - LootableContainerBlockEntity lootableDest = (LootableContainerBlockEntity) dest; - transferOneStack(lootableSource, lootableDest); - } - } - } - - private static final void transferOneStack(LootableContainerBlockEntity source, LootableContainerBlockEntity dest) { - Integer sourceSlot = findItemStackPos(source, false); - if (sourceSlot != null && !Items.AIR.equals(source.getStack(sourceSlot).getItem())) { - ItemStack sourceStack = source.getStack(sourceSlot); - Integer destSlot = findItemStackPos(dest, sourceStack); - if (destSlot != null) { - Integer occupied = dest.getStack(destSlot).getCount(); - Integer free = dest.getStack(destSlot).getMaxCount() - occupied; - Integer candidates = source.getStack(sourceSlot).getCount(); - Integer travellers = candidates > free ? free : candidates; - if (travellers > 0) { - LOGGER.debug("transfer {}/{} of {} from slot {} to slot {} on top of {} ones", travellers, candidates, source.getStack(sourceSlot).getItem().toString(), sourceSlot, destSlot, occupied); - source.getStack(sourceSlot).decrement(travellers); - if (source.getStack(sourceSlot).getCount() < 1) { - source.removeStack(sourceSlot); // make empty slots really empty - } - dest.getStack(destSlot).increment(travellers); - } - } else { - Integer destFreeSlot = findItemStackPos(dest, true); - if (destFreeSlot != null) { - LOGGER.debug("transfer all of {} from slot {} to slot {}", source.getStack(sourceSlot).getItem().toString(), sourceSlot, destSlot); - dest.setStack(destFreeSlot, source.removeStack(sourceSlot)); - } - } - } - } - - private static final Integer findItemStackPos(LootableContainerBlockEntity lcbe, ItemStack sourceStack) { - Integer counter = lcbe.size(); - while (counter > 0) { - counter--; - ItemStack stack = lcbe.getStack(counter); - if (stack.getItem().equals(sourceStack.getItem())) { - if (stack.getCount() < stack.getMaxCount()) { - return counter; - } - } - } - return null; - } - - private static final Integer findItemStackPos(LootableContainerBlockEntity lcbe, Boolean empty) { - Integer counter = lcbe.size(); - while (counter > 0) { - counter--; - ItemStack stack = lcbe.getStack(counter); - if (empty.equals(ItemStack.EMPTY.equals(stack))) { - return counter; - } - } - return null; + LOGGER.debug("not yet implemented"); } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockStackerEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockStackerEntity.java index bc25477..f341b70 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockStackerEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/BlockStackerEntity.java @@ -3,6 +3,7 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.LootableContainerBlockEntity; @@ -25,8 +26,10 @@ public class BlockStackerEntity extends BlockEntity { public static void tick(World world, BlockPos pos, BlockState state, BlockStackerEntity entity) { if (!world.isClient) { - BlockEntity source = world.getBlockEntity(pos.down()); - BlockEntity dest = world.getBlockEntity(pos.up()); + pos.down(); + BlockStacker block = (BlockStacker) state.getBlock(); + BlockEntity source = world.getBlockEntity(pos.offset(block.getSourceOffset())); + BlockEntity dest = world.getBlockEntity(pos.offset(block.getDestOffset())); Boolean sourceIsLootable = source instanceof LootableContainerBlockEntity; Boolean destIsLootable = dest instanceof LootableContainerBlockEntity; if (sourceIsLootable && destIsLootable) { diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerDown.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerDown.java new file mode 100644 index 0000000..9f5c233 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerDown.java @@ -0,0 +1,67 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.quickiefabric.blockentity.BlockStackerEntity; +import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockStackerDown extends BlockWithEntity implements BlockStacker { + + public BlockStackerDown() { + super(FabricBlockSettings.of(Material.STONE).hardness(2.5f)); + } + + @Override + public Direction getSourceOffset() { + return Direction.UP; + } + + @Override + public Direction getDestOffset() { + return Direction.DOWN; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new BlockStackerEntity(pos, state); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.BLOCKSTACKERDOWN.asItem())); + return list; + } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return checkType(type, QuickieFabricBlockEntity.BLOCKSTACKER_ENTITY, + (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerEast.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerEast.java new file mode 100644 index 0000000..6898e24 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerEast.java @@ -0,0 +1,67 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.quickiefabric.blockentity.BlockStackerEntity; +import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockStackerEast extends BlockWithEntity implements BlockStacker { + + public BlockStackerEast() { + super(FabricBlockSettings.of(Material.STONE).hardness(2.5f)); + } + + @Override + public Direction getSourceOffset() { + return Direction.WEST; + } + + @Override + public Direction getDestOffset() { + return Direction.EAST; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new BlockStackerEntity(pos, state); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.BLOCKSTACKEREAST.asItem())); + return list; + } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return checkType(type, QuickieFabricBlockEntity.BLOCKSTACKER_ENTITY, + (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerNorth.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerNorth.java new file mode 100644 index 0000000..b59fff9 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerNorth.java @@ -0,0 +1,67 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.quickiefabric.blockentity.BlockStackerEntity; +import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockStackerNorth extends BlockWithEntity implements BlockStacker { + + public BlockStackerNorth() { + super(FabricBlockSettings.of(Material.STONE).hardness(2.5f)); + } + + @Override + public Direction getSourceOffset() { + return Direction.SOUTH; + } + + @Override + public Direction getDestOffset() { + return Direction.NORTH; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new BlockStackerEntity(pos, state); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.BLOCKSTACKERNORTH.asItem())); + return list; + } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return checkType(type, QuickieFabricBlockEntity.BLOCKSTACKER_ENTITY, + (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerSouth.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerSouth.java new file mode 100644 index 0000000..8fa8d2e --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerSouth.java @@ -0,0 +1,67 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.quickiefabric.blockentity.BlockStackerEntity; +import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockStackerSouth extends BlockWithEntity implements BlockStacker { + + public BlockStackerSouth() { + super(FabricBlockSettings.of(Material.STONE).hardness(2.5f)); + } + + @Override + public Direction getSourceOffset() { + return Direction.NORTH; + } + + @Override + public Direction getDestOffset() { + return Direction.SOUTH; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new BlockStackerEntity(pos, state); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.BLOCKSTACKERSOUTH.asItem())); + return list; + } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return checkType(type, QuickieFabricBlockEntity.BLOCKSTACKER_ENTITY, + (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStacker.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerUp.java similarity index 64% rename from src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStacker.java rename to src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerUp.java index 348d63a..aef7813 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStacker.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerUp.java @@ -1,7 +1,11 @@ package de.jottyfan.minecraft.quickiefabric.blocks; +import java.util.ArrayList; +import java.util.List; + import de.jottyfan.minecraft.quickiefabric.blockentity.BlockStackerEntity; import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; @@ -10,7 +14,10 @@ import net.minecraft.block.Material; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntityTicker; import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; import net.minecraft.world.World; /** @@ -18,12 +25,22 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockStacker extends BlockWithEntity { +public class BlockStackerUp extends BlockWithEntity implements BlockStacker { - public BlockStacker() { + public BlockStackerUp() { super(FabricBlockSettings.of(Material.STONE).hardness(2.5f)); } + @Override + public Direction getSourceOffset() { + return Direction.DOWN; + } + + @Override + public Direction getDestOffset() { + return Direction.UP; + } + @Override public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { return new BlockStackerEntity(pos, state); @@ -34,6 +51,13 @@ public class BlockStacker extends BlockWithEntity { return BlockRenderType.MODEL; } + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.BLOCKSTACKERUP.asItem())); + return list; + } + @Override public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerWest.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerWest.java new file mode 100644 index 0000000..6d285de --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockStackerWest.java @@ -0,0 +1,67 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.quickiefabric.blockentity.BlockStackerEntity; +import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity; +import de.jottyfan.minecraft.quickiefabric.blocks.help.BlockStacker; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockStackerWest extends BlockWithEntity implements BlockStacker { + + public BlockStackerWest() { + super(FabricBlockSettings.of(Material.STONE).hardness(2.5f)); + } + + @Override + public Direction getSourceOffset() { + return Direction.EAST; + } + + @Override + public Direction getDestOffset() { + return Direction.WEST; + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new BlockStackerEntity(pos, state); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.BLOCKSTACKERWEST.asItem())); + return list; + } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return checkType(type, QuickieFabricBlockEntity.BLOCKSTACKER_ENTITY, + (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java index 40035bd..d5a5b2b 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java @@ -25,6 +25,11 @@ public class QuickieBlocks { public static final BlockDrillWest DRILL_WEST = new BlockDrillWest(); public static final BlockDrillNorth DRILL_NORTH = new BlockDrillNorth(); public static final BlockDrillstop DRILLSTOP = new BlockDrillstop(); - public static final BlockStacker BLOCKSTACKER = new BlockStacker(); + public static final BlockStackerUp BLOCKSTACKERUP = new BlockStackerUp(); + public static final BlockStackerDown BLOCKSTACKERDOWN = new BlockStackerDown(); + public static final BlockStackerEast BLOCKSTACKEREAST = new BlockStackerEast(); + public static final BlockStackerWest BLOCKSTACKERWEST = new BlockStackerWest(); + public static final BlockStackerNorth BLOCKSTACKERNORTH = new BlockStackerNorth(); + public static final BlockStackerSouth BLOCKSTACKERSOUTH = new BlockStackerSouth(); public static final BlockSpreader BLOCKSPREADER = new BlockSpreader(); } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/help/BlockStacker.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/help/BlockStacker.java new file mode 100644 index 0000000..5bb3e81 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/help/BlockStacker.java @@ -0,0 +1,24 @@ +package de.jottyfan.minecraft.quickiefabric.blocks.help; + +import net.minecraft.util.math.Direction; + +/** + * + * @author jotty + * + */ +public interface BlockStacker { + /** + * define the source offset + * + * @return the direction of the source offset (1 block beside) + */ + public Direction getSourceOffset(); + + /** + * define the dest offset + * + * @return the direction of the dest offset (1 block beside) + */ + public Direction getDestOffset(); +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java index 39a3591..59bde2a 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java @@ -165,7 +165,12 @@ public class RegistryManager { stacks.add(new ItemStack(QuickieBlocks.DRILL_WEST)); stacks.add(new ItemStack(QuickieBlocks.DRILL_NORTH)); stacks.add(new ItemStack(QuickieBlocks.DRILLSTOP)); - stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKER)); + stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERUP)); + stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERDOWN)); + stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKEREAST)); + stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERWEST)); + stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERNORTH)); + stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERSOUTH)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSPREADER)); }).build(); @@ -208,7 +213,9 @@ public class RegistryManager { QuickieFabricBlockEntity.DRILL_NORTH = (BlockEntityType) registerBlockEntity( "drillblocknorthentity", DrillBlockNorthEntity::new, QuickieBlocks.DRILL_NORTH); QuickieFabricBlockEntity.BLOCKSTACKER_ENTITY = (BlockEntityType) registerBlockEntity( - "blockstackerentity", BlockStackerEntity::new, QuickieBlocks.BLOCKSTACKER); + "blockstackerentity", BlockStackerEntity::new, QuickieBlocks.BLOCKSTACKERUP, QuickieBlocks.BLOCKSTACKERDOWN, + QuickieBlocks.BLOCKSTACKEREAST, QuickieBlocks.BLOCKSTACKERWEST, QuickieBlocks.BLOCKSTACKERNORTH, + QuickieBlocks.BLOCKSTACKERSOUTH); QuickieFabricBlockEntity.BLOCKSPREADER_ENTITY = (BlockEntityType) registerBlockEntity( "blockspreaderentity", BlockSpreaderEntity::new, QuickieBlocks.BLOCKSPREADER); } @@ -234,7 +241,12 @@ public class RegistryManager { registerBlock(QuickieBlocks.DRILL_WEST, "drillwest"); registerBlock(QuickieBlocks.DRILL_NORTH, "drillnorth"); registerBlock(QuickieBlocks.DRILLSTOP, "drillstop"); - registerBlock(QuickieBlocks.BLOCKSTACKER, "blockstacker"); + registerBlock(QuickieBlocks.BLOCKSTACKERUP, "blockstackerup"); + registerBlock(QuickieBlocks.BLOCKSTACKERDOWN, "blockstackerdown"); + registerBlock(QuickieBlocks.BLOCKSTACKEREAST, "blockstackereast"); + registerBlock(QuickieBlocks.BLOCKSTACKERWEST, "blockstackerwest"); + registerBlock(QuickieBlocks.BLOCKSTACKERNORTH, "blockstackernorth"); + registerBlock(QuickieBlocks.BLOCKSTACKERSOUTH, "blockstackersouth"); registerBlock(QuickieBlocks.BLOCKSPREADER, "blockspreader"); } diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstacker.json b/src/main/resources/assets/quickiefabric/blockstates/blockstacker.json deleted file mode 100644 index f28472b..0000000 --- a/src/main/resources/assets/quickiefabric/blockstates/blockstacker.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "quickiefabric:block/blockstacker" - } - } -} diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstackerdown.json b/src/main/resources/assets/quickiefabric/blockstates/blockstackerdown.json new file mode 100644 index 0000000..b694ab3 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/blockstackerdown.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/blockstackerdown" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstackereast.json b/src/main/resources/assets/quickiefabric/blockstates/blockstackereast.json new file mode 100644 index 0000000..304013e --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/blockstackereast.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/blockstackereast" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstackernorth.json b/src/main/resources/assets/quickiefabric/blockstates/blockstackernorth.json new file mode 100644 index 0000000..fcc8371 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/blockstackernorth.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/blockstackernorth" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstackersouth.json b/src/main/resources/assets/quickiefabric/blockstates/blockstackersouth.json new file mode 100644 index 0000000..2fa9f4a --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/blockstackersouth.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/blockstackersouth" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstackerup.json b/src/main/resources/assets/quickiefabric/blockstates/blockstackerup.json new file mode 100644 index 0000000..9e17953 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/blockstackerup.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/blockstackerup" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/blockstates/blockstackerwest.json b/src/main/resources/assets/quickiefabric/blockstates/blockstackerwest.json new file mode 100644 index 0000000..62f17fd --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/blockstackerwest.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/blockstackerwest" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/lang/de_de.json b/src/main/resources/assets/quickiefabric/lang/de_de.json index 4149b67..aaa8df1 100644 --- a/src/main/resources/assets/quickiefabric/lang/de_de.json +++ b/src/main/resources/assets/quickiefabric/lang/de_de.json @@ -62,7 +62,12 @@ "block.quickiefabric.drillwest": "West-Bohrer", "block.quickiefabric.drillnorth": "Nord-Bohrer", "block.quickiefabric.drillstop": "Bohrerstopper", - "block.quickiefabric.blockstacker": "Blockstapler", + "block.quickiefabric.blockstackerup": "Blockhochstapler", + "block.quickiefabric.blockstackerdown": "Blocktiefstapler", + "block.quickiefabric.blockstackereast": "Ostblockstapler", + "block.quickiefabric.blockstackerwest": "Westblockstapler", + "block.quickiefabric.blockstackernorth": "Nordblockstapler", + "block.quickiefabric.blockstackersouth": "Südblockstapler", "block.quickiefabric.blockspreader": "Blockverteiler", "container.quickiefabric.backpack": "Rucksack", "container.quickiefabric.blockstacker": "Blockstapler", diff --git a/src/main/resources/assets/quickiefabric/lang/en_us.json b/src/main/resources/assets/quickiefabric/lang/en_us.json index ffff3be..d63fe4c 100644 --- a/src/main/resources/assets/quickiefabric/lang/en_us.json +++ b/src/main/resources/assets/quickiefabric/lang/en_us.json @@ -62,7 +62,12 @@ "block.quickiefabric.drillwest": "west drill", "block.quickiefabric.drillnorth": "north drill", "block.quickiefabric.drillstop": "drill stopper", - "block.quickiefabric.blockstacker": "block stacker", + "block.quickiefabric.blockstackerup": "block up stacker", + "block.quickiefabric.blockstackerdown": "block down stacker", + "block.quickiefabric.blockstackereast": "block east stacker", + "block.quickiefabric.blockstackerwest": "block west stacker", + "block.quickiefabric.blockstackernorth": "block north stacker", + "block.quickiefabric.blockstackersouth": "block south stacker", "block.quickiefabric.blockspreader": "block spreader", "container.quickiefabric.backpack": "backpack", "container.quickiefabric.blockstacker": "block stacker", diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstacker.json b/src/main/resources/assets/quickiefabric/models/block/blockstacker.json deleted file mode 100644 index 7e749f0..0000000 --- a/src/main/resources/assets/quickiefabric/models/block/blockstacker.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "block/cube_bottom_top", - "textures": { - "bottom": "quickiefabric:block/blockstackerbottom", - "side": "quickiefabric:block/blockstacker", - "top": "quickiefabric:block/blockstackertop" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstackerdown.json b/src/main/resources/assets/quickiefabric/models/block/blockstackerdown.json new file mode 100644 index 0000000..382b617 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/blockstackerdown.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "quickiefabric:block/blockstackerout", + "side": "quickiefabric:block/blockstackerdown", + "top": "quickiefabric:block/blockstackerin" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstackereast.json b/src/main/resources/assets/quickiefabric/models/block/blockstackereast.json new file mode 100644 index 0000000..c23a7c9 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/blockstackereast.json @@ -0,0 +1,11 @@ +{ + "parent": "block/cube_directional", + "textures": { + "up": "quickiefabric:block/blockstackerright", + "down": "quickiefabric:block/blockstackerleft", + "north": "quickiefabric:block/blockstackerleft", + "east": "quickiefabric:block/blockstackerout", + "south": "quickiefabric:block/blockstackerright", + "west": "quickiefabric:block/blockstackerin" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstackernorth.json b/src/main/resources/assets/quickiefabric/models/block/blockstackernorth.json new file mode 100644 index 0000000..b650d1d --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/blockstackernorth.json @@ -0,0 +1,11 @@ +{ + "parent": "block/cube_directional", + "textures": { + "up": "quickiefabric:block/blockstackerup", + "down": "quickiefabric:block/blockstackerup", + "north": "quickiefabric:block/blockstackerout", + "east": "quickiefabric:block/blockstackerup", + "south": "quickiefabric:block/blockstackerin", + "west": "quickiefabric:block/blockstackerup" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstackersouth.json b/src/main/resources/assets/quickiefabric/models/block/blockstackersouth.json new file mode 100644 index 0000000..7684bc1 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/blockstackersouth.json @@ -0,0 +1,11 @@ +{ + "parent": "block/cube_directional", + "textures": { + "up": "quickiefabric:block/blockstackerdown", + "down": "quickiefabric:block/blockstackerdown", + "north": "quickiefabric:block/blockstackerin", + "east": "quickiefabric:block/blockstackerdown", + "south": "quickiefabric:block/blockstackerout", + "west": "quickiefabric:block/blockstackerdown" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstackerup.json b/src/main/resources/assets/quickiefabric/models/block/blockstackerup.json new file mode 100644 index 0000000..fe452ed --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/blockstackerup.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "quickiefabric:block/blockstackerin", + "side": "quickiefabric:block/blockstackerup", + "top": "quickiefabric:block/blockstackerout" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/blockstackerwest.json b/src/main/resources/assets/quickiefabric/models/block/blockstackerwest.json new file mode 100644 index 0000000..581f0e4 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/blockstackerwest.json @@ -0,0 +1,11 @@ +{ + "parent": "block/cube_directional", + "textures": { + "up": "quickiefabric:block/blockstackerleft", + "down": "quickiefabric:block/blockstackerright", + "north": "quickiefabric:block/blockstackerright", + "east": "quickiefabric:block/blockstackerin", + "south": "quickiefabric:block/blockstackerleft", + "west": "quickiefabric:block/blockstackerout" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/blockstackerdown.json b/src/main/resources/assets/quickiefabric/models/item/blockstackerdown.json new file mode 100644 index 0000000..0776057 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/blockstackerdown.json @@ -0,0 +1,10 @@ +{ + "parent": "quickiefabric:block/blockstackerdown", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/blockstackereast.json b/src/main/resources/assets/quickiefabric/models/item/blockstackereast.json new file mode 100644 index 0000000..5af8f0f --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/blockstackereast.json @@ -0,0 +1,10 @@ +{ + "parent": "quickiefabric:block/blockstackerwest", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/blockstackernorth.json b/src/main/resources/assets/quickiefabric/models/item/blockstackernorth.json new file mode 100644 index 0000000..3527d59 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/blockstackernorth.json @@ -0,0 +1,10 @@ +{ + "parent": "quickiefabric:block/blockstackernorth", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/blockstackersouth.json b/src/main/resources/assets/quickiefabric/models/item/blockstackersouth.json new file mode 100644 index 0000000..6f9a528 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/blockstackersouth.json @@ -0,0 +1,10 @@ +{ + "parent": "quickiefabric:block/blockstackersouth", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/blockstacker.json b/src/main/resources/assets/quickiefabric/models/item/blockstackerup.json similarity index 76% rename from src/main/resources/assets/quickiefabric/models/item/blockstacker.json rename to src/main/resources/assets/quickiefabric/models/item/blockstackerup.json index d0dbc2f..16bb23d 100644 --- a/src/main/resources/assets/quickiefabric/models/item/blockstacker.json +++ b/src/main/resources/assets/quickiefabric/models/item/blockstackerup.json @@ -1,5 +1,5 @@ { - "parent": "quickiefabric:block/blockstacker", + "parent": "quickiefabric:block/blockstackerup", "display": { "thirdperson": { "rotation": [ 10, -45, 170 ], diff --git a/src/main/resources/assets/quickiefabric/models/item/blockstackerwest.json b/src/main/resources/assets/quickiefabric/models/item/blockstackerwest.json new file mode 100644 index 0000000..c6ff895 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/blockstackerwest.json @@ -0,0 +1,10 @@ +{ + "parent": "quickiefabric:block/blockstackereast", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/textures/block/blockstackerdown.png b/src/main/resources/assets/quickiefabric/textures/block/blockstackerdown.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0f05c4500a939504726c67f678c624f79e5b70 GIT binary patch literal 5939 zcmeHLdsGu=77v7qg0`qosZvaXtW}(3^3Fsc@=|h2AOZqXR3@1TMDj8jNJ1@G1g(o! zS>G14TE$1L6$P{?ugXh{-~;g}1zXXgr7IQN>Wb9;CLo5bYu9tybM_CDlgWJd``zEY z-~H~r^PO2G3!gK_X`&N_LK!0o4UPo=F67Ui3a;{k3B42wwLCpKj)+7}G`&HmRH<+^kYkDCVmrF`Cluzm0zM#XMqE=yfCF-iWjZY`$iv7BoqF$91)OOrq!JoeMQ2 z_jmQo&iroN`Owy!TkG$S*evBs>gd}nH}7JKdSf5@Ypo=_-uZ)2R`;Vf`U@++zLLLA zsJN+JCcm<9M%RSX+6Q-EP3G)w_p08dou#5iZe^OO4fo>e_PT4=9zJM1)F-)qa=$n} zuLaj`?YWcLw(QnC$C=ZQO#iGpD!Pz*Rrl7}xM1H9s;lMT{Qh+-&yIJvF*m<)O)SxT zrs(?A-kFgt5lDdk)k5+2D-CIDmq&Qj2sV{?Y>McWg&h|+WgLs~Dk*Kche#*Mm1*56&5YqRJX||Nqh36FZCbf#>Cip(<6gd z&dAy|C1lJ8Z?!oJMr|w3;+?locZ)=peuoOi7<0Tv$F3-ZtIQXem7MMNC9P50uhe+O z{Pa%xxUbeUC1eIVXY1SUHLRiZbpH0k$?5KdSL0a6M&(wQ+)n6Ny60_L{LWi&b9|>v zK*=6i`er`*3bpR2=vQ@CXyR-SuLq|of8Q1Jx~!^6lCxPp&#z(C1&t!&+nqk)h3p9F!;VBR!`m}cTam5>`t#nK%hS6H?)yLJcw{)2xZK%4+a<^eSzLTR zWOC4I*QiFxKXxHyH=;sWdp2-ZD``nTHpv<+c_9-{9Is`ftKNw>1Uz(oH{q`LhEVT~ z340cY?ATYaVq(ex%T2fa#aAzVo-rmR;o`PQk)NxMp5T1~TuNBx$DJGi2u#_B8Y5`}x!@Tbt7M6vF-)wSsFZRhz zS*pK3**LYM;p!LW^##ZeE&U^mE&Jd5>YIoT&%-f&mkZtZRLhvBJflB-yRwe)PUDd& zC$pF_S)CR^~&jIo6nb|i#sp;k}m%2BDj3K2WZBS>ijvEyZaOF z5ak_{Ge2Uq0H#Czx(AOR7pYENI}`laennAC@U}D1Zxo7Mwkjw{CJ739Qpliu^WV?& z3q3W()C0;l_6H|4VzIT`V;$ht z8QCryx9)G2M2_3u+3o3H(NSyObpK27oJ9;ByK3sVW_J7G4+S6Y6+i{|{FiLmc*El^ za(7F>gee&}%C7fL>e_Y6zIpVd+bzCJw#3ayJA9$~Ahxe2swOZ0z}$*;OOSd??$P-D zMXi4Sa$auH;9I-7bJkVSH_-yJvnHO|R~5KAW{vCkX;;_2_h6+*WiTTr0f!AUK5=q8 z(&_kk`L*_KIj2Vnrnx(oEmHS+IsN>j{n;{2=H#}tdk#N|sj=~Gi!>C@j@_5r;%|%` zsi97|tdU-!GEB>=r!L@Qb9yhjI=%93|LTfq&ZEDvFHh0xK7T*opQ8F9jPG6P4>y2|qd=%+m(R!K@<041|LQ$g!2)NMK9}7;wRQ0D#GcVIc&wAvVIa)d#au z>5#V8I2c6`Po^2wGg%CnsnHD6FcKkYPwhQZ!x#;oZ_G&Cs7o~{@Q^fIOL*BD)vHsD zwl-6ZI4QFFt;Up0;FQ&}t?*Tt&e;MJj1j66{AO{S{$4g$ff{Z+RGx z%jPJ#5MRMXATG}4LPCtKfDo2ksX+NkF3Lh}s3ck=foc^vNd?FmD!_xYF+RqF0R<0* zAubPQK?p8HAQTZGTs{kza|N&sMT9{GDgjm7dPP!UfQk)cCTKC5f+!jL2R^RaDx#fImyX_8Em#y9aD&A14a}in@WQw;Y__Y$vQ!9iwGbNzr@qasZLs13(IlpI=*xT_ z_;*ZE$vTtvf8%)y9bySE5GI`=CBhIPUyLh==kq)ZJj4_UdYzFlSR{Y2sQuUL!z>O5LKIw(du%=jLSc>og5^p%hT}qx5aSGIH|msx2{qsWNgxNnK7-P-?lbLe zYxYeWjy5IZAV+*)wg`sl1KT^e-G9w`SZq*D0-h2QB1$2|WnnmZ$AwTOPtN5b2wy1V z4)^f?dp$x0ALYu0Y)H=L^C2z*x`dF8@FARs$YIbJI2@GsXRpVXNj~tNq@OSONRUcJ zwh8J>J~BiSvNJ@b>h)?BZWx}pPYU_J;B52rV@p)6+K~xE375P2l~8?Bn0u!Ml-Bvasloi4&+T zC7!LvJZr9&_K-q-=zJrE!tf%0cIG|eG$3>&B+?Ma??+B@aT&E?Yt>C4f+WEK(IYP_ z5-E02;R^5331h;X-M751=fUv7bMi#lx%lepPpV61El-{gUW6->Uz`7KX_o~kQY0ba K!G{79v;GbL&yZ*U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/blockstackerbottom.png b/src/main/resources/assets/quickiefabric/textures/block/blockstackerin.png similarity index 100% rename from src/main/resources/assets/quickiefabric/textures/block/blockstackerbottom.png rename to src/main/resources/assets/quickiefabric/textures/block/blockstackerin.png diff --git a/src/main/resources/assets/quickiefabric/textures/block/blockstackerleft.png b/src/main/resources/assets/quickiefabric/textures/block/blockstackerleft.png new file mode 100644 index 0000000000000000000000000000000000000000..94cca3c200b2410e76935541a7d78a86b2f156d5 GIT binary patch literal 5926 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 Hl9&7n_#T3F literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/blockstackertop.png b/src/main/resources/assets/quickiefabric/textures/block/blockstackerout.png similarity index 100% rename from src/main/resources/assets/quickiefabric/textures/block/blockstackertop.png rename to src/main/resources/assets/quickiefabric/textures/block/blockstackerout.png diff --git a/src/main/resources/assets/quickiefabric/textures/block/blockstackerright.png b/src/main/resources/assets/quickiefabric/textures/block/blockstackerright.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cfbff1fb817e7cd57835aa840f973a61b76e24 GIT binary patch literal 5928 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