From 89657e362a3551e8a513c1729942e15f10ddccf4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 23 Jun 2021 13:33:59 -0700 Subject: [PATCH] implementation pass 1 --- .../dfsek/terra/api/config/ConfigPack.java | 11 ++++++++++ .../terra/api/event/EventManagerImpl.java | 3 +-- .../structures/script/StructureScript.java | 2 +- .../script/functions/CheckFunction.java | 5 +++-- .../script/functions/LootFunction.java | 2 +- .../api/structures/structure/buffer/Cell.java | 3 ++- .../structure/buffer/IntermediateBuffer.java | 9 ++++---- .../structure/buffer/StructureBuffer.java | 17 ++++++++------- .../structure/buffer/items/BufferedBlock.java | 3 ++- .../buffer/items/BufferedEntity.java | 3 ++- .../buffer/items/BufferedLootApplication.java | 8 ++++--- .../buffer/items/BufferedPulledBlock.java | 3 ++- .../items/BufferedStateManipulator.java | 3 ++- .../pipeline/mutator/BorderListMutator.java | 7 ++++--- .../biome/pipeline/mutator/BorderMutator.java | 5 +++-- .../pipeline/mutator/ReplaceMutator.java | 5 +++-- .../biome/pipeline/source/RandomSource.java | 5 +++-- .../api/world/locate/AsyncBiomeFinder.java | 3 ++- .../api/world/locate/AsyncFeatureFinder.java | 3 ++- .../world/locate/AsyncStructureFinder.java | 5 +++-- .../dfsek/terra/commands/PacksCommand.java | 3 +-- .../commands/structure/SpawnCommand.java | 3 ++- .../structure/StructureExportCommand.java | 7 ++++--- .../dfsek/terra/config/dummy/DummyWorld.java | 3 ++- .../com/dfsek/terra/config/lang/LangUtil.java | 2 +- .../templates/source/NoiseSourceTemplate.java | 3 ++- .../mutator/BorderListMutatorTemplate.java | 7 ++++--- .../stage/mutator/BorderMutatorTemplate.java | 3 ++- .../stage/mutator/ReplaceMutatorTemplate.java | 3 ++- .../terra/config/pack/ConfigPackImpl.java | 21 +++++++++++++++++++ .../terra/world/population/OrePopulator.java | 2 +- .../world/population/StructurePopulator.java | 11 ++++++---- .../population/items/flora/BlockFlora.java | 3 ++- .../population/items/flora/TerraFlora.java | 3 ++- .../population/items/tree/TerraTree.java | 3 ++- 35 files changed, 121 insertions(+), 61 deletions(-) diff --git a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index f409317ff..d9c58e274 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -1,10 +1,13 @@ package com.dfsek.terra.api.config; import com.dfsek.terra.api.LoaderRegistrar; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import java.util.Set; + public interface ConfigPack extends LoaderRegistrar { @SuppressWarnings("unchecked") CheckedRegistry getRegistry(Class clazz); @@ -14,4 +17,12 @@ public interface ConfigPack extends LoaderRegistrar { WorldConfig toWorldConfig(TerraWorld world); CheckedRegistry> getConfigTypeRegistry(); + + Set addons(); + + String getID(); + + String getAuthor(); + + String getVersion(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java index cc97be2b2..d4d281b54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/event/EventManagerImpl.java @@ -36,8 +36,7 @@ public class EventManagerImpl implements EventManager { PackEvent packEvent = (PackEvent) event; if(packEvent .getPack() - .getTemplate() - .getAddons() + .addons() .contains(listenerHolder.addon)) { listenerHolder.method.invoke(listenerHolder.listener, event); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index f595e4bd0..fcdf95946 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -49,7 +49,7 @@ import java.util.concurrent.ExecutionException; public class StructureScript implements Structure { private final Block block; private final String id; - private final Cache cache; + private final Cache cache; private final TerraPlugin main; private String tempID; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java index f84bde8b4..5a9813acc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector2; @@ -47,12 +48,12 @@ public class CheckFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - LocationImpl location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); + Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); return apply(location, arguments.getBuffer().getOrigin().getWorld()); } - private String apply(LocationImpl vector, World world) { + private String apply(Location vector, World world) { TerraWorld tw = main.getWorld(world); SamplerCache cache = tw.getConfig().getSamplerCache(); double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java index a1cc8c923..a3f0f7079 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java @@ -47,7 +47,7 @@ public class LootFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); String id = data.apply(implementationArguments, variableMap); - LootTableImpl table = registry.get(id); + LootTable table = registry.get(id); if(table == null) { main.logger().severe("No such loot table " + id); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java index e6b16161b..21e9a7def 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.structures.structure.buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.GlueList; @@ -12,7 +13,7 @@ public class Cell implements BufferedItem { @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { items.forEach(item -> item.paste(origin)); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java index a32c7a40a..737a6bd2b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -15,22 +16,22 @@ public class IntermediateBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, LocationImpl location) { + public Buffer addItem(BufferedItem item, Location location) { return original.addItem(item, location.add(offset)); } @Override - public LocationImpl getOrigin() { + public Location getOrigin() { return original.getOrigin().clone().add(offset); } @Override - public String getMark(LocationImpl location) { + public String getMark(Location location) { return original.getMark(location.add(offset)); } @Override - public Buffer setMark(String mark, LocationImpl location) { + public Buffer setMark(String mark, Location location) { original.setMark(mark, location.add(offset)); return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java index 63e148c68..4e53c92dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer; import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -10,11 +11,11 @@ import java.util.LinkedHashMap; import java.util.Map; public class StructureBuffer implements Buffer { - private final Map bufferedItemMap = new LinkedHashMap<>(); - private final LocationImpl origin; + private final Map bufferedItemMap = new LinkedHashMap<>(); + private final Location origin; private boolean succeeded; - public StructureBuffer(LocationImpl origin) { + public StructureBuffer(Location origin) { this.origin = origin; } @@ -24,7 +25,7 @@ public class StructureBuffer implements Buffer { public void paste(Chunk chunk) { bufferedItemMap.forEach(((location, item) -> { - LocationImpl current = origin.clone().add(location); + Location current = origin.clone().add(location); if(FastMath.floorDiv(current.getBlockX(), 16) != chunk.getX() || FastMath.floorDiv(current.getBlockZ(), 16) != chunk.getZ()) return; item.paste(chunk, current); @@ -32,13 +33,13 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer addItem(BufferedItem item, LocationImpl location) { + public Buffer addItem(BufferedItem item, Location location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).add(item); return this; } @Override - public String getMark(LocationImpl location) { + public String getMark(Location location) { Cell cell = bufferedItemMap.get(location); if(cell != null) { return cell.getMark(); @@ -47,7 +48,7 @@ public class StructureBuffer implements Buffer { } @Override - public Buffer setMark(String mark, LocationImpl location) { + public Buffer setMark(String mark, Location location) { bufferedItemMap.computeIfAbsent(location, l -> new Cell()).setMark(mark); return this; } @@ -61,7 +62,7 @@ public class StructureBuffer implements Buffer { } @Override - public LocationImpl getOrigin() { + public Location getOrigin() { return origin.clone(); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java index 9ac42cee5..df40380fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedBlock.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -21,7 +22,7 @@ public class BufferedBlock implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { Block block = origin.getBlock(); try { if(overwrite || block.isEmpty()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java index 08d279f01..f02e90d1f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedEntity.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -18,7 +19,7 @@ public class BufferedEntity implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { Entity entity = origin.clone().add(0.5, 0, 0.5).getWorld().spawnEntity(origin, type); main.getEventManager().callEvent(new EntitySpawnEvent(entity.getWorld().getTerraGenerator().getConfigPack(), entity, entity.getLocation())); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index ae3b2f59b..0222fd51b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -2,7 +2,9 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; +import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.state.BlockState; @@ -12,18 +14,18 @@ import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.util.FastRandom; public class BufferedLootApplication implements BufferedItem { - private final LootTableImpl table; + private final LootTable table; private final TerraPlugin main; private final StructureScript structure; - public BufferedLootApplication(LootTableImpl table, TerraPlugin main, StructureScript structure) { + public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) { this.table = table; this.main = main; this.structure = structure; } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { try { Block block = origin.getBlock(); BlockState data = block.getState(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java index 8d0fcb1b8..9b5117283 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedPulledBlock.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -14,7 +15,7 @@ public class BufferedPulledBlock implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { Block pos = origin.getBlock(); while(pos.getY() > origin.getWorld().getMinHeight()) { if(!pos.isEmpty()) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java index 161f6c385..1fcb2801c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.structures.structure.buffer.items; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.state.BlockState; @@ -15,7 +16,7 @@ public class BufferedStateManipulator implements BufferedItem { } @Override - public void paste(LocationImpl origin) { + public void paste(Location origin) { try { BlockState state = origin.getBlock().getState(); state.applyState(data); diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java index 97b37dde1..fabb52e76 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -10,11 +11,11 @@ import java.util.Map; public class BorderListMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; - private final ProbabilityCollectionImpl replaceDefault; + private final ProbabilityCollection replaceDefault; private final String defaultReplace; - private final Map> replace; + private final Map> replace; - public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollectionImpl replaceDefault) { + public BorderListMutator(Map> replace, String border, String defaultReplace, NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { this.border = border; this.noiseSampler = noiseSampler; this.replaceDefault = replaceDefault; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java index 039f7d3af..d4a922f49 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -8,10 +9,10 @@ import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class BorderMutator implements BiomeMutator { private final String border; private final NoiseSampler noiseSampler; - private final ProbabilityCollectionImpl replace; + private final ProbabilityCollection replace; private final String replaceTag; - public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollectionImpl replace) { + public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { this.border = border; this.noiseSampler = noiseSampler; this.replace = replace; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java index 9b40f8b2d..f5d0015d7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java @@ -1,16 +1,17 @@ package com.dfsek.terra.api.world.biome.pipeline.mutator; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; public class ReplaceMutator implements BiomeMutator { private final String replaceableTag; - private final ProbabilityCollectionImpl replace; + private final ProbabilityCollection replace; private final NoiseSampler sampler; - public ReplaceMutator(String replaceable, ProbabilityCollectionImpl replace, NoiseSampler sampler) { + public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { this.replaceableTag = replaceable; this.replace = replace; this.sampler = sampler; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java index 0a64c1ba0..e74186aea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java @@ -1,15 +1,16 @@ package com.dfsek.terra.api.world.biome.pipeline.source; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; public class RandomSource implements BiomeSource { - private final ProbabilityCollectionImpl biomes; + private final ProbabilityCollection biomes; private final NoiseSampler sampler; - public RandomSource(ProbabilityCollectionImpl biomes, NoiseSampler sampler) { + public RandomSource(ProbabilityCollection biomes, NoiseSampler sampler) { this.biomes = biomes; this.sampler = sampler; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java index ef3d7b6c5..2fac9bd54 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -14,7 +15,7 @@ import java.util.function.Consumer; */ public class AsyncBiomeFinder extends AsyncFeatureFinder { - public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, startRadius, maxRadius, callback, main); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java index 71ce825cc..79b0a0961 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.vector.Vector3Impl; @@ -22,7 +23,7 @@ public abstract class AsyncFeatureFinder implements Runnable { protected int searchSize = 1; protected final TerraPlugin main; - public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncFeatureFinder(BiomeProvider provider, T target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { this.provider = provider; this.target = target; this.main = main; diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java index cea1b4952..6df9b92d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.world.locate; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -16,7 +17,7 @@ import java.util.Random; import java.util.function.Consumer; public class AsyncStructureFinder extends AsyncFeatureFinder { - public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull LocationImpl origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { + public AsyncStructureFinder(BiomeProvider provider, TerraStructure target, @NotNull Location origin, int startRadius, int maxRadius, Consumer callback, TerraPlugin main) { super(provider, target, origin, startRadius, maxRadius, callback, main); setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); } @@ -28,7 +29,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { @Override public boolean isValid(int x, int z, TerraStructure target) { - LocationImpl spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); + Location spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index 5b257ea06..b354cbbb3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -28,8 +28,7 @@ public class PacksCommand implements CommandTemplate { LangUtil.send("command.packs.main", sender); registry.entries().forEach(entry -> { - ConfigPackTemplate template = entry.getTemplate(); - LangUtil.send("command.packs.pack", sender, template.getID(), template.getAuthor(), template.getVersion()); + LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion()); }); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java index 4ee07f659..f3dac6ce1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/SpawnCommand.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -33,7 +34,7 @@ public class SpawnCommand implements CommandTemplate { @Override public void execute(CommandSender sender) { Player player = (Player) sender; - LocationImpl p = player.getLocation(); + Location p = player.getLocation(); int x = p.getBlockX(); int y = p.getBlockY(); int z = p.getBlockZ(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java index 7a934a553..8d6623294 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/structure/StructureExportCommand.java @@ -9,6 +9,7 @@ import com.dfsek.terra.api.command.annotation.type.DebugCommand; import com.dfsek.terra.api.command.annotation.type.PlayerCommand; import com.dfsek.terra.api.command.annotation.type.WorldCommand; import com.dfsek.terra.api.injection.annotations.Inject; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.block.Block; @@ -45,10 +46,10 @@ public class StructureExportCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - Pair l = main.getWorldHandle().getSelectedLocation(player); + Pair l = main.getWorldHandle().getSelectedLocation(player); - LocationImpl l1 = l.getLeft(); - LocationImpl l2 = l.getRight(); + Location l1 = l.getLeft(); + Location l2 = l.getRight(); StringBuilder scriptBuilder = new StringBuilder("id \"" + id + "\";\nnum y = 0;\n"); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index 67eb7891e..f75118b1a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config.dummy; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -41,7 +42,7 @@ public class DummyWorld implements World { } @Override - public Entity spawnEntity(LocationImpl location, EntityType entityType) { + public Entity spawnEntity(Location location, EntityType entityType) { throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 109e85bd0..026b37d45 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -21,7 +21,7 @@ public final class LangUtil { try(JarFile jar = main.getModJar()) { copyResourcesToDirectory(jar, "lang", file.toString()); } catch(IOException | URISyntaxException e) { - main.getDebugLogger().error("Failed to dump language files!"); + main.getDebugLogger().severe("Failed to dump language files!"); main.getDebugLogger().stack(e); } try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java index d82d90c23..05a670879 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/NoiseSourceTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; @@ -12,7 +13,7 @@ public class NoiseSourceTemplate extends SourceTemplate { private NoiseSeeded noise; @Value("biomes") - private ProbabilityCollectionImpl biomes; + private ProbabilityCollection biomes; @Override public BiomeSource apply(Long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java index 1ddcfbd11..f9bce049a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; @@ -19,15 +20,15 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate { private String defaultReplace; @Value("default-to") - private ProbabilityCollectionImpl defaultTo; + private ProbabilityCollection defaultTo; @Value("replace") - private Map> replace; + private Map> replace; @Override public BiomeMutator build(long seed) { - Map> replaceMap = new HashMap<>(); + Map> replaceMap = new HashMap<>(); replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.apply(seed), replacements.map(replacement -> replacement.apply(seed), true))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java index f84f88265..6a7ada974 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator; @@ -15,7 +16,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate { private String replace; @Value("to") - private ProbabilityCollectionImpl to; + private ProbabilityCollection to; @Override public BiomeMutator build(long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java index d4a81b3e6..2f64878e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator; import com.dfsek.tectonic.annotations.Value; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeMutator; import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator; @@ -12,7 +13,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate { private String from; @Value("to") - private ProbabilityCollectionImpl to; + private ProbabilityCollection to; @Override public BiomeMutator build(long seed) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 5bedeccad..3f110cf41 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -9,6 +9,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent; @@ -317,4 +318,24 @@ public class ConfigPackImpl implements ConfigPack { } }; } + + @Override + public Set addons() { + return template.getAddons(); + } + + @Override + public String getID() { + return template.getID(); + } + + @Override + public String getAuthor() { + return template.getAuthor(); + } + + @Override + public String getVersion() { + return template.getVersion(); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java index 142525e07..cdf07454c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/OrePopulator.java @@ -28,7 +28,7 @@ public class OrePopulator implements TerraBlockPopulator { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("ore")) { - if(tw.getConfig().getTemplate().disableOres()) return; + if(tw.getConfig().disableOres()) return; if(!tw.isSafe()) return; for(int cx = -1; cx <= 1; cx++) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java index aba5f765a..0b05f5373 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java @@ -1,7 +1,10 @@ package com.dfsek.terra.world.population; import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.config.WorldConfig; +import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.PopulationUtil; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; @@ -32,15 +35,15 @@ public class StructurePopulator implements TerraBlockPopulator, Chunkified { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("structure")) { - if(tw.getConfig().getTemplate().disableStructures()) return; + if(tw.getConfig().disableStructures()) return; int cx = (chunk.getX() << 4); int cz = (chunk.getZ() << 4); if(!tw.isSafe()) return; BiomeProvider provider = tw.getBiomeProvider(); - WorldConfigImpl config = tw.getConfig(); - for(TerraStructure conf : config.getStructures()) { - LocationImpl spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); + WorldConfig config = tw.getConfig(); + for(TerraStructure conf : config.getRegistry(TerraStructure.class).entries()) { + Location spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java index d9ee0aa9c..5d00fb86c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/BlockFlora.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -37,7 +38,7 @@ public class BlockFlora implements Flora { } @Override - public boolean plant(LocationImpl location) { + public boolean plant(Location location) { location.add(0, 1, 0).getBlock().setBlockData(data, true); return true; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java index 7f6536bd1..d17c2f7d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java @@ -2,6 +2,7 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.BlockData; @@ -92,7 +93,7 @@ public class TerraFlora implements Flora { @Override - public boolean plant(LocationImpl location) { + public boolean plant(Location location) { boolean doRotation = testRotation.size() > 0; int size = floraPalette.getSize(); int c = ceiling ? -1 : 1; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 2a8c04aae..7c0f6648d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -21,7 +22,7 @@ public class TerraTree implements Tree { } @Override - public synchronized boolean plant(LocationImpl location, Random random) { + public synchronized boolean plant(Location location, Random random) { return structure.get(random).generateDirect(location.clone().add(0, yOffset, 0), random, Rotation.fromDegrees(90 * random.nextInt(4))); }