diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java index 0e5c3cc7d..378425a40 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/sampler/CacheSampler.java @@ -63,16 +63,16 @@ public class CacheSampler implements Sampler { @Override public double getSample(long seed, double x, double y) { Mutable> cachePair = cache2D.get(); - DoubleSeededVector2Key mutableKey = cachePair.getLeft(); + DoubleSeededVector2Key mutableKey = cachePair.left(); mutableKey.set(x, y, seed); - return cachePair.getRight().get(mutableKey); + return cachePair.right().get(mutableKey); } @Override public double getSample(long seed, double x, double y, double z) { Mutable> cachePair = cache3D.get(); - DoubleSeededVector3Key mutableKey = cachePair.getLeft(); + DoubleSeededVector3Key mutableKey = cachePair.left(); mutableKey.set(x, y, z, seed); - return cachePair.getRight().get(mutableKey); + return cachePair.right().get(mutableKey); } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/BiFunctor.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/BiFunctor.java index 537b9aca2..b869eecb9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/BiFunctor.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/BiFunctor.java @@ -1,9 +1,26 @@ package com.dfsek.terra.api.util.generic.data; +import com.dfsek.terra.api.util.generic.data.types.Pair; + +import java.util.function.Consumer; import java.util.function.Function; public interface BiFunctor> { + static > Consumer> consumeLeft(Consumer consumer) { + return pair -> pair.mapLeft(p -> { + consumer.accept(p); + return p; + }); + } + + static Consumer> consumeRight(Consumer consumer) { + return pair -> pair.mapRight(p -> { + consumer.accept(p); + return p; + }); + } + BiFunctor mapLeft(Function map); BiFunctor mapRight(Function map); diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/types/Pair.java b/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/types/Pair.java index 9b450da74..b8960e22a 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/types/Pair.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/generic/data/types/Pair.java @@ -14,7 +14,6 @@ import org.jetbrains.annotations.NotNull; import java.util.Objects; import java.util.function.BiConsumer; -import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; @@ -30,7 +29,7 @@ public record Pair(L left, R right) implements BiFunctor> return of(left, function.apply(right)); } - public static Predicate> testLeft(Predicate predicate) { + public static Predicate> testLeft(Predicate predicate) { return pair -> predicate.test(pair.left); } @@ -38,19 +37,11 @@ public record Pair(L left, R right) implements BiFunctor> return pair -> predicate.test(pair.right); } - public static Consumer> consumeLeft(Consumer consumer) { - return pair -> consumer.accept(pair.left); - } - - public static Consumer> consumeRight(Consumer consumer) { - return pair -> consumer.accept(pair.right); - } - - public static Function, R> unwrapRight() { + public static Function, R> unwrapRight() { return pair -> pair.right; } - public static Function, L> unwrapLeft() { + public static Function, L> unwrapLeft() { return pair -> pair.left; } @@ -73,9 +64,9 @@ public record Pair(L left, R right) implements BiFunctor> @Override public boolean equals(Object obj) { - if(!(obj instanceof Pair that)) return false; + if(!(obj instanceof Pair(Object left1, Object right1))) return false; - return Objects.equals(this.left, that.left) && Objects.equals(this.right, that.right); + return Objects.equals(this.left, left1) && Objects.equals(this.right, right1); } public Pair apply(BiConsumer consumer) { @@ -109,7 +100,7 @@ public record Pair(L left, R right) implements BiFunctor> return Pair.of(left, right); } - public L getLeft() { + public L left() { return left; } @@ -117,7 +108,7 @@ public record Pair(L left, R right) implements BiFunctor> this.left = left; } - public R getRight() { + public R right() { return right; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java index b7fba529a..52bbcb5a2 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/CachingBiomeProvider.java @@ -74,17 +74,17 @@ public class CachingBiomeProvider implements BiomeProvider, Handle { @Override public Biome getBiome(int x, int y, int z, long seed) { Mutable> cachePair = cache.get(); - SeededVector3Key mutableKey = cachePair.getLeft(); + SeededVector3Key mutableKey = cachePair.left(); mutableKey.set(x, y, z, seed); - return cachePair.getRight().get(mutableKey); + return cachePair.right().get(mutableKey); } @Override public Maybe getBaseBiome(int x, int z, long seed) { Mutable>> cachePair = baseCache.get(); - SeededVector2Key mutableKey = cachePair.getLeft(); + SeededVector2Key mutableKey = cachePair.left(); mutableKey.set(x, z, seed); - return cachePair.getRight().get(mutableKey); + return cachePair.right().get(mutableKey); } @Override diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 9c56439ee..b4e67e843 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -18,6 +18,9 @@ package com.dfsek.terra; import com.dfsek.tectonic.api.TypeRegistry; + +import com.dfsek.terra.api.util.generic.data.BiFunctor; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.jetbrains.annotations.NotNull; @@ -352,7 +355,7 @@ public abstract class AbstractPlatform implements Platform { paths .stream() .filter(Pair.testRight(resourcePath::startsWith)) - .forEach(Pair.consumeLeft(path -> { + .forEach(BiFunctor.consumeLeft(path -> { logger.info("Removing outdated resource {}, replacing with {}", path, resourcePath); try { Files.delete(path);