mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-02 16:05:29 +00:00
Merge pull request #330 from duplexsystem/dev/enviroment
moar biome settings 2: electric boogaloo
This commit is contained in:
commit
f5da9d1dfb
6
.gitignore
vendored
6
.gitignore
vendored
@ -245,4 +245,8 @@ nbdist/
|
|||||||
|
|
||||||
/run/
|
/run/
|
||||||
|
|
||||||
**/testDir/
|
**/testDir/
|
||||||
|
|
||||||
|
platforms/fabric/run/**
|
||||||
|
|
||||||
|
platforms/forge/run/**
|
||||||
|
@ -7,12 +7,9 @@ import java.nio.file.Files
|
|||||||
import java.nio.file.StandardCopyOption
|
import java.nio.file.StandardCopyOption
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
|
||||||
import org.gradle.api.plugins.BasePluginExtension
|
import org.gradle.api.plugins.BasePluginExtension
|
||||||
import org.gradle.jvm.tasks.Jar
|
|
||||||
import org.gradle.kotlin.dsl.apply
|
import org.gradle.kotlin.dsl.apply
|
||||||
import org.gradle.kotlin.dsl.configure
|
import org.gradle.kotlin.dsl.configure
|
||||||
import org.gradle.kotlin.dsl.creating
|
|
||||||
import org.gradle.kotlin.dsl.extra
|
import org.gradle.kotlin.dsl.extra
|
||||||
import org.gradle.kotlin.dsl.get
|
import org.gradle.kotlin.dsl.get
|
||||||
import org.gradle.kotlin.dsl.named
|
import org.gradle.kotlin.dsl.named
|
||||||
@ -55,8 +52,8 @@ fun Project.configureDistribution() {
|
|||||||
println("Packaging addon ${jar.archiveFileName.get()} to $dest. size: ${jar.archiveFile.get().asFile.length() / 1024}KB")
|
println("Packaging addon ${jar.archiveFileName.get()} to $dest. size: ${jar.archiveFile.get().asFile.length() / 1024}KB")
|
||||||
|
|
||||||
val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else ""
|
val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else ""
|
||||||
val addonPath = fs.getPath("/addons/$boot${jar.archiveFileName.get()}");
|
val addonPath = fs.getPath("/addons/$boot${jar.archiveFileName.get()}")
|
||||||
|
|
||||||
if (!Files.exists(addonPath)) {
|
if (!Files.exists(addonPath)) {
|
||||||
Files.createDirectories(addonPath.parent)
|
Files.createDirectories(addonPath.parent)
|
||||||
Files.createFile(addonPath)
|
Files.createFile(addonPath)
|
||||||
|
@ -20,11 +20,8 @@ object Versions {
|
|||||||
object Fabric {
|
object Fabric {
|
||||||
const val fabricLoader = "0.14.2"
|
const val fabricLoader = "0.14.2"
|
||||||
const val fabricAPI = "0.56.0+1.19"
|
const val fabricAPI = "0.56.0+1.19"
|
||||||
const val minecraft = "1.19"
|
|
||||||
const val yarn = "$minecraft+build.1"
|
|
||||||
const val mixin = "0.11.2+mixin.0.8.5"
|
const val mixin = "0.11.2+mixin.0.8.5"
|
||||||
const val loom = "0.12-SNAPSHOT"
|
const val loom = "0.12-SNAPSHOT"
|
||||||
const val loomQuiltflower = "1.7.1"
|
|
||||||
const val minotaur = "1.1.0"
|
const val minotaur = "1.1.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,13 +32,13 @@ object Versions {
|
|||||||
|
|
||||||
const val architecuryLoom = "0.12.0-SNAPSHOT"
|
const val architecuryLoom = "0.12.0-SNAPSHOT"
|
||||||
const val architectutyPlugin = "3.4-SNAPSHOT"
|
const val architectutyPlugin = "3.4-SNAPSHOT"
|
||||||
|
|
||||||
|
const val loomQuiltflower = "1.7.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
object Forge {
|
object Forge {
|
||||||
const val minecraft = "1.19"
|
const val forge = "${Mod.minecraft}-41.0.38"
|
||||||
const val forge = "$minecraft-41.0.38"
|
const val burningwave = "12.53.0"
|
||||||
const val yarn = "$minecraft+build.1"
|
|
||||||
const val architecuryLoom = "0.12.0-SNAPSHOT"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object Bukkit {
|
object Bukkit {
|
||||||
|
@ -2,13 +2,14 @@ package com.dfsek.terra.addons.biome.extrusion;
|
|||||||
|
|
||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.config.BiomeExtrusionTemplate;
|
import com.dfsek.terra.addons.biome.extrusion.config.BiomeExtrusionTemplate;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.config.ReplaceableBiomeLoader;
|
import com.dfsek.terra.addons.biome.extrusion.config.ReplaceableBiomeLoader;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.ReplaceExtrusionTemplate;
|
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.ReplaceExtrusionTemplate;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.SetExtrusionTemplate;
|
import com.dfsek.terra.addons.biome.extrusion.config.extrusions.SetExtrusionTemplate;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion;
|
|
||||||
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
@ -22,8 +23,6 @@ import com.dfsek.terra.api.util.reflection.TypeKey;
|
|||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
|
|
||||||
public class BiomeExtrusionAddon implements AddonInitializer {
|
public class BiomeExtrusionAddon implements AddonInitializer {
|
||||||
public static final TypeKey<Supplier<ObjectTemplate<Extrusion>>> EXTRUSION_REGISTRY_KEY = new TypeKey<>() {
|
public static final TypeKey<Supplier<ObjectTemplate<Extrusion>>> EXTRUSION_REGISTRY_KEY = new TypeKey<>() {
|
||||||
|
@ -10,8 +10,6 @@ import com.dfsek.terra.api.util.Column;
|
|||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
|
||||||
|
|
||||||
|
|
||||||
public class BiomeExtrusionProvider implements BiomeProvider {
|
public class BiomeExtrusionProvider implements BiomeProvider {
|
||||||
private final BiomeProvider delegate;
|
private final BiomeProvider delegate;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.dfsek.terra.addons.biome.extrusion.api;
|
package com.dfsek.terra.addons.biome.extrusion.api;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
public interface Extrusion {
|
public interface Extrusion {
|
||||||
Biome extrude(Biome original, int x, int y, int z, long seed);
|
Biome extrude(Biome original, int x, int y, int z, long seed);
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package com.dfsek.terra.addons.biome.extrusion.api;
|
package com.dfsek.terra.addons.biome.extrusion.api;
|
||||||
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Basically just a specialised implementation of {@link Optional} for biomes where a biome may be a "self" reference.
|
* Basically just a specialised implementation of {@link Optional} for biomes where a biome may be a "self" reference.
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package com.dfsek.terra.addons.biome.extrusion.api;
|
package com.dfsek.terra.addons.biome.extrusion.api;
|
||||||
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
final class SelfBiome implements ReplaceableBiome {
|
final class SelfBiome implements ReplaceableBiome {
|
||||||
public static final SelfBiome INSTANCE = new SelfBiome();
|
public static final SelfBiome INSTANCE = new SelfBiome();
|
||||||
|
@ -4,13 +4,13 @@ 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.annotations.Value;
|
||||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.BiomeExtrusionProvider;
|
import com.dfsek.terra.addons.biome.extrusion.BiomeExtrusionProvider;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
public class BiomeExtrusionTemplate implements ObjectTemplate<BiomeProvider> {
|
public class BiomeExtrusionTemplate implements ObjectTemplate<BiomeProvider> {
|
||||||
@Value("provider")
|
@Value("provider")
|
||||||
|
@ -5,7 +5,6 @@ import com.dfsek.tectonic.api.config.template.annotations.Value;
|
|||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.extrusions.ReplaceExtrusion;
|
import com.dfsek.terra.addons.biome.extrusion.extrusions.ReplaceExtrusion;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.extrusions.SetExtrusion;
|
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package com.dfsek.terra.addons.biome.extrusion.extrusions;
|
package com.dfsek.terra.addons.biome.extrusion.extrusions;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
||||||
import com.dfsek.terra.addons.biome.query.api.BiomeQueries;
|
import com.dfsek.terra.addons.biome.query.api.BiomeQueries;
|
||||||
@ -8,10 +12,6 @@ import com.dfsek.terra.api.util.Range;
|
|||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets biomes at locations based on a sampler.
|
* Sets biomes at locations based on a sampler.
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package com.dfsek.terra.addons.biome.extrusion.extrusions;
|
package com.dfsek.terra.addons.biome.extrusion.extrusions;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
@ -7,10 +11,6 @@ import com.dfsek.terra.api.util.Range;
|
|||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets biomes at locations based on a sampler.
|
* Sets biomes at locations based on a sampler.
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package com.dfsek.terra.addons.biome.pipeline;
|
package com.dfsek.terra.addons.biome.pipeline;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.Column;
|
import com.dfsek.terra.api.util.Column;
|
||||||
import com.dfsek.terra.api.util.function.IntIntObjConsumer;
|
import com.dfsek.terra.api.util.function.IntIntObjConsumer;
|
||||||
import com.dfsek.terra.api.util.function.IntObjConsumer;
|
import com.dfsek.terra.api.util.function.IntObjConsumer;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
|
|
||||||
class BiomePipelineColumn implements Column<Biome> {
|
class BiomePipelineColumn implements Column<Biome> {
|
||||||
private final int min;
|
private final int min;
|
||||||
|
@ -7,16 +7,12 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.biome.pipeline;
|
package com.dfsek.terra.addons.biome.pipeline;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.Column;
|
|
||||||
import com.dfsek.terra.api.world.info.WorldProperties;
|
|
||||||
|
|
||||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.StreamSupport;
|
import java.util.stream.StreamSupport;
|
||||||
@ -26,6 +22,7 @@ import com.dfsek.terra.addons.biome.pipeline.api.delegate.BiomeDelegate;
|
|||||||
import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage;
|
import com.dfsek.terra.addons.biome.pipeline.api.stage.Stage;
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.registry.key.StringIdentifiable;
|
import com.dfsek.terra.api.registry.key.StringIdentifiable;
|
||||||
|
import com.dfsek.terra.api.util.Column;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.dfsek.terra.addons.biome.query;
|
package com.dfsek.terra.addons.biome.query;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.query.impl.BiomeTagFlattener;
|
import com.dfsek.terra.addons.biome.query.impl.BiomeTagFlattener;
|
||||||
import com.dfsek.terra.addons.biome.query.impl.BiomeTagHolder;
|
import com.dfsek.terra.addons.biome.query.impl.BiomeTagHolder;
|
||||||
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||||
@ -12,8 +14,6 @@ import com.dfsek.terra.api.properties.Context;
|
|||||||
import com.dfsek.terra.api.properties.PropertyKey;
|
import com.dfsek.terra.api.properties.PropertyKey;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
|
|
||||||
public class BiomeQueryAPIAddon implements AddonInitializer {
|
public class BiomeQueryAPIAddon implements AddonInitializer {
|
||||||
@Inject
|
@Inject
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package com.dfsek.terra.addons.biome.query.api;
|
package com.dfsek.terra.addons.biome.query.api;
|
||||||
|
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.query.impl.SingleTagQuery;
|
import com.dfsek.terra.addons.biome.query.impl.SingleTagQuery;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
|
|
||||||
public final class BiomeQueries {
|
public final class BiomeQueries {
|
||||||
private BiomeQueries() {
|
private BiomeQueries() {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package com.dfsek.terra.addons.biome.query.impl;
|
package com.dfsek.terra.addons.biome.query.impl;
|
||||||
|
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.query.BiomeQueryAPIAddon;
|
import com.dfsek.terra.addons.biome.query.BiomeQueryAPIAddon;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
|
|
||||||
public class SingleTagQuery implements Predicate<Biome> {
|
public class SingleTagQuery implements Predicate<Biome> {
|
||||||
private int tagIndex = -1;
|
private int tagIndex = -1;
|
||||||
|
@ -6,7 +6,6 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.config.meta.Meta;
|
import com.dfsek.terra.api.config.meta.Meta;
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
|
||||||
|
|
||||||
|
|
||||||
public class BiomeNoiseConfigTemplate implements ObjectTemplate<BiomeNoiseProperties> {
|
public class BiomeNoiseConfigTemplate implements ObjectTemplate<BiomeNoiseProperties> {
|
||||||
|
@ -2,7 +2,6 @@ package com.dfsek.terra.addons.chunkgenerator.config.noise;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.properties.Properties;
|
import com.dfsek.terra.api.properties.Properties;
|
||||||
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
|
||||||
|
|
||||||
|
|
||||||
public record BiomeNoiseProperties(NoiseSampler base,
|
public record BiomeNoiseProperties(NoiseSampler base,
|
||||||
|
@ -8,6 +8,9 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.generation;
|
package com.dfsek.terra.addons.chunkgenerator.generation;
|
||||||
|
|
||||||
|
|
||||||
|
import net.jafama.FastMath;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties;
|
import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.palette.PaletteInfo;
|
import com.dfsek.terra.addons.chunkgenerator.config.palette.PaletteInfo;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.generation.math.PaletteUtil;
|
import com.dfsek.terra.addons.chunkgenerator.generation.math.PaletteUtil;
|
||||||
@ -26,9 +29,6 @@ import com.dfsek.terra.api.world.chunk.generation.ProtoChunk;
|
|||||||
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
|
import com.dfsek.terra.api.world.chunk.generation.util.Palette;
|
||||||
import com.dfsek.terra.api.world.info.WorldProperties;
|
import com.dfsek.terra.api.world.info.WorldProperties;
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
|
|
||||||
public class NoiseChunkGenerator3D implements ChunkGenerator {
|
public class NoiseChunkGenerator3D implements ChunkGenerator {
|
||||||
private final Platform platform;
|
private final Platform platform;
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
|
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
|
||||||
|
|
||||||
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties;
|
import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties;
|
||||||
import com.dfsek.terra.api.properties.PropertyKey;
|
import com.dfsek.terra.api.properties.PropertyKey;
|
||||||
import com.dfsek.terra.api.util.Column;
|
import com.dfsek.terra.api.util.Column;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to abstract away the Interpolators needed to generate a chunk.<br>
|
* Class to abstract away the Interpolators needed to generate a chunk.<br>
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
|
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
|
||||||
|
|
||||||
import com.dfsek.terra.api.properties.PropertyKey;
|
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties;
|
import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties;
|
||||||
|
import com.dfsek.terra.api.properties.PropertyKey;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import static com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.Interpolator.lerp;
|
import static com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.Interpolator.lerp;
|
||||||
|
@ -11,7 +11,6 @@ import com.dfsek.terra.addons.feature.locator.patterns.Pattern;
|
|||||||
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
||||||
import com.dfsek.terra.api.structure.feature.Locator;
|
import com.dfsek.terra.api.structure.feature.Locator;
|
||||||
import com.dfsek.terra.api.util.Range;
|
import com.dfsek.terra.api.util.Range;
|
||||||
import com.dfsek.terra.api.world.World;
|
|
||||||
import com.dfsek.terra.api.world.WritableWorld;
|
import com.dfsek.terra.api.world.WritableWorld;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||||
|
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.feature.locator.locators;
|
package com.dfsek.terra.addons.feature.locator.locators;
|
||||||
|
|
||||||
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.feature.locator.patterns.Pattern;
|
import com.dfsek.terra.addons.feature.locator.patterns.Pattern;
|
||||||
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
||||||
import com.dfsek.terra.api.structure.feature.Locator;
|
import com.dfsek.terra.api.structure.feature.Locator;
|
||||||
import com.dfsek.terra.api.util.Range;
|
import com.dfsek.terra.api.util.Range;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
|
||||||
|
|
||||||
|
|
||||||
public class PatternLocator implements Locator {
|
public class PatternLocator implements Locator {
|
||||||
private final Pattern pattern;
|
private final Pattern pattern;
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.feature.locator.locators;
|
package com.dfsek.terra.addons.feature.locator.locators;
|
||||||
|
|
||||||
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
||||||
import com.dfsek.terra.api.structure.feature.Locator;
|
import com.dfsek.terra.api.structure.feature.Locator;
|
||||||
import com.dfsek.terra.api.util.Range;
|
import com.dfsek.terra.api.util.Range;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilder;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilder;
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
|
||||||
|
|
||||||
|
|
||||||
public class SurfaceLocator implements Locator {
|
public class SurfaceLocator implements Locator {
|
||||||
private final Range search;
|
private final Range search;
|
||||||
|
@ -7,16 +7,13 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.feature.locator.patterns;
|
package com.dfsek.terra.addons.feature.locator.patterns;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.ServerWorld;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.WritableWorld;
|
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
import com.dfsek.terra.api.block.state.BlockState;
|
||||||
import com.dfsek.terra.api.util.Range;
|
import com.dfsek.terra.api.util.Range;
|
||||||
|
import com.dfsek.terra.api.world.WritableWorld;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.feature.locator.patterns;
|
package com.dfsek.terra.addons.feature.locator.patterns;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.ReadableWorld;
|
|
||||||
import com.dfsek.terra.api.world.ServerWorld;
|
|
||||||
import com.dfsek.terra.api.world.World;
|
|
||||||
import com.dfsek.terra.api.world.WritableWorld;
|
import com.dfsek.terra.api.world.WritableWorld;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||||
|
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.generation.feature;
|
package com.dfsek.terra.addons.generation.feature;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures;
|
import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.properties.PropertyKey;
|
import com.dfsek.terra.api.properties.PropertyKey;
|
||||||
@ -18,9 +21,6 @@ import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
|
|||||||
import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage;
|
import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
|
|
||||||
public class FeatureGenerationStage implements GenerationStage, StringIdentifiable {
|
public class FeatureGenerationStage implements GenerationStage, StringIdentifiable {
|
||||||
private final Platform platform;
|
private final Platform platform;
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
package com.dfsek.terra.addons.terrascript.parser.lang;
|
package com.dfsek.terra.addons.terrascript.parser.lang;
|
||||||
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType;
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.VariableReferenceNode;
|
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import java.util.HashMap;
|
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.api.util.generic.pair.Pair;
|
||||||
|
|
||||||
|
|
||||||
public class Scope {
|
public class Scope {
|
||||||
private final double[] num;
|
private final double[] num;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike;
|
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -19,6 +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;
|
||||||
|
|
||||||
|
|
||||||
public class IfKeyword implements Keyword<Block.ReturnInfo<?>> {
|
public class IfKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||||
|
@ -7,11 +7,7 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
|
||||||
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.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,9 +7,7 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
|
||||||
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.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,14 +7,11 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Scope;
|
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
|
|
||||||
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.operations.BinaryOperation;
|
import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation;
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -7,14 +7,11 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Scope;
|
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
|
|
||||||
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.operations.BinaryOperation;
|
import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation;
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.assign;
|
|||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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.parser.lang.variables.Variable;
|
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.script;
|
package com.dfsek.terra.addons.terrascript.script;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Executable;
|
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -20,7 +18,7 @@ import java.nio.charset.Charset;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.Parser;
|
import com.dfsek.terra.addons.terrascript.parser.Parser;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
import com.dfsek.terra.addons.terrascript.parser.lang.Executable;
|
||||||
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.functions.FunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder;
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
package structure;
|
package structure;
|
||||||
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Executable;
|
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -20,7 +18,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.Parser;
|
import com.dfsek.terra.addons.terrascript.parser.Parser;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException;
|
import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
import com.dfsek.terra.addons.terrascript.parser.lang.Executable;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
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;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package com.dfsek.terra.api.util;
|
package com.dfsek.terra.api.util;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.function.IntIntObjConsumer;
|
|
||||||
import com.dfsek.terra.api.util.function.IntObjConsumer;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.util.function.IntIntObjConsumer;
|
||||||
|
import com.dfsek.terra.api.util.function.IntObjConsumer;
|
||||||
|
|
||||||
|
|
||||||
public interface Column<T> {
|
public interface Column<T> {
|
||||||
int getMinY();
|
int getMinY();
|
||||||
|
@ -15,7 +15,6 @@ import java.util.function.BiConsumer;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.function.UnaryOperator;
|
|
||||||
|
|
||||||
|
|
||||||
public final class Pair<L, R> {
|
public final class Pair<L, R> {
|
||||||
|
@ -7,19 +7,18 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.api.world.biome.generation;
|
package com.dfsek.terra.api.world.biome.generation;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.Column;
|
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
|
||||||
import com.dfsek.terra.api.util.vector.Vector3Int;
|
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.info.WorldProperties;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.Contract;
|
import org.jetbrains.annotations.Contract;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import java.util.stream.StreamSupport;
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.util.Column;
|
||||||
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
|
import com.dfsek.terra.api.util.vector.Vector3Int;
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
import com.dfsek.terra.api.world.info.WorldProperties;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides locations of biomes in a world.
|
* Provides locations of biomes in a world.
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package com.dfsek.terra.api.world.biome.generation;
|
package com.dfsek.terra.api.world.biome.generation;
|
||||||
|
|
||||||
import com.dfsek.terra.api.Handle;
|
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
|
||||||
|
|
||||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
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 java.util.Optional;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.Handle;
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A biome provider implementation that lazily evaluates biomes, and caches them.
|
* A biome provider implementation that lazily evaluates biomes, and caches them.
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
package util;
|
package util;
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.Column;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
|
||||||
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -14,6 +9,10 @@ import java.util.function.Function;
|
|||||||
import java.util.stream.Collectors;
|
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.generic.pair.Pair;
|
||||||
|
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,6 +18,30 @@
|
|||||||
package com.dfsek.terra;
|
package com.dfsek.terra;
|
||||||
|
|
||||||
import com.dfsek.tectonic.api.TypeRegistry;
|
import com.dfsek.tectonic.api.TypeRegistry;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.dfsek.terra.addon.BootstrapAddonLoader;
|
import com.dfsek.terra.addon.BootstrapAddonLoader;
|
||||||
import com.dfsek.terra.addon.DependencySorter;
|
import com.dfsek.terra.addon.DependencySorter;
|
||||||
@ -49,21 +73,6 @@ import com.dfsek.terra.registry.LockedRegistryImpl;
|
|||||||
import com.dfsek.terra.registry.OpenRegistryImpl;
|
import com.dfsek.terra.registry.OpenRegistryImpl;
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.yaml.snakeyaml.Yaml;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Skeleton implementation of {@link Platform}
|
* Skeleton implementation of {@link Platform}
|
||||||
|
@ -96,7 +96,6 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon<BootstrapBaseAdd
|
|||||||
throw new UncheckedIOException(e);
|
throw new UncheckedIOException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getID() {
|
public String getID() {
|
||||||
return "BOOTSTRAP";
|
return "BOOTSTRAP";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Magic options for more perf
|
# Magic options for more perf
|
||||||
org.gradle.jvmargs=-Xmx2048M -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC
|
org.gradle.jvmargs=-Xmx3072M -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC
|
||||||
org.gradle.vfs.watch=true
|
org.gradle.vfs.watch=true
|
||||||
kapt.use.worker.api=true
|
kapt.use.worker.api=true
|
||||||
kapt.include.compile.classpath=false
|
kapt.include.compile.classpath=false
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("xyz.jpenilla.run-paper") version "1.0.6"
|
id("xyz.jpenilla.run-paper") version "1.0.6"
|
||||||
}
|
}
|
||||||
|
@ -7,12 +7,8 @@ import com.dfsek.terra.api.addon.BaseAddon;
|
|||||||
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
|
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
|
||||||
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
|
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import com.dfsek.terra.bukkit.config.VanillaBiomeProperties;
|
import com.dfsek.terra.bukkit.config.VanillaBiomeProperties;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
|
|
||||||
public class BukkitAddon implements BaseAddon {
|
public class BukkitAddon implements BaseAddon {
|
||||||
private static final Version VERSION = Versions.getVersion(1, 0, 0);
|
private static final Version VERSION = Versions.getVersion(1, 0, 0);
|
||||||
|
@ -20,9 +20,6 @@ package com.dfsek.terra.bukkit;
|
|||||||
import com.dfsek.tectonic.api.TypeRegistry;
|
import com.dfsek.tectonic.api.TypeRegistry;
|
||||||
import com.dfsek.tectonic.api.depth.DepthTracker;
|
import com.dfsek.tectonic.api.depth.DepthTracker;
|
||||||
import com.dfsek.tectonic.api.exception.LoadException;
|
import com.dfsek.tectonic.api.exception.LoadException;
|
||||||
|
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -34,6 +31,7 @@ import java.util.List;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import com.dfsek.terra.AbstractPlatform;
|
import com.dfsek.terra.AbstractPlatform;
|
||||||
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
import com.dfsek.terra.api.block.state.BlockState;
|
||||||
import com.dfsek.terra.api.handle.ItemHandle;
|
import com.dfsek.terra.api.handle.ItemHandle;
|
||||||
import com.dfsek.terra.api.handle.WorldHandle;
|
import com.dfsek.terra.api.handle.WorldHandle;
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.bukkit.generator;
|
package com.dfsek.terra.bukkit.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.info.WorldProperties;
|
|
||||||
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.generator.BiomeProvider;
|
import org.bukkit.generator.BiomeProvider;
|
||||||
import org.bukkit.generator.BlockPopulator;
|
import org.bukkit.generator.BlockPopulator;
|
||||||
@ -26,6 +24,8 @@ import org.bukkit.generator.LimitedRegion;
|
|||||||
import org.bukkit.generator.WorldInfo;
|
import org.bukkit.generator.WorldInfo;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -35,12 +35,10 @@ 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.world.chunk.generation.ChunkGenerator;
|
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
||||||
import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper;
|
import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper;
|
||||||
|
import com.dfsek.terra.api.world.info.WorldProperties;
|
||||||
import com.dfsek.terra.bukkit.world.BukkitProtoWorld;
|
import com.dfsek.terra.bukkit.world.BukkitProtoWorld;
|
||||||
import com.dfsek.terra.bukkit.world.BukkitWorldProperties;
|
import com.dfsek.terra.bukkit.world.BukkitWorldProperties;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
|
|
||||||
public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGenerator implements GeneratorWrapper {
|
public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGenerator implements GeneratorWrapper {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(BukkitChunkGeneratorWrapper.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(BukkitChunkGeneratorWrapper.class);
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
package com.dfsek.terra.bukkit.nms;
|
package com.dfsek.terra.bukkit.nms;
|
||||||
|
|
||||||
import com.dfsek.terra.bukkit.PlatformImpl;
|
|
||||||
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import com.dfsek.terra.bukkit.PlatformImpl;
|
||||||
|
|
||||||
|
|
||||||
public interface Initializer {
|
public interface Initializer {
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.dfsek.terra.bukkit.util;
|
package com.dfsek.terra.bukkit.util;
|
||||||
|
|
||||||
import ca.solostudios.strata.Versions;
|
|
||||||
import ca.solostudios.strata.version.Version;
|
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -24,7 +24,7 @@ import com.dfsek.terra.bukkit.world.BukkitAdapter;
|
|||||||
|
|
||||||
|
|
||||||
public class BukkitBlockState implements BlockState {
|
public class BukkitBlockState implements BlockState {
|
||||||
private org.bukkit.block.data.BlockData delegate;
|
private final org.bukkit.block.data.BlockData delegate;
|
||||||
|
|
||||||
protected BukkitBlockState(org.bukkit.block.data.BlockData delegate) {
|
protected BukkitBlockState(org.bukkit.block.data.BlockData delegate) {
|
||||||
this.delegate = delegate;
|
this.delegate = delegate;
|
||||||
|
@ -25,7 +25,7 @@ import com.dfsek.terra.bukkit.world.inventory.BukkitItemMeta;
|
|||||||
|
|
||||||
public class BukkitDamageable extends BukkitItemMeta implements Damageable {
|
public class BukkitDamageable extends BukkitItemMeta implements Damageable {
|
||||||
public BukkitDamageable(org.bukkit.inventory.meta.Damageable delegate) {
|
public BukkitDamageable(org.bukkit.inventory.meta.Damageable delegate) {
|
||||||
super((ItemMeta) delegate);
|
super(delegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package com.dfsek.terra.bukkit.nms.v1_18_R2;
|
package com.dfsek.terra.bukkit.nms.v1_18_R2;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
|
||||||
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
|
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
@ -11,6 +8,9 @@ import net.minecraft.world.level.biome.BiomeSource;
|
|||||||
import net.minecraft.world.level.biome.Climate.Sampler;
|
import net.minecraft.world.level.biome.Climate.Sampler;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
|
||||||
|
|
||||||
|
|
||||||
public class NMSBiomeProvider extends BiomeSource {
|
public class NMSBiomeProvider extends BiomeSource {
|
||||||
private final BiomeProvider delegate;
|
private final BiomeProvider delegate;
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
package com.dfsek.terra.bukkit.nms.v1_18_R2;
|
package com.dfsek.terra.bukkit.nms.v1_18_R2;
|
||||||
|
|
||||||
import com.dfsek.terra.api.config.ConfigPack;
|
|
||||||
import com.dfsek.terra.api.util.generic.Lazy;
|
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
|
||||||
import com.dfsek.terra.api.world.info.WorldProperties;
|
|
||||||
|
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
|
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
|
||||||
@ -21,7 +16,6 @@ import net.minecraft.world.level.biome.Biome;
|
|||||||
import net.minecraft.world.level.biome.BiomeManager;
|
import net.minecraft.world.level.biome.BiomeManager;
|
||||||
import net.minecraft.world.level.biome.Climate;
|
import net.minecraft.world.level.biome.Climate;
|
||||||
import net.minecraft.world.level.biome.Climate.Sampler;
|
import net.minecraft.world.level.biome.Climate.Sampler;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
|
||||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||||
@ -36,11 +30,22 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
|
import com.dfsek.terra.api.util.generic.Lazy;
|
||||||
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
import com.dfsek.terra.api.world.info.WorldProperties;
|
||||||
|
|
||||||
|
|
||||||
public class NMSChunkGeneratorDelegate extends ChunkGenerator {
|
public class NMSChunkGeneratorDelegate extends ChunkGenerator {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(NMSChunkGeneratorDelegate.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(NMSChunkGeneratorDelegate.class);
|
||||||
@ -222,7 +227,7 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator {
|
|||||||
this.climateSampler());
|
this.climateSampler());
|
||||||
|
|
||||||
if(pair != null) {
|
if(pair != null) {
|
||||||
BlockPos blockposition = (BlockPos) pair.getFirst();
|
BlockPos blockposition = pair.getFirst();
|
||||||
|
|
||||||
k1 = SectionPos.blockToSectionCoord(blockposition.getX());
|
k1 = SectionPos.blockToSectionCoord(blockposition.getX());
|
||||||
l1 = SectionPos.blockToSectionCoord(blockposition.getZ());
|
l1 = SectionPos.blockToSectionCoord(blockposition.getZ());
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
package com.dfsek.terra.bukkit.nms.v1_19_R1;
|
package com.dfsek.terra.bukkit.nms.v1_19_R1;
|
||||||
|
|
||||||
import com.dfsek.terra.api.config.ConfigPack;
|
|
||||||
import com.dfsek.terra.bukkit.config.VanillaBiomeProperties;
|
|
||||||
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
|
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.mojang.serialization.Lifecycle;
|
import com.mojang.serialization.Lifecycle;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
@ -21,7 +16,18 @@ import org.bukkit.NamespacedKey;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
|
import com.dfsek.terra.bukkit.config.VanillaBiomeProperties;
|
||||||
|
import com.dfsek.terra.bukkit.world.BukkitPlatformBiome;
|
||||||
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
|
|
||||||
|
|
||||||
public class NMSBiomeInjector {
|
public class NMSBiomeInjector {
|
||||||
|
@ -16,8 +16,6 @@ import net.minecraft.world.level.StructureManager;
|
|||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.biome.BiomeManager;
|
import net.minecraft.world.level.biome.BiomeManager;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
|
||||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep.Carving;
|
import net.minecraft.world.level.levelgen.GenerationStep.Carving;
|
||||||
@ -34,7 +32,6 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -20,7 +20,7 @@ dependencies {
|
|||||||
implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama)
|
implementation("net.jafama", "jafama", Versions.Libraries.Internal.jafama)
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType<Jar>() {
|
tasks.withType<Jar> {
|
||||||
entryCompression = ZipEntryCompression.STORED
|
entryCompression = ZipEntryCompression.STORED
|
||||||
manifest {
|
manifest {
|
||||||
attributes(
|
attributes(
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("fabric-loom") version Versions.Fabric.loom
|
id("fabric-loom") version Versions.Fabric.loom
|
||||||
id("io.github.juuxel.loom-quiltflower") version Versions.Fabric.loomQuiltflower
|
id("architectury-plugin") version Versions.Mod.architectutyPlugin
|
||||||
|
id("io.github.juuxel.loom-quiltflower") version Versions.Mod.loomQuiltflower
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -20,12 +21,12 @@ dependencies {
|
|||||||
"common"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false }
|
"common"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false }
|
||||||
shaded(project(path = ":platforms:mixin-common", configuration = "transformProductionFabric")) { isTransitive = false }
|
shaded(project(path = ":platforms:mixin-common", configuration = "transformProductionFabric")) { isTransitive = false }
|
||||||
|
|
||||||
minecraft("com.mojang:minecraft:${Versions.Fabric.minecraft}")
|
minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}")
|
||||||
mappings("net.fabricmc:yarn:${Versions.Fabric.yarn}:v2")
|
mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2")
|
||||||
|
|
||||||
modImplementation("net.fabricmc:fabric-loader:${Versions.Fabric.fabricLoader}")
|
modImplementation("net.fabricmc:fabric-loader:${Versions.Fabric.fabricLoader}")
|
||||||
|
|
||||||
setOf("fabric-lifecycle-events-v1", "fabric-resource-loader-v0", "fabric-api-base", "fabric-command-api-v2").forEach { apiModule ->
|
setOf("fabric-lifecycle-events-v1", "fabric-resource-loader-v0", "fabric-api-base", "fabric-command-api-v2", "fabric-networking-api-v1").forEach { apiModule ->
|
||||||
val module = fabricApi.module(apiModule, Versions.Fabric.fabricAPI)
|
val module = fabricApi.module(apiModule, Versions.Fabric.fabricAPI)
|
||||||
modImplementation(module)
|
modImplementation(module)
|
||||||
include(module)
|
include(module)
|
||||||
@ -36,16 +37,16 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
accessWidenerPath.set(file("src/main/resources/terra.accesswidener"))
|
accessWidenerPath.set(project(":platforms:mixin-common").file("terra.accesswidener"))
|
||||||
|
|
||||||
mixin {
|
mixin {
|
||||||
defaultRefmapName.set("terra-fabric-refmap.json")
|
defaultRefmapName.set("terra.fabric.refmap.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
addonDir(project.file("./run/config/Terra/addons"), tasks.named("runClient").get())
|
addonDir(project.file("./run/config/Terra/addons"), tasks.named("configureLaunch").get())
|
||||||
addonDir(project.file("./run/config/Terra/addons"), tasks.named("runServer").get())
|
|
||||||
|
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
compileJava {
|
compileJava {
|
||||||
@ -56,4 +57,8 @@ tasks {
|
|||||||
inputFile.set(shadowJar.get().archiveFile)
|
inputFile.set(shadowJar.get().archiveFile)
|
||||||
archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar")
|
archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
from(project(":platforms:mixin-common").file("terra.accesswidener"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.dfsek.terra.fabric;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.MinecraftAddon;
|
||||||
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
|
public class FabricAddon extends MinecraftAddon {
|
||||||
|
|
||||||
|
public FabricAddon(ModPlatform modPlatform) {
|
||||||
|
super(modPlatform);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getID() {
|
||||||
|
return "terra-fabric";
|
||||||
|
}
|
||||||
|
}
|
@ -18,16 +18,7 @@
|
|||||||
package com.dfsek.terra.fabric;
|
package com.dfsek.terra.fabric;
|
||||||
|
|
||||||
import cloud.commandframework.execution.CommandExecutionCoordinator;
|
import cloud.commandframework.execution.CommandExecutionCoordinator;
|
||||||
|
|
||||||
import cloud.commandframework.fabric.FabricServerCommandManager;
|
import cloud.commandframework.fabric.FabricServerCommandManager;
|
||||||
|
|
||||||
import com.dfsek.terra.api.command.CommandSender;
|
|
||||||
import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
|
||||||
import com.dfsek.terra.fabric.util.BiomeUtil;
|
|
||||||
import com.dfsek.terra.mod.CommonPlatform;
|
|
||||||
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@ -36,6 +27,11 @@ import net.minecraft.util.registry.Registry;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.command.CommandSender;
|
||||||
|
import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent;
|
||||||
|
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||||
|
import com.dfsek.terra.fabric.util.BiomeUtil;
|
||||||
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
import com.dfsek.terra.mod.data.Codecs;
|
import com.dfsek.terra.mod.data.Codecs;
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,23 +20,9 @@ package com.dfsek.terra.fabric;
|
|||||||
import ca.solostudios.strata.Versions;
|
import ca.solostudios.strata.Versions;
|
||||||
import ca.solostudios.strata.parser.tokenizer.ParseException;
|
import ca.solostudios.strata.parser.tokenizer.ParseException;
|
||||||
import ca.solostudios.strata.version.Version;
|
import ca.solostudios.strata.version.Version;
|
||||||
|
|
||||||
import com.dfsek.terra.fabric.util.BiomeUtil;
|
|
||||||
import com.dfsek.terra.mod.CommonPlatform;
|
|
||||||
import com.dfsek.terra.mod.ModPlatform;
|
|
||||||
|
|
||||||
import com.dfsek.terra.mod.generation.TerraBiomeSource;
|
|
||||||
|
|
||||||
import com.dfsek.terra.mod.util.PresetUtil;
|
|
||||||
|
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.MinecraftVersion;
|
import net.minecraft.MinecraftVersion;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import net.minecraft.util.registry.BuiltinRegistries;
|
|
||||||
import net.minecraft.world.dimension.DimensionOptions;
|
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
|
||||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -44,15 +30,15 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.BiConsumer;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addon.EphemeralAddon;
|
import com.dfsek.terra.addon.EphemeralAddon;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
import com.dfsek.terra.api.handle.ItemHandle;
|
import com.dfsek.terra.api.handle.ItemHandle;
|
||||||
import com.dfsek.terra.api.handle.WorldHandle;
|
import com.dfsek.terra.api.handle.WorldHandle;
|
||||||
import com.dfsek.terra.api.util.generic.Lazy;
|
import com.dfsek.terra.api.util.generic.Lazy;
|
||||||
|
import com.dfsek.terra.fabric.util.BiomeUtil;
|
||||||
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper;
|
import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper;
|
||||||
import com.dfsek.terra.mod.handle.MinecraftItemHandle;
|
import com.dfsek.terra.mod.handle.MinecraftItemHandle;
|
||||||
import com.dfsek.terra.mod.handle.MinecraftWorldHandle;
|
import com.dfsek.terra.mod.handle.MinecraftWorldHandle;
|
||||||
@ -157,4 +143,9 @@ public class PlatformImpl extends ModPlatform {
|
|||||||
public @NotNull ItemHandle getItemHandle() {
|
public @NotNull ItemHandle getItemHandle() {
|
||||||
return itemHandle;
|
return itemHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseAddon getPlatformAddon() {
|
||||||
|
return new FabricAddon(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
package com.dfsek.terra.fabric.mixin.lifecycle;
|
package com.dfsek.terra.fabric.mixin.lifecycle;
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfileRepository;
|
|
||||||
import com.mojang.authlib.minecraft.MinecraftSessionService;
|
|
||||||
import com.mojang.datafixers.DataFixer;
|
import com.mojang.datafixers.DataFixer;
|
||||||
import net.minecraft.resource.ResourcePackManager;
|
import net.minecraft.resource.ResourcePackManager;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.SaveLoader;
|
import net.minecraft.server.SaveLoader;
|
||||||
import net.minecraft.server.WorldGenerationProgressListenerFactory;
|
import net.minecraft.server.WorldGenerationProgressListenerFactory;
|
||||||
import net.minecraft.util.ApiServices;
|
import net.minecraft.util.ApiServices;
|
||||||
import net.minecraft.util.UserCache;
|
|
||||||
import net.minecraft.world.level.storage.LevelStorage;
|
import net.minecraft.world.level.storage.LevelStorage;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.dfsek.terra.fabric.mixin.lifecycle;
|
package com.dfsek.terra.fabric.mixin.lifecycle;
|
||||||
|
|
||||||
import com.dfsek.terra.mod.util.SeedHack;
|
|
||||||
|
|
||||||
import net.minecraft.util.math.noise.DoublePerlinNoiseSampler;
|
import net.minecraft.util.math.noise.DoublePerlinNoiseSampler;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler;
|
import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler;
|
||||||
@ -14,6 +12,8 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.SeedHack;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hack to map noise sampler to seeds
|
* Hack to map noise sampler to seeds
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
package com.dfsek.terra.fabric.util;
|
package com.dfsek.terra.fabric.util;
|
||||||
|
|
||||||
import com.dfsek.terra.api.config.ConfigPack;
|
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
|
||||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
|
||||||
import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions;
|
|
||||||
|
|
||||||
import com.dfsek.terra.mod.config.ProtoPlatformBiome;
|
|
||||||
import com.dfsek.terra.mod.util.MinecraftUtil;
|
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.BuiltinRegistries;
|
import net.minecraft.util.registry.BuiltinRegistries;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
@ -15,7 +7,14 @@ import net.minecraft.util.registry.RegistryKey;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||||
|
import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions;
|
||||||
|
import com.dfsek.terra.mod.config.ProtoPlatformBiome;
|
||||||
|
import com.dfsek.terra.mod.util.MinecraftUtil;
|
||||||
|
|
||||||
|
|
||||||
public final class BiomeUtil {
|
public final class BiomeUtil {
|
||||||
|
@ -21,7 +21,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"terra.fabric.mixins.json"
|
"terra.fabric.mixins.json",
|
||||||
|
"terra.common.mixins.json"
|
||||||
],
|
],
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=0.14.2",
|
"fabricloader": ">=0.14.2",
|
||||||
|
@ -1 +0,0 @@
|
|||||||
accessWidener v1 named
|
|
@ -16,6 +16,5 @@
|
|||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
},
|
}
|
||||||
"refmap": "terra-fabric-refmap.json"
|
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("dev.architectury.loom") version Versions.Forge.architecuryLoom
|
id("dev.architectury.loom") version Versions.Mod.architecuryLoom
|
||||||
id("architectury-plugin") version Versions.Mod.architectutyPlugin
|
id("architectury-plugin") version Versions.Mod.architectutyPlugin
|
||||||
id("io.github.juuxel.loom-quiltflower") version Versions.Fabric.loomQuiltflower
|
id("io.github.juuxel.loom-quiltflower") version Versions.Mod.loomQuiltflower
|
||||||
}
|
}
|
||||||
|
|
||||||
architectury {
|
architectury {
|
||||||
@ -17,32 +17,43 @@ configurations {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
shadedApi(project(":common:implementation:base"))
|
shadedApi(project(":common:implementation:base"))
|
||||||
|
"forgeRuntimeLibrary"(project(":common:implementation:base"))
|
||||||
|
|
||||||
|
|
||||||
"common"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false }
|
"common"(project(path = ":platforms:mixin-common", configuration = "namedElements")) { isTransitive = false }
|
||||||
shaded(project(path = ":platforms:mixin-common", configuration = "transformProductionForge")) { isTransitive = false }
|
shaded(project(path = ":platforms:mixin-common", configuration = "transformProductionForge")) { isTransitive = false }
|
||||||
"developmentForge"(project(":platforms:mixin-common", configuration = "namedElements")) {
|
"developmentForge"(project(path = ":platforms:mixin-common", configuration = "namedElements")) {
|
||||||
isTransitive = false
|
isTransitive = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
forge(group = "net.minecraftforge", name = "forge", version = Versions.Forge.forge)
|
forge(group = "net.minecraftforge", name = "forge", version = Versions.Forge.forge)
|
||||||
|
|
||||||
minecraft("com.mojang:minecraft:${Versions.Forge.minecraft}")
|
minecraft("com.mojang:minecraft:${Versions.Mod.minecraft}")
|
||||||
mappings("net.fabricmc:yarn:${Versions.Forge.yarn}:v2")
|
mappings("net.fabricmc:yarn:${Versions.Mod.yarn}:v2")
|
||||||
|
|
||||||
|
//forge is not ok.
|
||||||
|
compileOnly("org.burningwave:core:${Versions.Forge.burningwave}")
|
||||||
|
"forgeRuntimeLibrary"("org.burningwave:core:${Versions.Forge.burningwave}")
|
||||||
}
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
|
accessWidenerPath.set(project(":platforms:mixin-common").file("terra.accesswidener"))
|
||||||
|
|
||||||
mixin {
|
mixin {
|
||||||
defaultRefmapName.set("terra-forge-refmap.json")
|
defaultRefmapName.set("terra.forge.refmap.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
forge {
|
forge {
|
||||||
|
convertAccessWideners.set(true)
|
||||||
mixinConfig("terra.common.mixins.json")
|
mixinConfig("terra.common.mixins.json")
|
||||||
mixinConfig("terra.forge.mixins.json")
|
mixinConfig("terra.forge.mixins.json")
|
||||||
|
extraAccessWideners.add(loom.accessWidenerPath.get().asFile.name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
addonDir(project.file("./run/config/Terra/addons"), tasks.named("configureLaunch").get())
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
jar {
|
jar {
|
||||||
@ -64,4 +75,8 @@ tasks {
|
|||||||
inputFile.set(shadowJar.get().archiveFile)
|
inputFile.set(shadowJar.get().archiveFile)
|
||||||
archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar")
|
archiveFileName.set("${rootProject.name.capitalize()}-${project.version}.jar")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
processResources {
|
||||||
|
from(project(":platforms:mixin-common").file("terra.accesswidener"))
|
||||||
|
}
|
||||||
|
}
|
@ -1,17 +1,34 @@
|
|||||||
package com.dfsek.terra.forge;
|
package com.dfsek.terra.forge;
|
||||||
|
|
||||||
|
import com.dfsek.terra.AbstractPlatform;
|
||||||
|
|
||||||
|
import cpw.mods.cl.ModuleClassLoader;
|
||||||
|
import net.minecraftforge.fml.loading.FMLLoader;
|
||||||
|
import org.burningwave.core.classes.Classes;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
import java.nio.file.FileVisitOption;
|
import java.nio.file.FileVisitOption;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.Objects;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.addon.bootstrap.BootstrapAddonClassLoader;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Forge is really wacky and screws with class resolution in the addon loader. Loading every single Terra class *manually* on startup
|
* Forge is really wacky and screws with class resolution in the addon loader. Loading every single Terra class *manually* on startup
|
||||||
@ -34,7 +51,7 @@ public final class AwfulForgeHacks {
|
|||||||
*/
|
*/
|
||||||
public static JarFile getTerraJar() throws IOException {
|
public static JarFile getTerraJar() throws IOException {
|
||||||
LOGGER.info("Scanning for Terra JAR...");
|
LOGGER.info("Scanning for Terra JAR...");
|
||||||
return Files.walk(Path.of("./", "mods"), 1, FileVisitOption.FOLLOW_LINKS)
|
return Files.walk(Path.of(System.getProperty("user.dir"), "mods"), 1, FileVisitOption.FOLLOW_LINKS)
|
||||||
.filter(it -> it.getFileName().toString().endsWith(".jar"))
|
.filter(it -> it.getFileName().toString().endsWith(".jar"))
|
||||||
.peek(path -> LOGGER.info("Found mod: {}", path))
|
.peek(path -> LOGGER.info("Found mod: {}", path))
|
||||||
.map(Path::toFile)
|
.map(Path::toFile)
|
||||||
@ -53,30 +70,75 @@ public final class AwfulForgeHacks {
|
|||||||
.equals(ForgeEntryPoint.class.getName().replace('.', '/') + ".class")))
|
.equals(ForgeEntryPoint.class.getName().replace('.', '/') + ".class")))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseThrow(() -> new IllegalStateException("Could not find Terra JAR"));
|
.orElseThrow(() -> new IllegalStateException("Could not find Terra JAR"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadAllTerraClasses() {
|
public static void loadAllTerraClasses() {
|
||||||
|
if (FMLLoader.isProduction()) {
|
||||||
try(JarFile jar = getTerraJar()) {
|
try(JarFile jar = getTerraJar()) {
|
||||||
jar.stream()
|
jar.stream()
|
||||||
.forEach(jarEntry -> {
|
.forEach(jarEntry -> {
|
||||||
if(jarEntry.getName().startsWith("com/dfsek/terra/forge/mixin")
|
if(jarEntry.getName().startsWith("com/dfsek/terra/forge/mixin")
|
||||||
|| jarEntry.getName().startsWith("com/dfsek/terra/mod/mixin")) {
|
|| jarEntry.getName().startsWith("com/dfsek/terra/mod/mixin")) {
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
if(jarEntry.getName().endsWith(".class")) {
|
|
||||||
String name = jarEntry.getName().replace('/', '.');
|
|
||||||
name = name.substring(0, name.length() - 6);
|
|
||||||
try {
|
|
||||||
Class.forName(name);
|
|
||||||
} catch(ClassNotFoundException | NoClassDefFoundError e) {
|
|
||||||
LOGGER.warn("Failed to load class {}: {}", name, e);
|
|
||||||
}
|
}
|
||||||
}
|
if(jarEntry.getName().endsWith(".class")) {
|
||||||
});
|
String name = jarEntry.getName().replace('/', '.');
|
||||||
} catch(IOException e) {
|
name = name.substring(0, name.length() - 6);
|
||||||
throw new IllegalStateException("Could not load all Terra classes", e);
|
try {
|
||||||
|
Class.forName(name);
|
||||||
|
} catch(ClassNotFoundException | NoClassDefFoundError e) {
|
||||||
|
LOGGER.warn("Failed to load class {}: {}", name, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(IOException e) {
|
||||||
|
throw new IllegalStateException("Could not load all Terra classes", e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Forgive me for what I'm about to do...
|
||||||
|
LOGGER.warn("I felt a great disturbance in the JVM, as if millions of class not found exceptions suddenly cried out in terror and were suddenly silenced.");
|
||||||
|
ArrayList<Path> pathsToLoad = new ArrayList<>();
|
||||||
|
|
||||||
|
Path terraRoot = Path.of(System.getProperty("user.dir")).getParent().getParent().getParent();
|
||||||
|
Path commonRoot = terraRoot.resolve("common");
|
||||||
|
Path implementationRoot = commonRoot.resolve("implementation");
|
||||||
|
|
||||||
|
pathsToLoad.add(commonRoot.resolve("api"));
|
||||||
|
pathsToLoad.add(implementationRoot.resolve("base"));
|
||||||
|
pathsToLoad.add(implementationRoot.resolve("bootstrap-addon-loader"));
|
||||||
|
for (Path path : pathsToLoad) {
|
||||||
|
try {
|
||||||
|
Path target = path.resolve("build").resolve("classes").resolve("java").resolve("main");
|
||||||
|
|
||||||
|
BootstrapAddonClassLoader cl = new BootstrapAddonClassLoader(new URL[] { path.toUri().toURL()});
|
||||||
|
|
||||||
|
Classes.Loaders omegaCL = Classes.Loaders.create();
|
||||||
|
Files.walk(target, Integer.MAX_VALUE, FileVisitOption.FOLLOW_LINKS)
|
||||||
|
.filter(it -> it.getFileName().toString().endsWith(".class"))
|
||||||
|
.map(Path::toFile)
|
||||||
|
.forEach(it -> {
|
||||||
|
String name = it.getAbsolutePath().replace(target + "/", "").replace('\\', '.').replace('/', '.');
|
||||||
|
name = name.substring(0, name.length() - 6);
|
||||||
|
LOGGER.info("Loading class {}", name);
|
||||||
|
try {
|
||||||
|
Class.forName(name);
|
||||||
|
} catch(ClassNotFoundException e) {
|
||||||
|
try {
|
||||||
|
String pathToJar = cl.loadClass(name).getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
|
||||||
|
|
||||||
|
cl.addURL(new URL("jar:file:" + pathToJar + "!/"));
|
||||||
|
Class newClassLoad = Class.forName(name, true, cl);
|
||||||
|
omegaCL.loadOrDefine(newClassLoad, AbstractPlatform.class.getClassLoader());
|
||||||
|
} catch(ClassNotFoundException | URISyntaxException | IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(IOException e) {
|
||||||
|
throw new IllegalStateException("Could not load all Terra classes", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +146,7 @@ public final class AwfulForgeHacks {
|
|||||||
BLOCK,
|
BLOCK,
|
||||||
BIOME,
|
BIOME,
|
||||||
WORLD_TYPE,
|
WORLD_TYPE,
|
||||||
DONE;
|
DONE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.dfsek.terra.forge;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.MinecraftAddon;
|
||||||
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
|
public class ForgeAddon extends MinecraftAddon {
|
||||||
|
|
||||||
|
public ForgeAddon(ModPlatform modPlatform) {
|
||||||
|
super(modPlatform);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getID() {
|
||||||
|
return "terra-forge";
|
||||||
|
}
|
||||||
|
}
|
@ -17,9 +17,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.forge;
|
package com.dfsek.terra.forge;
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
|
||||||
import com.dfsek.terra.forge.util.BiomeUtil;
|
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
@ -36,8 +33,10 @@ import net.minecraftforge.registries.RegisterEvent.RegisterHelper;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||||
import com.dfsek.terra.forge.AwfulForgeHacks.RegistrySanityCheck;
|
import com.dfsek.terra.forge.AwfulForgeHacks.RegistrySanityCheck;
|
||||||
import com.dfsek.terra.forge.AwfulForgeHacks.RegistryStep;
|
import com.dfsek.terra.forge.AwfulForgeHacks.RegistryStep;
|
||||||
|
import com.dfsek.terra.forge.util.BiomeUtil;
|
||||||
import com.dfsek.terra.mod.data.Codecs;
|
import com.dfsek.terra.mod.data.Codecs;
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,13 +20,8 @@ package com.dfsek.terra.forge;
|
|||||||
import ca.solostudios.strata.Versions;
|
import ca.solostudios.strata.Versions;
|
||||||
import ca.solostudios.strata.parser.tokenizer.ParseException;
|
import ca.solostudios.strata.parser.tokenizer.ParseException;
|
||||||
import ca.solostudios.strata.version.Version;
|
import ca.solostudios.strata.version.Version;
|
||||||
|
|
||||||
import com.dfsek.terra.mod.util.PresetUtil;
|
|
||||||
|
|
||||||
import net.minecraft.MinecraftVersion;
|
import net.minecraft.MinecraftVersion;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
|
||||||
import net.minecraftforge.fml.loading.FMLLoader;
|
import net.minecraftforge.fml.loading.FMLLoader;
|
||||||
import net.minecraftforge.server.ServerLifecycleHooks;
|
import net.minecraftforge.server.ServerLifecycleHooks;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -36,7 +31,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.BiConsumer;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addon.EphemeralAddon;
|
import com.dfsek.terra.addon.EphemeralAddon;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
@ -55,33 +49,33 @@ public class PlatformImpl extends ModPlatform {
|
|||||||
private final ItemHandle itemHandle = new MinecraftItemHandle();
|
private final ItemHandle itemHandle = new MinecraftItemHandle();
|
||||||
private final WorldHandle worldHandle = new MinecraftWorldHandle();
|
private final WorldHandle worldHandle = new MinecraftWorldHandle();
|
||||||
private final Lazy<File> dataFolder = Lazy.lazy(() -> new File("./config/Terra"));
|
private final Lazy<File> dataFolder = Lazy.lazy(() -> new File("./config/Terra"));
|
||||||
|
|
||||||
public PlatformImpl() {
|
public PlatformImpl() {
|
||||||
CommonPlatform.initialize(this);
|
CommonPlatform.initialize(this);
|
||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MinecraftServer getServer() {
|
public MinecraftServer getServer() {
|
||||||
return ServerLifecycleHooks.getCurrentServer();
|
return ServerLifecycleHooks.getCurrentServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean reload() {
|
public boolean reload() {
|
||||||
getTerraConfig().load(this);
|
getTerraConfig().load(this);
|
||||||
getRawConfigRegistry().clear();
|
getRawConfigRegistry().clear();
|
||||||
boolean succeed = getRawConfigRegistry().loadAll(this);
|
boolean succeed = getRawConfigRegistry().loadAll(this);
|
||||||
|
|
||||||
MinecraftServer server = getServer();
|
MinecraftServer server = getServer();
|
||||||
|
|
||||||
if(server != null) {
|
if (server != null) {
|
||||||
server.reloadResources(server.getDataPackManager().getNames()).exceptionally(throwable -> {
|
server.reloadResources(server.getDataPackManager().getNames()).exceptionally(throwable -> {
|
||||||
LOGGER.warn("Failed to execute reload", throwable);
|
LOGGER.warn("Failed to execute reload", throwable);
|
||||||
return null;
|
return null;
|
||||||
}).join();
|
}).join();
|
||||||
//BiomeUtil.registerBiomes();
|
//BiomeUtil.registerBiomes();
|
||||||
server.getWorlds().forEach(world -> {
|
server.getWorlds().forEach(world -> {
|
||||||
if(world.getChunkManager().getChunkGenerator() instanceof MinecraftChunkGeneratorWrapper chunkGeneratorWrapper) {
|
if (world.getChunkManager().getChunkGenerator() instanceof MinecraftChunkGeneratorWrapper chunkGeneratorWrapper) {
|
||||||
getConfigRegistry().get(chunkGeneratorWrapper.getPack().getRegistryKey()).ifPresent(pack -> {
|
getConfigRegistry().get(chunkGeneratorWrapper.getPack().getRegistryKey()).ifPresent(pack -> {
|
||||||
chunkGeneratorWrapper.setPack(pack);
|
chunkGeneratorWrapper.setPack(pack);
|
||||||
LOGGER.info("Replaced pack in chunk generator for world {}", world);
|
LOGGER.info("Replaced pack in chunk generator for world {}", world);
|
||||||
@ -91,51 +85,57 @@ public class PlatformImpl extends ModPlatform {
|
|||||||
}
|
}
|
||||||
return succeed;
|
return succeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Iterable<BaseAddon> platformAddon() {
|
protected Iterable<BaseAddon> platformAddon() {
|
||||||
List<BaseAddon> addons = new ArrayList<>();
|
List<BaseAddon> addons = new ArrayList<>();
|
||||||
|
|
||||||
super.platformAddon().forEach(addons::add);
|
super.platformAddon().forEach(addons::add);
|
||||||
|
|
||||||
String mcVersion = MinecraftVersion.CURRENT.getReleaseTarget();
|
String mcVersion = MinecraftVersion.CURRENT.getReleaseTarget();
|
||||||
try {
|
try {
|
||||||
addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion), "minecraft"));
|
addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion), "minecraft"));
|
||||||
} catch(ParseException e) {
|
} catch (ParseException e) {
|
||||||
try {
|
try {
|
||||||
addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion + ".0"), "minecraft"));
|
addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion + ".0"), "minecraft"));
|
||||||
} catch(ParseException ex) {
|
} catch (ParseException ex) {
|
||||||
LOGGER.warn("Failed to parse Minecraft version", e);
|
LOGGER.warn("Failed to parse Minecraft version", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FMLLoader.getLoadingModList().getMods().forEach(mod -> {
|
FMLLoader.getLoadingModList().getMods().forEach(mod -> {
|
||||||
String id = mod.getModId();
|
String id = mod.getModId();
|
||||||
if(id.equals("terra") || id.equals("minecraft") || id.equals("java")) return;
|
if (id.equals("terra") || id.equals("minecraft") || id.equals("java")) return;
|
||||||
Version version = Versions.getVersion(mod.getVersion().getMajorVersion(), mod.getVersion().getMinorVersion(), mod.getVersion().getIncrementalVersion());
|
Version version = Versions.getVersion(mod.getVersion().getMajorVersion(), mod.getVersion().getMinorVersion(), mod.getVersion().getIncrementalVersion());
|
||||||
addons.add(new EphemeralAddon(version, "forge:" + id));
|
addons.add(new EphemeralAddon(version, "forge:" + id));
|
||||||
});
|
});
|
||||||
|
|
||||||
return addons;
|
return addons;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull String platformName() {
|
public @NotNull String platformName() {
|
||||||
return "Forge";
|
return "Forge";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull WorldHandle getWorldHandle() {
|
public @NotNull WorldHandle getWorldHandle() {
|
||||||
return worldHandle;
|
return worldHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull File getDataFolder() {
|
public @NotNull File getDataFolder() {
|
||||||
return dataFolder.value();
|
return dataFolder.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull ItemHandle getItemHandle() {
|
public @NotNull ItemHandle getItemHandle() {
|
||||||
return itemHandle;
|
return itemHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseAddon getPlatformAddon() {
|
||||||
|
return new ForgeAddon(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,5 @@
|
|||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
},
|
}
|
||||||
"refmap": "terra-forge-refmap.json"
|
|
||||||
}
|
}
|
@ -1,11 +1,14 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("dev.architectury.loom") version Versions.Mod.architecuryLoom
|
id("dev.architectury.loom") version Versions.Mod.architecuryLoom
|
||||||
id("architectury-plugin") version Versions.Mod.architectutyPlugin
|
id("architectury-plugin") version Versions.Mod.architectutyPlugin
|
||||||
|
id("io.github.juuxel.loom-quiltflower") version Versions.Mod.loomQuiltflower
|
||||||
}
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
|
accessWidenerPath.set(file("terra.accesswidener"))
|
||||||
|
|
||||||
mixin {
|
mixin {
|
||||||
defaultRefmapName.set("terra-common-refmap.json")
|
defaultRefmapName.set("terra.common.refmap.json")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21,4 +24,5 @@ dependencies {
|
|||||||
architectury {
|
architectury {
|
||||||
common("fabric", "forge")
|
common("fabric", "forge")
|
||||||
minecraft = Versions.Mod.minecraft
|
minecraft = Versions.Mod.minecraft
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ import com.dfsek.terra.mod.config.PreLoadCompatibilityOptions;
|
|||||||
import com.dfsek.terra.mod.config.VanillaBiomeProperties;
|
import com.dfsek.terra.mod.config.VanillaBiomeProperties;
|
||||||
|
|
||||||
|
|
||||||
public final class MinecraftAddon implements BaseAddon {
|
public abstract class MinecraftAddon implements BaseAddon {
|
||||||
private static final Version VERSION = Versions.getVersion(1, 0, 0);
|
private static final Version VERSION = Versions.getVersion(1, 0, 0);
|
||||||
private static final Logger logger = LoggerFactory.getLogger(MinecraftAddon.class);
|
private static final Logger logger = LoggerFactory.getLogger(MinecraftAddon.class);
|
||||||
private final ModPlatform modPlatform;
|
private final ModPlatform modPlatform;
|
||||||
@ -72,9 +72,4 @@ public final class MinecraftAddon implements BaseAddon {
|
|||||||
public Version getVersion() {
|
public Version getVersion() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getID() {
|
|
||||||
return "terra-fabric";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,32 +1,47 @@
|
|||||||
package com.dfsek.terra.mod;
|
package com.dfsek.terra.mod;
|
||||||
|
|
||||||
import com.dfsek.tectonic.api.TypeRegistry;
|
import com.dfsek.tectonic.api.TypeRegistry;
|
||||||
|
|
||||||
import com.dfsek.tectonic.api.depth.DepthTracker;
|
import com.dfsek.tectonic.api.depth.DepthTracker;
|
||||||
import com.dfsek.tectonic.api.exception.LoadException;
|
import com.dfsek.tectonic.api.exception.LoadException;
|
||||||
|
|
||||||
import com.dfsek.terra.AbstractPlatform;
|
import com.dfsek.terra.mod.config.SpawnSettingsTemplate;
|
||||||
|
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import net.minecraft.entity.EntityType;
|
||||||
import com.dfsek.terra.api.world.biome.PlatformBiome;
|
import net.minecraft.entity.SpawnGroup;
|
||||||
|
|
||||||
import com.dfsek.terra.mod.config.ProtoPlatformBiome;
|
|
||||||
|
|
||||||
import com.dfsek.terra.mod.util.PresetUtil;
|
|
||||||
|
|
||||||
import net.minecraft.command.CommandSource;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.sound.BiomeAdditionsSound;
|
||||||
|
import net.minecraft.sound.BiomeMoodSound;
|
||||||
|
import net.minecraft.sound.MusicSound;
|
||||||
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.BuiltinRegistries;
|
import net.minecraft.util.registry.BuiltinRegistries;
|
||||||
import net.minecraft.world.biome.Biome;
|
|
||||||
import net.minecraft.world.biome.Biome.Precipitation;
|
import net.minecraft.world.biome.Biome.Precipitation;
|
||||||
|
import net.minecraft.world.biome.Biome.TemperatureModifier;
|
||||||
import net.minecraft.world.biome.BiomeEffects.GrassColorModifier;
|
import net.minecraft.world.biome.BiomeEffects.GrassColorModifier;
|
||||||
|
import net.minecraft.world.biome.BiomeParticleConfig;
|
||||||
|
import net.minecraft.world.biome.SpawnSettings;
|
||||||
|
import net.minecraft.world.biome.SpawnSettings.SpawnEntry;
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
import com.dfsek.terra.AbstractPlatform;
|
||||||
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
|
import com.dfsek.terra.api.world.biome.PlatformBiome;
|
||||||
|
import com.dfsek.terra.mod.config.BiomeAdditionsSoundTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.BiomeMoodSoundTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.BiomeParticleConfigTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.EntityTypeTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.MusicSoundTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.ProtoPlatformBiome;
|
||||||
|
import com.dfsek.terra.mod.config.SoundEventTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.SpawnCostConfig;
|
||||||
|
import com.dfsek.terra.mod.config.SpawnEntryTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.SpawnGroupTemplate;
|
||||||
|
import com.dfsek.terra.mod.config.SpawnTypeConfig;
|
||||||
|
import com.dfsek.terra.mod.util.PresetUtil;
|
||||||
|
|
||||||
|
|
||||||
public abstract class ModPlatform extends AbstractPlatform {
|
public abstract class ModPlatform extends AbstractPlatform {
|
||||||
@ -50,7 +65,20 @@ public abstract class ModPlatform extends AbstractPlatform {
|
|||||||
.registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase(
|
.registerLoader(Precipitation.class, (type, o, loader, depthTracker) -> Precipitation.valueOf(((String) o).toUpperCase(
|
||||||
Locale.ROOT)))
|
Locale.ROOT)))
|
||||||
.registerLoader(GrassColorModifier.class, (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase(
|
.registerLoader(GrassColorModifier.class, (type, o, loader, depthTracker) -> GrassColorModifier.valueOf(((String) o).toUpperCase(
|
||||||
Locale.ROOT)));
|
Locale.ROOT)))
|
||||||
|
.registerLoader(GrassColorModifier.class, (type, o, loader, depthTracker) -> TemperatureModifier.valueOf(((String) o).toUpperCase(
|
||||||
|
Locale.ROOT)))
|
||||||
|
.registerLoader(BiomeParticleConfig.class, BiomeParticleConfigTemplate::new)
|
||||||
|
.registerLoader(SoundEvent.class, SoundEventTemplate::new)
|
||||||
|
.registerLoader(BiomeMoodSound.class, BiomeMoodSoundTemplate::new)
|
||||||
|
.registerLoader(BiomeAdditionsSound.class, BiomeAdditionsSoundTemplate::new)
|
||||||
|
.registerLoader(MusicSound.class, MusicSoundTemplate::new)
|
||||||
|
.registerLoader(EntityType.class, EntityTypeTemplate::new)
|
||||||
|
.registerLoader(SpawnCostConfig.class, SpawnCostConfig::new)
|
||||||
|
.registerLoader(SpawnEntry.class, SpawnEntryTemplate::new)
|
||||||
|
.registerLoader(SpawnGroup.class, SpawnGroupTemplate::new)
|
||||||
|
.registerLoader(SpawnTypeConfig.class, SpawnTypeConfig::new)
|
||||||
|
.registerLoader(SpawnSettings.class, SpawnSettingsTemplate::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProtoPlatformBiome parseBiome(String id, DepthTracker tracker) throws LoadException {
|
private ProtoPlatformBiome parseBiome(String id, DepthTracker tracker) throws LoadException {
|
||||||
@ -58,9 +86,11 @@ public abstract class ModPlatform extends AbstractPlatform {
|
|||||||
if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier, tracker); // failure.
|
if(BuiltinRegistries.BIOME.get(identifier) == null) throw new LoadException("Invalid Biome ID: " + identifier, tracker); // failure.
|
||||||
return new ProtoPlatformBiome(identifier);
|
return new ProtoPlatformBiome(identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Iterable<BaseAddon> platformAddon() {
|
protected Iterable<BaseAddon> platformAddon() {
|
||||||
return List.of(new MinecraftAddon(this));
|
return List.of(getPlatformAddon());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract BaseAddon getPlatformAddon();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.sound.BiomeAdditionsSound;
|
||||||
|
import net.minecraft.sound.SoundEvent;
|
||||||
|
|
||||||
|
|
||||||
|
public class BiomeAdditionsSoundTemplate implements ObjectTemplate<BiomeAdditionsSound> {
|
||||||
|
@Value("sound")
|
||||||
|
@Default
|
||||||
|
private SoundEvent sound = null;
|
||||||
|
|
||||||
|
@Value("sound-chance")
|
||||||
|
@Default
|
||||||
|
private Double soundChance = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BiomeAdditionsSound get() {
|
||||||
|
if (sound == null || soundChance == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return new BiomeAdditionsSound(sound, soundChance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.sound.BiomeMoodSound;
|
||||||
|
import net.minecraft.sound.SoundEvent;
|
||||||
|
|
||||||
|
|
||||||
|
public class BiomeMoodSoundTemplate implements ObjectTemplate<BiomeMoodSound> {
|
||||||
|
@Value("sound")
|
||||||
|
@Default
|
||||||
|
private SoundEvent sound = null;
|
||||||
|
|
||||||
|
@Value("cultivation-ticks")
|
||||||
|
@Default
|
||||||
|
private Integer soundCultivationTicks = null;
|
||||||
|
|
||||||
|
@Value("spawn-range")
|
||||||
|
@Default
|
||||||
|
private Integer soundSpawnRange = null;
|
||||||
|
|
||||||
|
@Value("extra-distance")
|
||||||
|
@Default
|
||||||
|
private Double soundExtraDistance = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BiomeMoodSound get() {
|
||||||
|
if (sound == null || soundCultivationTicks == null || soundSpawnRange == null || soundExtraDistance == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return new BiomeMoodSound(sound, soundCultivationTicks, soundSpawnRange, soundExtraDistance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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.mojang.brigadier.StringReader;
|
||||||
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
|
import net.minecraft.command.argument.ParticleEffectArgumentType;
|
||||||
|
import net.minecraft.world.biome.BiomeParticleConfig;
|
||||||
|
|
||||||
|
|
||||||
|
public class BiomeParticleConfigTemplate implements ObjectTemplate<BiomeParticleConfig> {
|
||||||
|
@Value("particle")
|
||||||
|
@Default
|
||||||
|
private String particle = null;
|
||||||
|
|
||||||
|
@Value("probability")
|
||||||
|
@Default
|
||||||
|
private Integer probability = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BiomeParticleConfig get() {
|
||||||
|
if (particle == null || probability == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new BiomeParticleConfig(ParticleEffectArgumentType.readParameters(new StringReader(particle)), probability);
|
||||||
|
} catch(CommandSyntaxException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.registry.Registry;
|
||||||
|
|
||||||
|
|
||||||
|
public class EntityTypeTemplate implements ObjectTemplate<EntityType<?>> {
|
||||||
|
@Value("id")
|
||||||
|
@Default
|
||||||
|
private Identifier id = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityType<?> get() {
|
||||||
|
return Registry.ENTITY_TYPE.get(id);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.sound.MusicSound;
|
||||||
|
import net.minecraft.sound.SoundEvent;
|
||||||
|
|
||||||
|
|
||||||
|
public class MusicSoundTemplate implements ObjectTemplate<MusicSound> {
|
||||||
|
@Value("sound")
|
||||||
|
@Default
|
||||||
|
private SoundEvent sound = null;
|
||||||
|
|
||||||
|
@Value("min-delay")
|
||||||
|
@Default
|
||||||
|
private Integer minDelay = null;
|
||||||
|
|
||||||
|
@Value("max-delay")
|
||||||
|
@Default
|
||||||
|
private Integer maxDelay = null;
|
||||||
|
|
||||||
|
@Value("replace-current-music")
|
||||||
|
@Default
|
||||||
|
private Boolean replaceCurrentMusic = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MusicSound get() {
|
||||||
|
if (sound == null || minDelay == null || maxDelay == null || replaceCurrentMusic == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return new MusicSound(sound, minDelay, maxDelay, replaceCurrentMusic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,8 +17,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.mod.config;
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
import com.dfsek.terra.mod.util.MinecraftUtil;
|
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.registry.RegistryKey;
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
@ -27,6 +25,7 @@ import net.minecraft.world.biome.Biome;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.biome.PlatformBiome;
|
import com.dfsek.terra.api.world.biome.PlatformBiome;
|
||||||
|
import com.dfsek.terra.mod.util.MinecraftUtil;
|
||||||
|
|
||||||
|
|
||||||
public class ProtoPlatformBiome implements PlatformBiome {
|
public class ProtoPlatformBiome implements PlatformBiome {
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.sound.SoundEvent;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
|
||||||
|
public class SoundEventTemplate implements ObjectTemplate<SoundEvent> {
|
||||||
|
@Value("id")
|
||||||
|
@Default
|
||||||
|
private Identifier id = null;
|
||||||
|
|
||||||
|
@Value("distance-to-travel")
|
||||||
|
@Default
|
||||||
|
private Float distanceToTravel = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent get() {
|
||||||
|
if (id == null) {
|
||||||
|
return null;
|
||||||
|
} else if (distanceToTravel == null) {
|
||||||
|
return new SoundEvent(id);
|
||||||
|
} else {
|
||||||
|
return new SoundEvent(id, distanceToTravel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.entity.EntityType;
|
||||||
|
|
||||||
|
|
||||||
|
public class SpawnCostConfig implements ObjectTemplate<SpawnCostConfig> {
|
||||||
|
@Value("type")
|
||||||
|
@Default
|
||||||
|
private EntityType<?> type = null;
|
||||||
|
|
||||||
|
@Value("mass")
|
||||||
|
@Default
|
||||||
|
private Double mass = null;
|
||||||
|
|
||||||
|
@Value("gravity")
|
||||||
|
@Default
|
||||||
|
private Double gravity = null;
|
||||||
|
|
||||||
|
public EntityType<?> getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getMass() {
|
||||||
|
return mass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getGravity() {
|
||||||
|
return gravity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpawnCostConfig get() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.world.biome.SpawnSettings.SpawnEntry;
|
||||||
|
|
||||||
|
|
||||||
|
public class SpawnEntryTemplate implements ObjectTemplate<SpawnEntry> {
|
||||||
|
@Value("type")
|
||||||
|
@Default
|
||||||
|
private EntityType<?> type = null;
|
||||||
|
|
||||||
|
@Value("weight")
|
||||||
|
@Default
|
||||||
|
private Integer weight = null;
|
||||||
|
|
||||||
|
@Value("min-group-size")
|
||||||
|
@Default
|
||||||
|
private Integer minGroupSize = null;
|
||||||
|
|
||||||
|
@Value("max-group-size")
|
||||||
|
@Default
|
||||||
|
private Integer maxGroupSize = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpawnEntry get() {
|
||||||
|
return new SpawnEntry(type, weight, minGroupSize, maxGroupSize);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.entity.SpawnGroup;
|
||||||
|
|
||||||
|
|
||||||
|
public class SpawnGroupTemplate implements ObjectTemplate<SpawnGroup> {
|
||||||
|
@Value("group")
|
||||||
|
@Default
|
||||||
|
private String group = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpawnGroup get() {
|
||||||
|
return SpawnGroup.valueOf(group);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.world.biome.SpawnSettings;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class SpawnSettingsTemplate implements ObjectTemplate<SpawnSettings> {
|
||||||
|
@Value("spawns")
|
||||||
|
@Default
|
||||||
|
private List<SpawnTypeConfig> spawns = null;
|
||||||
|
|
||||||
|
@Value("costs")
|
||||||
|
@Default
|
||||||
|
private List<SpawnCostConfig> costs = null;
|
||||||
|
|
||||||
|
@Value("probability")
|
||||||
|
@Default
|
||||||
|
private Float probability = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpawnSettings get() {
|
||||||
|
SpawnSettings.Builder builder = new SpawnSettings.Builder();
|
||||||
|
for (SpawnTypeConfig spawn : spawns) {
|
||||||
|
builder.spawn(spawn.getGroup(), spawn.getEntry());
|
||||||
|
}
|
||||||
|
for (SpawnCostConfig cost: costs) {
|
||||||
|
builder.spawnCost(cost.getType(), cost.getMass(), cost.getGravity());
|
||||||
|
}
|
||||||
|
if (probability != null) {
|
||||||
|
builder.creatureSpawnProbability(probability);
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.dfsek.terra.mod.config;
|
||||||
|
|
||||||
|
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 net.minecraft.entity.SpawnGroup;
|
||||||
|
import net.minecraft.world.biome.SpawnSettings.SpawnEntry;
|
||||||
|
|
||||||
|
|
||||||
|
public class SpawnTypeConfig implements ObjectTemplate<SpawnTypeConfig> {
|
||||||
|
@Value("group")
|
||||||
|
@Default
|
||||||
|
private SpawnGroup group = null;
|
||||||
|
|
||||||
|
@Value("entry")
|
||||||
|
@Default
|
||||||
|
private SpawnEntry entry = null;
|
||||||
|
|
||||||
|
public SpawnGroup getGroup() {
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpawnEntry getEntry() {
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SpawnTypeConfig get() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user