mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 00:15:35 +00:00
registry stuff
This commit is contained in:
parent
05cd0b625c
commit
46a08e49f5
@ -18,6 +18,7 @@ dependencies {
|
|||||||
"shadedApi"("net.jafama:jafama:2.3.2")
|
"shadedApi"("net.jafama:jafama:2.3.2")
|
||||||
"shadedApi"("org.yaml:snakeyaml:1.27")
|
"shadedApi"("org.yaml:snakeyaml:1.27")
|
||||||
"shadedApi"("org.ow2.asm:asm:9.0")
|
"shadedApi"("org.ow2.asm:asm:9.0")
|
||||||
|
"shadedApi"("commons-io:commons-io:2.6")
|
||||||
|
|
||||||
"compileOnly"("com.googlecode.json-simple:json-simple:1.1")
|
"compileOnly"("com.googlecode.json-simple:json-simple:1.1")
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.dfsek.terra.api.core;
|
package com.dfsek.terra.api.core;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.LoaderRegistrar;
|
import com.dfsek.terra.api.LoaderRegistrar;
|
||||||
import com.dfsek.terra.api.core.event.EventManager;
|
import com.dfsek.terra.api.core.event.EventManager;
|
||||||
import com.dfsek.terra.api.platform.handle.ItemHandle;
|
import com.dfsek.terra.api.platform.handle.ItemHandle;
|
||||||
@ -7,9 +8,10 @@ import com.dfsek.terra.api.platform.handle.WorldHandle;
|
|||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
import com.dfsek.terra.config.PluginConfig;
|
import com.dfsek.terra.config.PluginConfig;
|
||||||
import com.dfsek.terra.config.lang.Language;
|
import com.dfsek.terra.config.lang.Language;
|
||||||
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
import com.dfsek.terra.registry.master.AddonRegistry;
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
import com.dfsek.terra.registry.LockedRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -32,11 +34,11 @@ public interface TerraPlugin extends LoaderRegistrar {
|
|||||||
|
|
||||||
Language getLanguage();
|
Language getLanguage();
|
||||||
|
|
||||||
ConfigRegistry getRegistry();
|
CheckedRegistry<ConfigPack> getConfigRegistry();
|
||||||
|
|
||||||
AddonRegistry getAddons();
|
LockedRegistry<TerraAddon> getAddons();
|
||||||
|
|
||||||
void reload();
|
boolean reload();
|
||||||
|
|
||||||
ItemHandle getItemHandle();
|
ItemHandle getItemHandle();
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.api.world.biome.provider;
|
package com.dfsek.terra.api.world.biome.provider;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -15,7 +15,7 @@ public class ImageBiomeProvider implements BiomeProvider, BiomeProvider.BiomePro
|
|||||||
private final int resolution;
|
private final int resolution;
|
||||||
private final Align align;
|
private final Align align;
|
||||||
|
|
||||||
public ImageBiomeProvider(TerraRegistry<TerraBiome> registry, BufferedImage image, int resolution, Align align) {
|
public ImageBiomeProvider(OpenRegistry<TerraBiome> registry, BufferedImage image, int resolution, Align align) {
|
||||||
this.image = image;
|
this.image = image;
|
||||||
this.resolution = resolution;
|
this.resolution = resolution;
|
||||||
this.align = align;
|
this.align = align;
|
||||||
|
@ -50,7 +50,7 @@ import com.dfsek.terra.config.templates.PaletteTemplate;
|
|||||||
import com.dfsek.terra.config.templates.StructureTemplate;
|
import com.dfsek.terra.config.templates.StructureTemplate;
|
||||||
import com.dfsek.terra.config.templates.TreeTemplate;
|
import com.dfsek.terra.config.templates.TreeTemplate;
|
||||||
import com.dfsek.terra.registry.CheckedRegistry;
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.registry.config.BiomeRegistry;
|
import com.dfsek.terra.registry.config.BiomeRegistry;
|
||||||
import com.dfsek.terra.registry.config.CarverRegistry;
|
import com.dfsek.terra.registry.config.CarverRegistry;
|
||||||
import com.dfsek.terra.registry.config.FloraRegistry;
|
import com.dfsek.terra.registry.config.FloraRegistry;
|
||||||
@ -197,7 +197,7 @@ public class ConfigPack implements LoaderRegistrar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <C extends AbstractableTemplate, O> void buildAll(TerraFactory<C, O> factory, TerraRegistry<O> registry, List<C> configTemplates, TerraPlugin main) throws LoadException {
|
public static <C extends AbstractableTemplate, O> void buildAll(TerraFactory<C, O> factory, OpenRegistry<O> registry, List<C> configTemplates, TerraPlugin main) throws LoadException {
|
||||||
for(C template : configTemplates) registry.add(template.getID(), factory.build(template, main));
|
for(C template : configTemplates) registry.add(template.getID(), factory.build(template, main));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ package com.dfsek.terra.registry;
|
|||||||
|
|
||||||
import com.dfsek.tectonic.exception.LoadException;
|
import com.dfsek.tectonic.exception.LoadException;
|
||||||
import com.dfsek.tectonic.loading.ConfigLoader;
|
import com.dfsek.tectonic.loading.ConfigLoader;
|
||||||
import com.dfsek.tectonic.loading.TypeLoader;
|
|
||||||
import com.dfsek.terra.registry.exception.DuplicateEntryException;
|
import com.dfsek.terra.registry.exception.DuplicateEntryException;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
@ -11,14 +10,14 @@ import java.util.function.BiConsumer;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper for a registry that ensures checked access.
|
* Wrapper for a registry that ensures checked additions.
|
||||||
*
|
*
|
||||||
* @param <T> Type in registry
|
* @param <T> Type in registry
|
||||||
*/
|
*/
|
||||||
public class CheckedRegistry<T> implements TypeLoader<T> {
|
public class CheckedRegistry<T> implements Registry<T> {
|
||||||
private final TerraRegistry<T> registry;
|
private final OpenRegistry<T> registry;
|
||||||
|
|
||||||
public CheckedRegistry(TerraRegistry<T> registry) {
|
public CheckedRegistry(OpenRegistry<T> registry) {
|
||||||
this.registry = registry;
|
this.registry = registry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,49 +46,27 @@ public class CheckedRegistry<T> implements TypeLoader<T> {
|
|||||||
registry.add(identifier, value);
|
registry.add(identifier, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Get a value from the registry.
|
|
||||||
*
|
|
||||||
* @param identifier Identifier of value.
|
|
||||||
* @return Value matching the identifier, {@code null} if no value is present.
|
|
||||||
*/
|
|
||||||
public T get(String identifier) {
|
public T get(String identifier) {
|
||||||
return registry.get(identifier);
|
return registry.get(identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Check if the registry contains a value.
|
|
||||||
*
|
|
||||||
* @param identifier Identifier of value.
|
|
||||||
* @return Whether the registry contains the value.
|
|
||||||
*/
|
|
||||||
public boolean contains(String identifier) {
|
public boolean contains(String identifier) {
|
||||||
return registry.contains(identifier);
|
return registry.contains(identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Perform the given action for every value in the registry.
|
|
||||||
*
|
|
||||||
* @param consumer Action to perform on value.
|
|
||||||
*/
|
|
||||||
public void forEach(Consumer<T> consumer) {
|
public void forEach(Consumer<T> consumer) {
|
||||||
registry.forEach(consumer);
|
registry.forEach(consumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Perform an action for every key-value pair in the registry.
|
|
||||||
*
|
|
||||||
* @param consumer Action to perform on pair.
|
|
||||||
*/
|
|
||||||
public void forEach(BiConsumer<String, T> consumer) {
|
public void forEach(BiConsumer<String, T> consumer) {
|
||||||
registry.forEach(consumer);
|
registry.forEach(consumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Get the entries of this registry as a {@link Set}.
|
|
||||||
*
|
|
||||||
* @return Set containing all entries.
|
|
||||||
*/
|
|
||||||
public Set<T> entries() {
|
public Set<T> entries() {
|
||||||
return registry.entries();
|
return registry.entries();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.dfsek.terra.registry;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.exception.LoadException;
|
||||||
|
import com.dfsek.tectonic.loading.ConfigLoader;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for a registry that forbids all write access.
|
||||||
|
*
|
||||||
|
* @param <T> Type in registry
|
||||||
|
*/
|
||||||
|
public class LockedRegistry<T> implements Registry<T> {
|
||||||
|
private final OpenRegistry<T> registry;
|
||||||
|
|
||||||
|
public LockedRegistry(OpenRegistry<T> registry) {
|
||||||
|
this.registry = registry;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T get(String identifier) {
|
||||||
|
return registry.get(identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean contains(String identifier) {
|
||||||
|
return registry.contains(identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forEach(Consumer<T> consumer) {
|
||||||
|
registry.forEach(consumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forEach(BiConsumer<String, T> consumer) {
|
||||||
|
registry.forEach(consumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<T> entries() {
|
||||||
|
return registry.entries();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T load(Type t, Object c, ConfigLoader loader) throws LoadException {
|
||||||
|
return registry.load(t, c, loader);
|
||||||
|
}
|
||||||
|
}
|
@ -13,7 +13,11 @@ import java.util.Set;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public abstract class TerraRegistry<T> implements TypeLoader<T> {
|
/**
|
||||||
|
* Registry implementation with read/write access. For internal use only.
|
||||||
|
* @param <T>
|
||||||
|
*/
|
||||||
|
public abstract class OpenRegistry<T> implements Registry<T> {
|
||||||
private final Map<String, T> objects = new HashMap<>();
|
private final Map<String, T> objects = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -49,34 +53,27 @@ public abstract class TerraRegistry<T> implements TypeLoader<T> {
|
|||||||
add(identifier, value);
|
add(identifier, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Check if the registry contains a value.
|
|
||||||
*
|
|
||||||
* @param identifier Identifier of value.
|
|
||||||
* @return Whether the registry contains the value.
|
|
||||||
*/
|
|
||||||
public boolean contains(String identifier) {
|
public boolean contains(String identifier) {
|
||||||
return objects.containsKey(identifier);
|
return objects.containsKey(identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Get a value from the registry.
|
|
||||||
*
|
|
||||||
* @param identifier Identifier of value.
|
|
||||||
* @return Value matching the identifier, {@code null} if no value is present.
|
|
||||||
*/
|
|
||||||
public T get(String identifier) {
|
public T get(String identifier) {
|
||||||
return objects.get(identifier);
|
return objects.get(identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void forEach(Consumer<T> consumer) {
|
public void forEach(Consumer<T> consumer) {
|
||||||
objects.forEach((id, obj) -> consumer.accept(obj));
|
objects.forEach((id, obj) -> consumer.accept(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void forEach(BiConsumer<String, T> consumer) {
|
public void forEach(BiConsumer<String, T> consumer) {
|
||||||
objects.forEach(consumer);
|
objects.forEach(consumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Set<T> entries() {
|
public Set<T> entries() {
|
||||||
return new HashSet<>(objects.values());
|
return new HashSet<>(objects.values());
|
||||||
}
|
}
|
46
common/src/main/java/com/dfsek/terra/registry/Registry.java
Normal file
46
common/src/main/java/com/dfsek/terra/registry/Registry.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package com.dfsek.terra.registry;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.loading.TypeLoader;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public interface Registry<T> extends TypeLoader<T> {
|
||||||
|
/**
|
||||||
|
* Get a value from the registry.
|
||||||
|
*
|
||||||
|
* @param identifier Identifier of value.
|
||||||
|
* @return Value matching the identifier, {@code null} if no value is present.
|
||||||
|
*/
|
||||||
|
T get(String identifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the registry contains a value.
|
||||||
|
*
|
||||||
|
* @param identifier Identifier of value.
|
||||||
|
* @return Whether the registry contains the value.
|
||||||
|
*/
|
||||||
|
boolean contains(String identifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform the given action for every value in the registry.
|
||||||
|
*
|
||||||
|
* @param consumer Action to perform on value.
|
||||||
|
*/
|
||||||
|
void forEach(Consumer<T> consumer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform an action for every key-value pair in the registry.
|
||||||
|
*
|
||||||
|
* @param consumer Action to perform on pair.
|
||||||
|
*/
|
||||||
|
void forEach(BiConsumer<String, T> consumer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the entries of this registry as a {@link Set}.
|
||||||
|
*
|
||||||
|
* @return Set containing all entries.
|
||||||
|
*/
|
||||||
|
Set<T> entries();
|
||||||
|
}
|
@ -3,11 +3,11 @@ package com.dfsek.terra.registry.config;
|
|||||||
import com.dfsek.tectonic.exception.LoadException;
|
import com.dfsek.tectonic.exception.LoadException;
|
||||||
import com.dfsek.tectonic.loading.ConfigLoader;
|
import com.dfsek.tectonic.loading.ConfigLoader;
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
public class BiomeRegistry extends TerraRegistry<TerraBiome> {
|
public class BiomeRegistry extends OpenRegistry<TerraBiome> {
|
||||||
@Override
|
@Override
|
||||||
public TerraBiome load(Type type, Object o, ConfigLoader configLoader) throws LoadException {
|
public TerraBiome load(Type type, Object o, ConfigLoader configLoader) throws LoadException {
|
||||||
if(o.equals("SELF")) return null;
|
if(o.equals("SELF")) return null;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.registry.config;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.carving.UserDefinedCarver;
|
import com.dfsek.terra.carving.UserDefinedCarver;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
public class CarverRegistry extends TerraRegistry<UserDefinedCarver> {
|
public class CarverRegistry extends OpenRegistry<UserDefinedCarver> {
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,14 @@ import com.dfsek.terra.api.platform.block.BlockData;
|
|||||||
import com.dfsek.terra.api.platform.block.MaterialData;
|
import com.dfsek.terra.api.platform.block.MaterialData;
|
||||||
import com.dfsek.terra.api.util.world.MaterialSet;
|
import com.dfsek.terra.api.util.world.MaterialSet;
|
||||||
import com.dfsek.terra.api.world.flora.Flora;
|
import com.dfsek.terra.api.world.flora.Flora;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.world.population.items.flora.ConstantFlora;
|
import com.dfsek.terra.world.population.items.flora.ConstantFlora;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
public class FloraRegistry extends TerraRegistry<Flora> {
|
public class FloraRegistry extends OpenRegistry<Flora> {
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
|
||||||
public FloraRegistry(TerraPlugin main) {
|
public FloraRegistry(TerraPlugin main) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.registry.config;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
|
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
public class FunctionRegistry extends TerraRegistry<FunctionBuilder<?>> {
|
public class FunctionRegistry extends OpenRegistry<FunctionBuilder<?>> {
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.registry.config;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structures.loot.LootTable;
|
import com.dfsek.terra.api.structures.loot.LootTable;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
public class LootRegistry extends TerraRegistry<LootTable> {
|
public class LootRegistry extends OpenRegistry<LootTable> {
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,11 @@ import com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal.Rid
|
|||||||
import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate;
|
import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.ClampNormalizerTemplate;
|
||||||
import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate;
|
import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.LinearNormalizerTemplate;
|
||||||
import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate;
|
import com.dfsek.terra.config.loaders.config.sampler.templates.normalizer.NormalNormalizerTemplate;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class NoiseRegistry extends TerraRegistry<Supplier<ObjectTemplate<NoiseSeeded>>> {
|
public class NoiseRegistry extends OpenRegistry<Supplier<ObjectTemplate<NoiseSeeded>>> {
|
||||||
public NoiseRegistry() {
|
public NoiseRegistry() {
|
||||||
add("LINEAR", LinearNormalizerTemplate::new);
|
add("LINEAR", LinearNormalizerTemplate::new);
|
||||||
add("NORMAL", NormalNormalizerTemplate::new);
|
add("NORMAL", NormalNormalizerTemplate::new);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.registry.config;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.world.population.items.ores.Ore;
|
import com.dfsek.terra.world.population.items.ores.Ore;
|
||||||
|
|
||||||
public class OreRegistry extends TerraRegistry<Ore> {
|
public class OreRegistry extends OpenRegistry<Ore> {
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@ import com.dfsek.terra.api.core.TerraPlugin;
|
|||||||
import com.dfsek.terra.api.platform.block.BlockData;
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
import com.dfsek.terra.api.world.palette.Palette;
|
import com.dfsek.terra.api.world.palette.Palette;
|
||||||
import com.dfsek.terra.api.world.palette.SinglePalette;
|
import com.dfsek.terra.api.world.palette.SinglePalette;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
public class PaletteRegistry extends TerraRegistry<Palette<BlockData>> {
|
public class PaletteRegistry extends OpenRegistry<Palette<BlockData>> {
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
public PaletteRegistry(TerraPlugin main) {
|
public PaletteRegistry(TerraPlugin main) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.registry.config;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structures.script.StructureScript;
|
import com.dfsek.terra.api.structures.script.StructureScript;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
public class ScriptRegistry extends TerraRegistry<StructureScript> {
|
public class ScriptRegistry extends OpenRegistry<StructureScript> {
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.registry.config;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.world.population.items.TerraStructure;
|
import com.dfsek.terra.world.population.items.TerraStructure;
|
||||||
|
|
||||||
public class StructureRegistry extends TerraRegistry<TerraStructure> {
|
public class StructureRegistry extends OpenRegistry<TerraStructure> {
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,14 @@ import com.dfsek.terra.api.world.tree.fractal.trees.ShatteredTree;
|
|||||||
import com.dfsek.terra.api.world.tree.fractal.trees.SmallShatteredPillar;
|
import com.dfsek.terra.api.world.tree.fractal.trees.SmallShatteredPillar;
|
||||||
import com.dfsek.terra.api.world.tree.fractal.trees.SmallShatteredTree;
|
import com.dfsek.terra.api.world.tree.fractal.trees.SmallShatteredTree;
|
||||||
import com.dfsek.terra.api.world.tree.fractal.trees.SpruceTree;
|
import com.dfsek.terra.api.world.tree.fractal.trees.SpruceTree;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class TreeRegistry extends TerraRegistry<Tree> {
|
public class TreeRegistry extends OpenRegistry<Tree> {
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
|
||||||
public TreeRegistry(TerraPlugin main) {
|
public TreeRegistry(TerraPlugin main) {
|
||||||
|
@ -8,7 +8,7 @@ import com.dfsek.terra.addons.loading.AddonLoadException;
|
|||||||
import com.dfsek.terra.addons.loading.pre.AddonPool;
|
import com.dfsek.terra.addons.loading.pre.AddonPool;
|
||||||
import com.dfsek.terra.addons.loading.pre.PreLoadAddon;
|
import com.dfsek.terra.addons.loading.pre.PreLoadAddon;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.registry.exception.DuplicateEntryException;
|
import com.dfsek.terra.registry.exception.DuplicateEntryException;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -18,7 +18,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||||||
import java.util.logging.LogManager;
|
import java.util.logging.LogManager;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class AddonRegistry extends TerraRegistry<TerraAddon> {
|
public class AddonRegistry extends OpenRegistry<TerraAddon> {
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
|
||||||
public AddonRegistry(TerraPlugin main) {
|
public AddonRegistry(TerraPlugin main) {
|
||||||
|
@ -3,7 +3,7 @@ package com.dfsek.terra.registry.master;
|
|||||||
import com.dfsek.tectonic.exception.ConfigException;
|
import com.dfsek.tectonic.exception.ConfigException;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -12,7 +12,7 @@ import java.util.zip.ZipFile;
|
|||||||
/**
|
/**
|
||||||
* Class to hold config packs
|
* Class to hold config packs
|
||||||
*/
|
*/
|
||||||
public class ConfigRegistry extends TerraRegistry<ConfigPack> {
|
public class ConfigRegistry extends OpenRegistry<ConfigPack> {
|
||||||
public void load(File folder, TerraPlugin main) throws ConfigException {
|
public void load(File folder, TerraPlugin main) throws ConfigException {
|
||||||
ConfigPack pack = new ConfigPack(folder, main);
|
ConfigPack pack = new ConfigPack(folder, main);
|
||||||
add(pack.getTemplate().getID(), pack);
|
add(pack.getTemplate().getID(), pack);
|
||||||
|
@ -9,6 +9,7 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate;
|
|||||||
import com.dfsek.tectonic.exception.ConfigException;
|
import com.dfsek.tectonic.exception.ConfigException;
|
||||||
import com.dfsek.tectonic.loading.ConfigLoader;
|
import com.dfsek.tectonic.loading.ConfigLoader;
|
||||||
import com.dfsek.tectonic.loading.TypeRegistry;
|
import com.dfsek.tectonic.loading.TypeRegistry;
|
||||||
|
import com.dfsek.terra.addons.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.api.core.event.EventManager;
|
import com.dfsek.terra.api.core.event.EventManager;
|
||||||
import com.dfsek.terra.api.math.ProbabilityCollection;
|
import com.dfsek.terra.api.math.ProbabilityCollection;
|
||||||
@ -34,10 +35,10 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader;
|
|||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
|
import com.dfsek.terra.registry.LockedRegistry;
|
||||||
import com.dfsek.terra.registry.config.BiomeRegistry;
|
import com.dfsek.terra.registry.config.BiomeRegistry;
|
||||||
import com.dfsek.terra.registry.config.NoiseRegistry;
|
import com.dfsek.terra.registry.config.NoiseRegistry;
|
||||||
import com.dfsek.terra.registry.master.AddonRegistry;
|
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@ -99,18 +100,18 @@ public class DistributionTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigRegistry getRegistry() {
|
public CheckedRegistry<ConfigPack> getConfigRegistry() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddonRegistry getAddons() {
|
public LockedRegistry<TerraAddon> getAddons() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reload() {
|
public boolean reload() {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -17,7 +17,7 @@ import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider;
|
|||||||
import com.dfsek.terra.config.fileloaders.FolderLoader;
|
import com.dfsek.terra.config.fileloaders.FolderLoader;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
@ -44,7 +44,7 @@ public class ImageTest {
|
|||||||
|
|
||||||
AbstractConfigLoader loader = new AbstractConfigLoader();
|
AbstractConfigLoader loader = new AbstractConfigLoader();
|
||||||
|
|
||||||
TerraRegistry<TerraBiome> biomeRegistry = new TerraRegistry<TerraBiome>() {
|
OpenRegistry<TerraBiome> biomeRegistry = new OpenRegistry<TerraBiome>() {
|
||||||
};
|
};
|
||||||
folderLoader.open("biomes", ".yml").then(inputStreams -> ConfigPack.buildAll((template, main) -> template, biomeRegistry, loader.load(inputStreams, TestBiome::new), null));
|
folderLoader.open("biomes", ".yml").then(inputStreams -> ConfigPack.buildAll((template, main) -> template, biomeRegistry, loader.load(inputStreams, TestBiome::new), null));
|
||||||
|
|
||||||
|
@ -32,6 +32,8 @@ import com.dfsek.terra.config.lang.LangUtil;
|
|||||||
import com.dfsek.terra.config.lang.Language;
|
import com.dfsek.terra.config.lang.Language;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
|
import com.dfsek.terra.registry.LockedRegistry;
|
||||||
import com.dfsek.terra.registry.master.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
@ -55,7 +57,10 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
private final Map<String, DefaultChunkGenerator3D> generatorMap = new HashMap<>();
|
private final Map<String, DefaultChunkGenerator3D> generatorMap = new HashMap<>();
|
||||||
private final Map<World, TerraWorld> worldMap = new HashMap<>();
|
private final Map<World, TerraWorld> worldMap = new HashMap<>();
|
||||||
private final Map<String, ConfigPack> worlds = new HashMap<>();
|
private final Map<String, ConfigPack> worlds = new HashMap<>();
|
||||||
|
|
||||||
private final ConfigRegistry registry = new ConfigRegistry();
|
private final ConfigRegistry registry = new ConfigRegistry();
|
||||||
|
private final CheckedRegistry<ConfigPack> checkedRegistry = new CheckedRegistry<>(registry);
|
||||||
|
|
||||||
private final PluginConfig config = new PluginConfig();
|
private final PluginConfig config = new PluginConfig();
|
||||||
private final ItemHandle itemHandle = new BukkitItemHandle();
|
private final ItemHandle itemHandle = new BukkitItemHandle();
|
||||||
private WorldHandle handle = new BukkitWorldHandle();
|
private WorldHandle handle = new BukkitWorldHandle();
|
||||||
@ -76,9 +81,14 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final AddonRegistry addonRegistry = new AddonRegistry(new BukkitAddon(this), this);
|
private final AddonRegistry addonRegistry = new AddonRegistry(new BukkitAddon(this), this);
|
||||||
|
private final LockedRegistry<TerraAddon> addonLockedRegistry = new LockedRegistry<>(addonRegistry);
|
||||||
|
|
||||||
|
|
||||||
public void reload() {
|
|
||||||
|
public boolean reload() {
|
||||||
|
config.load(this);
|
||||||
|
LangUtil.load(config.getLanguage(), this); // Load language.
|
||||||
|
boolean succeed = registry.loadAll(this);
|
||||||
Map<World, TerraWorld> newMap = new HashMap<>();
|
Map<World, TerraWorld> newMap = new HashMap<>();
|
||||||
worldMap.forEach((world, tw) -> {
|
worldMap.forEach((world, tw) -> {
|
||||||
((BukkitChunkGeneratorWrapper) world.getGenerator().getHandle()).getHandle().getCache().clear();
|
((BukkitChunkGeneratorWrapper) world.getGenerator().getHandle()).getHandle().getCache().clear();
|
||||||
@ -87,6 +97,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
});
|
});
|
||||||
worldMap.clear();
|
worldMap.clear();
|
||||||
worldMap.putAll(newMap);
|
worldMap.putAll(newMap);
|
||||||
|
return succeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -221,8 +232,8 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
return LangUtil.getLanguage();
|
return LangUtil.getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigRegistry getRegistry() {
|
public CheckedRegistry<ConfigPack> getConfigRegistry() {
|
||||||
return registry;
|
return checkedRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TerraWorld getWorld(World w) {
|
public TerraWorld getWorld(World w) {
|
||||||
@ -258,8 +269,8 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddonRegistry getAddons() {
|
public LockedRegistry<TerraAddon> getAddons() {
|
||||||
return addonRegistry;
|
return addonLockedRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum BukkitVersion {
|
public enum BukkitVersion {
|
||||||
|
@ -3,7 +3,9 @@ package com.dfsek.terra.bukkit.command.command;
|
|||||||
import com.dfsek.terra.bukkit.BukkitCommandSender;
|
import com.dfsek.terra.bukkit.BukkitCommandSender;
|
||||||
import com.dfsek.terra.bukkit.command.Command;
|
import com.dfsek.terra.bukkit.command.Command;
|
||||||
import com.dfsek.terra.config.lang.LangUtil;
|
import com.dfsek.terra.config.lang.LangUtil;
|
||||||
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.config.pack.ConfigPackTemplate;
|
import com.dfsek.terra.config.pack.ConfigPackTemplate;
|
||||||
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -29,7 +31,7 @@ public class PacksCommand extends Command {
|
|||||||
@Override
|
@Override
|
||||||
public boolean execute(@NotNull CommandSender commandSender, org.bukkit.command.@NotNull Command command, @NotNull String s, @NotNull String[] strings) {
|
public boolean execute(@NotNull CommandSender commandSender, org.bukkit.command.@NotNull Command command, @NotNull String s, @NotNull String[] strings) {
|
||||||
|
|
||||||
ConfigRegistry registry = getMain().getRegistry();
|
CheckedRegistry<ConfigPack> registry = getMain().getConfigRegistry();
|
||||||
|
|
||||||
if(registry.entries().size() == 0) {
|
if(registry.entries().size() == 0) {
|
||||||
LangUtil.send("command.packs.none", new BukkitCommandSender(commandSender));
|
LangUtil.send("command.packs.none", new BukkitCommandSender(commandSender));
|
||||||
|
@ -28,13 +28,10 @@ public class ReloadCommand extends Command implements DebugCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(@NotNull CommandSender sender, org.bukkit.command.@NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
public boolean execute(@NotNull CommandSender sender, org.bukkit.command.@NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
getMain().getTerraConfig().load(getMain());
|
if(!getMain().reload()) {
|
||||||
LangUtil.load(getMain().getTerraConfig().getLanguage(), getMain()); // Load language.
|
|
||||||
if(!getMain().getRegistry().loadAll(getMain())) {
|
|
||||||
LangUtil.send("command.reload-error", new BukkitCommandSender(sender));
|
LangUtil.send("command.reload-error", new BukkitCommandSender(sender));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
getMain().reload();
|
|
||||||
LangUtil.send("command.reload", new BukkitCommandSender(sender));
|
LangUtil.send("command.reload", new BukkitCommandSender(sender));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.dfsek.terra.fabric;
|
package com.dfsek.terra.fabric;
|
||||||
|
|
||||||
import com.dfsek.tectonic.loading.TypeRegistry;
|
import com.dfsek.tectonic.loading.TypeRegistry;
|
||||||
|
import com.dfsek.terra.addons.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.api.core.event.EventManager;
|
import com.dfsek.terra.api.core.event.EventManager;
|
||||||
import com.dfsek.terra.api.core.event.TerraEventManager;
|
import com.dfsek.terra.api.core.event.TerraEventManager;
|
||||||
@ -26,6 +27,8 @@ import com.dfsek.terra.fabric.world.FabricWorldHandle;
|
|||||||
import com.dfsek.terra.fabric.world.TerraBiomeSource;
|
import com.dfsek.terra.fabric.world.TerraBiomeSource;
|
||||||
import com.dfsek.terra.fabric.world.features.PopulatorFeature;
|
import com.dfsek.terra.fabric.world.features.PopulatorFeature;
|
||||||
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
|
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
|
||||||
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
|
import com.dfsek.terra.registry.LockedRegistry;
|
||||||
import com.dfsek.terra.registry.master.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
@ -86,8 +89,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
private final ItemHandle itemHandle = new FabricItemHandle();
|
private final ItemHandle itemHandle = new FabricItemHandle();
|
||||||
private final WorldHandle worldHandle = new FabricWorldHandle();
|
private final WorldHandle worldHandle = new FabricWorldHandle();
|
||||||
private final ConfigRegistry registry = new ConfigRegistry();
|
private final ConfigRegistry registry = new ConfigRegistry();
|
||||||
|
private final CheckedRegistry<ConfigPack> checkedRegistry = new CheckedRegistry<>(registry);
|
||||||
|
|
||||||
private final AddonRegistry addonRegistry = new AddonRegistry(this);
|
private final AddonRegistry addonRegistry = new AddonRegistry(this);
|
||||||
|
private final LockedRegistry<TerraAddon> addonLockedRegistry = new LockedRegistry<>(addonRegistry);
|
||||||
|
|
||||||
|
|
||||||
private File config;
|
private File config;
|
||||||
private static final Transformer<String, ConfiguredFeature<?, ?>> TREE_TRANSFORMER = new Transformer.Builder<String, ConfiguredFeature<?, ?>>()
|
private static final Transformer<String, ConfiguredFeature<?, ?>> TREE_TRANSFORMER = new Transformer.Builder<String, ConfiguredFeature<?, ?>>()
|
||||||
.addTransform(TerraFabricPlugin::getFeature)
|
.addTransform(TerraFabricPlugin::getFeature)
|
||||||
@ -127,7 +134,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
public TerraWorld getWorld(World world) {
|
public TerraWorld getWorld(World world) {
|
||||||
return worldMap.computeIfAbsent(world.getSeed(), w -> {
|
return worldMap.computeIfAbsent(world.getSeed(), w -> {
|
||||||
logger.info("Loading world " + w);
|
logger.info("Loading world " + w);
|
||||||
return new TerraWorld(world, getRegistry().get("DEFAULT"), this);
|
return new TerraWorld(world, getConfigRegistry().get("DEFAULT"), this);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,18 +168,18 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigRegistry getRegistry() {
|
public CheckedRegistry<ConfigPack> getConfigRegistry() {
|
||||||
return registry;
|
return checkedRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddonRegistry getAddons() {
|
public LockedRegistry<TerraAddon> getAddons() {
|
||||||
return addonRegistry;
|
return addonLockedRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reload() {
|
public boolean reload() {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,7 +18,7 @@ import java.util.stream.Collectors;
|
|||||||
public class TerraBiomeSource extends BiomeSource {
|
public class TerraBiomeSource extends BiomeSource {
|
||||||
public static final Codec<ConfigPack> PACK_CODEC = (RecordCodecBuilder.create(config -> config.group(
|
public static final Codec<ConfigPack> PACK_CODEC = (RecordCodecBuilder.create(config -> config.group(
|
||||||
Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID())
|
Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID())
|
||||||
).apply(config, config.stable(TerraFabricPlugin.getInstance().getRegistry()::get))));
|
).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get))));
|
||||||
public static final Codec<TerraBiomeSource> CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
public static final Codec<TerraBiomeSource> CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
||||||
RegistryLookupCodec.of(Registry.BIOME_KEY).forGetter(source -> source.biomeRegistry),
|
RegistryLookupCodec.of(Registry.BIOME_KEY).forGetter(source -> source.biomeRegistry),
|
||||||
Codec.LONG.fieldOf("seed").stable().forGetter(source -> source.seed),
|
Codec.LONG.fieldOf("seed").stable().forGetter(source -> source.seed),
|
||||||
|
@ -35,7 +35,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements com.d
|
|||||||
private final TerraBiomeSource biomeSource;
|
private final TerraBiomeSource biomeSource;
|
||||||
public static final Codec<ConfigPack> PACK_CODEC = (RecordCodecBuilder.create(config -> config.group(
|
public static final Codec<ConfigPack> PACK_CODEC = (RecordCodecBuilder.create(config -> config.group(
|
||||||
Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID())
|
Codec.STRING.fieldOf("pack").forGetter(pack -> pack.getTemplate().getID())
|
||||||
).apply(config, config.stable(TerraFabricPlugin.getInstance().getRegistry()::get))));
|
).apply(config, config.stable(TerraFabricPlugin.getInstance().getConfigRegistry()::get))));
|
||||||
public static final Codec<FabricChunkGeneratorWrapper> CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
public static final Codec<FabricChunkGeneratorWrapper> CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
||||||
TerraBiomeSource.CODEC.fieldOf("biome_source").forGetter(generator -> generator.biomeSource),
|
TerraBiomeSource.CODEC.fieldOf("biome_source").forGetter(generator -> generator.biomeSource),
|
||||||
Codec.LONG.fieldOf("seed").stable().forGetter(generator -> generator.seed),
|
Codec.LONG.fieldOf("seed").stable().forGetter(generator -> generator.seed),
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.dfsek.terra;
|
package com.dfsek.terra;
|
||||||
|
|
||||||
import com.dfsek.tectonic.loading.TypeRegistry;
|
import com.dfsek.tectonic.loading.TypeRegistry;
|
||||||
|
import com.dfsek.terra.addons.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.api.core.event.EventManager;
|
import com.dfsek.terra.api.core.event.EventManager;
|
||||||
import com.dfsek.terra.api.core.event.TerraEventManager;
|
import com.dfsek.terra.api.core.event.TerraEventManager;
|
||||||
@ -14,9 +15,12 @@ import com.dfsek.terra.config.GenericLoaders;
|
|||||||
import com.dfsek.terra.config.PluginConfig;
|
import com.dfsek.terra.config.PluginConfig;
|
||||||
import com.dfsek.terra.config.lang.LangUtil;
|
import com.dfsek.terra.config.lang.LangUtil;
|
||||||
import com.dfsek.terra.config.lang.Language;
|
import com.dfsek.terra.config.lang.Language;
|
||||||
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
import com.dfsek.terra.platform.RawBiome;
|
import com.dfsek.terra.platform.RawBiome;
|
||||||
import com.dfsek.terra.platform.RawWorldHandle;
|
import com.dfsek.terra.platform.RawWorldHandle;
|
||||||
|
import com.dfsek.terra.registry.CheckedRegistry;
|
||||||
|
import com.dfsek.terra.registry.LockedRegistry;
|
||||||
import com.dfsek.terra.registry.master.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.master.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
@ -28,6 +32,9 @@ import java.util.logging.Logger;
|
|||||||
public class StandalonePlugin implements TerraPlugin {
|
public class StandalonePlugin implements TerraPlugin {
|
||||||
private final ConfigRegistry registry = new ConfigRegistry();
|
private final ConfigRegistry registry = new ConfigRegistry();
|
||||||
private final AddonRegistry addonRegistry = new AddonRegistry(this);
|
private final AddonRegistry addonRegistry = new AddonRegistry(this);
|
||||||
|
|
||||||
|
private final LockedRegistry<TerraAddon> addonLockedRegistry = new LockedRegistry<>(addonRegistry);
|
||||||
|
|
||||||
private final PluginConfig config = new PluginConfig();
|
private final PluginConfig config = new PluginConfig();
|
||||||
private final RawWorldHandle worldHandle = new RawWorldHandle();
|
private final RawWorldHandle worldHandle = new RawWorldHandle();
|
||||||
private final EventManager eventManager = new TerraEventManager(this);
|
private final EventManager eventManager = new TerraEventManager(this);
|
||||||
@ -77,17 +84,17 @@ public class StandalonePlugin implements TerraPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigRegistry getRegistry() {
|
public CheckedRegistry<ConfigPack> getConfigRegistry() {
|
||||||
return registry;
|
return new CheckedRegistry<>(registry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddonRegistry getAddons() {
|
public LockedRegistry<TerraAddon> getAddons() {
|
||||||
return addonRegistry;
|
return addonLockedRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reload() {
|
public boolean reload() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ public class Generator {
|
|||||||
structurePopulator = new StructurePopulator(plugin);
|
structurePopulator = new StructurePopulator(plugin);
|
||||||
treePopulator = new TreePopulator(plugin);
|
treePopulator = new TreePopulator(plugin);
|
||||||
orePopulator = new OrePopulator(plugin);
|
orePopulator = new OrePopulator(plugin);
|
||||||
generator = new DefaultChunkGenerator3D(plugin.getRegistry().get("DEFAULT"), plugin, new SamplerCache(plugin));
|
generator = new DefaultChunkGenerator3D(plugin.getConfigRegistry().get("DEFAULT"), plugin, new SamplerCache(plugin));
|
||||||
this.seed = seed;
|
this.seed = seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user