|
@@ -34,6 +34,30 @@ public class BlockCommands {
|
|
|
Location l = (Location) in[0].get(sc);
|
|
|
return l.getWorld().getBlockState(l.getBlockPos()).getBlock().getRegistryName().toString();
|
|
|
});
|
|
|
+ sm.registerFunction("block.isair", (sc, in) -> {
|
|
|
+ Location l = (Location) in[0].get(sc);
|
|
|
+ return l.getWorld().isAirBlock(l.getBlockPos());
|
|
|
+ });
|
|
|
+ sm.registerFunction("block.countair", (sc, in) -> {
|
|
|
+ Location l = (Location) in[0].get(sc);
|
|
|
+ IWorld w = l.getWorld();
|
|
|
+ BlockPos.Mutable pos = new BlockPos.Mutable(l.getBlockPos());
|
|
|
+ int ox = pos.getX();
|
|
|
+ int oy = pos.getY();
|
|
|
+ int oz = pos.getZ();
|
|
|
+ double counter = 0;
|
|
|
+ for(int x = -1; x <= 1; x++) {
|
|
|
+ for(int y = -1; y <= 1; y++) {
|
|
|
+ for(int z = -1; z <= 1; z++) {
|
|
|
+ pos.setPos(ox + x, oy + y, oz + z);
|
|
|
+ if(w.isAirBlock(pos)) {
|
|
|
+ counter++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return counter;
|
|
|
+ });
|
|
|
sm.registerFunction("block.get", (sc, in) -> {
|
|
|
Location l = (Location) in[0].get(sc);
|
|
|
return l.getWorld().getBlockState(l.getBlockPos()).getBlock();
|
|
@@ -86,6 +110,18 @@ public class BlockCommands {
|
|
|
}
|
|
|
l.getWorld().setBlockState(l.getBlockPos(), state, flag);
|
|
|
});
|
|
|
+ sm.registerFunction("block.newstate", (sc, in) -> {
|
|
|
+ BlockStateParser parser = new BlockStateParser(new StringReader(in[0].getString(sc)), true);
|
|
|
+ return parser.parse(true).getState();
|
|
|
+ });
|
|
|
+ sm.registerConsumer("block.setstate", (sc, in) -> {
|
|
|
+ Location l = (Location) in[0].get(sc);
|
|
|
+ int flag = 2;
|
|
|
+ if(in.length >= 3 && in[2].getBoolean(sc)) {
|
|
|
+ flag |= 16;
|
|
|
+ }
|
|
|
+ l.getWorld().setBlockState(l.getBlockPos(), (BlockState) in[1].get(sc), flag);
|
|
|
+ });
|
|
|
sm.registerConsumer("block.setsign", (sc, in) -> {
|
|
|
Location l = (Location) in[0].get(sc);
|
|
|
SignTileEntity sign = (SignTileEntity) l.getWorld().getTileEntity(l.getBlockPos());
|