Moved features to "features" package
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user