This commit is contained in:
TomyLobo 2011-10-27 19:25:54 +02:00
parent ee79abff67
commit f6f08da620
2 changed files with 17 additions and 14 deletions

View File

@ -43,33 +43,32 @@ public abstract class ArbitraryShape {
double y = position.getY(); double y = position.getY();
double z = position.getZ(); double z = position.getZ();
if (!isInside(x, y, z)) if (!isInside(x, y, z)) continue;
continue;
if (hollow) { if (hollow) {
boolean draw = false; boolean draw = false;
do { do {
if (!isInside(x+1, y, z)) { if (!isInside(x + 1, y, z)) {
draw = true; draw = true;
break; break;
} }
if (!isInside(x-1, y, z)) { if (!isInside(x - 1, y, z)) {
draw = true; draw = true;
break; break;
} }
if (!isInside(x, y+1, z)) { if (!isInside(x, y + 1, z)) {
draw = true; draw = true;
break; break;
} }
if (!isInside(x, y-1, z)) { if (!isInside(x, y - 1, z)) {
draw = true; draw = true;
break; break;
} }
if (!isInside(x, y, z+1)) { if (!isInside(x, y, z + 1)) {
draw = true; draw = true;
break; break;
} }
if (!isInside(x, y, z-1)) { if (!isInside(x, y, z - 1)) {
draw = true; draw = true;
break; break;
} }

View File

@ -340,7 +340,8 @@ public class GenerationCommands {
try { try {
expression = Expression.compile(args.getJoinedStrings(1), "x", "y", "z"); expression = Expression.compile(args.getJoinedStrings(1), "x", "y", "z");
expression.optimize(); expression.optimize();
} catch (ExpressionException e) { }
catch (ExpressionException e) {
player.printError(e.getMessage()); player.printError(e.getMessage());
return; return;
} }
@ -353,7 +354,8 @@ public class GenerationCommands {
protected boolean isInside(double x, double y, double z) { protected boolean isInside(double x, double y, double z) {
try { try {
return expression.evaluate(x, y, z) > 0; return expression.evaluate(x, y, z) > 0;
} catch (Exception e) { }
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
} }
@ -371,8 +373,9 @@ public class GenerationCommands {
@Override @Override
protected boolean isInside(double x, double y, double z) { protected boolean isInside(double x, double y, double z) {
try { try {
return expression.evaluate(x-placementX, y-placementY, z-placementZ) > 0; return expression.evaluate(x - placementX, y - placementY, z - placementZ) > 0;
} catch (Exception e) { }
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
} }
@ -387,11 +390,12 @@ public class GenerationCommands {
shape = new ArbitraryShape(region) { shape = new ArbitraryShape(region) {
@Override @Override
protected boolean isInside(double x, double y, double z) { protected boolean isInside(double x, double y, double z) {
final Vector scaled = new Vector(x,y,z).subtract(center).divide(stretch); final Vector scaled = new Vector(x, y, z).subtract(center).divide(stretch);
try { try {
return expression.evaluate(scaled.getX(), scaled.getY(), scaled.getZ()) > 0; return expression.evaluate(scaled.getX(), scaled.getY(), scaled.getZ()) > 0;
} catch (Exception e) { }
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
} }