diff --git a/src/main/java/carpet/commands/DrawCommand.java b/src/main/java/carpet/commands/DrawCommand.java index c1d3c510..f576967e 100644 --- a/src/main/java/carpet/commands/DrawCommand.java +++ b/src/main/java/carpet/commands/DrawCommand.java @@ -21,79 +21,55 @@ import net.minecraft.server.world.ServerWorld; import java.util.List; import java.util.function.Predicate; -import java.lang.Math.abs; +import java.lang.Math; import static net.minecraft.server.command.CommandManager.argument; import static net.minecraft.server.command.CommandManager.literal; -public class DrawCommand -{ - public static void register(CommandDispatcher dispatcher) - { - LiteralArgumentBuilder command = literal("draw"). - requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandDraw)). - then(literal("sphere"). - then(argument("center",BlockPosArgumentType.blockPos()). - then(argument("radius",IntegerArgumentType.integer(1)). - then(argument("block",BlockStateArgumentType.blockState()). - executes((c)-> drawCircle( - c.getSource(), - BlockPosArgumentType.getBlockPos(c, "center"), - IntegerArgumentType.getInteger(c, "radius"), - BlockStateArgumentType.getBlockState (c,"block"), - null - ) - ). - then(literal("replace"). - then(argument("filter",BlockPredicateArgumentType.blockPredicate()) - .executes((c)-> drawCircle( - c.getSource(), - BlockPosArgumentType.getBlockPos(c, "center"), +public class DrawCommand { + public static void register(CommandDispatcher dispatcher) { + LiteralArgumentBuilder command = literal("draw") + .requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandDraw)) + .then(literal("sphere").then(argument("center", BlockPosArgumentType.blockPos()) + .then(argument("radius", IntegerArgumentType.integer(1)) + .then(argument("block", BlockStateArgumentType.blockState()) + .executes((c) -> drawCircle(c.getSource(), + BlockPosArgumentType.getBlockPos(c, "center"), + IntegerArgumentType.getInteger(c, "radius"), + BlockStateArgumentType.getBlockState(c, "block"), null)) + .then(literal("replace") + .then(argument("filter", BlockPredicateArgumentType.blockPredicate()) + .executes((c) -> drawCircle(c.getSource(), + BlockPosArgumentType.getBlockPos(c, "center"), + IntegerArgumentType.getInteger(c, "radius"), + BlockStateArgumentType.getBlockState(c, "block"), + BlockPredicateArgumentType.getBlockPredicate(c, + "filter"))))))))) + .then(literal("diamond").then(argument("centre", BlockPosArgumentType.blockPos()) + .then(argument("radius", IntegerArgumentType.integer(1)).then( + argument("block", BlockStateArgumentType.blockState()).executes((c) -> drawDiamond( + c.getSource(), BlockPosArgumentType.getBlockPos(c, "centre"), + IntegerArgumentType.getInteger(c, "radius"), + BlockStateArgumentType.getBlockState(c, "block"), null) + .then(literal("replace").then( + argument("filter", BlockPredicateArgumentType.blockPredicate()) + .executes((c) -> drawDiamond(c.getSource(), + BlockPosArgumentType.getBlockPos(c, "centre"), IntegerArgumentType.getInteger(c, "radius"), - BlockStateArgumentType.getBlockState(c,"block"), + BlockStateArgumentType.getBlockState(c, + "block"), BlockPredicateArgumentType.getBlockPredicate(c, - "filter") - )))))))). - then(literal("diamond"). - then(argument("centre",BlockPosArgumentType.blockPos()). - then(argument("radius",IntegerArgumentType.integer(1)). - then(argument("block",BlockStateArgumentType.blockState()). - executes((c)->drawDiamond( - c.getSource(), - BlockPosArgumentType.getBlockPos(c,"centre"), - IntegerArgumentType.getInteger(c,"radius"), - BlockStateArgumentType.getBlockState(c,"block"), - null - ). - then(literal("replace"). - then(argument("filter",BlockPredicateArgumentType.blockPredicate()). - executes((c)->drawDiamond( - c.getSource(), - BlockPosArgumentType.getBlockPos(c, "centre"), - IntegerArgumentType.getInteger(c, "radius"), - BlockStateArgumentType.getBlockState(c,"block"), - BlockPredicateArgumentType.getBlockPredicate(c,"filter") - ) - ) - ) - ) - ) - ) - ) - ) - ); + "filter")))))))))); dispatcher.register(command); } - private static int drawCircle(ServerCommandSource source, BlockPos pos, int radius, BlockStateArgument block, - Predicate replacement) - { - return drawCircle(source, pos, (double)radius, (double)radius, (double)radius, block, replacement, false); + Predicate replacement) { + return drawCircle(source, pos, (double) radius, (double) radius, (double) radius, block, replacement, false); } - private static int drawCircle(ServerCommandSource source, BlockPos pos, double radiusX, double radiusY, double radiusZ, - BlockStateArgument block, Predicate replacement, boolean solid) - { + + private static int drawCircle(ServerCommandSource source, BlockPos pos, double radiusX, double radiusY, + double radiusZ, BlockStateArgument block, Predicate replacement, boolean solid) { int affected = 0; ServerWorld world = source.getWorld(); @@ -138,30 +114,25 @@ public class DrawCommand } if (!solid) { - if (lengthSq(nextXn, yn, zn) <= 1 && lengthSq(xn, nextYn, zn) <= 1 && lengthSq(xn, yn, nextZn) <= 1) { + if (lengthSq(nextXn, yn, zn) <= 1 && lengthSq(xn, nextYn, zn) <= 1 + && lengthSq(xn, yn, nextZn) <= 1) { continue; } } CarpetSettings.impendingFillSkipUpdates = !CarpetSettings.fillUpdates; - for (int xmod = -1; xmod < 2; xmod+= 2) - { - for (int ymod = -1; ymod < 2; ymod += 2) - { - for (int zmod = -1; zmod < 2; zmod += 2) - { - mbpos.set(pos.getX()+xmod*x, pos.getY()+ymod*y, pos.getZ()+zmod*z); - if (replacement == null || replacement.test( - new CachedBlockPosition( world, mbpos, true))) - { + for (int xmod = -1; xmod < 2; xmod += 2) { + for (int ymod = -1; ymod < 2; ymod += 2) { + for (int zmod = -1; zmod < 2; zmod += 2) { + mbpos.set(pos.getX() + xmod * x, pos.getY() + ymod * y, pos.getZ() + zmod * z); + if (replacement == null + || replacement.test(new CachedBlockPosition(world, mbpos, true))) { BlockEntity tileentity = world.getBlockEntity(mbpos); - if (tileentity instanceof Inventory) - { - ((Inventory)tileentity).clear(); + if (tileentity instanceof Inventory) { + ((Inventory) tileentity).clear(); } - if (block.setBlockState(world, mbpos,2)) - { + if (block.setBlockState(world, mbpos, 2)) { list.add(mbpos.toImmutable()); ++affected; } @@ -173,58 +144,58 @@ public class DrawCommand } } } - if (CarpetSettings.fillUpdates) - { + if (CarpetSettings.fillUpdates) { - for (BlockPos blockpos1 : list) - { + for (BlockPos blockpos1 : list) { Block blokc = world.getBlockState(blockpos1).getBlock(); world.updateNeighbors(blockpos1, blokc); // or always version???? } } - Messenger.m(source, "gi Filled "+affected+" blocks"); + Messenger.m(source, "gi Filled " + affected + " blocks"); return 1; } - private static double lengthSq(double x, double y, double z) - { + + private static double lengthSq(double x, double y, double z) { return (x * x) + (y * y) + (z * z); } - private static int manhattan(int x1, int y1, int z1, int x2, int y2, int z2){ - return abs(x1-x2)+abs(y1-y2)+abs(z1-z2) + private static int manhattan(int x1, int y1, int z1, int x2, int y2, int z2) { + return Math.abs(x1 - x2) + Math.abs(y1 - y2) + Math.abs(z1 - z2); } - private static int drawDiamond(ServerCommandSource source, BlockPos pos, int radius, BlockStateArgument block, - Predicate replacement){ - int affected =0; + private static int drawDiamond(ServerCommandSource source, BlockPos pos, int radius, BlockStateArgument block, + Predicate replacement) { + int affected = 0; BlockPos.Mutable mbpos = new BlockPos.Mutable(pos); List list = Lists.newArrayList(); - ServerWorld world=source.getWorld(); + ServerWorld world = source.getWorld(); CarpetSettings.impendingFillSkipUpdates = !CarpetSettings.fillUpdates; - for(int x=-radius; x<=radius;++x){ + for (int x = -radius; x <= radius; ++x) { - for(int y=-radius; y<=radius; ++y){ + for (int y = -radius; y <= radius; ++y) { - for(int z=-radius; z<=radius; ++z){ + for (int z = -radius; z <= radius; ++z) { - if(manhattan(0,0,0,x,y,z)!=radius){continue}; + if (manhattan(0, 0, 0, x, y, z) != radius) { + continue; + } - mbpos.set(pos.getX()+x, pos.getY()+y, pos.getZ()+z); + mbpos.set(pos.getX() + x, pos.getY() + y, pos.getZ() + z); - if (replacement == null || replacement.test(new CachedBlockPosition( world, mbpos, true))){ + if (replacement == null || replacement.test(new CachedBlockPosition(world, mbpos, true))) { BlockEntity tileentity = world.getBlockEntity(mbpos); - if (tileentity instanceof Inventory){ - ((Inventory)tileentity).clear(); + if (tileentity instanceof Inventory) { + ((Inventory) tileentity).clear(); } - - if (block.setBlockState(world, mbpos,2)){ + + if (block.setBlockState(world, mbpos, 2)) { list.add(mbpos.toImmutable()); ++affected; } @@ -235,17 +206,15 @@ public class DrawCommand CarpetSettings.impendingFillSkipUpdates = false; - if (CarpetSettings.fillUpdates) - { + if (CarpetSettings.fillUpdates) { - for (BlockPos blockpos1 : list) - { + for (BlockPos blockpos1 : list) { Block blokc = world.getBlockState(blockpos1).getBlock(); world.updateNeighbors(blockpos1, blokc); } } - Messenger.m(source, "gi Filled "+affected+" blocks"); + Messenger.m(source, "gi Filled " + affected + " blocks"); return 1; }