Added drawConex and drawConez methods
But they're not used yet
This commit is contained in:
1 parent
25e8543a11
commit
5aea313479
1 file changed
+124
@@ -325,4 +325,128 @@ public class DrawCommand {
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int drawConex(ServerCommandSource source, BlockPos pos, int radius, int height, boolean pointup, BlockStateArgument block,
|
||||||
|
Predicate<CachedBlockPosition> replacement) {
|
||||||
|
return (int) drawConex(source, pos, radius, height, block, replacement, pointup, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int drawConex(ServerCommandSource source, BlockPos pos, int radius, int height,BlockStateArgument block,
|
||||||
|
Predicate<CachedBlockPosition> replacement, boolean pointup, boolean solid) {
|
||||||
|
int affected = 0;
|
||||||
|
int offset = 0;
|
||||||
|
if(pointup){
|
||||||
|
offset=height-1;
|
||||||
|
}
|
||||||
|
BlockPos.Mutable mbpos = new BlockPos.Mutable(pos);
|
||||||
|
|
||||||
|
List<BlockPos> list = Lists.newArrayList();
|
||||||
|
|
||||||
|
ServerWorld world = source.getWorld();
|
||||||
|
|
||||||
|
CarpetSettings.impendingFillSkipUpdates = !CarpetSettings.fillUpdates;
|
||||||
|
|
||||||
|
for (int x = -offset; x <= height-offset-1; ++x) {
|
||||||
|
|
||||||
|
for (int y = -radius; y <= radius; ++y) {
|
||||||
|
|
||||||
|
for (int z = -radius; z <= radius; ++z) {
|
||||||
|
|
||||||
|
if (!(y*y+z*z<=(radius/height*x)*(radius/height*x))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mbpos.set(pos.getX() + x+ offset, pos.getY() + y, pos.getZ() + z);
|
||||||
|
if (replacement == null || replacement.test(new CachedBlockPosition(world, mbpos, true))) {
|
||||||
|
BlockEntity tileentity = world.getBlockEntity(mbpos);
|
||||||
|
|
||||||
|
if (tileentity instanceof Inventory) {
|
||||||
|
((Inventory) tileentity).clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (block.setBlockState(world, mbpos, 2)) {
|
||||||
|
list.add(mbpos.toImmutable());
|
||||||
|
++affected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CarpetSettings.impendingFillSkipUpdates = false;
|
||||||
|
|
||||||
|
if (CarpetSettings.fillUpdates) {
|
||||||
|
|
||||||
|
for (BlockPos blockpos1 : list) {
|
||||||
|
Block blokc = world.getBlockState(blockpos1).getBlock();
|
||||||
|
world.updateNeighbors(blockpos1, blokc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Messenger.m(source, "gi Filled " + affected + " blocks");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int drawConez(ServerCommandSource source, BlockPos pos, int radius, int height, boolean pointup, BlockStateArgument block,
|
||||||
|
Predicate<CachedBlockPosition> replacement) {
|
||||||
|
return (int) drawConez(source, pos, radius, height, block, replacement, pointup, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int drawConez(ServerCommandSource source, BlockPos pos, int radius, int height,BlockStateArgument block,
|
||||||
|
Predicate<CachedBlockPosition> replacement, boolean pointup, boolean solid) {
|
||||||
|
int affected = 0;
|
||||||
|
int offset = 0;
|
||||||
|
if(pointup){
|
||||||
|
offset=height-1;
|
||||||
|
}
|
||||||
|
BlockPos.Mutable mbpos = new BlockPos.Mutable(pos);
|
||||||
|
|
||||||
|
List<BlockPos> list = Lists.newArrayList();
|
||||||
|
|
||||||
|
ServerWorld world = source.getWorld();
|
||||||
|
|
||||||
|
CarpetSettings.impendingFillSkipUpdates = !CarpetSettings.fillUpdates;
|
||||||
|
|
||||||
|
for (int z = -offset; z <= height-offset-1; ++z) {
|
||||||
|
|
||||||
|
for (int y = -radius; y <= radius; ++y) {
|
||||||
|
|
||||||
|
for (int x = -radius; x <= radius; ++x) {
|
||||||
|
|
||||||
|
if (!(x*x+y*y<=(radius/height*z)*(radius/height*z))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mbpos.set(pos.getX() + x, pos.getY() + y, pos.getZ() + z + offset);
|
||||||
|
if (replacement == null || replacement.test(new CachedBlockPosition(world, mbpos, true))) {
|
||||||
|
BlockEntity tileentity = world.getBlockEntity(mbpos);
|
||||||
|
|
||||||
|
if (tileentity instanceof Inventory) {
|
||||||
|
((Inventory) tileentity).clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (block.setBlockState(world, mbpos, 2)) {
|
||||||
|
list.add(mbpos.toImmutable());
|
||||||
|
++affected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CarpetSettings.impendingFillSkipUpdates = false;
|
||||||
|
|
||||||
|
if (CarpetSettings.fillUpdates) {
|
||||||
|
|
||||||
|
for (BlockPos blockpos1 : list) {
|
||||||
|
Block blokc = world.getBlockState(blockpos1).getBlock();
|
||||||
|
world.updateNeighbors(blockpos1, blokc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Messenger.m(source, "gi Filled " + affected + " blocks");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user