diff --git a/gradle.properties b/gradle.properties index 3af1f63..82eaba6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ loader_version=0.12.12 # Mod Properties - mod_version = 1.18.1.4 + mod_version = 1.18.1.5 maven_group = de.jottyfan.minecraft archives_base_name = quickiefabric diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java index cb2adb1..7cbe2d2 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java @@ -1,5 +1,8 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; @@ -21,7 +24,39 @@ public class DrillBlockDownEntity extends DrillBlockEntity { public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { if (be instanceof DrillBlockDownEntity) { DrillBlockDownEntity dbe = (DrillBlockDownEntity) be; - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.down()); + DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, generateBlockPos(pos)); } } + + public static final List generateBlockPos(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.down()); // must be last position + return list; + } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEastEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEastEntity.java index 698de15..5224054 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEastEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEastEntity.java @@ -1,5 +1,8 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; @@ -21,7 +24,10 @@ public class DrillBlockEastEntity extends DrillBlockEntity { public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { if (be instanceof DrillBlockEastEntity) { DrillBlockEastEntity dbe = (DrillBlockEastEntity) be; - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.east().down()); + List list = new ArrayList<>(); + list.add(pos.east()); + list.add(pos.east().down()); // must be last position + DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); } } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java index fd6cc6f..587a707 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java @@ -1,5 +1,7 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; +import java.util.List; + import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -29,19 +31,25 @@ public abstract class DrillBlockEntity extends BlockEntity { } } - protected static final void drill(BlockPos pos, BlockPos to, World world) { - if (!world.getBlockState(to).isOf(Blocks.BEDROCK) && !world.getBlockState(to).isOf(QuickieBlocks.DRILLSTOP)) { - world.breakBlock(to, true); - if (pos.down() != to) { // no need for the falling one - moveBlockWithEntity(pos, to, world); + protected static final Boolean drill(BlockPos pos, List toList, World world) { + Boolean lastSuccess = false; + for (BlockPos to : toList) { + if (!world.getBlockState(to).isOf(Blocks.BEDROCK) && !world.getBlockState(to).isOf(QuickieBlocks.DRILLSTOP)) { + world.breakBlock(to, true); + lastSuccess = pos.down() != to; // no need for the falling one + } else { + lastSuccess = false; // in case that the last one is a bedrock or a drillstop } } + return lastSuccess; } - public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, BlockPos drillPosition) { + public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, List drillPosition) { if (be.getDrillstep() < 1) { be.setDrillstep(maxDrillStep); - drill(pos, drillPosition, world); + if (drill(pos, drillPosition, world)) { + moveBlockWithEntity(pos, drillPosition.get(drillPosition.size() - 1), world); + } } else { be.doDrillstep(); } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockNorthEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockNorthEntity.java index 42585d9..7cda76c 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockNorthEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockNorthEntity.java @@ -1,5 +1,8 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; @@ -21,7 +24,10 @@ public class DrillBlockNorthEntity extends DrillBlockEntity { public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { if (be instanceof DrillBlockNorthEntity) { DrillBlockNorthEntity dbe = (DrillBlockNorthEntity) be; - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.north().down()); + List list = new ArrayList<>(); + list.add(pos.north()); + list.add(pos.north().down()); // must be last position + DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); } } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockSouthEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockSouthEntity.java index 2126553..afebe7d 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockSouthEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockSouthEntity.java @@ -1,5 +1,8 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; @@ -20,7 +23,10 @@ public class DrillBlockSouthEntity extends DrillBlockEntity { public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { if (be instanceof DrillBlockSouthEntity) { DrillBlockSouthEntity dbe = (DrillBlockSouthEntity) be; - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.south().down()); + List list = new ArrayList<>(); + list.add(pos.south()); + list.add(pos.south().down()); // must be last position + DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); } } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockWestEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockWestEntity.java index 2238b7f..983ab24 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockWestEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockWestEntity.java @@ -1,5 +1,8 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; @@ -21,7 +24,10 @@ public class DrillBlockWestEntity extends DrillBlockEntity { public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { if (be instanceof DrillBlockWestEntity) { DrillBlockWestEntity dbe = (DrillBlockWestEntity) be; - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.west().down()); + List list = new ArrayList<>(); + list.add(pos.west()); + list.add(pos.west().down()); // must be last position + DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); } } } diff --git a/src/main/resources/assets/quickiefabric/textures/block/drilleast.png b/src/main/resources/assets/quickiefabric/textures/block/drilleast.png index f77028a..0b151bd 100644 Binary files a/src/main/resources/assets/quickiefabric/textures/block/drilleast.png and b/src/main/resources/assets/quickiefabric/textures/block/drilleast.png differ diff --git a/src/main/resources/assets/quickiefabric/textures/block/drillnorth.png b/src/main/resources/assets/quickiefabric/textures/block/drillnorth.png index 1ef9142..c8b1cce 100644 Binary files a/src/main/resources/assets/quickiefabric/textures/block/drillnorth.png and b/src/main/resources/assets/quickiefabric/textures/block/drillnorth.png differ diff --git a/src/main/resources/assets/quickiefabric/textures/block/drillsouth.png b/src/main/resources/assets/quickiefabric/textures/block/drillsouth.png index ab34e2b..65d82eb 100644 Binary files a/src/main/resources/assets/quickiefabric/textures/block/drillsouth.png and b/src/main/resources/assets/quickiefabric/textures/block/drillsouth.png differ diff --git a/src/main/resources/assets/quickiefabric/textures/block/drillwest.png b/src/main/resources/assets/quickiefabric/textures/block/drillwest.png index b51bb8a..96edd8b 100644 Binary files a/src/main/resources/assets/quickiefabric/textures/block/drillwest.png and b/src/main/resources/assets/quickiefabric/textures/block/drillwest.png differ