mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-26 22:10:22 +00:00
dynamic registris in WorldConfig
This commit is contained in:
1 parent
4237657dad
commit
4202875675
9 files changed
+23
-67
No files matched your search
@@ -14,6 +14,6 @@ public class BiomeArgumentParser implements ArgumentParser<TerraBiome> {
|
|||||||
@Override
|
@Override
|
||||||
public TerraBiome parse(CommandSender sender, String arg) {
|
public TerraBiome parse(CommandSender sender, String arg) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
return main.getWorld(player.getWorld()).getConfig().getBiomeRegistry().get(arg);
|
return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).get(arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,6 @@ public class BiomeTabCompleter implements TabCompleter {
|
|||||||
@Override
|
@Override
|
||||||
public List<String> complete(CommandSender sender) {
|
public List<String> complete(CommandSender sender) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
return main.getWorld(player.getWorld()).getConfig().getBiomeRegistry().entries().stream().map(TerraBiome::getID).collect(Collectors.toList());
|
return main.getWorld(player.getWorld()).getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -13,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser<TerraStructure> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TerraStructure parse(CommandSender sender, String arg) {
|
public TerraStructure parse(CommandSender sender, String arg) {
|
||||||
return main.getWorld(((Player) sender).getWorld()).getConfig().getStructureRegistry().get(arg);
|
return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(TerraStructure.class).get(arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-1
@@ -5,6 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter;
|
|||||||
import com.dfsek.terra.api.injection.annotations.Inject;
|
import com.dfsek.terra.api.injection.annotations.Inject;
|
||||||
import com.dfsek.terra.api.platform.CommandSender;
|
import com.dfsek.terra.api.platform.CommandSender;
|
||||||
import com.dfsek.terra.api.platform.entity.Player;
|
import com.dfsek.terra.api.platform.entity.Player;
|
||||||
|
import com.dfsek.terra.world.population.items.TerraStructure;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -16,6 +17,6 @@ public class StructureCompleter implements TabCompleter {
|
|||||||
@Override
|
@Override
|
||||||
public List<String> complete(CommandSender sender) {
|
public List<String> complete(CommandSender sender) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
return new ArrayList<>(main.getWorld(player.getWorld()).getConfig().getStructureRegistry().keys());
|
return new ArrayList<>(main.getWorld(player.getWorld()).getConfig().getRegistry(TerraStructure.class).keys());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -276,10 +276,6 @@ public class ConfigPack implements LoaderRegistrar {
|
|||||||
return new CheckedRegistry<>(scriptRegistry);
|
return new CheckedRegistry<>(scriptRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CheckedRegistry<LootTable> getLootRegistry() {
|
|
||||||
return new CheckedRegistry<>(lootRegistry);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public WorldConfig toWorldConfig(TerraWorld world) {
|
public WorldConfig toWorldConfig(TerraWorld world) {
|
||||||
return new WorldConfig(world, this, main);
|
return new WorldConfig(world, this, main);
|
||||||
|
|||||||
@@ -1,63 +1,54 @@
|
|||||||
package com.dfsek.terra.config.pack;
|
package com.dfsek.terra.config.pack;
|
||||||
|
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
import com.dfsek.terra.api.platform.world.Tree;
|
|
||||||
import com.dfsek.terra.api.registry.LockedRegistry;
|
import com.dfsek.terra.api.registry.LockedRegistry;
|
||||||
import com.dfsek.terra.api.structures.loot.LootTable;
|
|
||||||
import com.dfsek.terra.api.structures.script.StructureScript;
|
import com.dfsek.terra.api.structures.script.StructureScript;
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||||
import com.dfsek.terra.api.world.biome.provider.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.provider.BiomeProvider;
|
||||||
import com.dfsek.terra.api.world.flora.Flora;
|
|
||||||
import com.dfsek.terra.api.world.palette.Palette;
|
|
||||||
import com.dfsek.terra.carving.UserDefinedCarver;
|
import com.dfsek.terra.carving.UserDefinedCarver;
|
||||||
import com.dfsek.terra.config.builder.BiomeBuilder;
|
import com.dfsek.terra.config.builder.BiomeBuilder;
|
||||||
import com.dfsek.terra.registry.OpenRegistry;
|
import com.dfsek.terra.registry.OpenRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
import com.dfsek.terra.world.generation.math.SamplerCache;
|
import com.dfsek.terra.world.generation.math.SamplerCache;
|
||||||
import com.dfsek.terra.world.population.items.TerraStructure;
|
import com.dfsek.terra.world.population.items.TerraStructure;
|
||||||
import com.dfsek.terra.world.population.items.ores.Ore;
|
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class WorldConfig {
|
public class WorldConfig {
|
||||||
private final LockedRegistry<StructureScript> scriptRegistry;
|
private final LockedRegistry<StructureScript> scriptRegistry;
|
||||||
private final LockedRegistry<TerraBiome> biomeRegistry;
|
|
||||||
private final SamplerCache samplerCache;
|
private final SamplerCache samplerCache;
|
||||||
private final LockedRegistry<UserDefinedCarver> carverRegistry;
|
|
||||||
private final LockedRegistry<Tree> treeRegistry;
|
|
||||||
private final LockedRegistry<Flora> floraRegistry;
|
|
||||||
private final LockedRegistry<LootTable> lootRegistry;
|
|
||||||
private final LockedRegistry<Ore> oreRegistry;
|
|
||||||
private final LockedRegistry<Palette> paletteRegistry;
|
|
||||||
private final LockedRegistry<TerraStructure> structureRegistry;
|
|
||||||
|
|
||||||
private final BiomeProvider provider;
|
private final BiomeProvider provider;
|
||||||
|
|
||||||
private final TerraWorld world;
|
private final TerraWorld world;
|
||||||
private final ConfigPack pack;
|
private final ConfigPack pack;
|
||||||
|
|
||||||
|
private final Map<Class<?>, LockedRegistry<?>> registryMap = new HashMap<>();
|
||||||
|
|
||||||
public WorldConfig(TerraWorld world, ConfigPack pack, TerraPlugin main) {
|
public WorldConfig(TerraWorld world, ConfigPack pack, TerraPlugin main) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.pack = pack;
|
this.pack = pack;
|
||||||
this.samplerCache = new SamplerCache(main, world);
|
this.samplerCache = new SamplerCache(main, world);
|
||||||
|
|
||||||
|
pack.getConfigTypeRegistry().forEach(configType -> registryMap.put(configType.getTypeClass(), new LockedRegistry<>(pack.getRegistry(configType.getTypeClass()))));
|
||||||
|
|
||||||
this.scriptRegistry = new LockedRegistry<>(pack.getScriptRegistry());
|
this.scriptRegistry = new LockedRegistry<>(pack.getScriptRegistry());
|
||||||
|
|
||||||
OpenRegistry<TerraBiome> biomeOpenRegistry = new OpenRegistry<>();
|
OpenRegistry<TerraBiome> biomeOpenRegistry = new OpenRegistry<>();
|
||||||
pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed())));
|
pack.getRegistry(BiomeBuilder.class).forEach((id, biome) -> biomeOpenRegistry.add(id, biome.apply(world.getWorld().getSeed())));
|
||||||
|
registryMap.put(TerraBiome.class, new LockedRegistry<>(biomeOpenRegistry));
|
||||||
this.biomeRegistry = new LockedRegistry<>(biomeOpenRegistry);
|
|
||||||
this.carverRegistry = new LockedRegistry<>(pack.getRegistry(UserDefinedCarver.class));
|
|
||||||
this.treeRegistry = new LockedRegistry<>(pack.getRegistry(Tree.class));
|
|
||||||
this.floraRegistry = new LockedRegistry<>(pack.getRegistry(Flora.class));
|
|
||||||
this.lootRegistry = new LockedRegistry<>(pack.getLootRegistry());
|
|
||||||
this.oreRegistry = new LockedRegistry<>(pack.getRegistry(Ore.class));
|
|
||||||
this.paletteRegistry = new LockedRegistry<>(pack.getRegistry(Palette.class));
|
|
||||||
this.structureRegistry = new LockedRegistry<>(pack.getRegistry(TerraStructure.class));
|
|
||||||
|
|
||||||
this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed());
|
this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public <T> LockedRegistry<T> getRegistry(Class<T> clazz) {
|
||||||
|
return (LockedRegistry<T>) registryMap.get(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
public TerraWorld getWorld() {
|
public TerraWorld getWorld() {
|
||||||
return world;
|
return world;
|
||||||
}
|
}
|
||||||
@@ -67,51 +58,19 @@ public class WorldConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Set<UserDefinedCarver> getCarvers() {
|
public Set<UserDefinedCarver> getCarvers() {
|
||||||
return new HashSet<>(carverRegistry.entries());
|
return new HashSet<>(getRegistry(UserDefinedCarver.class).entries());
|
||||||
}
|
}
|
||||||
|
|
||||||
public LockedRegistry<StructureScript> getScriptRegistry() {
|
public LockedRegistry<StructureScript> getScriptRegistry() {
|
||||||
return scriptRegistry;
|
return scriptRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LockedRegistry<TerraBiome> getBiomeRegistry() {
|
|
||||||
return biomeRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<Tree> getTreeRegistry() {
|
|
||||||
return treeRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<UserDefinedCarver> getCarverRegistry() {
|
|
||||||
return carverRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<Flora> getFloraRegistry() {
|
|
||||||
return floraRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<LootTable> getLootRegistry() {
|
|
||||||
return lootRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<Ore> getOreRegistry() {
|
|
||||||
return oreRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<Palette> getPaletteRegistry() {
|
|
||||||
return paletteRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LockedRegistry<TerraStructure> getStructureRegistry() {
|
|
||||||
return structureRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeProvider getProvider() {
|
public BiomeProvider getProvider() {
|
||||||
return provider;
|
return provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<TerraStructure> getStructures() {
|
public Set<TerraStructure> getStructures() {
|
||||||
return new HashSet<>(structureRegistry.entries());
|
return new HashSet<>(getRegistry(TerraStructure.class).entries());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigPackTemplate getTemplate() {
|
public ConfigPackTemplate getTemplate() {
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class CommonListener implements Listener {
|
|||||||
Block block = e.getLocation().getBlock();
|
Block block = e.getLocation().getBlock();
|
||||||
BlockData data = block.getBlockData();
|
BlockData data = block.getBlockData();
|
||||||
block.setType(Material.AIR);
|
block.setType(Material.AIR);
|
||||||
Tree tree = c.getTreeRegistry().get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies()));
|
Tree tree = c.getRegistry(Tree.class).get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies()));
|
||||||
org.bukkit.Location location = e.getLocation();
|
org.bukkit.Location location = e.getLocation();
|
||||||
if(!tree.plant(new Location(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data);
|
if(!tree.plant(new Location(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class PaperListener implements Listener {
|
|||||||
String name = "minecraft:" + e.getType().getName();
|
String name = "minecraft:" + e.getType().getName();
|
||||||
main.getDebugLogger().info("Overriding structure location for \"" + name + "\"");
|
main.getDebugLogger().info("Overriding structure location for \"" + name + "\"");
|
||||||
TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld()));
|
TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getWorld()));
|
||||||
TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get(name));
|
TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getTemplate().getLocatable().get(name));
|
||||||
if(config != null) {
|
if(config != null) {
|
||||||
AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin()), 0, 500, location -> {
|
AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getOrigin()), 0, 500, location -> {
|
||||||
if(location != null)
|
if(location != null)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class SpigotListener implements Listener {
|
|||||||
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return;
|
if(!TerraWorld.isTerraWorld(BukkitAdapter.adapt(e.getEntity().getWorld()))) return;
|
||||||
TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld()));
|
TerraWorld tw = main.getWorld(BukkitAdapter.adapt(e.getEntity().getWorld()));
|
||||||
EnderSignal signal = (EnderSignal) entity;
|
EnderSignal signal = (EnderSignal) entity;
|
||||||
TerraStructure config = tw.getConfig().getStructureRegistry().get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD"));
|
TerraStructure config = tw.getConfig().getRegistry(TerraStructure.class).get(tw.getConfig().getTemplate().getLocatable().get("STRONGHOLD"));
|
||||||
if(config != null) {
|
if(config != null) {
|
||||||
main.getDebugLogger().info("Overriding Ender Signal...");
|
main.getDebugLogger().info("Overriding Ender Signal...");
|
||||||
AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> {
|
AsyncStructureFinder finder = new AsyncStructureFinder(tw.getBiomeProvider(), config, BukkitAdapter.adapt(e.getLocation()), 0, 500, location -> {
|
||||||
|
|||||||
Reference in new issue
Block a user