diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java index 56e6b07d5..c9d787003 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java @@ -7,28 +7,25 @@ package com.dfsek.terra.addons.biome.image; -import java.awt.image.BufferedImage; import java.util.Optional; import com.dfsek.terra.addons.image.converter.ColorConverter; -import com.dfsek.terra.addons.image.picker.ColorPicker; +import com.dfsek.terra.addons.image.sampler.ColorSampler; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class ImageBiomeProvider implements BiomeProvider { - private final BufferedImage image; private final int resolution; private final ColorConverter colorConverter; - private final ColorPicker colorPicker; + private final ColorSampler colorSampler; - public ImageBiomeProvider(BufferedImage image, ColorConverter colorConverter, ColorPicker colorPicker, int resolution) { - this.image = image; + public ImageBiomeProvider(ColorConverter colorConverter, ColorSampler colorSampler, int resolution) { this.resolution = resolution; this.colorConverter = colorConverter; - this.colorPicker = colorPicker; + this.colorSampler = colorSampler; } @Override @@ -39,7 +36,7 @@ public class ImageBiomeProvider implements BiomeProvider { public Biome getBiome(int x, int z) { x /= resolution; z /= resolution; - return colorConverter.apply(colorPicker.apply(image, x, z)); + return colorConverter.apply(colorSampler.apply(x, z)); } @Override diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java index e7c56d157..1ce2b5ecb 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/config/ImageProviderTemplate.java @@ -12,11 +12,9 @@ import com.dfsek.tectonic.api.config.template.annotations.Description; import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; -import java.awt.image.BufferedImage; - import com.dfsek.terra.addons.biome.image.ImageBiomeProvider; import com.dfsek.terra.addons.image.converter.ColorConverter; -import com.dfsek.terra.addons.image.picker.ColorPicker; +import com.dfsek.terra.addons.image.sampler.ColorSampler; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -30,16 +28,13 @@ public class ImageProviderTemplate implements ObjectTemplate { private int resolution = 1; @Value("image") - private BufferedImage image; - - @Value("mode") - private ColorPicker colorPicker; + private ColorSampler colorSampler; @Value("biomes") private ColorConverter colorConverter; @Override public BiomeProvider get() { - return new ImageBiomeProvider(image, colorConverter, colorPicker, resolution); + return new ImageBiomeProvider(colorConverter, colorSampler, resolution); } } diff --git a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java index 275b1ead9..3f162dba6 100644 --- a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java +++ b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java @@ -7,31 +7,27 @@ package com.dfsek.terra.addons.noise.image; -import java.awt.image.BufferedImage; - -import com.dfsek.terra.addons.image.picker.ColorPicker; +import com.dfsek.terra.addons.image.sampler.ColorSampler; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; import com.dfsek.terra.api.noise.NoiseSampler; public class ImageSampler implements NoiseSampler { - private final BufferedImage image; private final Channel channel; private final double frequency; - private final ColorPicker colorPicker; + private final ColorSampler colorSampler; - public ImageSampler(BufferedImage image, ColorPicker colorPicker, Channel channel, double frequency) { - this.image = image; + public ImageSampler(ColorSampler colorSampler, Channel channel, double frequency) { this.channel = channel; this.frequency = frequency; - this.colorPicker = colorPicker; + this.colorSampler = colorSampler; } @Override public double noise(long seed, double x, double y) { - return channel.from(colorPicker.apply(image, (int) (x * frequency), (int) (y * frequency))) / 255D * 2 - 1; + return channel.from(colorSampler.apply((int) (x * frequency), (int) (y * frequency))) / 255D * 2 - 1; } @Override diff --git a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java index bdbc366ef..60ac77e0c 100644 --- a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java +++ b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java @@ -9,9 +9,7 @@ package com.dfsek.terra.addons.noise.image.config; import com.dfsek.tectonic.api.config.template.annotations.Value; -import java.awt.image.BufferedImage; - -import com.dfsek.terra.addons.image.picker.ColorPicker; +import com.dfsek.terra.addons.image.sampler.ColorSampler; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.image.ImageSampler; @@ -23,10 +21,7 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class ImageSamplerTemplate extends SamplerTemplate { @Value("image") - private @Meta BufferedImage image; - - @Value("mode") - private @Meta ColorPicker colorPicker; + private @Meta ColorSampler colorSampler; @Value("frequency") private @Meta double frequency; @@ -36,6 +31,6 @@ public class ImageSamplerTemplate extends SamplerTemplate { @Override public NoiseSampler get() { - return new ImageSampler(image, colorPicker, channel, frequency); + return new ImageSampler(colorSampler, channel, frequency); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java index 020740059..b360ef756 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java @@ -6,9 +6,9 @@ import java.awt.image.BufferedImage; import java.util.function.Supplier; import com.dfsek.terra.addons.image.config.BufferedImageLoader; -import com.dfsek.terra.addons.image.config.picker.SingleColorPickerTemplate; -import com.dfsek.terra.addons.image.config.picker.TileColorPickerTemplate; -import com.dfsek.terra.addons.image.picker.ColorPicker; +import com.dfsek.terra.addons.image.config.sampler.SingleColorSamplerTemplate; +import com.dfsek.terra.addons.image.config.sampler.TileColorSamplerTemplate; +import com.dfsek.terra.addons.image.sampler.ColorSampler; import com.dfsek.terra.addons.manifest.api.AddonInitializer; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; @@ -21,7 +21,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey; public class ImageLibraryAddon implements AddonInitializer { - public static final TypeKey>> COLOR_PICKER_REGISTRY_KEY = new TypeKey<>() { + public static final TypeKey>> COLOR_PICKER_REGISTRY_KEY = new TypeKey<>() { }; @Inject @@ -40,10 +40,10 @@ public class ImageLibraryAddon implements AddonInitializer { event.getPack().applyLoader(BufferedImage.class, new BufferedImageLoader(event.getPack().getLoader())); }) .then(event -> { - CheckedRegistry>> colorPickerRegistry = event.getPack().getOrCreateRegistry( + CheckedRegistry>> colorSamplerRegistry = event.getPack().getOrCreateRegistry( COLOR_PICKER_REGISTRY_KEY); - colorPickerRegistry.register(addon.key("SINGLE"), SingleColorPickerTemplate::new); - colorPickerRegistry.register(addon.key("TILED"), TileColorPickerTemplate::new); + colorSamplerRegistry.register(addon.key("SINGLE"), SingleColorSamplerTemplate::new); + colorSamplerRegistry.register(addon.key("TILED"), TileColorSamplerTemplate::new); }); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/ColorPickerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/ColorPickerTemplate.java deleted file mode 100644 index d0ff0940a..000000000 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/ColorPickerTemplate.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.image.config.picker; - -import com.dfsek.tectonic.api.config.template.annotations.Default; -import com.dfsek.tectonic.api.config.template.annotations.Value; -import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; - -import com.dfsek.terra.addons.image.picker.ColorPicker; -import com.dfsek.terra.addons.image.picker.transform.Alignment; - - -public abstract class ColorPickerTemplate implements ObjectTemplate { - - @Value("align") - @Default - protected Alignment alignment = Alignment.NONE; - -} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/SingleColorPickerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/SingleColorPickerTemplate.java deleted file mode 100644 index 1fb10e5b9..000000000 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/SingleColorPickerTemplate.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.addons.image.config.picker; - -import com.dfsek.tectonic.api.config.template.annotations.Value; - -import com.dfsek.terra.addons.image.picker.ColorPicker; -import com.dfsek.terra.addons.image.picker.SimpleColorPicker; - - -public class SingleColorPickerTemplate extends ColorPickerTemplate { - - @Value("fallback") - private int fallback; - - @Override - public ColorPicker get() { - return new SimpleColorPicker(fallback, alignment); - } -} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/TileColorPickerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/TileColorPickerTemplate.java deleted file mode 100644 index 1ee59b32e..000000000 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/picker/TileColorPickerTemplate.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.addons.image.config.picker; - -import com.dfsek.terra.addons.image.picker.ColorPicker; -import com.dfsek.terra.addons.image.picker.TileColorPicker; - - -public class TileColorPickerTemplate extends ColorPickerTemplate { - - @Override - public ColorPicker get() { - return new TileColorPicker(alignment); - } -} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ColorSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ColorSamplerTemplate.java new file mode 100644 index 000000000..90c69515e --- /dev/null +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/ColorSamplerTemplate.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.image.config.sampler; + +import com.dfsek.tectonic.api.config.template.annotations.Default; +import com.dfsek.tectonic.api.config.template.annotations.Value; +import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; + +import java.awt.image.BufferedImage; + +import com.dfsek.terra.addons.image.sampler.ColorSampler; +import com.dfsek.terra.addons.image.sampler.transform.Alignment; + + +public abstract class ColorSamplerTemplate implements ObjectTemplate { + + @Value("path") + protected BufferedImage image; + + @Value("align") + @Default + protected Alignment alignment = Alignment.NONE; + +} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/SingleColorSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/SingleColorSamplerTemplate.java new file mode 100644 index 000000000..8534d46e5 --- /dev/null +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/SingleColorSamplerTemplate.java @@ -0,0 +1,17 @@ +package com.dfsek.terra.addons.image.config.sampler; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.addons.image.sampler.ColorSampler; +import com.dfsek.terra.addons.image.sampler.SimpleColorSampler; + + +public class SingleColorSamplerTemplate extends ColorSamplerTemplate { + @Value("fallback") + private int fallback; + + @Override + public ColorSampler get() { + return new SimpleColorSampler(image, fallback, alignment); + } +} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/TileColorSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/TileColorSamplerTemplate.java new file mode 100644 index 000000000..b17deaba1 --- /dev/null +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/TileColorSamplerTemplate.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addons.image.config.sampler; + +import com.dfsek.terra.addons.image.sampler.ColorSampler; +import com.dfsek.terra.addons.image.sampler.TileColorSampler; + + +public class TileColorSamplerTemplate extends ColorSamplerTemplate { + + @Override + public ColorSampler get() { + return new TileColorSampler(image, alignment); + } +} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/ColorPicker.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/ColorPicker.java deleted file mode 100644 index 7db4ef6f4..000000000 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/ColorPicker.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.image.picker; - -import java.awt.image.BufferedImage; - -@FunctionalInterface -public interface ColorPicker { - - /** - * @param image Lookup image - * @param x World x coordinate - * @param z World z coordinate - * @return Integer representing a web color - */ - Integer apply(BufferedImage image, int x, int z); -} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ColorSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ColorSampler.java new file mode 100644 index 000000000..b6eaade20 --- /dev/null +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/ColorSampler.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.addons.image.sampler; + +@FunctionalInterface +public interface ColorSampler { + + /** + * @param x World x coordinate + * @param z World z coordinate + * @return Integer representing a web color + */ + Integer apply(int x, int z); +} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/SimpleColorPicker.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/SimpleColorSampler.java similarity index 55% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/SimpleColorPicker.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/SimpleColorSampler.java index 66b75bb37..4bf38cff1 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/SimpleColorPicker.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/SimpleColorSampler.java @@ -1,23 +1,26 @@ -package com.dfsek.terra.addons.image.picker; +package com.dfsek.terra.addons.image.sampler; import java.awt.image.BufferedImage; -import com.dfsek.terra.addons.image.picker.transform.ImageTransformation; +import com.dfsek.terra.addons.image.sampler.transform.ImageTransformation; -public class SimpleColorPicker implements ColorPicker { +public class SimpleColorSampler implements ColorSampler { + + private final BufferedImage image; private final Integer fallback; private final ImageTransformation transformation; - public SimpleColorPicker(int fallbackColor, ImageTransformation transformation) { + public SimpleColorSampler(BufferedImage image, int fallbackColor, ImageTransformation transformation) { + this.image = image; this.fallback = fallbackColor; this.transformation = transformation; } @Override - public Integer apply(BufferedImage image, int x, int z) { + public Integer apply(int x, int z) { x = transformation.transformX(image, x); z = transformation.transformZ(image, z); if(x < 0 || z < 0 || x >= image.getWidth() || z >= image.getHeight()) return fallback; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/TileColorPicker.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/TileColorSampler.java similarity index 52% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/TileColorPicker.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/TileColorSampler.java index a70c03869..99f57ad28 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/TileColorPicker.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/TileColorSampler.java @@ -1,22 +1,25 @@ -package com.dfsek.terra.addons.image.picker; +package com.dfsek.terra.addons.image.sampler; import net.jafama.FastMath; import java.awt.image.BufferedImage; -import com.dfsek.terra.addons.image.picker.transform.ImageTransformation; +import com.dfsek.terra.addons.image.sampler.transform.ImageTransformation; -public class TileColorPicker implements ColorPicker { +public class TileColorSampler implements ColorSampler { + + private final BufferedImage image; private final ImageTransformation transformation; - public TileColorPicker(ImageTransformation transformation) { + public TileColorSampler(BufferedImage image, ImageTransformation transformation) { + this.image = image; this.transformation = transformation; } @Override - public Integer apply(BufferedImage image, int x, int z) { + public Integer apply(int x, int z) { x = transformation.transformX(image, x); z = transformation.transformZ(image, z); return image.getRGB(FastMath.floorMod(x, image.getWidth()), FastMath.floorMod(z, image.getHeight())); diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/transform/Alignment.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/transform/Alignment.java similarity index 91% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/transform/Alignment.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/transform/Alignment.java index 1441f3479..c212a2ff4 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/transform/Alignment.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/transform/Alignment.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.image.picker.transform; +package com.dfsek.terra.addons.image.sampler.transform; import java.awt.image.BufferedImage; diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/transform/ImageTransformation.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/transform/ImageTransformation.java similarity index 76% rename from common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/transform/ImageTransformation.java rename to common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/transform/ImageTransformation.java index 45a17acb7..da3f7c0c1 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/picker/transform/ImageTransformation.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/transform/ImageTransformation.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.image.picker.transform; +package com.dfsek.terra.addons.image.sampler.transform; import java.awt.image.BufferedImage;