drill optimization
@ -9,7 +9,7 @@
|
|||||||
loader_version=0.12.12
|
loader_version=0.12.12
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.18.1.4
|
mod_version = 1.18.1.5
|
||||||
maven_group = de.jottyfan.minecraft
|
maven_group = de.jottyfan.minecraft
|
||||||
archives_base_name = quickiefabric
|
archives_base_name = quickiefabric
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
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) {
|
public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) {
|
||||||
if (be instanceof DrillBlockDownEntity) {
|
if (be instanceof DrillBlockDownEntity) {
|
||||||
DrillBlockDownEntity dbe = (DrillBlockDownEntity) be;
|
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<BlockPos> generateBlockPos(BlockPos pos) {
|
||||||
|
List<BlockPos> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
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) {
|
public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) {
|
||||||
if (be instanceof DrillBlockEastEntity) {
|
if (be instanceof DrillBlockEastEntity) {
|
||||||
DrillBlockEastEntity dbe = (DrillBlockEastEntity) be;
|
DrillBlockEastEntity dbe = (DrillBlockEastEntity) be;
|
||||||
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.east().down());
|
List<BlockPos> list = new ArrayList<>();
|
||||||
|
list.add(pos.east());
|
||||||
|
list.add(pos.east().down()); // must be last position
|
||||||
|
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
|
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
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) {
|
protected static final Boolean drill(BlockPos pos, List<BlockPos> toList, World world) {
|
||||||
|
Boolean lastSuccess = false;
|
||||||
|
for (BlockPos to : toList) {
|
||||||
if (!world.getBlockState(to).isOf(Blocks.BEDROCK) && !world.getBlockState(to).isOf(QuickieBlocks.DRILLSTOP)) {
|
if (!world.getBlockState(to).isOf(Blocks.BEDROCK) && !world.getBlockState(to).isOf(QuickieBlocks.DRILLSTOP)) {
|
||||||
world.breakBlock(to, true);
|
world.breakBlock(to, true);
|
||||||
if (pos.down() != to) { // no need for the falling one
|
lastSuccess = pos.down() != to; // no need for the falling one
|
||||||
moveBlockWithEntity(pos, to, world);
|
} 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<BlockPos> drillPosition) {
|
||||||
if (be.getDrillstep() < 1) {
|
if (be.getDrillstep() < 1) {
|
||||||
be.setDrillstep(maxDrillStep);
|
be.setDrillstep(maxDrillStep);
|
||||||
drill(pos, drillPosition, world);
|
if (drill(pos, drillPosition, world)) {
|
||||||
|
moveBlockWithEntity(pos, drillPosition.get(drillPosition.size() - 1), world);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
be.doDrillstep();
|
be.doDrillstep();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
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) {
|
public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) {
|
||||||
if (be instanceof DrillBlockNorthEntity) {
|
if (be instanceof DrillBlockNorthEntity) {
|
||||||
DrillBlockNorthEntity dbe = (DrillBlockNorthEntity) be;
|
DrillBlockNorthEntity dbe = (DrillBlockNorthEntity) be;
|
||||||
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.north().down());
|
List<BlockPos> list = new ArrayList<>();
|
||||||
|
list.add(pos.north());
|
||||||
|
list.add(pos.north().down()); // must be last position
|
||||||
|
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
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) {
|
public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) {
|
||||||
if (be instanceof DrillBlockSouthEntity) {
|
if (be instanceof DrillBlockSouthEntity) {
|
||||||
DrillBlockSouthEntity dbe = (DrillBlockSouthEntity) be;
|
DrillBlockSouthEntity dbe = (DrillBlockSouthEntity) be;
|
||||||
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.south().down());
|
List<BlockPos> list = new ArrayList<>();
|
||||||
|
list.add(pos.south());
|
||||||
|
list.add(pos.south().down()); // must be last position
|
||||||
|
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
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) {
|
public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) {
|
||||||
if (be instanceof DrillBlockWestEntity) {
|
if (be instanceof DrillBlockWestEntity) {
|
||||||
DrillBlockWestEntity dbe = (DrillBlockWestEntity) be;
|
DrillBlockWestEntity dbe = (DrillBlockWestEntity) be;
|
||||||
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, pos.west().down());
|
List<BlockPos> list = new ArrayList<>();
|
||||||
|
list.add(pos.west());
|
||||||
|
list.add(pos.west().down()); // must be last position
|
||||||
|
DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.9 KiB |