Moved features to "features" package

This commit is contained in:
2025-04-11 14:07:19 +02:00
parent f28159b442
commit 168f916baa
10 changed files with 19 additions and 22 deletions

View File

@ -0,0 +1,58 @@
package wtf.hak.survivalfabric.features.veinminer;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import wtf.hak.survivalfabric.features.veinminer.drills.LeavesDrill;
import wtf.hak.survivalfabric.features.veinminer.drills.OreDrill;
import wtf.hak.survivalfabric.features.veinminer.drills.WoodDrill;
public class VeinMinerEvents {
public static boolean beforeBlockBreak(World world, ServerPlayerEntity player, BlockPos pos, BlockState state) {
if (world.isClient) {
return true;
}
boolean isVeinMining = VeinMinerSession.sessionForPlayer(player) != null;
boolean canVeinMine = player.isInSneakingPose();
if (canVeinMine && !isVeinMining) {
VeinMinerSession session = VeinMinerSession.start(player, (ServerWorld)world, pos);
boolean shouldContinue = !mine(session);
session.finish();
return shouldContinue;
}
else {
return true;
}
}
public static void onEntityLoad(Entity entity, ServerWorld world) {
BlockPos pos = entity.getBlockPos();
VeinMinerSession session = VeinMinerSession.sessionForPosition(pos);
if (session != null) {
entity.setPos(session.initialPos.getX(), session.initialPos.getY(), session.initialPos.getZ());
}
}
private static boolean mine(VeinMinerSession session) {
Drill[] drills = new Drill[] {
new OreDrill(session),
new WoodDrill(session),
new LeavesDrill(session)
};
BlockPos pos = session.initialPos;
BlockState blockState = session.world.getBlockState(pos);
for (Drill drill : drills) {
if (drill.canHandle(blockState) && drill.isRightTool(pos)) {
return drill.drill(pos);
}
}
return false;
}
}