From 916bca59ba940e2c91d46c01ff532bb2c2224db6 Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Sun, 29 Apr 2018 12:22:17 +1000 Subject: [PATCH] * --- .../main/java/com/boydti/fawe/object/DataAnglePattern.java | 5 +++-- .../com/boydti/fawe/object/pattern/AngleColorPattern.java | 3 +-- core/src/main/java/com/boydti/fawe/util/TextureUtil.java | 1 + .../java/com/sk89q/worldedit/command/PatternCommands.java | 5 +++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/boydti/fawe/object/DataAnglePattern.java b/core/src/main/java/com/boydti/fawe/object/DataAnglePattern.java index d7acea8f..4d2c321e 100644 --- a/core/src/main/java/com/boydti/fawe/object/DataAnglePattern.java +++ b/core/src/main/java/com/boydti/fawe/object/DataAnglePattern.java @@ -9,15 +9,16 @@ import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.function.pattern.AbstractPattern; public class DataAnglePattern extends AbstractPattern { + public final double FACTOR; public final Extent extent; public final int maxY; - public final double factor = 1d / 255; public final int distance; public DataAnglePattern(Extent extent, int distance) { this.extent = new ExtentHeightCacher(extent); this.maxY = extent.getMaximumPoint().getBlockY(); this.distance = distance; + this.FACTOR = (1D / distance) * (1D / 255); } public int getSlope(BaseBlock block, Vector vector) { @@ -53,4 +54,4 @@ public class DataAnglePattern extends AbstractPattern { int data = (Math.min(slope, 255)) >> 4; return extent.setBlock(setPosition, FaweCache.getBlock(block.getId(), data)); } -} +} \ No newline at end of file diff --git a/core/src/main/java/com/boydti/fawe/object/pattern/AngleColorPattern.java b/core/src/main/java/com/boydti/fawe/object/pattern/AngleColorPattern.java index 012a39d4..cf69be61 100644 --- a/core/src/main/java/com/boydti/fawe/object/pattern/AngleColorPattern.java +++ b/core/src/main/java/com/boydti/fawe/object/pattern/AngleColorPattern.java @@ -11,7 +11,6 @@ import com.sk89q.worldedit.extent.Extent; import java.io.IOException; public class AngleColorPattern extends DataAnglePattern { - private static final double FACTOR = 1d / 256; private transient TextureUtil util; private final boolean randomize; @@ -26,7 +25,7 @@ public class AngleColorPattern extends DataAnglePattern { public int getColor(int color, int slope) { if (slope == 0) return color; - double newFactor = (256 - Math.min(256, slope)) * FACTOR; + double newFactor = (1 - Math.min(1, slope * FACTOR)); int newRed = (int) (((color >> 16) & 0xFF) * newFactor); int newGreen = (int) (((color >> 8) & 0xFF) * newFactor); int newBlue = (int) (((color >> 0) & 0xFF) * newFactor); diff --git a/core/src/main/java/com/boydti/fawe/util/TextureUtil.java b/core/src/main/java/com/boydti/fawe/util/TextureUtil.java index 8664a251..addd58e8 100644 --- a/core/src/main/java/com/boydti/fawe/util/TextureUtil.java +++ b/core/src/main/java/com/boydti/fawe/util/TextureUtil.java @@ -628,6 +628,7 @@ public class TextureUtil { BufferedImage image = ImageIO.read(is); int color = ImageUtil.getColor(image); long distance = getDistance(image, color); + if (combined == BlockID.MYCELIUM << 4) distance = Long.MAX_VALUE; distanceMap.put((int) combined, (Long) distance); colorMap.put((int) combined, (Integer) color); } diff --git a/core/src/main/java/com/sk89q/worldedit/command/PatternCommands.java b/core/src/main/java/com/sk89q/worldedit/command/PatternCommands.java index 01f4db15..d4794e46 100644 --- a/core/src/main/java/com/sk89q/worldedit/command/PatternCommands.java +++ b/core/src/main/java/com/sk89q/worldedit/command/PatternCommands.java @@ -135,10 +135,11 @@ public class PatternCommands extends MethodCommands { @Command( aliases = {"#angledata"}, + usage = "[distance=1]", desc = "Block data based on the existing terrain angle" ) - public Pattern angledata(Extent extent) { - return new DataAnglePattern(extent, 1); + public Pattern angledata(Extent extent, @Optional("1") int distance) { + return new DataAnglePattern(extent, distance); } @Command(