diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java b/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java new file mode 100644 index 0000000..8eb8943 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java @@ -0,0 +1,135 @@ +package de.jottyfan.minecraft.block; + +import java.util.HashMap; +import java.util.Map; + +import org.jspecify.annotations.Nullable; + +import com.mojang.serialization.MapCodec; + +import de.jottyfan.minecraft.blockentity.DrillBlockEntity; +import de.jottyfan.minecraft.item.QuicklyItems; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.FallingBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.BlockHitResult; + +/** + * + * @author jotty + * + */ +public class BlockDrill extends FallingBlock implements EntityBlock { + public static final MapCodec CODEC = simpleCodec(BlockDrill::new); + + private static final Integer MAX_FUEL = 255; + public static final IntegerProperty FUEL = IntegerProperty.create("fuel", 0, MAX_FUEL); + public static final EnumProperty FACING = BlockStateProperties.FACING; + + public BlockDrill(Properties properties) { + super(properties.strength(0.5f)); + registerDefaultState(stateDefinition.any().setValue(FUEL, 0).setValue(FACING, Direction.DOWN)); + } + + @Override + protected void createBlockStateDefinition(Builder builder) { + builder.add(FUEL, FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getNearestLookingDirection()); + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState blockState) { + return new DrillBlockEntity(pos, blockState); + } + + @Override + public @Nullable BlockEntityTicker getTicker(Level level, BlockState blockState, + BlockEntityType type) { + return (world1, pos, state1, be) -> DrillBlockEntity.tick(world1, pos, state1, be); + } + + @Override + protected void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack tool, + boolean dropExperience) { + Integer fuelLeft = state.getValue(FUEL) / 8; // 8 fuel is one bottle + level.addFreshEntity( + new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuicklyItems.CANOLABOTTLE, fuelLeft))); + level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuicklyBlocks.DRILL))); + } + + @Override + protected InteractionResult useItemOn(ItemStack itemStack, BlockState state, Level level, BlockPos pos, Player player, + InteractionHand hand, BlockHitResult hitResult) { + Map loadings = new HashMap<>(); + loadings.put(QuicklyItems.CANOLABOTTLE, 8); + loadings.put(QuicklyItems.CANOLABOTTLESTACK, 72); + Item item = itemStack.getItem(); + if (itemStack.isEmpty()) { + if (!level.isClientSide() && player instanceof ServerPlayer serverPlayer) { + serverPlayer.sendSystemMessage(Component.translatable("info.block.drillfuel", state.getValue(FUEL)), false); + } + } else if (QuicklyItems.COPPERSTICK.equals(item)) { + Direction newDirection = hitResult.getDirection(); + newDirection = newDirection.equals(Direction.UP) ? Direction.DOWN : newDirection; + Integer fuelLeft = state.getValue(FUEL); + level.addFreshEntity( + new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuicklyItems.CANOLABOTTLE, fuelLeft))); + level.setBlockAndUpdate(pos, QuicklyBlocks.DRILL.defaultBlockState().setValue(FACING, newDirection)); + } else if (loadings.containsKey(item)) { + Integer fuelWeight = loadings.get(item); + if (fuelWeight != null) { + Integer load = MAX_FUEL - state.getValue(FUEL); + if (load < fuelWeight) { + fuelWeight = load; + } + level.setBlockAndUpdate(pos, state.setValue(FUEL, state.getValue(FUEL) + fuelWeight)); + if (item.equals(QuicklyItems.CANOLABOTTLE)) { + level.addFreshEntity( + new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 1))); + } else if (item.equals(QuicklyItems.CANOLABOTTLESTACK)) { + level.addFreshEntity( + new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 9))); + } + player.getActiveItem().shrink(1); + } + } + return InteractionResult.SUCCESS; + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + public int getDustColor(BlockState blockState, BlockGetter level, BlockPos pos) { + return 0; + } +} diff --git a/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java b/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java index 823c5ab..87782ab 100644 --- a/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java +++ b/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java @@ -3,6 +3,7 @@ package de.jottyfan.minecraft.block; import java.util.function.Function; import de.jottyfan.minecraft.Quickly; +import de.jottyfan.minecraft.blockentity.DrillBlockEntity; import de.jottyfan.minecraft.blockentity.ItemHoarderBlockEntity; import de.jottyfan.minecraft.item.QuicklyItems; import de.jottyfan.minecraft.tab.QuicklyTab; @@ -55,12 +56,14 @@ public class QuicklyBlocks { public static final Block MONSTERHOARDER = registerBlock("monsterhoarder", properties -> new Monsterhoarder(properties)); public static final Block ITEMHOARDER = registerBlock("itemhoarder", properties -> new Itemhoarder(properties)); + public static final Block DRILL = registerBlock("drill", properties -> new BlockDrill(properties)); - // TODO: drill, blockstacker - // TODO: salpeter ore, sulfor ore + // TODO: add blockstacker + // TODO: add salpeter ore, sulfor ore // TODO: merge lavahoarder and emptylavahoarder into one block using a BooleanProperty for the lava fill state public static final BlockEntityType BLOCKENTITY_ITEMHOARDER = (BlockEntityType) registerBlockEntity("itemhoarderblockentity", ItemHoarderBlockEntity::new, ITEMHOARDER); + public static final BlockEntityType BLOCKENTITY_DRILL = (BlockEntityType) registerBlockEntity("drillblockentity", DrillBlockEntity::new, DRILL); private static final BlockEntityType registerBlockEntity(String name, Factory factory, Block block) { return Registry.register( @@ -99,6 +102,7 @@ public class QuicklyBlocks { block.accept(QUICKIEPOWDER); block.accept(MONSTERHOARDER); block.accept(ITEMHOARDER); + block.accept(DRILL); }); } } diff --git a/src/main/java/de/jottyfan/minecraft/blockentity/DrillBlockEntity.java b/src/main/java/de/jottyfan/minecraft/blockentity/DrillBlockEntity.java new file mode 100644 index 0000000..8d0fdd4 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/blockentity/DrillBlockEntity.java @@ -0,0 +1,142 @@ +package de.jottyfan.minecraft.blockentity; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.block.BlockDrill; +import de.jottyfan.minecraft.block.QuicklyBlocks; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +/** + * + * @author jotty + * + */ +public class DrillBlockEntity extends BlockEntity { + + private static final Integer MAXDRILLSTEP = 20; + + private Integer drillstep; + private final Integer maxDrillStep; + + public DrillBlockEntity(BlockPos pos, BlockState state) { + super(QuicklyBlocks.BLOCKENTITY_DRILL, pos, state); + this.maxDrillStep = MAXDRILLSTEP; + } + + public static void tick(Level level, BlockPos pos, BlockState state, BlockEntity be) { + if (be instanceof DrillBlockEntity dbe) { + Direction dir = state.getValue(BlockDrill.FACING); + List list = new ArrayList<>(); + if (Direction.DOWN.equals(dir)) { + list = downFrom(pos); + } else if (Direction.EAST.equals(dir)) { + list = directedFrom(pos.east()); + } else if (Direction.SOUTH.equals(dir)) { + list = directedFrom(pos.south()); + } else if (Direction.WEST.equals(dir)) { + list = directedFrom(pos.west()); + } else if (Direction.NORTH.equals(dir)) { + list = directedFrom(pos.north()); + } + DrillBlockEntity.tick(level, pos, state, dbe, MAXDRILLSTEP, list); + } + } + + public static final List directedFrom(BlockPos pos) { + List list = new ArrayList<>(); + list.add(pos); + list.add(pos.above()); + list.add(pos.above(2)); + list.add(pos.above(3)); + list.add(pos.below()); // must be last position + return list; + } + + public static final List downFrom(BlockPos pos) { + List list = new ArrayList<>(); + Integer tracesMod = pos.getY() % 8; + tracesMod = tracesMod < 0 ? tracesMod * -1 : tracesMod; // lower that 0 makes it negative + if (tracesMod != 0) { + list.add(pos.north()); + } + if (tracesMod != 1) { + list.add(pos.north().west()); + } + if (tracesMod != 2) { + list.add(pos.west()); + } + if (tracesMod != 3) { + list.add(pos.south().west()); + } + if (tracesMod != 4) { + list.add(pos.south()); + } + if (tracesMod != 5) { + list.add(pos.south().east()); + } + if (tracesMod != 6) { + list.add(pos.east()); + } + if (tracesMod != 7) { + list.add(pos.north().east()); + } + list.add(pos.below()); // must be last position + return list; + } + + protected static final void moveBlockWithEntity(BlockPos from, BlockPos to, Level level) { + BlockEntity be = level.getBlockEntity(from); + BlockState bs = level.getBlockState(from); + if (be != null) { + level.setBlockAndUpdate(from, Blocks.AIR.defaultBlockState()); + Integer newFuel = bs.getValue(BlockDrill.FUEL) - 1; + level.setBlockAndUpdate(to, bs.setValue(BlockDrill.FUEL, newFuel)); + level.removeBlockEntity(from); + } + } + + protected static final Boolean drill(BlockPos pos, List toList, Level level) { + Boolean lastSuccess = false; + for (BlockPos to : toList) { + if (!level.getBlockState(to).is(Blocks.BEDROCK)) { + level.destroyBlock(to, true); + lastSuccess = pos.below() != to; // no need for the falling one + } else { + lastSuccess = false; // in case that the last one is a bedrock + } + } + return lastSuccess; + } + + public static void tick(Level level, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, + List drillPosition) { + if (state.getValue(BlockDrill.FUEL) > 0) { + if (be.getDrillstep() < 1) { + be.setDrillstep(maxDrillStep); + if (drill(pos, drillPosition, level)) { + moveBlockWithEntity(pos, drillPosition.get(drillPosition.size() - 1), level); + } + } else { + be.doDrillstep(); + } + } + } + + public void doDrillstep() { + setDrillstep(getDrillstep() - 1); + } + + public Integer getDrillstep() { + return drillstep == null ? maxDrillStep : drillstep; + } + + public void setDrillstep(Integer drillstep) { + this.drillstep = drillstep; + } +} diff --git a/src/main/resources/assets/quickly/blockstates/drill.json b/src/main/resources/assets/quickly/blockstates/drill.json new file mode 100644 index 0000000..71f4b4d --- /dev/null +++ b/src/main/resources/assets/quickly/blockstates/drill.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=up": { "model": "quickly:block/drill" }, + "facing=down": { "model": "quickly:block/drill" }, + "facing=east": { "model": "quickly:block/drilleast" }, + "facing=south": { "model": "quickly:block/drillsouth" }, + "facing=west": { "model": "quickly:block/drillwest" }, + "facing=north": { "model": "quickly:block/drillnorth" } + } +} diff --git a/src/main/resources/assets/quickly/items/drill.json b/src/main/resources/assets/quickly/items/drill.json new file mode 100644 index 0000000..0624baf --- /dev/null +++ b/src/main/resources/assets/quickly/items/drill.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:block/drill" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/items/drilleast.json b/src/main/resources/assets/quickly/items/drilleast.json new file mode 100644 index 0000000..f75faf3 --- /dev/null +++ b/src/main/resources/assets/quickly/items/drilleast.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:block/drilleast" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/items/drillnorth.json b/src/main/resources/assets/quickly/items/drillnorth.json new file mode 100644 index 0000000..764cc6a --- /dev/null +++ b/src/main/resources/assets/quickly/items/drillnorth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:block/drillnorth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/items/drillsouth.json b/src/main/resources/assets/quickly/items/drillsouth.json new file mode 100644 index 0000000..b43952a --- /dev/null +++ b/src/main/resources/assets/quickly/items/drillsouth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:block/drillsouth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/items/drillwest.json b/src/main/resources/assets/quickly/items/drillwest.json new file mode 100644 index 0000000..c304011 --- /dev/null +++ b/src/main/resources/assets/quickly/items/drillwest.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:block/drillwest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/lang/de_de.json b/src/main/resources/assets/quickly/lang/de_de.json index a223e0f..ee010df 100644 --- a/src/main/resources/assets/quickly/lang/de_de.json +++ b/src/main/resources/assets/quickly/lang/de_de.json @@ -1,4 +1,5 @@ { + "info.block.drillfuel": "Ladung: %s Bohrungen", "info.block.itemhoarder": "enthält: %s", "info.block.monsterhoarder": "Radius: %s, Brenndauer: %s Ticks", "item.quickly.blockcanolaplant": "Rapspflanze", @@ -16,6 +17,7 @@ "item.quickly.copperstub": "Kupferstummel", "item.quickly.cotton": "Baumwolle", "item.quickly.cottonseed": "Baumwollsaat", + "item.quickly.drill": "Bohrer", "item.quickly.emptylavahoarder": "Lavasauger", "item.quickly.itemhoarder": "Itemsauger", "item.quickly.kelpbundle": "Seegrassbündel", diff --git a/src/main/resources/assets/quickly/lang/en_us.json b/src/main/resources/assets/quickly/lang/en_us.json index fea1308..4c64766 100644 --- a/src/main/resources/assets/quickly/lang/en_us.json +++ b/src/main/resources/assets/quickly/lang/en_us.json @@ -1,4 +1,5 @@ { + "info.block.drillfuel": "Load: %s drills", "info.block.itemhoarder": "contains: %s", "info.block.monsterhoarder": "radius: %s, burn ticks: %s", "item.quickly.blockcanolaplant": "canola plant", @@ -16,6 +17,7 @@ "item.quickly.copperstub": "copper stub", "item.quickly.cotton": "cotton", "item.quickly.cottonseed": "cotton seed", + "item.quickly.drill": "drill", "item.quickly.emptylavahoarder": "lava hoarder", "item.quickly.itemhoarder": "item hoarder", "item.quickly.kelpbundle": "kelp bundle", diff --git a/src/main/resources/assets/quickly/models/block/drill.json b/src/main/resources/assets/quickly/models/block/drill.json new file mode 100644 index 0000000..75e9cbb --- /dev/null +++ b/src/main/resources/assets/quickly/models/block/drill.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "quickly:block/drill" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/models/block/drilleast.json b/src/main/resources/assets/quickly/models/block/drilleast.json new file mode 100644 index 0000000..26353d0 --- /dev/null +++ b/src/main/resources/assets/quickly/models/block/drilleast.json @@ -0,0 +1,45 @@ +{ + "parent": "block/cube", + "textures": { + "bottom": "quickly:block/drilleast", + "all": "quickly:block/drill" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "up" + }, + "north": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "north" + }, + "south": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "south" + }, + "east": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "east" + }, + "west": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "west" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/models/block/drillnorth.json b/src/main/resources/assets/quickly/models/block/drillnorth.json new file mode 100644 index 0000000..b04944e --- /dev/null +++ b/src/main/resources/assets/quickly/models/block/drillnorth.json @@ -0,0 +1,45 @@ +{ + "parent": "block/cube", + "textures": { + "bottom": "quickly:block/drillnorth", + "all": "quickly:block/drill" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "up" + }, + "north": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "north" + }, + "south": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "south" + }, + "east": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "east" + }, + "west": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "west" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/models/block/drillsouth.json b/src/main/resources/assets/quickly/models/block/drillsouth.json new file mode 100644 index 0000000..31c24e0 --- /dev/null +++ b/src/main/resources/assets/quickly/models/block/drillsouth.json @@ -0,0 +1,45 @@ +{ + "parent": "block/cube", + "textures": { + "bottom": "quickly:block/drillsouth", + "all": "quickly:block/drill" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "up" + }, + "north": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "north" + }, + "south": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "south" + }, + "east": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "east" + }, + "west": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "west" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/models/block/drillwest.json b/src/main/resources/assets/quickly/models/block/drillwest.json new file mode 100644 index 0000000..0f69928 --- /dev/null +++ b/src/main/resources/assets/quickly/models/block/drillwest.json @@ -0,0 +1,45 @@ +{ + "parent": "block/cube", + "textures": { + "bottom": "quickly:block/drillwest", + "all": "quickly:block/drill" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "uv": [0, 0, 16, 16], + "texture": "#bottom", + "cullface": "up" + }, + "north": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "north" + }, + "south": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "south" + }, + "east": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "east" + }, + "west": { + "uv": [0, 0, 16, 16], + "texture": "#all", + "cullface": "west" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/models/item/drill.json b/src/main/resources/assets/quickly/models/item/drill.json new file mode 100644 index 0000000..2b6384f --- /dev/null +++ b/src/main/resources/assets/quickly/models/item/drill.json @@ -0,0 +1,10 @@ +{ + "parent": "quickly:block/drill", + "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/quickly/textures/block/drill.png b/src/main/resources/assets/quickly/textures/block/drill.png new file mode 100644 index 0000000..5d44222 Binary files /dev/null and b/src/main/resources/assets/quickly/textures/block/drill.png differ diff --git a/src/main/resources/assets/quickly/textures/block/drilleast.png b/src/main/resources/assets/quickly/textures/block/drilleast.png new file mode 100644 index 0000000..a9efbee Binary files /dev/null and b/src/main/resources/assets/quickly/textures/block/drilleast.png differ diff --git a/src/main/resources/assets/quickly/textures/block/drillnorth.png b/src/main/resources/assets/quickly/textures/block/drillnorth.png new file mode 100644 index 0000000..3ef6392 Binary files /dev/null and b/src/main/resources/assets/quickly/textures/block/drillnorth.png differ diff --git a/src/main/resources/assets/quickly/textures/block/drillsouth.png b/src/main/resources/assets/quickly/textures/block/drillsouth.png new file mode 100644 index 0000000..402a626 Binary files /dev/null and b/src/main/resources/assets/quickly/textures/block/drillsouth.png differ diff --git a/src/main/resources/assets/quickly/textures/block/drillstop.png b/src/main/resources/assets/quickly/textures/block/drillstop.png new file mode 100644 index 0000000..c223200 Binary files /dev/null and b/src/main/resources/assets/quickly/textures/block/drillstop.png differ diff --git a/src/main/resources/assets/quickly/textures/block/drillwest.png b/src/main/resources/assets/quickly/textures/block/drillwest.png new file mode 100644 index 0000000..45ddbe8 Binary files /dev/null and b/src/main/resources/assets/quickly/textures/block/drillwest.png differ diff --git a/src/main/resources/data/quickly/recipe/shaped_drill.json b/src/main/resources/data/quickly/recipe/shaped_drill.json new file mode 100644 index 0000000..e2e956d --- /dev/null +++ b/src/main/resources/data/quickly/recipe/shaped_drill.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "qbq", + "dqd", + " d " + ], + "key": { + "q": "quickly:quickieingot", + "d": "minecraft:diamond", + "b": "minecraft:barrel" + }, + "result": { + "id": "quickly:drill", + "count": 1 + } +} \ No newline at end of file