Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-03 01:50:07 +01:00
Fix #727
Dieser Commit ist enthalten in:
Ursprung
dad991e7aa
Commit
8120163f5e
@ -9,7 +9,7 @@ import com.sk89q.worldedit.math.BlockVector3;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class AngleMask extends SolidBlockMask implements ResettableMask {
|
public class AngleMask extends AbstractExtentMask implements ResettableMask {
|
||||||
|
|
||||||
protected static double ADJACENT_MOD = 0.5;
|
protected static double ADJACENT_MOD = 0.5;
|
||||||
protected static double DIAGONAL_MOD = 1 / Math.sqrt(8);
|
protected static double DIAGONAL_MOD = 1 / Math.sqrt(8);
|
||||||
@ -141,12 +141,30 @@ public class AngleMask extends SolidBlockMask implements ResettableMask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(BlockVector3 vector) {
|
public boolean test(BlockVector3 vector) {
|
||||||
|
|
||||||
|
if (!mask.test(vector)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int y = vector.getBlockY();
|
||||||
|
if (overlay) {
|
||||||
|
MutableBlockVector3 mutable = new MutableBlockVector3(vector);
|
||||||
|
if (y < maxY && !adjacentAir(null, mutable)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int x = vector.getBlockX();
|
||||||
|
int z = vector.getBlockZ();
|
||||||
|
return testSlope(getExtent(), x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(final Extent extent, final BlockVector3 vector) {
|
||||||
int x = vector.getBlockX();
|
int x = vector.getBlockX();
|
||||||
int y = vector.getBlockY();
|
int y = vector.getBlockY();
|
||||||
int z = vector.getBlockZ();
|
int z = vector.getBlockZ();
|
||||||
|
|
||||||
if ((lastX == (lastX = x) & lastZ == (lastZ = z))) {
|
if ((lastX == (lastX = x) & lastZ == (lastZ = z))) {
|
||||||
int height = getHeight(getExtent(), x, y, z);
|
int height = getHeight(extent, x, y, z);
|
||||||
if (y <= height) {
|
if (y <= height) {
|
||||||
return overlay ? (lastValue && y == height) : lastValue;
|
return overlay ? (lastValue && y == height) : lastValue;
|
||||||
}
|
}
|
||||||
@ -154,15 +172,15 @@ public class AngleMask extends SolidBlockMask implements ResettableMask {
|
|||||||
|
|
||||||
MutableBlockVector3 mutable = new MutableBlockVector3(x, y, z);
|
MutableBlockVector3 mutable = new MutableBlockVector3(x, y, z);
|
||||||
|
|
||||||
if (!mask.test(getExtent(), mutable)) {
|
if (!mask.test(extent, mutable)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (overlay) {
|
if (overlay) {
|
||||||
if (y < maxY && !adjacentAir(getExtent(), mutable)) {
|
if (y < maxY && !adjacentAir(extent, mutable)) {
|
||||||
return lastValue = false;
|
return lastValue = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return testSlope(getExtent(), x, y, z);
|
return testSlope(extent, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren