Let's see if this works

This commit is contained in:
Nameless-123 committed 2020-04-24 13:36:41 +02:00
1 parent c2e09d48e5
commit 6146ff8ed8
1 file changed
+36 -29
+36 -29
View File
@@ -8,6 +8,7 @@ import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.arguments.BoolArgumentType;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.arguments.StringArgumentType;
import net.minecraft.block.Block;
import net.minecraft.block.pattern.CachedBlockPosition;
@@ -78,29 +79,29 @@ public class DrawCommand
.then(argument("radius", IntegerArgumentType.integer(1))
.then(argument("height",IntegerArgumentType.integer(1))
.then(argument("pointing up?",BoolArgumentType.bool())
.then(argument("type",IntegerArgumentType.integer(1))
.suggests( (c, b) -> suggestMatching(new String[]{"square=2","circle=1"},b))
.then(argument("orientation",IntegerArgumentType.integer(1))
.suggests( (c, b) -> suggestMatching(new String[]{"x=1","y=2","z=3"},b))
.then(argument("type",StringArgumentType.string())
.suggests( (c, b) -> suggestMatching(new String[]{"square","circle"},b))
.then(argument("orientation",StringArgumentType.string())
.suggests( (c, b) -> suggestMatching(new String[]{"x","y","z"},b))
.then(argument("block", BlockStateArgumentType.blockState())
.executes((c) -> drawPyramid(c.getSource(),
BlockPosArgumentType.getBlockPos(c, "center"),
IntegerArgumentType.getInteger(c, "type"),
StringArgumentType.getString(c,"type"),
IntegerArgumentType.getInteger(c, "radius"),
IntegerArgumentType.getInteger(c, "height"),
BoolArgumentType.getBool(c,"pointing up?"),
IntegerArgumentType.getInteger(c,"orientation"),
StringArgumentType.getString(c,"orientation"),
BlockStateArgumentType.getBlockState(c, "block"), null)
)
.then(literal("replace")
.then(argument("filter", BlockPredicateArgumentType.blockPredicate())
.executes((c) -> drawPyramid(c.getSource(),
BlockPosArgumentType.getBlockPos(c, "center"),
IntegerArgumentType.getInteger(c, "type"),
StringArgumentType.getString(c,"type"),
IntegerArgumentType.getInteger(c, "radius"),
IntegerArgumentType.getInteger(c, "height"),
BoolArgumentType.getBool(c,"pointing up?"),
IntegerArgumentType.getInteger(c,"orientation"),
StringArgumentType.getString(c,"orientation"),
BlockStateArgumentType.getBlockState(c, "block"),
BlockPredicateArgumentType.getBlockPredicate(c,"filter")
)
@@ -285,10 +286,10 @@ public class DrawCommand
return 1;
}
private static int drawCircle(ServerCommandSource source, BlockPos pos, int offset, int radius,BlockStateArgument block, int orientation,
private static int drawCircle(ServerCommandSource source, BlockPos pos, int offset, int radius,BlockStateArgument block, String orientation,
Predicate<CachedBlockPosition> replacement, List<BlockPos> list, BlockPos.Mutable mbpos){
int successes=0;
if(orientation==1){
if(orientation=="x"){
for(int y=-radius;y<=radius;++y){
for(int z=-radius;z<=radius;++z){
@@ -300,7 +301,7 @@ public class DrawCommand
}
}
if(orientation==2){
if(orientation=="y"){
for(int x=-radius;x<=radius;++x){
for(int z=-radius;z<=radius;++z){
@@ -312,7 +313,7 @@ public class DrawCommand
}
}
if(orientation==3){
if(orientation=="z"){
for(int y=-radius;y<=radius;++y){
for(int x=-radius;x<=radius;++x){
@@ -327,20 +328,20 @@ public class DrawCommand
return successes;
}
private static int drawSquare(ServerCommandSource source, BlockPos pos, int offset, int radius, BlockStateArgument block, int orientation,
private static int drawSquare(ServerCommandSource source, BlockPos pos, int offset, int radius, BlockStateArgument block, String orientation,
Predicate<CachedBlockPosition> replacement, List<BlockPos> list, BlockPos.Mutable mbpos){
int success=0;
for(int axis1=-radius;axis1<=radius;++axis1){
for(int axis2=-radius;axis2<=radius;++axis2){
if(orientation==1){
if(orientation=="x"){
success+=blockset(source, pos.getX()+offset, pos.getY()+axis1, pos.getZ()+axis2,replacement, list, mbpos, block);
}
if(orientation==2){
if(orientation=="y"){
success+=blockset(source, pos.getX()+axis1, pos.getY()+offset, pos.getZ()+axis2,replacement, list, mbpos, block);
}
if(orientation==3){
if(orientation=="z"){
success+=blockset(source, pos.getX()+axis2, pos.getY()+axis1, pos.getZ()+offset,replacement, list, mbpos, block);
}
}
@@ -349,13 +350,13 @@ public class DrawCommand
return success;
}
private static int drawPyramid(ServerCommandSource source, BlockPos pos, int shape, int radius, int height, boolean pointup, int orientation, BlockStateArgument block,
private static int drawPyramid(ServerCommandSource source, BlockPos pos, String shape, int radius, int height, boolean pointup, String orientation, BlockStateArgument block,
Predicate<CachedBlockPosition> replacement) {
return (int) drawPyramid(source, pos, radius, height, block, replacement, pointup, orientation, false, shape);
}
private static double drawPyramid(ServerCommandSource source, BlockPos pos, int radius, int height, BlockStateArgument block,
Predicate<CachedBlockPosition> replacement, boolean pointup, int orientation, boolean solid, int shape) {
Predicate<CachedBlockPosition> replacement, boolean pointup, String orientation, boolean solid, String shape) {
int affected = 0;
BlockPos.Mutable mbpos = new BlockPos.Mutable(pos);
@@ -367,24 +368,30 @@ public class DrawCommand
int r = radius;
if(orientation<1||orientation>3){
Messenger.m(source,"gi Incorrect orientation, must be 1 for x,2 for y or 3 for z");
return 0;
switch (orientation){
case "x":break;
case "y":break;
case "z":break;
default:{
Messenger.m(source,"gi Invalid orientation, must be x,y or z");
return 0;
}
}
for(int i =0; i<height;++i){
for(int i =0; i<height;) {
if(pointup==true){
r=radius-radius*i/height-1;
}else if(pointup==false){
r=radius*i/height;
}
if(shape==1){
affected+=drawCircle(source, pos, i, (int) Math.round(r), block, orientation, replacement, list, mbpos);
}else if(shape==2){
affected+=drawSquare(source, pos, i, (int) Math.round(r), block, orientation, replacement, list, mbpos);
}else{
Messenger.m(source,"gi Incorrect shape, read options for which ints to input for which shapes");
return 0;
switch(shape){
case "circle":affected+=drawCircle(source, pos, i, (int) Math.round(r), block, orientation, replacement, list, mbpos);break;
case "square":affected+=drawSquare(source, pos, i, (int) Math.round(r), block, orientation, replacement, list, mbpos);break;
default:{
Messenger.m(source,"gi !"+shape+"| is an incorrect shape, read options for which shapes are available");
return 0;
}
}
}