mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-27 14:30:23 +00:00
implement Bifunctor Pair
This commit is contained in:
1 parent
47bdd66fe7
commit
86bb4d5a1a
17 files changed
+29
-30
No files matched your search
+2
-2
@@ -8,8 +8,8 @@ import org.jetbrains.annotations.ApiStatus.Experimental;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.util.cache.DoubleSeededVector2Key;
|
import com.dfsek.terra.api.util.cache.DoubleSeededVector2Key;
|
||||||
import com.dfsek.terra.api.util.cache.DoubleSeededVector3Key;
|
import com.dfsek.terra.api.util.cache.DoubleSeededVector3Key;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair.Mutable;
|
import com.dfsek.terra.api.util.generic.data.types.Pair.Mutable;
|
||||||
|
|
||||||
import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR;
|
import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.StrVar
|
|||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Token;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Token;
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType;
|
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
|
|
||||||
|
|
||||||
public class Scope {
|
public class Scope {
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
|||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable;
|
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Scope;
|
import com.dfsek.terra.addons.terrascript.parser.lang.Scope;
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
|
|
||||||
|
|
||||||
public class IfKeyword implements Keyword<Block.ReturnInfo<?>> {
|
public class IfKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||||
|
|||||||
+8
-6
@@ -5,7 +5,9 @@
|
|||||||
* reference the LICENSE file in the common/api directory.
|
* reference the LICENSE file in the common/api directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.dfsek.terra.api.util.generic.pair;
|
package com.dfsek.terra.api.util.generic.data.types;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.util.generic.data.BiFunctor;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Contract;
|
import org.jetbrains.annotations.Contract;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -17,15 +19,15 @@ import java.util.function.Function;
|
|||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
|
||||||
public record Pair<L, R>(L left, R right) implements Bifunctor{
|
public record Pair<L, R>(L left, R right) implements BiFunctor<L, R, Pair<?, ?>> {
|
||||||
private static final Pair<?, ?> NULL = new Pair<>(null, null);
|
private static final Pair<?, ?> NULL = new Pair<>(null, null);
|
||||||
|
|
||||||
public static <L, R, T> Function<Pair<L, R>, Pair<T, R>> mapLeft(Function<L, T> function) {
|
public <T> Pair<T, R> mapLeft(Function<L, T> function) {
|
||||||
return pair -> of(function.apply(pair.left), pair.right);
|
return of(function.apply(left), right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <L, R, T> Function<Pair<L, R>, Pair<L, T>> mapRight(Function<R, T> function) {
|
public <T> Pair<L, T> mapRight(Function<R, T> function) {
|
||||||
return pair -> of(pair.left, function.apply(pair.right));
|
return of(left, function.apply(right));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <L> Predicate<Pair<L, ?>> testLeft(Predicate<L> predicate) {
|
public static <L> Predicate<Pair<L, ?>> testLeft(Predicate<L> predicate) {
|
||||||
+2
-4
@@ -6,13 +6,11 @@ import com.github.benmanes.caffeine.cache.Caffeine;
|
|||||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||||
import com.github.benmanes.caffeine.cache.Scheduler;
|
import com.github.benmanes.caffeine.cache.Scheduler;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.Handle;
|
import com.dfsek.terra.api.Handle;
|
||||||
import com.dfsek.terra.api.util.cache.SeededVector2Key;
|
import com.dfsek.terra.api.util.cache.SeededVector2Key;
|
||||||
import com.dfsek.terra.api.util.cache.SeededVector3Key;
|
import com.dfsek.terra.api.util.cache.SeededVector3Key;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair.Mutable;
|
import com.dfsek.terra.api.util.generic.data.types.Pair.Mutable;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR;
|
import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import java.util.stream.Collectors;
|
|||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.Column;
|
import com.dfsek.terra.api.util.Column;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ import com.dfsek.terra.api.profiler.Profiler;
|
|||||||
import com.dfsek.terra.api.registry.CheckedRegistry;
|
import com.dfsek.terra.api.registry.CheckedRegistry;
|
||||||
import com.dfsek.terra.api.registry.Registry;
|
import com.dfsek.terra.api.registry.Registry;
|
||||||
import com.dfsek.terra.api.registry.key.StringIdentifiable;
|
import com.dfsek.terra.api.registry.key.StringIdentifiable;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.mutable.MutableBoolean;
|
import com.dfsek.terra.api.util.mutable.MutableBoolean;
|
||||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||||
import com.dfsek.terra.config.GenericLoaders;
|
import com.dfsek.terra.config.GenericLoaders;
|
||||||
@@ -308,7 +308,7 @@ public abstract class AbstractPlatform implements Platform {
|
|||||||
.walk(addonsPath)
|
.walk(addonsPath)
|
||||||
.map(path -> Pair.of(path, data.relativize(path).toString()))
|
.map(path -> Pair.of(path, data.relativize(path).toString()))
|
||||||
|
|
||||||
.map(Pair.mapRight(s -> {
|
.map(p -> p.mapRight(s -> {
|
||||||
if(s.contains("+")) { // remove commit hash
|
if(s.contains("+")) { // remove commit hash
|
||||||
return s.substring(0, s.lastIndexOf('+'));
|
return s.substring(0, s.lastIndexOf('+'));
|
||||||
}
|
}
|
||||||
@@ -316,17 +316,17 @@ public abstract class AbstractPlatform implements Platform {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
.filter(Pair.testRight(s -> s.contains("."))) // remove patch version
|
.filter(Pair.testRight(s -> s.contains("."))) // remove patch version
|
||||||
.map(Pair.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
.map(p -> p.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
||||||
|
|
||||||
.filter(Pair.testRight(s -> s.contains("."))) // remove minor version
|
.filter(Pair.testRight(s -> s.contains("."))) // remove minor version
|
||||||
.map(Pair.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
.map(p -> p.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
||||||
|
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
Set<String> pathsNoMajor = paths
|
Set<String> pathsNoMajor = paths
|
||||||
.stream()
|
.stream()
|
||||||
.filter(Pair.testRight(s -> s.contains(".")))
|
.filter(Pair.testRight(s -> s.contains(".")))
|
||||||
.map(Pair.mapRight(s -> s.substring(0, s.lastIndexOf('.')))) // remove major version
|
.map(p -> p.mapRight(s -> s.substring(0, s.lastIndexOf('.')))) // remove major version
|
||||||
.map(Pair.unwrapRight())
|
.map(Pair.unwrapRight())
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ import com.dfsek.terra.api.registry.OpenRegistry;
|
|||||||
import com.dfsek.terra.api.registry.Registry;
|
import com.dfsek.terra.api.registry.Registry;
|
||||||
import com.dfsek.terra.api.registry.key.RegistryKey;
|
import com.dfsek.terra.api.registry.key.RegistryKey;
|
||||||
import com.dfsek.terra.api.tectonic.ShortcutLoader;
|
import com.dfsek.terra.api.tectonic.ShortcutLoader;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.reflection.ReflectionUtil;
|
import com.dfsek.terra.api.util.reflection.ReflectionUtil;
|
||||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ import java.util.Optional;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
|
|
||||||
|
|
||||||
public class MetaListLikePreprocessor extends MetaPreprocessor<Meta> {
|
public class MetaListLikePreprocessor extends MetaPreprocessor<Meta> {
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ import java.util.Map;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ import com.dfsek.tectonic.api.preprocessor.ValuePreprocessor;
|
|||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
|
|
||||||
|
|
||||||
public abstract class MetaPreprocessor<A extends Annotation> implements ValuePreprocessor<A> {
|
public abstract class MetaPreprocessor<A extends Annotation> implements ValuePreprocessor<A> {
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ import java.lang.reflect.AnnotatedType;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
|
|
||||||
|
|
||||||
public class MetaValuePreprocessor extends MetaPreprocessor<Meta> {
|
public class MetaValuePreprocessor extends MetaPreprocessor<Meta> {
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ import java.util.stream.Collectors;
|
|||||||
import com.dfsek.terra.api.registry.OpenRegistry;
|
import com.dfsek.terra.api.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
||||||
import com.dfsek.terra.api.registry.key.RegistryKey;
|
import com.dfsek.terra.api.registry.key.RegistryKey;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.dfsek.terra.api.block.state.BlockState;
|
|||||||
import com.dfsek.terra.api.config.ConfigPack;
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
import com.dfsek.terra.api.entity.Entity;
|
import com.dfsek.terra.api.entity.Entity;
|
||||||
import com.dfsek.terra.api.entity.EntityType;
|
import com.dfsek.terra.api.entity.EntityType;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.world.ServerWorld;
|
import com.dfsek.terra.api.world.ServerWorld;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
||||||
|
|||||||
-1
@@ -8,7 +8,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
|
||||||
import com.dfsek.terra.api.world.ServerWorld;
|
import com.dfsek.terra.api.world.ServerWorld;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.config.ConfigPack;
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
import com.dfsek.terra.api.config.MetaPack;
|
import com.dfsek.terra.api.config.MetaPack;
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||||
import com.dfsek.terra.api.util.range.ConstantRange;
|
import com.dfsek.terra.api.util.range.ConstantRange;
|
||||||
import com.dfsek.terra.mod.ModPlatform;
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
import com.dfsek.terra.mod.config.VanillaWorldProperties;
|
import com.dfsek.terra.mod.config.VanillaWorldProperties;
|
||||||
|
|||||||
Reference in new issue
Block a user