From 25073199f068674e3d00b263a805281290b812d0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 6 Jul 2021 22:23:04 -0700 Subject: [PATCH] correct some errors in carver and structure addons --- .../terra/addons/carver/CarverCache.java | 11 ++--- .../terra/addons/carver/CarverPalette.java | 2 +- .../terra/addons/carver/CarverTemplate.java | 2 +- .../terra/addons/carver/CavePopulator.java | 2 - .../addons/carver/UserDefinedCarver.java | 4 +- .../addons/structure/StructureFactory.java | 2 +- .../addons/structure/StructurePopulator.java | 3 +- .../addons/structure}/StructureTemplate.java | 12 +---- .../addons/structure/TerraStructure.java | 9 +--- .../command/AsyncStructureFinder.java | 3 +- .../command/structure/SpawnCommand.java | 48 ------------------- .../command/structure/StructureCommand.java | 7 +-- .../structure/StructureLoadCommand.java | 10 ++-- .../structure/StructureLocateCommand.java | 15 +++--- .../argument/ScriptArgumentParser.java | 2 +- .../argument/StructureArgumentParser.java | 3 +- .../structure/completer/ScriptCompleter.java | 3 +- .../completer/StructureCompleter.java | 4 +- .../structure/structures/loot/Entry.java | 4 +- .../structures/loot/LootTableImpl.java | 6 +-- .../structure/structures/loot/Pool.java | 5 +- .../loot/functions/EnchantFunction.java | 4 +- .../api/structure/ConfiguredStructure.java | 2 + .../dfsek/terra/fabric/util/FabricUtil.java | 3 ++ 24 files changed, 47 insertions(+), 119 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/config/templates => addons/structure/src/main/java/com/dfsek/terra/addons/structure}/StructureTemplate.java (84%) delete mode 100644 common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/SpawnCommand.java diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 662c3491b..6a3a64e46 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -1,8 +1,7 @@ package com.dfsek.terra.addons.carver; +import com.dfsek.terra.addons.carver.carving.Worm; import com.dfsek.terra.api.TerraPlugin; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; @@ -10,12 +9,12 @@ import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.carving.Worm; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; @@ -34,11 +33,11 @@ public class CarverCache { int chunkX = (int) (key >> 32); int chunkZ = (int) key.longValue(); BiomeProvider provider = main.getWorld(w).getBiomeProvider(); - if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { + if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new Random(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); - Random r = new FastRandom(seed); + Random r = new Random(seed); Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); - List points = new GlueList<>(); + List points = new ArrayList<>(); for(int i = 0; i < carving.getLength(); i++) { carving.step(); TerraBiome biome = provider.getBiome(carving.getRunning()); diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java index da5641794..e8eb869eb 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java @@ -2,8 +2,8 @@ package com.dfsek.terra.addons.carver; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.collection.MaterialSet; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.MaterialSet; import net.jafama.FastMath; import java.util.Map; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java index bfe68724c..0b2aa511f 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java @@ -7,7 +7,7 @@ import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.util.collection.MaterialSet; import java.util.HashMap; import java.util.Map; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java index 69f954529..2bbec9ea8 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java @@ -13,8 +13,6 @@ import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.Chunkified; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.carving.UserDefinedCarver; -import com.dfsek.terra.config.templates.CarverTemplate; import org.jetbrains.annotations.NotNull; import java.util.HashMap; diff --git a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index 8622b8c79..edf72ea6c 100644 --- a/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -93,7 +93,7 @@ public class UserDefinedCarver extends Carver { @Override public Worm getWorm(long l, Vector3 vector) { - Random r = new FastRandom(l + hash); + Random r = new Random(l + hash); return new UserDefinedWorm(length.get(r) / 2, r, vector, topCut, bottomCut, l); } @@ -131,7 +131,7 @@ public class UserDefinedCarver extends Carver { public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)).getConfig(); if(conf.getCarvers().get(this) != null) { - return new FastRandom(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); + return new Random(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); } return false; } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index 0cf9ba6ce..7da758b9f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -8,6 +8,6 @@ import com.dfsek.terra.config.templates.StructureTemplate; public class StructureFactory implements ConfigFactory { @Override public ConfiguredStructure build(StructureTemplate config, TerraPlugin main) { - return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn(), config); + return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn()); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index 850a570b7..450e551a4 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; @@ -44,7 +43,7 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; - Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); + Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, Rotation.fromDegrees(90 * random.nextInt(4))); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java similarity index 84% rename from common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java rename to common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java index e7b6b7145..14a59c481 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.config.templates; +package com.dfsek.terra.addons.structure; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; @@ -11,6 +11,7 @@ import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; +import java.util.ArrayList; import java.util.List; @SuppressWarnings({"unused", "FieldMayBeFinal"}) @@ -30,11 +31,6 @@ public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { @Abstractable private StructureSpawn spawn; - @Value("features") - @Abstractable - @Default - private List features = new GlueList<>(); - public String getID() { return id; } @@ -47,10 +43,6 @@ public class StructureTemplate implements AbstractableTemplate, ConfigTemplate { return y; } - public List getFeatures() { - return features; - } - public StructureSpawn getSpawn() { return spawn; } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java index 9eb9258e4..1c1ba019b 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java @@ -5,23 +5,16 @@ import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.collection.ProbabilityCollection; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure implements ConfiguredStructure { private final ProbabilityCollection structure; private final Range spawnStart; private final StructureSpawn spawn; - private final StructureTemplate template; - public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; - this.template = template; - } - - public StructureTemplate getTemplate() { - return template; } @Override diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index e0648356e..b244b003f 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.structure.command; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.World; @@ -30,7 +29,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder()); - - sender.sendMessage("Found: " + check); - } -} diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java index cd84be60c..05d515739 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java @@ -18,11 +18,6 @@ import com.dfsek.terra.config.lang.LangUtil; value = "load", aliases = "ld" ), - @Subcommand( - clazz = SpawnCommand.class, - value = "spawn", - aliases = "s" - ), @Subcommand( clazz = StructureLocateCommand.class, value = "locate", @@ -34,6 +29,6 @@ import com.dfsek.terra.config.lang.LangUtil; public class StructureCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { - LangUtil.send("command.structure.main-menu", sender); + //LangUtil.send("command.structure.main-menu", sender); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index c215db421..7d10eac31 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure; +import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; +import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; +import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -16,11 +19,8 @@ import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.FastRandom; -import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; -import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; -import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; +import java.util.Random; import java.util.concurrent.ThreadLocalRandom; @PlayerCommand @@ -66,7 +66,7 @@ public class StructureLoadCommand implements CommandTemplate { Player player = (Player) sender; long t = System.nanoTime(); - FastRandom random = new FastRandom(ThreadLocalRandom.current().nextLong()); + Random random = new Random(ThreadLocalRandom.current().nextLong()); Rotation r; try { r = Rotation.fromDegrees(rotation); diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index ae1441575..d49c5bc3d 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -1,5 +1,8 @@ package com.dfsek.terra.addons.structure.command.structure; +import com.dfsek.terra.addons.structure.command.AsyncStructureFinder; +import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; +import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -13,12 +16,8 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.structure.ConfiguredStructure; import com.dfsek.terra.api.vector.Vector3; -import com.dfsek.terra.api.world.locate.AsyncStructureFinder; -import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; -import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; -import com.dfsek.terra.config.lang.LangUtil; -import com.dfsek.terra.world.population.items.TerraStructure; import java.util.Locale; @@ -50,7 +49,7 @@ public class StructureLocateCommand implements CommandTemplate { private TerraPlugin main; @ArgumentTarget("structure") - private TerraStructure structure; + private ConfiguredStructure structure; @ArgumentTarget("radius") private Integer radius; @@ -64,11 +63,11 @@ public class StructureLocateCommand implements CommandTemplate { new Thread(new AsyncStructureFinder(main.getWorld(player.world()).getBiomeProvider(), structure, player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { - sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getTemplate().getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); + sender.sendMessage(String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getID().toLowerCase(Locale.ROOT), location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { main.runPossiblyUnsafeTask(() -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } - } else LangUtil.send("command.biome.unable-to-locate", sender); + } //else LangUtil.send("command.biome.unable-to-locate", sender); }, main), "Biome Location Thread").start(); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index ff66a9043..0ee899437 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -14,6 +14,6 @@ public class ScriptArgumentParser implements ArgumentParser { @Override public Structure parse(CommandSender sender, String arg) { - return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).get(arg); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(Structure.class).get(arg); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index 95ab9562e..989d3b852 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -6,7 +6,6 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.structure.ConfiguredStructure; -import com.dfsek.terra.world.population.items.TerraStructure; public class StructureArgumentParser implements ArgumentParser { @Inject @@ -14,6 +13,6 @@ public class StructureArgumentParser implements ArgumentParser complete(CommandSender sender) { - return main.getWorld(((Player) sender).world()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); + return main.getWorld(((Player) sender).world()).getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getId).collect(Collectors.toList()); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index bc1627675..2fcddf53e 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -5,7 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.injection.annotations.Inject; -import com.dfsek.terra.world.population.items.TerraStructure; +import com.dfsek.terra.api.structure.ConfiguredStructure; import java.util.ArrayList; import java.util.List; @@ -17,6 +17,6 @@ public class StructureCompleter implements TabCompleter { @Override public List complete(CommandSender sender) { Player player = (Player) sender; - return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(TerraStructure.class).keys()); + return new ArrayList<>(main.getWorld(player.world()).getConfig().getRegistry(ConfiguredStructure.class).keys()); } } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index adfbea08b..20546ef95 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -7,11 +7,11 @@ import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; -import com.dfsek.terra.api.util.GlueList; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -21,7 +21,7 @@ import java.util.Random; public class Entry { private final Item item; private final long weight; - private final List functions = new GlueList<>(); + private final List functions = new ArrayList<>(); /** * Instantiates an Entry from a JSON representation. diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java index 5b20dcab0..8e7fd4998 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java @@ -3,12 +3,12 @@ package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.util.GlueList; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -16,7 +16,7 @@ import java.util.Random; * Class representation of a Loot Table to populate chest loot. */ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { - private final List pools = new GlueList<>(); + private final List pools = new ArrayList<>(); /** * Instantiates a LootTable from a JSON String. @@ -35,7 +35,7 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { @Override public List getLoot(Random r) { - List itemList = new GlueList<>(); + List itemList = new ArrayList<>(); for(Pool pool : pools) { itemList.addAll(pool.getItems(r)); } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index 52c999980..344a31844 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -2,13 +2,12 @@ package com.dfsek.terra.addons.structure.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -51,7 +50,7 @@ public class Pool { public List getItems(Random r) { int rolls = r.nextInt(max - min + 1) + min; - List items = new GlueList<>(); + List items = new ArrayList<>(); for(int i = 0; i < rolls; i++) { items.add(entries.get(r).getItem(r)); } diff --git a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java index e59bb84e4..df14c5472 100644 --- a/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java +++ b/common/addons/structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java @@ -4,10 +4,10 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.api.inventory.item.ItemMeta; -import com.dfsek.terra.api.util.GlueList; import net.jafama.FastMath; import org.json.simple.JSONArray; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; @@ -38,7 +38,7 @@ public class EnchantFunction implements LootFunction { if(original.getItemMeta() == null) return original; double enchant = (r.nextDouble() * (max - min)) + min; - List possible = new GlueList<>(); + List possible = new ArrayList<>(); for(Enchantment ench : main.getItemHandle().getEnchantments()) { if(ench.canEnchantItem(original) && (disabled == null || !this.disabled.contains(ench.getID()))) { possible.add(ench); diff --git a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java index 4b99b88d3..d8248eda6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java +++ b/common/api/src/main/java/com/dfsek/terra/api/structure/ConfiguredStructure.java @@ -9,4 +9,6 @@ public interface ConfiguredStructure { Range getSpawnStart(); StructureSpawn getSpawn(); + + String getID(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index a97fe0e93..ef68a3130 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -72,6 +72,7 @@ public final class FabricUtil { } } + /* Pair pair = fabricAddon.getTemplates().get(pack); PreLoadCompatibilityOptions compatibilityOptions = pair.getLeft(); PostLoadCompatibilityOptions postLoadCompatibilityOptions = pair.getRight(); @@ -100,6 +101,8 @@ public final class FabricUtil { } } + */ + BiomeEffectsAccessor accessor = (BiomeEffectsAccessor) vanilla.getEffects(); BiomeEffects.Builder effects = new BiomeEffects.Builder() .waterColor(colors.getOrDefault("water", accessor.getWaterColor()))