Linear Patterns require flooring division (#2079)

Use floorDiv in linear patterns
Dieser Commit ist enthalten in:
Hannes Greule 2023-01-31 11:21:11 +01:00 committet von GitHub
Ursprung 214954bb09
Commit 158e51191f
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23
2 geänderte Dateien mit 8 neuen und 3 gelöschten Zeilen

Datei anzeigen

@ -7,6 +7,8 @@ import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;
import static java.lang.Math.floorDiv;
public class Linear2DBlockPattern extends AbstractPattern { public class Linear2DBlockPattern extends AbstractPattern {
private final Pattern[] patternsArray; private final Pattern[] patternsArray;
@ -37,7 +39,8 @@ public class Linear2DBlockPattern extends AbstractPattern {
@Override @Override
public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException { public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException {
int index = (get.getBlockX() / this.xScale + get.getBlockZ() / this.zScale) % patternsArray.length; int index = (floorDiv(get.getBlockX(), this.xScale)
+ floorDiv(get.getBlockZ(), this.zScale)) % patternsArray.length;
if (index < 0) { if (index < 0) {
index += patternsArray.length; index += patternsArray.length;
} }

Datei anzeigen

@ -7,6 +7,8 @@ import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;
import static java.lang.Math.floorDiv;
public class Linear3DBlockPattern extends AbstractPattern { public class Linear3DBlockPattern extends AbstractPattern {
private final Pattern[] patternsArray; private final Pattern[] patternsArray;
@ -41,8 +43,8 @@ public class Linear3DBlockPattern extends AbstractPattern {
@Override @Override
public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException { public boolean apply(Extent extent, BlockVector3 get, BlockVector3 set) throws WorldEditException {
int index = (get.getBlockX() / this.xScale int index = (floorDiv(get.getBlockX(), this.xScale)
+ get.getBlockY() / this.yScale + get.getBlockZ() / this.zScale) % patternsArray.length; + floorDiv(get.getBlockY(), this.yScale) + floorDiv(get.getBlockZ(), this.zScale)) % patternsArray.length;
if (index < 0) { if (index < 0) {
index += patternsArray.length; index += patternsArray.length;
} }