diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.md b/.github/ISSUE_TEMPLATE/BUG_REPORT.md index 9a1b69189..c498f6f5e 100644 --- a/.github/ISSUE_TEMPLATE/BUG_REPORT.md +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.md @@ -21,8 +21,8 @@ assignees: "" - You must be on the LATEST version of Terra to receive any support. There is no support for older versions of Terra. - Make sure that this is not a *specific* compatibility issue with another terrain generation mod. Do not request *specific* compatibility with mods or plugins (e.g. "Compatibility with TechCraft v7"). - That should be implemented in an addon, **not** in the main project. - *General* compatibility (e.g. "Ability to pull Vanilla/Modded features from parent biomes") will be considered in the main project. + That should be implemented in an addon, **not** in the platform project. + *General* compatibility (e.g. "Ability to pull Vanilla/Modded features from parent biomes") will be considered in the platform project. - Make sure that there are no already existing issues open with your problem. If you open a duplicate, it will be closed as such. - Make sure that it is actually Terra causing the issue, and not another mod/plugin. You can do this by testing to see if you can recreate the issue without Terra installed. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c2c62467..ddcac2710 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -114,9 +114,9 @@ please [include as many details as possible](#how-do-i-submit-a-good-bug-report) - Make sure that this is not a *specific* compatibility issue with another terrain generation mod. Do not request *specific* compatibility with mods or plugins (e.g. "Compatibility with TechCraft v7"). That should be implemented - in an addon, **not** in the main project. + in an addon, **not** in the platform project. *General* compatibility (e.g. "Ability to pull Vanilla/Modded features from - parent biomes") will be considered in the main project. + parent biomes") will be considered in the platform project. - Search for any [already existing issues](https://github.com/PolyhedralDev/Terra/issues?q=is%3Aissue+) open with your problem. If you open a duplicate, it will be closed as such. @@ -200,7 +200,7 @@ please [include as many details as possible](#how-do-i-submit-a-good-enhancement Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue -on our main repository and provide the following information: +on our platform repository and provide the following information: - **Use a clear and descriptive title** for the issue to identify the suggestion. @@ -243,7 +243,7 @@ accepted. Pull Requests are tracked as [GitHub Pull Requests](https://guides.github.com/activities/forking/#making-a-pull-request) -. Create a pr on our main repository and provide the following information: +. Create a pr on our platform repository and provide the following information: - **Use a clear and descriptive title** to identify the pull request. - **State what this pull request adds/fixes**. @@ -347,7 +347,7 @@ TODO #### General Compatibility General compatibility (example: injection of Vanilla structures/features/carvers -into packs) is acceptable in the main project. +into packs) is acceptable in the platform project. - General compatibility features should be *disabled by default*. Having things auto-injected causes unpredictable behaviour that is annoying to diagnose. @@ -365,7 +365,7 @@ into packs) is acceptable in the main project. #### Specific Compatibility -Specific compatibility should *not* be put in the main project. (Example: Adding +Specific compatibility should *not* be put in the platform project. (Example: Adding the ability to generate TechCraft v7's doo-dads with a TerraScript function) Having specific compatibilities leads to tons of extra dependencies to keep diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java index fd72813d3..e2cf15bae 100644 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java +++ b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -26,18 +26,18 @@ public class ImageBiomeProviderAddon extends TerraAddon { }; @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); - }) - .failThrough(); + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( + PROVIDER_REGISTRY_KEY); + providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); + }) + .failThrough(); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java index 215c95cfb..a9c013fbc 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java @@ -43,7 +43,7 @@ public class BiomePipeline { public static final class BiomePipelineBuilder { private final int init; - List stages = new ArrayList<>(); + private final List stages = new ArrayList<>(); private int expand; public BiomePipelineBuilder(int init) { diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java index a09e0f3cb..6b32bd6f9 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java @@ -14,7 +14,7 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMut import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -40,24 +40,24 @@ public class BiomePipelineAddon extends TerraAddon { public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { }; @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( PROVIDER_REGISTRY_KEY); - providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(main)); + providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(platform)); }) - .then(event -> { + .then(event -> { CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( SOURCE_REGISTRY_KEY); sourceRegistry.register("NOISE", NoiseSourceTemplate::new); }) - .then(event -> { + .then(event -> { CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); @@ -66,6 +66,6 @@ public class BiomePipelineAddon extends TerraAddon { stageRegistry.register("BORDER", BorderMutatorTemplate::new); stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java index 542603188..64fbeed18 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java @@ -7,7 +7,7 @@ import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @@ -20,14 +20,14 @@ public class BiomePipelineProvider implements BiomeProvider { private final NoiseSampler mutator; private final double noiseAmp; - public BiomePipelineProvider(BiomePipeline pipeline, TerraPlugin main, int resolution, NoiseSampler mutator, double noiseAmp) { + public BiomePipelineProvider(BiomePipeline pipeline, Platform platform, int resolution, NoiseSampler mutator, double noiseAmp) { this.resolution = resolution; this.mutator = mutator; this.noiseAmp = noiseAmp; holderCache = CacheBuilder.newBuilder() - .maximumSize(main == null ? 32 : main.getTerraConfig().getProviderCache()) + .maximumSize(platform == null ? 32 : platform.getTerraConfig().getProviderCache()) .build( - new CacheLoader() { + new CacheLoader<>() { @Override public BiomeHolder load(@NotNull SeededVector key) { return pipeline.getBiomes(key.x, key.z, key.seed); diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java index 11bc53417..84548fbef 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java @@ -9,14 +9,14 @@ import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; import com.dfsek.terra.addons.biome.pipeline.api.Stage; import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @SuppressWarnings({ "FieldMayBeFinal", "unused" }) public class BiomePipelineTemplate extends BiomeProviderTemplate { - private final TerraPlugin main; + private final Platform platform; @Value("pipeline.initial-size") @Default private @Meta int initialSize = 2; @@ -27,8 +27,8 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { @Value("pipeline.source") private @Meta BiomeSource source; - public BiomePipelineTemplate(TerraPlugin main) { - this.main = main; + public BiomePipelineTemplate(Platform platform) { + this.platform = platform; } @Override @@ -36,6 +36,6 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate { BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); stages.forEach(biomePipelineBuilder::addStage); BiomePipeline pipeline = biomePipelineBuilder.build(source); - return new BiomePipelineProvider(pipeline, main, resolution, blend, blendAmp); + return new BiomePipelineProvider(pipeline, platform, resolution, blend, blendAmp); } } diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java index 0db8bce20..d5ea2cee7 100644 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java +++ b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import java.util.function.Supplier; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -25,18 +25,18 @@ public class SingleBiomeProviderAddon extends TerraAddon { }; @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( PROVIDER_REGISTRY_KEY); providerRegistry.register("SINGLE", SingleBiomeProviderTemplate::new); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 408eb84f2..a488049cb 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolderLoader; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -23,30 +23,31 @@ import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; @Version("1.0.0") public class NoiseChunkGenerator3DAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", - pack -> new NoiseChunkGenerator3D(pack, main)); + pack -> new NoiseChunkGenerator3D(pack, + platform)); event.getPack() .applyLoader(SlantHolder.class, new SlantHolderLoader()) .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); }) - .failThrough(); + .failThrough(); - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); } }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index 599fe39be..680bb130b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.chunkgenerator.generation.generators; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; @@ -12,7 +14,6 @@ import java.util.Random; import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.base.Properties; import com.dfsek.terra.api.block.state.properties.enums.Direction; @@ -35,21 +36,21 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { private static final Logger logger = LoggerFactory.getLogger(NoiseChunkGenerator3D.class); private final ConfigPack configPack; - private final TerraPlugin main; + private final Platform platform; private final List generationStages = new ArrayList<>(); private final BlockState air; - public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { + public NoiseChunkGenerator3D(ConfigPack c, Platform platform) { this.configPack = c; - this.main = main; - this.air = main.getWorldHandle().air(); + this.platform = platform; + this.air = platform.getWorldHandle().air(); c.getStages().forEach(stage -> generationStages.add(stage.newInstance(c))); } @SuppressWarnings("try") - static void biomes(@NotNull World world, int chunkX, int chunkZ, @NotNull BiomeGrid biome, TerraPlugin main) { - try(ProfileFrame ignore = main.getProfiler().profile("biomes")) { + static void biomes(@NotNull World world, int chunkX, int chunkZ, @NotNull BiomeGrid biome, Platform platform) { + try(ProfileFrame ignore = platform.getProfiler().profile("biomes")) { int xOrig = (chunkX << 4); int zOrig = (chunkZ << 4); long seed = world.getSeed(); @@ -69,7 +70,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { @Override @SuppressWarnings("try") public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { - try(ProfileFrame ignore = main.getProfiler().profile("chunk_base_3d")) { + try(ProfileFrame ignore = platform.getProfiler().profile("chunk_base_3d")) { BiomeProvider grid = world.getBiomeProvider(); int xOrig = (chunkX << 4); @@ -129,7 +130,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { @Override public void generateBiomes(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome) { - biomes(world, chunkX, chunkZ, biome, main); + biomes(world, chunkX, chunkZ, biome, platform); } @Override @@ -143,8 +144,8 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { } @Override - public TerraPlugin getMain() { - return main; + public Platform getPlatform() { + return platform; } @Override diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java index 65ba69f3f..ff9ac1f2a 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.biome; import com.dfsek.terra.addons.biome.holder.PaletteHolder; import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -17,17 +17,17 @@ import com.dfsek.terra.api.inject.annotations.Inject; @Version("1.0.0") public class BiomeAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java index 4b7702d09..8dd3b65d2 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java @@ -5,7 +5,7 @@ import com.dfsek.tectonic.loading.TypeLoader; import java.util.function.Supplier; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; @@ -35,8 +35,8 @@ public class BiomeConfigType implements ConfigType { } @Override - public BiomeTemplate getTemplate(ConfigPack pack, TerraPlugin main) { - return new BiomeTemplate(pack, main); + public BiomeTemplate getTemplate(ConfigPack pack, Platform platform) { + return new BiomeTemplate(pack, platform); } @Override diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java index 8f791fd22..8fb31ebb1 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -14,7 +14,7 @@ public class BiomeFactory implements ConfigFactory { } @Override - public TerraBiome build(BiomeTemplate template, TerraPlugin main) { + public TerraBiome build(BiomeTemplate template, Platform platform) { UserDefinedGenerationSettings generator = new UserDefinedGenerationSettings(template.getNoiseEquation(), template.getElevationEquation(), template.getCarvingEquation(), template.getBiomeNoise(), diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java index 0d864b212..013b3cfc1 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.config.AbstractableTemplate; import com.dfsek.terra.api.config.ConfigPack; @@ -113,7 +113,7 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl private @Meta Map colors = new HashMap<>(); // Plain ol' map, so platforms can decide what to do with colors (if anything). - public BiomeTemplate(ConfigPack pack, TerraPlugin main) { + public BiomeTemplate(ConfigPack pack, Platform platform) { this.pack = pack; } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java index caeb9a4af..c6f7ed919 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java @@ -1,10 +1,11 @@ package com.dfsek.terra.addons.biome.command.biome; +import com.dfsek.terra.api.Platform; + import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -23,15 +24,15 @@ public class AsyncBiomeFinder implements Runnable { protected final int centerX; protected final int centerZ; protected final World world; - protected final TerraPlugin main; + protected final Platform platform; private final Consumer callback; protected int searchSize = 1; public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, - Consumer callback, TerraPlugin main) { + Consumer callback, Platform platform) { this.provider = provider; this.target = target; - this.main = main; + this.platform = platform; this.startRadius = startRadius; this.maxRadius = maxRadius; this.centerX = origin.getBlockX(); @@ -41,7 +42,7 @@ public class AsyncBiomeFinder implements Runnable { } public Vector3 finalizeVector(Vector3 orig) { - return orig.multiply(main.getTerraConfig().getBiomeSearchResolution()); + return orig.multiply(platform.getTerraConfig().getBiomeSearchResolution()); } @Override @@ -90,7 +91,7 @@ public class AsyncBiomeFinder implements Runnable { * @return TerraBiome at coordinates */ public boolean isValid(int x, int z, TerraBiome target) { - int res = main.getTerraConfig().getBiomeSearchResolution(); + int res = platform.getTerraConfig().getBiomeSearchResolution(); return getProvider().getBiome(x * res, z * res, world.getSeed()).equals(target); } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java index f7552502b..35497035e 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.biome.command.biome; import com.dfsek.terra.addons.biome.UserDefinedBiome; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Subcommand; @@ -24,7 +24,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; @PlayerCommand public class BiomeCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java index 1efd1cde8..4bdcdad0a 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java @@ -4,7 +4,7 @@ import java.util.Locale; import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; @@ -51,7 +51,7 @@ public class BiomeLocateCommand implements CommandTemplate { private boolean teleport; @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { @@ -59,7 +59,7 @@ public class BiomeLocateCommand implements CommandTemplate { Player player = (Player) sender; new Thread(new AsyncBiomeFinder(player.world().getBiomeProvider(), biome, - player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), + player.position().clone().multiply((1D / platform.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { sender.sendMessage( @@ -67,11 +67,11 @@ public class BiomeLocateCommand implements CommandTemplate { location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask( + platform.runPossiblyUnsafeTask( () -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } else sender.sendMessage("Unable to locate biome \"" + biome.getID() + "\""); - }, main), "Biome Location Thread").start(); + }, platform), "Biome Location Thread").start(); } } diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java index 555ec7e0b..9cd0cdbc9 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.biome.command.biome.arg; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome; public class BiomeArgumentParser implements ArgumentParser { @Inject - private TerraPlugin main; + private Platform platform; @Override public TerraBiome parse(CommandSender sender, String arg) { diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java index ccae24da1..6dc1baac9 100644 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java +++ b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.biome.command.biome.tab; import java.util.List; import java.util.stream.Collectors; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -13,7 +13,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome; public class BiomeTabCompleter implements TabCompleter { @Inject - private TerraPlugin main; + private Platform platform; @Override public List complete(CommandSender sender) { diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java index 41a6e1808..d0cad3be9 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.carver; +import com.dfsek.terra.api.Platform; + import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -11,7 +13,6 @@ import java.util.List; import java.util.Random; import com.dfsek.terra.addons.carver.carving.Worm; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.util.vector.Vector3; @@ -25,9 +26,9 @@ public class CarverCache { private final LoadingCache> cache; private final UserDefinedCarver carver; - public CarverCache(World w, TerraPlugin main, UserDefinedCarver carver) { + public CarverCache(World w, Platform platform, UserDefinedCarver carver) { this.carver = carver; - cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getCarverCacheSize()) + cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getCarverCacheSize()) .build(new CacheLoader<>() { @Override public List load(@NotNull Long key) { diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java index 32cba0c18..9af80f7aa 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java @@ -7,7 +7,7 @@ import com.dfsek.tectonic.exception.LoadException; import java.util.Arrays; import java.util.List; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.MathUtil; @@ -21,7 +21,7 @@ public class CarverFactory implements ConfigFactory radius = Arrays.asList(config.getRadMX(), config.getRadMY(), config.getRadMZ()); @@ -29,7 +29,7 @@ public class CarverFactory implements ConfigFactory shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time. - private final TerraPlugin main; + private final Platform platform; - public CavePopulator(TerraPlugin main) { - this.main = main; + public CavePopulator(Platform platform) { + this.platform = platform; } @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - try(ProfileFrame ignore = main.getProfiler().profile("carving")) { + try(ProfileFrame ignore = platform.getProfiler().profile("carving")) { Random random = PopulationUtil.getRandom(chunk); WorldConfig config = world.getConfig(); if(config.disableCarving()) return; @@ -40,7 +40,7 @@ public class CavePopulator implements GenerationStage, Chunkified { CarverTemplate template = c.getConfig(); Map shiftCandidate = new HashMap<>(); c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { - try(ProfileFrame ignored = main.getProfiler().profile("carving:" + c.getConfig().getID())) { + try(ProfileFrame ignored = platform.getProfiler().profile("carving:" + c.getConfig().getID())) { BlockState m = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); BlockType re = m.getBlockType(); switch(type) { diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java index 961c8b79c..bfac24cd1 100644 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java @@ -14,7 +14,7 @@ import java.util.function.BiConsumer; import com.dfsek.terra.addons.carver.carving.Carver; import com.dfsek.terra.addons.carver.carving.Worm; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.util.ConstantRange; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.vector.Vector3; @@ -34,13 +34,13 @@ public class UserDefinedCarver extends Carver { private final Expression zRad; private final Map cacheMap = new ConcurrentHashMap<>(); - private final TerraPlugin main; + private final Platform platform; private double step = 2; private Range recalc = new ConstantRange(8, 10); private double recalcMagnitude = 3; public UserDefinedCarver(Range height, Range length, double[] start, double[] mutate, List radii, Scope parent, long hash, - int topCut, int bottomCut, CarverTemplate config, TerraPlugin main) throws ParseException { + int topCut, int bottomCut, CarverTemplate config, Platform platform) throws ParseException { super(height.getMin(), height.getMax()); this.length = length; this.start = start; @@ -49,7 +49,7 @@ public class UserDefinedCarver extends Carver { this.topCut = topCut; this.bottomCut = bottomCut; this.config = config; - this.main = main; + this.platform = platform; Parser p = new Parser(); @@ -74,7 +74,7 @@ public class UserDefinedCarver extends Carver { @Override public void carve(int chunkX, int chunkZ, World w, BiConsumer consumer) { synchronized(cacheMap) { - CarverCache cache = cacheMap.computeIfAbsent(w.getSeed(), world -> new CarverCache(w, main, this)); + CarverCache cache = cacheMap.computeIfAbsent(w.getSeed(), world -> new CarverCache(w, platform, this)); int carvingRadius = getCarvingRadius(); for(int x = chunkX - carvingRadius; x <= chunkX + carvingRadius; x++) { for(int z = chunkZ - carvingRadius; z <= chunkZ + carvingRadius; z++) { diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java index 020d53bd9..0a64b1386 100644 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java @@ -8,9 +8,10 @@ import com.dfsek.terra.addons.feature.distributor.config.AndDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.OrDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.config.PointSetDistributorTemplate; +import com.dfsek.terra.addons.feature.distributor.config.YesDistributorTemplate; import com.dfsek.terra.addons.feature.distributor.util.Point; import com.dfsek.terra.addons.feature.distributor.util.PointTemplate; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -30,24 +31,26 @@ public class DistributorAddon extends TerraAddon { public static final TypeKey>> DISTRIBUTOR_TOKEN = new TypeKey<>() { }; @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry( DISTRIBUTOR_TOKEN); distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); distributorRegistry.register("AND", AndDistributorTemplate::new); distributorRegistry.register("OR", OrDistributorTemplate::new); + distributorRegistry.register("YES", YesDistributorTemplate::new); + distributorRegistry.register("NO", NoiseDistributorTemplate::new); event.getPack() .applyLoader(Point.class, PointTemplate::new); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java new file mode 100644 index 000000000..bafa1b50d --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import com.dfsek.terra.api.structure.feature.Distributor; + + +public class NoDistributorTemplate implements ObjectTemplate { + @Override + public Distributor get() { + return Distributor.no(); + } +} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java new file mode 100644 index 000000000..aacddc06f --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import com.dfsek.terra.api.structure.feature.Distributor; + + +public class YesDistributorTemplate implements ObjectTemplate { + @Override + public Distributor get() { + return Distributor.yes(); + } +} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java index 4fd10a62d..64568b40a 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.feature; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -15,14 +15,14 @@ import com.dfsek.terra.api.inject.annotations.Inject; @Author("Terra") public class FeatureAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 3)) - .failThrough(); + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 3)) + .failThrough(); } } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java index 7ba0f5e86..cb761e5e2 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.feature; import java.util.function.Supplier; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; @@ -23,7 +23,7 @@ public class FeatureConfigType implements ConfigType { } @Override - public FeatureTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + public FeatureTemplate getTemplate(ConfigPack pack, Platform platform) { return new FeatureTemplate(); } diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java index 121a196ec..7ad615929 100644 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java +++ b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java @@ -2,14 +2,14 @@ package com.dfsek.terra.addons.feature; import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.feature.Feature; public class FeatureFactory implements ConfigFactory { @Override - public Feature build(FeatureTemplate config, TerraPlugin main) throws LoadException { + public Feature build(FeatureTemplate config, Platform platform) throws LoadException { return new ConfiguredFeature(config.getStructures(), config.getStructureNoise(), config.getDistributor(), config.getLocator()); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java index a5a4453ff..142924e7b 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.flora; import com.dfsek.terra.addons.flora.config.BlockLayerTemplate; import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -17,17 +17,17 @@ import com.dfsek.terra.api.inject.annotations.Inject; @Version("0.1.0") public class FloraAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java index dad7aa6f3..1d1a2934c 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java @@ -2,14 +2,13 @@ package com.dfsek.terra.addons.flora; import java.util.function.Supplier; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.Flora; public class FloraConfigType implements ConfigType { @@ -23,7 +22,7 @@ public class FloraConfigType implements ConfigType { } @Override - public FloraTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + public FloraTemplate getTemplate(ConfigPack pack, Platform platform) { return new FloraTemplate(); } diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index 318a569ff..ce24a3672 100644 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -1,14 +1,14 @@ package com.dfsek.terra.addons.flora; import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.Structure; public class FloraFactory implements ConfigFactory { @Override - public TerraFlora build(FloraTemplate config, TerraPlugin main) { + public TerraFlora build(FloraTemplate config, Platform platform) { return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getRotatable(), config.getNoiseDistribution(), config.getID()); diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java index 4a0c369ed..bffc6a2d5 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.object.ObjectTemplate; import java.util.function.Supplier; import com.dfsek.terra.addons.feature.locator.config.AndLocatorTemplate; +import com.dfsek.terra.addons.feature.locator.config.Noise3DLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.NoiseLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.OrLocatorTemplate; import com.dfsek.terra.addons.feature.locator.config.PatternLocatorTemplate; @@ -18,7 +19,7 @@ import com.dfsek.terra.addons.feature.locator.config.pattern.OrPatternTemplate; import com.dfsek.terra.addons.feature.locator.config.pattern.SingleBlockMatchPatternTemplate; import com.dfsek.terra.addons.feature.locator.config.pattern.SolidMatchPatternTemplate; import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -41,24 +42,25 @@ public class LocatorAddon extends TerraAddon { public static final TypeKey>> PATTERN_TOKEN = new TypeKey<>() { }; @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); - locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(main)); + locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(platform)); locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); locatorRegistry.register("NOISE", NoiseLocatorTemplate::new); + locatorRegistry.register("NOISE_3D", Noise3DLocatorTemplate::new); locatorRegistry.register("AND", AndLocatorTemplate::new); locatorRegistry.register("OR", OrLocatorTemplate::new); }) - .then(event -> { + .then(event -> { CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); patternRegistry.register("MATCH_AIR", AirMatchPatternTemplate::new); patternRegistry.register("MATCH_SOLID", SolidMatchPatternTemplate::new); @@ -69,6 +71,6 @@ public class LocatorAddon extends TerraAddon { patternRegistry.register("OR", OrPatternTemplate::new); patternRegistry.register("NOT", NotPatternTemplate::new); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java new file mode 100644 index 000000000..2a61e39dd --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.feature.locator.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + +import com.dfsek.terra.addons.feature.locator.locators.Noise3DLocator; +import com.dfsek.terra.api.config.meta.Meta; +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.feature.Locator; + + +public class Noise3DLocatorTemplate implements ObjectTemplate { + @Value("sampler") + private @Meta NoiseSampler sampler; + + @Override + public Locator get() { + return new Noise3DLocator(sampler); + } +} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java index 2fb6cd3e3..fce147df8 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java @@ -4,24 +4,24 @@ import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.meta.Meta; import com.dfsek.terra.api.structure.feature.Locator; import com.dfsek.terra.api.util.Range; public class SurfaceLocatorTemplate implements ObjectTemplate { - private final TerraPlugin main; + private final Platform platform; @Value("range") private @Meta Range range; - public SurfaceLocatorTemplate(TerraPlugin main) { - this.main = main; + public SurfaceLocatorTemplate(Platform platform) { + this.platform = platform; } @Override public Locator get() { - return new SurfaceLocator(range, main); + return new SurfaceLocator(range, platform); } } diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java new file mode 100644 index 000000000..571a33aa6 --- /dev/null +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java @@ -0,0 +1,27 @@ +package com.dfsek.terra.addons.feature.locator.locators; + +import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.structure.feature.BinaryColumn; +import com.dfsek.terra.api.structure.feature.Locator; +import com.dfsek.terra.api.world.Column; + + +public class Noise3DLocator implements Locator { + private final NoiseSampler sampler; + + public Noise3DLocator(NoiseSampler sampler) { + this.sampler = sampler; + } + + @Override + public BinaryColumn getSuitableCoordinates(Column column) { + BinaryColumn results = column.newBinaryColumn(); + long seed = column.getWorld().getSeed(); + int x = column.getX(); + int z = column.getZ(); + column.forEach(y -> { + if(sampler.getNoiseSeeded(seed, x, y, z) > 0) results.set(y); + }); + return results; + } +} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java index 79810c8a3..942d45236 100644 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.feature.locator.locators; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.structure.feature.Locator; @@ -13,9 +13,9 @@ public class SurfaceLocator implements Locator { private final BlockState air; - public SurfaceLocator(Range search, TerraPlugin main) { + public SurfaceLocator(Range search, Platform platform) { this.search = search; - this.air = main.getWorldHandle().air(); + this.air = platform.getWorldHandle().air(); } @Override diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 1c17165d7..6b0535a9a 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -30,7 +30,7 @@ import com.dfsek.terra.addons.noise.samplers.noise.simplex.PerlinSampler; import com.dfsek.terra.addons.noise.samplers.noise.simplex.SimplexSampler; import com.dfsek.terra.addons.noise.samplers.noise.value.ValueCubicSampler; import com.dfsek.terra.addons.noise.samplers.noise.value.ValueSampler; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -50,7 +50,7 @@ public class NoiseAddon extends TerraAddon { public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { }; @Inject - private TerraPlugin plugin; + private Platform plugin; @Override public void initialize() { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java index 6ac6520c7..c5ed8ea3e 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java @@ -334,36 +334,21 @@ public class CellularSampler extends NoiseFunction { } } - switch(returnType) { - case CellValue: - return closestHash * (1 / 2147483648.0); - case Distance: - return distance0 - 1; - case Distance2: - return distance1 - 1; - case Distance2Add: - return (distance1 + distance0) * 0.5 - 1; - case Distance2Sub: - return distance1 - distance0 - 1; - case Distance2Mul: - return distance1 * distance0 * 0.5 - 1; - case Distance2Div: - return distance0 / distance1 - 1; - case NoiseLookup: - return noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ()); - case Distance3: - return distance2 - 1; - case Distance3Add: - return (distance2 + distance0) * 0.5 - 1; - case Distance3Sub: - return distance2 - distance0 - 1; - case Distance3Mul: - return distance2 * distance0 - 1; - case Distance3Div: - return distance0 / distance2 - 1; - default: - return 0; - } + return switch(returnType) { + case CellValue -> closestHash * (1 / 2147483648.0); + case Distance -> distance0 - 1; + case Distance2 -> distance1 - 1; + case Distance2Add -> (distance1 + distance0) * 0.5 - 1; + case Distance2Sub -> distance1 - distance0 - 1; + case Distance2Mul -> distance1 * distance0 * 0.5 - 1; + case Distance2Div -> distance0 / distance1 - 1; + case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ()); + case Distance3 -> distance2 - 1; + case Distance3Add -> (distance2 + distance0) * 0.5 - 1; + case Distance3Sub -> distance2 - distance0 - 1; + case Distance3Mul -> distance2 * distance0 - 1; + case Distance3Div -> distance0 / distance2 - 1; + }; } @Override @@ -509,36 +494,21 @@ public class CellularSampler extends NoiseFunction { } } - switch(returnType) { - case CellValue: - return closestHash * (1 / 2147483648.0); - case Distance: - return distance0 - 1; - case Distance2: - return distance1 - 1; - case Distance2Add: - return (distance1 + distance0) * 0.5 - 1; - case Distance2Sub: - return distance1 - distance0 - 1; - case Distance2Mul: - return distance1 * distance0 * 0.5 - 1; - case Distance2Div: - return distance0 / distance1 - 1; - case NoiseLookup: - return noiseLookup.getNoiseSeeded(sl, center.getX(), center.getY(), center.getZ()); - case Distance3: - return distance2 - 1; - case Distance3Add: - return (distance2 + distance0) * 0.5 - 1; - case Distance3Sub: - return distance2 - distance0 - 1; - case Distance3Mul: - return distance2 * distance0 - 1; - case Distance3Div: - return distance0 / distance2 - 1; - default: - return 0; - } + return switch(returnType) { + case CellValue -> closestHash * (1 / 2147483648.0); + case Distance -> distance0 - 1; + case Distance2 -> distance1 - 1; + case Distance2Add -> (distance1 + distance0) * 0.5 - 1; + case Distance2Sub -> distance1 - distance0 - 1; + case Distance2Mul -> distance1 * distance0 * 0.5 - 1; + case Distance2Div -> distance0 / distance1 - 1; + case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getY(), center.getZ()); + case Distance3 -> distance2 - 1; + case Distance3Add -> (distance2 + distance0) * 0.5 - 1; + case Distance3Sub -> distance2 - distance0 - 1; + case Distance3Mul -> distance2 * distance0 - 1; + case Distance3Div -> distance0 / distance2 - 1; + }; } public enum DistanceFunction { diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java index d91193d92..a07d2cd74 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java @@ -34,6 +34,7 @@ POSSIBILITY OF SUCH DAMAGE. package com.dfsek.terra.addons.noise.util; import java.io.Serializable; +import java.util.Arrays; import java.util.NoSuchElementException; @@ -67,8 +68,8 @@ public class HashMapDoubleDouble extends HashIntrinsic { } public boolean containsValue(double value) { - for(int i = 0; i < this.table.length; ++i) { - for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { + for(Entry entry : this.table) { + for(Entry e = entry; e != null; e = e.next) { if(value == e.value) { return true; } @@ -144,15 +145,13 @@ public class HashMapDoubleDouble extends HashIntrinsic { } public void clear() { - for(int i = 0; i < this.table.length; ++i) { - this.table[i] = null; - } + Arrays.fill(this.table, null); this.size = 0; } public long memoryEstimate(int ptrsize) { - return (long) ptrsize * (long) (this.capMinus1 + this.size + 1) + (long) (this.size * 64 / 4); + return (long) ptrsize * (long) (this.capMinus1 + this.size + 1) + (this.size * 64L / 4); } public HashMapDoubleDouble.Iterator iterator() { diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java index 069c3bbfb..4784f8686 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.ore; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -16,17 +16,17 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Version("1.0.0") public class OreAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main)); + event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(platform)); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java index 52897d14c..1719368c2 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.ore; import java.util.function.Supplier; import com.dfsek.terra.addons.ore.ores.Ore; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; @@ -22,7 +22,7 @@ public class OreConfigType implements ConfigType { } @Override - public OreTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + public OreTemplate getTemplate(ConfigPack pack, Platform platform) { return new OreTemplate(); } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java index ae83e74d0..283ca9f19 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java @@ -2,15 +2,15 @@ package com.dfsek.terra.addons.ore; import com.dfsek.terra.addons.ore.ores.Ore; import com.dfsek.terra.addons.ore.ores.VanillaOre; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigFactory; public class OreFactory implements ConfigFactory { @Override - public Ore build(OreTemplate config, TerraPlugin main) { + public Ore build(OreTemplate config, Platform platform) { BlockState m = config.getMaterial(); - return new VanillaOre(m, config.getReplaceable(), config.doPhysics(), config.getSize(), main, config.getMaterialOverrides()); + return new VanillaOre(m, config.getReplaceable(), config.doPhysics(), config.getSize(), platform, config.getMaterialOverrides()); } } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java index 8d1900765..7ca39e6c8 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java @@ -4,7 +4,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.PopulationUtil; import com.dfsek.terra.api.world.Chunk; @@ -14,16 +14,16 @@ import com.dfsek.terra.api.world.generator.GenerationStage; public class OrePopulator implements GenerationStage { - private final TerraPlugin main; + private final Platform platform; - public OrePopulator(TerraPlugin main) { - this.main = main; + public OrePopulator(Platform platform) { + this.platform = platform; } @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - try(ProfileFrame ignore = main.getProfiler().profile("ore")) { + try(ProfileFrame ignore = platform.getProfiler().profile("ore")) { if(world.getConfig().disableOres()) return; for(int cx = -1; cx <= 1; cx++) { diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java index fe318a12f..5c4014cba 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.ore.ores; import java.util.Map; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.collection.MaterialSet; @@ -17,13 +17,13 @@ public abstract class Ore { private final MaterialSet replaceable; private final boolean applyGravity; private final Map materials; - protected TerraPlugin main; + protected Platform platform; - public Ore(BlockState material, MaterialSet replaceable, boolean applyGravity, TerraPlugin main, Map materials) { + public Ore(BlockState material, MaterialSet replaceable, boolean applyGravity, Platform platform, Map materials) { this.material = material; this.replaceable = replaceable; this.applyGravity = applyGravity; - this.main = main; + this.platform = platform; this.materials = materials; } diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index c672e134c..78bcfc0a1 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.ore.ores; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import java.util.Map; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.Range; @@ -17,9 +18,9 @@ import com.dfsek.terra.api.world.Chunk; public class VanillaOre extends Ore { private final Range sizeRange; - public VanillaOre(BlockState material, MaterialSet replaceable, boolean applyGravity, Range size, TerraPlugin main, + public VanillaOre(BlockState material, MaterialSet replaceable, boolean applyGravity, Range size, Platform platform, Map materials) { - super(material, replaceable, applyGravity, main, materials); + super(material, replaceable, applyGravity, platform, materials); this.sizeRange = size; } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java index 013664a28..358196707 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java @@ -2,7 +2,7 @@ package com.dfsek.terra.addons.palette; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; import com.dfsek.terra.addons.palette.palette.PaletteLayerLoader; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -17,17 +17,17 @@ import com.dfsek.terra.api.inject.annotations.Inject; @Version("1.0.0") public class PaletteAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new PaletteConfigType(main), "PALETTE", 2); + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + event.getPack().registerConfigType(new PaletteConfigType(platform), "PALETTE", 2); event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java index 59dc7a9c5..37e7e934e 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java @@ -6,7 +6,7 @@ import com.dfsek.tectonic.loading.TypeLoader; import java.util.function.Supplier; import com.dfsek.terra.addons.palette.palette.PaletteImpl; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; @@ -19,10 +19,10 @@ public class PaletteConfigType implements ConfigType { public static final TypeKey PALETTE_TYPE_TOKEN = new TypeKey<>() { }; private final PaletteFactory factory = new PaletteFactory(); - private final TerraPlugin main; + private final Platform platform; - public PaletteConfigType(TerraPlugin main) { - this.main = main; + public PaletteConfigType(Platform platform) { + this.platform = platform; } @Override @@ -30,7 +30,7 @@ public class PaletteConfigType implements ConfigType { return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { if(((String) c).startsWith("BLOCK:")) return new PaletteImpl.Singleton( - main.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. + platform.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. Palette obj = registry.get((String) c); if(obj == null) throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); @@ -39,7 +39,7 @@ public class PaletteConfigType implements ConfigType { } @Override - public PaletteTemplate getTemplate(ConfigPack pack, TerraPlugin main) { + public PaletteTemplate getTemplate(ConfigPack pack, Platform platform) { return new PaletteTemplate(); } diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java index 694246491..3b66f8b22 100644 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java @@ -2,14 +2,14 @@ package com.dfsek.terra.addons.palette; import com.dfsek.terra.addons.palette.palette.NoisePalette; import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.generator.Palette; public class PaletteFactory implements ConfigFactory { @Override - public Palette build(PaletteTemplate config, TerraPlugin main) { + public Palette build(PaletteTemplate config, Platform platform) { NoisePalette palette = new NoisePalette(config.getNoise()); for(PaletteLayerHolder layer : config.getPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java index 6e8dc11b4..0e1f46aca 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.structure; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -16,14 +16,14 @@ import com.dfsek.terra.api.structure.configured.ConfiguredStructure; @Author("Terra") public class StructureAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)) - .failThrough(); + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)) + .failThrough(); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java index 314bc0cb9..6989429dc 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java @@ -1,13 +1,13 @@ package com.dfsek.terra.addons.structure; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; public class StructureFactory implements ConfigFactory { @Override - public ConfiguredStructure build(StructureTemplate config, TerraPlugin main) { + public ConfiguredStructure build(StructureTemplate config, Platform platform) { return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn()); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java index fd0ad5a32..ca0ff0b65 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java @@ -1,11 +1,12 @@ package com.dfsek.terra.addons.structure; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; @@ -20,16 +21,16 @@ import com.dfsek.terra.api.world.generator.GenerationStage; public class StructurePopulator implements GenerationStage, Chunkified { - private final TerraPlugin main; + private final Platform platform; - public StructurePopulator(TerraPlugin main) { - this.main = main; + public StructurePopulator(Platform platform) { + this.platform = platform; } @SuppressWarnings("try") @Override public void populate(@NotNull World world, @NotNull Chunk chunk) { - try(ProfileFrame ignore = main.getProfiler().profile("structure")) { + try(ProfileFrame ignore = platform.getProfiler().profile("structure")) { if(world.getConfig().disableStructures()) return; int cx = (chunk.getX() << 4); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java index 06ac7d7d4..9cf44879e 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java @@ -1,10 +1,11 @@ package com.dfsek.terra.addons.structure.command; +import com.dfsek.terra.api.Platform; + import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.World; @@ -19,16 +20,16 @@ public class AsyncStructureFinder implements Runnable { protected final int centerX; protected final int centerZ; protected final World world; - protected final TerraPlugin main; + protected final Platform platform; private final Consumer callback; protected int searchSize = 1; public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, - int maxRadius, Consumer callback, TerraPlugin main) { + int maxRadius, Consumer callback, Platform platform) { //setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); this.provider = provider; this.target = target; - this.main = main; + this.platform = platform; this.startRadius = startRadius; this.maxRadius = maxRadius; this.centerX = origin.getBlockX(); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java index 7cba37dba..2601a8ff3 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java @@ -8,7 +8,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Sign; import com.dfsek.terra.api.block.state.BlockState; @@ -34,7 +34,7 @@ public class StructureExportCommand implements CommandTemplate { private static final Logger logger = LoggerFactory.getLogger(StructureExportCommand.class); @Inject - private TerraPlugin main; + private Platform platform; @ArgumentTarget("id") private String id; @@ -43,7 +43,7 @@ public class StructureExportCommand implements CommandTemplate { public void execute(CommandSender sender) { Player player = (Player) sender; - Pair area = main.getWorldHandle().getSelectedLocation(player); + Pair area = platform.getWorldHandle().getSelectedLocation(player); Vector3 firstCorner = area.getLeft(); Vector3 secondCorner = area.getRight(); @@ -78,7 +78,7 @@ public class StructureExportCommand implements CommandTemplate { BlockEntity state = player.world().getBlockState(x, y, z); if(state instanceof Sign sign) { if("[TERRA]".equals(sign.getLine(0))) { - data = main.getWorldHandle().createBlockData(sign.getLine(2) + sign.getLine(3)); + data = platform.getWorldHandle().createBlockData(sign.getLine(2) + sign.getLine(3)); } } if(!data.isStructureVoid()) { @@ -91,7 +91,7 @@ public class StructureExportCommand implements CommandTemplate { } } - File file = new File(main.getDataFolder() + File.separator + "export" + File.separator + "structures", id + ".tesf"); + File file = new File(platform.getDataFolder() + File.separator + "export" + File.separator + "structures", id + ".tesf"); try { file.getParentFile().mkdirs(); file.createNewFile(); diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java index 657929563..8b2c6e3f1 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java @@ -6,7 +6,7 @@ import java.util.concurrent.ThreadLocalRandom; 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.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; @@ -54,7 +54,7 @@ public class StructureLoadCommand implements CommandTemplate { private Structure script; @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java index 1266d403a..cede50303 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java @@ -5,7 +5,7 @@ import java.util.Locale; 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.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; import com.dfsek.terra.api.command.annotation.Command; @@ -42,7 +42,7 @@ import com.dfsek.terra.api.util.vector.Vector3; )) public class StructureLocateCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @ArgumentTarget("structure") private ConfiguredStructure structure; @@ -58,7 +58,7 @@ public class StructureLocateCommand implements CommandTemplate { Player player = (Player) sender; new Thread(new AsyncStructureFinder(player.world().getBiomeProvider(), structure, - player.position().clone().multiply((1D / main.getTerraConfig().getBiomeSearchResolution())), + player.position().clone().multiply((1D / platform.getTerraConfig().getBiomeSearchResolution())), player.world(), 0, radius, location -> { if(location != null) { sender.sendMessage( @@ -66,10 +66,10 @@ public class StructureLocateCommand implements CommandTemplate { location.getBlockX(), location.getBlockZ(), location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); if(teleport) { - main.runPossiblyUnsafeTask( + platform.runPossiblyUnsafeTask( () -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); } } //else LangUtil.send("command.biome.unable-to-locate", sender); - }, main), "Biome Location Thread").start(); + }, platform), "Biome Location Thread").start(); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java index 173b0e649..b1ca7e2e7 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.structure.command.structure.argument; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.structure.Structure; public class ScriptArgumentParser implements ArgumentParser { @Inject - private TerraPlugin main; + private Platform platform; @Override public Structure parse(CommandSender sender, String arg) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java index 3ae7f7b79..5c53464e7 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.structure.command.structure.argument; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.arg.ArgumentParser; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.structure.configured.ConfiguredStructure; public class StructureArgumentParser implements ArgumentParser { @Inject - private TerraPlugin main; + private Platform platform; @Override public ConfiguredStructure parse(CommandSender sender, String arg) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java index 0759bcb75..d48daf7a3 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.structure.command.structure.completer; import java.util.List; import java.util.stream.Collectors; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -13,7 +13,7 @@ import com.dfsek.terra.api.structure.Structure; public class ScriptCompleter implements TabCompleter { @Inject - private TerraPlugin main; + private Platform platform; @Override public List complete(CommandSender sender) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java index d19347a6a..d5b1feb7e 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.structure.command.structure.completer; import java.util.ArrayList; import java.util.List; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; @@ -13,7 +13,7 @@ import com.dfsek.terra.api.structure.configured.ConfiguredStructure; public class StructureCompleter implements TabCompleter { @Inject - private TerraPlugin main; + private Platform platform; @Override public List complete(CommandSender sender) { diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java index 4c207a0cf..c86959588 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.structure.structures.loot; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -12,7 +14,6 @@ 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.TerraPlugin; import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.ItemStack; @@ -30,9 +31,9 @@ public class Entry { * * @param entry The JSON Object to instantiate from. */ - public Entry(JSONObject entry, TerraPlugin main) { + public Entry(JSONObject entry, Platform platform) { String id = entry.get("name").toString(); - this.item = main.getItemHandle().createItem(id); + this.item = platform.getItemHandle().createItem(id); long weight1; try { @@ -45,8 +46,7 @@ public class Entry { if(entry.containsKey("functions")) { for(Object function : (JSONArray) entry.get("functions")) { switch(((String) ((JSONObject) function).get("function"))) { - case "minecraft:set_count": - case "set_count": + case "minecraft:set_count", "set_count" -> { Object loot = ((JSONObject) function).get("count"); long max, min; if(loot instanceof Long) { @@ -57,23 +57,21 @@ public class Entry { min = (long) ((JSONObject) loot).get("min"); } functions.add(new AmountFunction(FastMath.toIntExact(min), FastMath.toIntExact(max))); - break; - case "minecraft:set_damage": - case "set_damage": + } + case "minecraft:set_damage", "set_damage" -> { long maxDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("max"); long minDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("min"); functions.add(new DamageFunction(FastMath.toIntExact(minDamage), FastMath.toIntExact(maxDamage))); - break; - case "minecraft:enchant_with_levels": - case "enchant_with_levels": + } + case "minecraft:enchant_with_levels", "enchant_with_levels" -> { long maxEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("max"); long minEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("min"); JSONArray disabled = null; if(((JSONObject) function).containsKey("disabled_enchants")) disabled = (JSONArray) ((JSONObject) function).get("disabled_enchants"); functions.add( - new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, main)); - break; + new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, platform)); + } } } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java index d5d4ecaad..f32349a43 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.inventory.Inventory; import com.dfsek.terra.api.inventory.ItemStack; @@ -27,12 +27,12 @@ public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { * * @throws ParseException if malformed JSON is passed. */ - public LootTableImpl(String json, TerraPlugin main) throws ParseException { + public LootTableImpl(String json, Platform platform) throws ParseException { JSONParser jsonParser = new JSONParser(); Object tableJSON = jsonParser.parse(json); JSONArray poolArray = (JSONArray) ((JSONObject) tableJSON).get("pools"); for(Object pool : poolArray) { - pools.add(new Pool((JSONObject) pool, main)); + pools.add(new Pool((JSONObject) pool, platform)); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java index e74fd5f6f..22473a722 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.structure.structures.loot; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -8,7 +10,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.util.collection.ProbabilityCollection; @@ -26,7 +27,7 @@ public class Pool { * * @param pool The JSON Object to instantiate from. */ - public Pool(JSONObject pool, TerraPlugin main) { + public Pool(JSONObject pool, Platform platform) { entries = new ProbabilityCollection<>(); Object amount = pool.get("rolls"); if(amount instanceof Long) { @@ -38,7 +39,7 @@ public class Pool { } for(Object entryJSON : (JSONArray) pool.get("entries")) { - Entry entry = new Entry((JSONObject) entryJSON, main); + Entry entry = new Entry((JSONObject) entryJSON, platform); entries.add(entry, FastMath.toIntExact(entry.getWeight())); } } diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java index d1835c0c6..6dbd6d68d 100644 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java +++ b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.structure.structures.loot.functions; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import org.json.simple.JSONArray; import org.slf4j.Logger; @@ -10,7 +12,6 @@ import java.util.Collections; import java.util.List; import java.util.Random; -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; @@ -22,14 +23,14 @@ public class EnchantFunction implements LootFunction { private final int min; private final int max; private final JSONArray disabled; - private final TerraPlugin main; + private final Platform platform; - public EnchantFunction(int min, int max, JSONArray disabled, TerraPlugin main) { + public EnchantFunction(int min, int max, JSONArray disabled, Platform platform) { this.max = max; this.min = min; this.disabled = disabled; - this.main = main; + this.platform = platform; } /** @@ -46,7 +47,7 @@ public class EnchantFunction implements LootFunction { double enchant = (r.nextDouble() * (max - min)) + min; List possible = new ArrayList<>(); - for(Enchantment ench : main.getItemHandle().getEnchantments()) { + for(Enchantment ench : platform.getItemHandle().getEnchantments()) { if(ench.canEnchantItem(original) && (disabled == null || !this.disabled.contains(ench.getID()))) { possible.add(ench); } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java index 031d7eb78..9acdab106 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java @@ -1,9 +1,12 @@ package com.dfsek.terra.addons.generation.feature; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.structure.feature.BinaryColumn; import com.dfsek.terra.api.world.Column; import com.dfsek.terra.api.world.World; +import java.util.function.IntConsumer; + public class ColumnImpl implements Column { private final int x; @@ -45,4 +48,16 @@ public class ColumnImpl implements Column { public int getMaxY() { return world.getMaxHeight(); } + + @Override + public void forEach(IntConsumer function) { + for(int y = world.getMinHeight(); y < world.getMaxHeight(); y++) { + function.accept(y); + } + } + + @Override + public BinaryColumn newBinaryColumn() { + return new BinaryColumn(getMinY(), getMaxY()); + } } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java index 9513f32a5..8016a58c0 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.generation.feature; import com.dfsek.terra.addons.generation.feature.config.BiomeFeaturesTemplate; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -19,26 +19,26 @@ import com.dfsek.terra.api.world.generator.GenerationStageProvider; @Author("Terra") public class FeatureGenerationAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack() + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack() .getOrCreateRegistry(GenerationStageProvider.class) - .register("FEATURE", pack -> new FeatureGenerationStage(main))) - .failThrough(); + .register("FEATURE", pack -> new FeatureGenerationStage(platform))) + .failThrough(); - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigurationLoadEvent.class) + .then(event -> { if(event.is(TerraBiome.class)) { event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); } }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java index 9c2c54433..0b03ef29e 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java @@ -1,7 +1,7 @@ package com.dfsek.terra.addons.generation.feature; import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.util.PopulationUtil; @@ -12,16 +12,16 @@ import com.dfsek.terra.api.world.generator.GenerationStage; public class FeatureGenerationStage implements GenerationStage { - private final TerraPlugin main; + private final Platform platform; - public FeatureGenerationStage(TerraPlugin main) { - this.main = main; + public FeatureGenerationStage(Platform platform) { + this.platform = platform; } @Override @SuppressWarnings("try") public void populate(World world, Chunk chunk) { - try(ProfileFrame ignore = main.getProfiler().profile("feature")) { + try(ProfileFrame ignore = platform.getProfiler().profile("feature")) { int cx = chunk.getX() << 4; int cz = chunk.getZ() << 4; long seed = world.getSeed(); diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java index cf7c277a6..2b98dbb7d 100644 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.yaml.YamlConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -21,17 +21,17 @@ public class YamlAddon extends TerraAddon { private static final Logger logger = LoggerFactory.getLogger(YamlAddon.class); @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() + platform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(this, ConfigurationDiscoveryEvent.class) .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { logger.info("Discovered config {}", entry.getKey()); event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); }))) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index b56ba6c77..dcf77e4a7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -7,7 +7,7 @@ import java.util.Map; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -25,20 +25,20 @@ import com.dfsek.terra.api.structure.Structure; @Version("1.0.0") public class TerraScriptAddon extends TerraAddon { @Inject - private TerraPlugin main; + private Platform platform; @Override public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { for(Map.Entry entry : entries) { try { - StructureScript structureScript = new StructureScript(entry.getValue(), main, structureRegistry, lootRegistry, + StructureScript structureScript = new StructureScript(entry.getValue(), platform, structureRegistry, lootRegistry, event.getPack().getRegistryFactory().create()); structureRegistry.register(structureScript.getID(), structureScript); } catch(ParseException e) { @@ -47,6 +47,6 @@ public class TerraScriptAddon extends TerraAddon { } }).close(); }) - .failThrough(); + .failThrough(); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java index acc57f0c7..29e447038 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.terrascript.buffer.items; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.base.Properties; import com.dfsek.terra.api.structure.buffer.BufferedItem; @@ -16,13 +16,13 @@ public class BufferedBlock implements BufferedItem { private final BlockState data; private final boolean overwrite; - private final TerraPlugin main; + private final Platform platform; private final boolean waterlog; - public BufferedBlock(BlockState data, boolean overwrite, TerraPlugin main, boolean waterlog) { + public BufferedBlock(BlockState data, boolean overwrite, Platform platform, boolean waterlog) { this.data = data; this.overwrite = overwrite; - this.main = main; + this.platform = platform; this.waterlog = waterlog; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java index 71fcedeab..7676c088f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addons.terrascript.buffer.items; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; @@ -12,16 +12,16 @@ import com.dfsek.terra.api.world.World; public class BufferedEntity implements BufferedItem { private final EntityType type; - private final TerraPlugin main; + private final Platform platform; - public BufferedEntity(EntityType type, TerraPlugin main) { + public BufferedEntity(EntityType type, Platform platform) { this.type = type; - this.main = main; + this.platform = platform; } @Override public void paste(Vector3 origin, World world) { Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5), type); - main.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getConfig().getPack(), entity)); + platform.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getConfig().getPack(), entity)); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java index 6616c1159..a3ba34b33 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import java.util.Random; import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Container; import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; @@ -20,12 +20,12 @@ public class BufferedLootApplication implements BufferedItem { private static final Logger logger = LoggerFactory.getLogger(BufferedLootApplication.class); private final LootTable table; - private final TerraPlugin main; + private final Platform platform; private final StructureScript structure; - public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) { + public BufferedLootApplication(LootTable table, Platform platform, StructureScript structure) { this.table = table; - this.main = main; + this.platform = platform; this.structure = structure; } @@ -39,7 +39,7 @@ public class BufferedLootApplication implements BufferedItem { } LootPopulateEvent event = new LootPopulateEvent(container, table, world.getConfig().getPack(), structure); - main.getEventManager().callEvent(event); + platform.getEventManager().callEvent(event); if(event.isCancelled()) return; event.getTable().fillInventory(container.getInventory(), new Random(origin.hashCode())); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java index ad5456ac0..08b0edab7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.terrascript.buffer.items; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.util.vector.Vector3; @@ -13,11 +13,11 @@ import com.dfsek.terra.api.world.World; public class BufferedStateManipulator implements BufferedItem { private static final Logger logger = LoggerFactory.getLogger(BufferedStateManipulator.class); - private final TerraPlugin main; + private final Platform platform; private final String data; - public BufferedStateManipulator(TerraPlugin main, String state) { - this.main = main; + public BufferedStateManipulator(Platform platform, String state) { + this.platform = platform; this.data = state; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index 4aeefabf0..68084fa7e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -98,17 +98,14 @@ public class Parser { ParserUtil.checkType(identifier, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP); ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); - - switch(identifier.getType()) { - case FOR_LOOP: - return parseForLoop(tokens, variableMap, identifier.getPosition()); - case IF_STATEMENT: - return parseIfStatement(tokens, variableMap, identifier.getPosition(), loop); - case WHILE_LOOP: - return parseWhileLoop(tokens, variableMap, identifier.getPosition()); - default: - throw new UnsupportedOperationException("Unknown keyword " + identifier.getContent() + ": " + identifier.getPosition()); - } + + return switch(identifier.getType()) { + case FOR_LOOP -> parseForLoop(tokens, variableMap, identifier.getPosition()); + case IF_STATEMENT -> parseIfStatement(tokens, variableMap, identifier.getPosition(), loop); + case WHILE_LOOP -> parseWhileLoop(tokens, variableMap, identifier.getPosition()); + default -> throw new UnsupportedOperationException( + "Unknown keyword " + identifier.getContent() + ": " + identifier.getPosition()); + }; } private WhileKeyword parseWhileLoop(Tokenizer tokens, Map variableMap, Position start) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java index 737efebcd..11f89a8e2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java @@ -90,17 +90,13 @@ public class ParserUtil { } public static Returnable.ReturnType getVariableReturnType(Token varToken) throws ParseException { - switch(varToken.getType()) { - case NUMBER_VARIABLE: - return Returnable.ReturnType.NUMBER; - case STRING_VARIABLE: - return Returnable.ReturnType.STRING; - case BOOLEAN_VARIABLE: - return Returnable.ReturnType.BOOLEAN; - default: - throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration", - varToken.getPosition()); - } + return switch(varToken.getType()) { + case NUMBER_VARIABLE -> Returnable.ReturnType.NUMBER; + case STRING_VARIABLE -> Returnable.ReturnType.STRING; + case BOOLEAN_VARIABLE -> Returnable.ReturnType.BOOLEAN; + default -> throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration", + varToken.getPosition()); + }; } public static boolean hasPrecedence(Token.Type first, Token.Type second) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java index 852ae5ee6..2040df1ac 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java @@ -9,17 +9,17 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public interface Function extends Returnable { - Function NULL = new Function() { + Function NULL = new Function<>() { @Override public ReturnType returnType() { return null; } - + @Override public Object apply(ImplementationArguments implementationArguments, Map> variableMap) { return null; } - + @Override public Position getPosition() { return null; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java index 5ded38fdd..90b93f84b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java @@ -33,15 +33,9 @@ public class Declaration implements Item { public T apply(ImplementationArguments implementationArguments, Map> variableMap) { T result = value.apply(implementationArguments, variableMap); switch(type) { - case NUMBER: - variableMap.put(identifier, new NumberVariable((Number) result, position)); - break; - case BOOLEAN: - variableMap.put(identifier, new BooleanVariable((Boolean) result, position)); - break; - case STRING: - variableMap.put(identifier, new StringVariable((String) result, position)); - break; + case NUMBER -> variableMap.put(identifier, new NumberVariable((Number) result, position)); + case BOOLEAN -> variableMap.put(identifier, new BooleanVariable((Boolean) result, position)); + case STRING -> variableMap.put(identifier, new StringVariable((String) result, position)); } return result; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 1432e936e..b885c47cb 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -38,7 +38,7 @@ import com.dfsek.terra.addons.terrascript.script.builders.UnaryBooleanFunctionBu import com.dfsek.terra.addons.terrascript.script.builders.UnaryNumberFunctionBuilder; import com.dfsek.terra.addons.terrascript.script.builders.UnaryStringFunctionBuilder; import com.dfsek.terra.addons.terrascript.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; @@ -56,10 +56,10 @@ public class StructureScript implements Structure { private final Block block; private final String id; private final Cache cache; - private final TerraPlugin main; + private final Platform platform; private String tempID; - public StructureScript(InputStream inputStream, TerraPlugin main, Registry registry, Registry lootRegistry, + public StructureScript(InputStream inputStream, Platform platform, Registry registry, Registry lootRegistry, Registry> functionRegistry) throws ParseException { Parser parser; try { @@ -71,20 +71,20 @@ public class StructureScript implements Structure { functionRegistry.forEach(parser::registerFunction); // Register registry functions. parser - .registerFunction("block", new BlockFunctionBuilder(main)) - .registerFunction("debugBlock", new BlockFunctionBuilder(main)) - .registerFunction("check", new CheckFunctionBuilder(main)) - .registerFunction("structure", new StructureFunctionBuilder(registry, main)) + .registerFunction("block", new BlockFunctionBuilder(platform)) + .registerFunction("debugBlock", new BlockFunctionBuilder(platform)) + .registerFunction("check", new CheckFunctionBuilder(platform)) + .registerFunction("structure", new StructureFunctionBuilder(registry, platform)) .registerFunction("randomInt", new RandomFunctionBuilder()) .registerFunction("recursions", new RecursionsFunctionBuilder()) .registerFunction("setMark", new SetMarkFunctionBuilder()) .registerFunction("getMark", new GetMarkFunctionBuilder()) - .registerFunction("pull", new PullFunctionBuilder(main)) - .registerFunction("loot", new LootFunctionBuilder(main, lootRegistry, this)) - .registerFunction("entity", new EntityFunctionBuilder(main)) - .registerFunction("getBiome", new BiomeFunctionBuilder(main)) + .registerFunction("pull", new PullFunctionBuilder(platform)) + .registerFunction("loot", new LootFunctionBuilder(platform, lootRegistry, this)) + .registerFunction("entity", new EntityFunctionBuilder(platform)) + .registerFunction("getBiome", new BiomeFunctionBuilder(platform)) .registerFunction("getBlock", new CheckBlockFunctionBuilder()) - .registerFunction("state", new StateFunctionBuilder(main)) + .registerFunction("state", new StateFunctionBuilder(platform)) .registerFunction("setWaterlog", new UnaryBooleanFunctionBuilder((waterlog, args) -> args.setWaterlog(waterlog))) .registerFunction("originX", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getX(), Returnable.ReturnType.NUMBER)) @@ -117,21 +117,21 @@ public class StructureScript implements Structure { .registerFunction("min", new BinaryNumberFunctionBuilder( (number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); - if(!main.getTerraConfig().isDebugScript()) { + if(!platform.getTerraConfig().isDebugScript()) { parser.ignoreFunction("debugBlock"); } block = parser.parse(); this.id = parser.getID(); tempID = id; - this.main = main; - this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); + this.platform = platform; + this.cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getStructureCache()).build(); } @Override @SuppressWarnings("try") public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { + try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_chunk:" + id)) { StructureBuffer buffer = computeBuffer(location, world, random, rotation); buffer.paste(location, chunk); return buffer.succeeded(); @@ -141,7 +141,7 @@ public class StructureScript implements Structure { @Override @SuppressWarnings("try") public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { + try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_recursive:" + id)) { return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); } } @@ -149,7 +149,7 @@ public class StructureScript implements Structure { @Override @SuppressWarnings("try") public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { + try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_direct:" + id)) { DirectBuffer buffer = new DirectBuffer(location, world); return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); } @@ -157,7 +157,7 @@ public class StructureScript implements Structure { @SuppressWarnings("try") public boolean test(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { + try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_test:" + id)) { StructureBuffer buffer = computeBuffer(location, world, random, rotation); return buffer.succeeded(); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java index f25a4a32f..2497db303 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java @@ -22,19 +22,19 @@ public class BinaryNumberFunctionBuilder implements FunctionBuilder build(List> argumentList, Position position) { - return new Function() { + return new Function<>() { @Override public ReturnType returnType() { return ReturnType.NUMBER; } - + @SuppressWarnings("unchecked") @Override public Number apply(ImplementationArguments implementationArguments, Map> variableMap) { return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), ((Returnable) argumentList.get(1)).apply(implementationArguments, variableMap)); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java index e340a2d9d..7b085b892 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java @@ -6,20 +6,20 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public class BiomeFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; - public BiomeFunctionBuilder(TerraPlugin main) { - this.main = main; + public BiomeFunctionBuilder(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") @Override public BiomeFunction build(List> argumentList, Position position) { - return new BiomeFunction(main, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + return new BiomeFunction(platform, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); } @@ -30,13 +30,9 @@ public class BiomeFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index f5e957499..543feb5a8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -9,14 +9,14 @@ import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public class BlockFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; - public BlockFunctionBuilder(TerraPlugin main) { - this.main = main; + public BlockFunctionBuilder(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") @@ -28,11 +28,11 @@ public class BlockFunctionBuilder implements FunctionBuilder { if(argumentList.get(3) instanceof StringConstant) { return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (StringConstant) argumentList.get(3), - booleanReturnable, main, position); + booleanReturnable, platform, position); } return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, - main, position); + platform, position); } @Override @@ -42,17 +42,11 @@ public class BlockFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - case 3: - return Returnable.ReturnType.STRING; - case 4: - return Returnable.ReturnType.BOOLEAN; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + case 3 -> Returnable.ReturnType.STRING; + case 4 -> Returnable.ReturnType.BOOLEAN; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java index 141372ef6..e86cc4388 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java @@ -23,13 +23,9 @@ public class CheckBlockFunctionBuilder implements FunctionBuilder Returnable.ReturnType.NUMBER; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java index e94febc9e..f6e3eae13 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java @@ -7,20 +7,20 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public class CheckFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; - public CheckFunctionBuilder(TerraPlugin main) { - this.main = main; + public CheckFunctionBuilder(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") @Override public CheckFunction build(List> argumentList, Position position) throws ParseException { - return new CheckFunction(main, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), + return new CheckFunction(platform, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); } @@ -31,13 +31,9 @@ public class CheckFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java index c65b000d2..43546ee17 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java @@ -7,21 +7,21 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public class EntityFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; - public EntityFunctionBuilder(TerraPlugin main) { - this.main = main; + public EntityFunctionBuilder(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") @Override public EntityFunction build(List> argumentList, Position position) throws ParseException { return new EntityFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); } @Override @@ -31,15 +31,10 @@ public class EntityFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - case 3: - return Returnable.ReturnType.STRING; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + case 3 -> Returnable.ReturnType.STRING; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java index aa1674cc0..3973390b7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java @@ -27,13 +27,9 @@ public class GetMarkFunctionBuilder implements FunctionBuilder @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java index dd4e2d9b5..619be08ab 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java @@ -7,18 +7,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.functions.LootFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; public class LootFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; private final Registry registry; private final StructureScript script; - public LootFunctionBuilder(TerraPlugin main, Registry registry, StructureScript script) { - this.main = main; + public LootFunctionBuilder(Platform platform, Registry registry, StructureScript script) { + this.platform = platform; this.registry = registry; this.script = script; } @@ -27,7 +27,7 @@ public class LootFunctionBuilder implements FunctionBuilder { @Override public LootFunction build(List> argumentList, Position position) { return new LootFunction(registry, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position, script); + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position, script); } @Override @@ -37,15 +37,10 @@ public class LootFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - case 3: - return Returnable.ReturnType.STRING; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + case 3 -> Returnable.ReturnType.STRING; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java index 520c5d083..7cdaf8935 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java @@ -7,21 +7,21 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public class PullFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; - public PullFunctionBuilder(TerraPlugin main) { - this.main = main; + public PullFunctionBuilder(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") @Override public PullFunction build(List> argumentList, Position position) throws ParseException { return new PullFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); } @Override @@ -31,15 +31,10 @@ public class PullFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - case 3: - return Returnable.ReturnType.STRING; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + case 3 -> Returnable.ReturnType.STRING; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java index 920cdfdc8..aaacf31ef 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java @@ -28,15 +28,10 @@ public class SetMarkFunctionBuilder implements FunctionBuilder @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - case 3: - return Returnable.ReturnType.STRING; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + case 3 -> Returnable.ReturnType.STRING; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java index e551f249e..e8f90bb77 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java @@ -7,14 +7,14 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public class StateFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; + private final Platform platform; - public StateFunctionBuilder(TerraPlugin main) { - this.main = main; + public StateFunctionBuilder(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") @@ -22,7 +22,7 @@ public class StateFunctionBuilder implements FunctionBuilder { public StateFunction build(List> argumentList, Position position) throws ParseException { if(argumentList.size() < 4) throw new ParseException("Expected data", position); return new StateFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), main, position); + (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); } @Override @@ -32,15 +32,10 @@ public class StateFunctionBuilder implements FunctionBuilder { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - case 1: - case 2: - return Returnable.ReturnType.NUMBER; - case 3: - return Returnable.ReturnType.STRING; - default: - return null; - } + return switch(position) { + case 0, 1, 2 -> Returnable.ReturnType.NUMBER; + case 3 -> Returnable.ReturnType.STRING; + default -> null; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java index f695c7351..51575849d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java @@ -8,18 +8,18 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.StructureFunction; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; public class StructureFunctionBuilder implements FunctionBuilder { private final Registry registry; - private final TerraPlugin main; + private final Platform platform; - public StructureFunctionBuilder(Registry registry, TerraPlugin main) { + public StructureFunctionBuilder(Registry registry, Platform platform) { this.registry = registry; - this.main = main; + this.platform = platform; } @SuppressWarnings("unchecked") @@ -30,7 +30,7 @@ public class StructureFunctionBuilder implements FunctionBuilder) argumentList.remove(0), (Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), argumentList.stream().map(item -> ((Returnable) item)).collect(Collectors.toList()), registry, - position, main); + position, platform); } @Override @@ -40,13 +40,9 @@ public class StructureFunctionBuilder implements FunctionBuilder Returnable.ReturnType.NUMBER; + default -> Returnable.ReturnType.STRING; + }; } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java index 16da09601..5e81ab78c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java @@ -23,12 +23,12 @@ public class UnaryBooleanFunctionBuilder implements FunctionBuilder build(List> argumentList, Position position) { - return new Function() { + return new Function<>() { @Override public ReturnType returnType() { return ReturnType.VOID; } - + @SuppressWarnings("unchecked") @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { @@ -36,7 +36,7 @@ public class UnaryBooleanFunctionBuilder implements FunctionBuilder build(List> argumentList, Position position) { - return new Function() { + return new Function<>() { @Override public ReturnType returnType() { return ReturnType.NUMBER; } - + @SuppressWarnings("unchecked") @Override public Number apply(ImplementationArguments implementationArguments, Map> variableMap) { return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap)); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java index 4989cdabe..729f4d345 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java @@ -21,19 +21,19 @@ public class UnaryStringFunctionBuilder implements FunctionBuilder build(List> argumentList, Position position) { - return new Function() { + return new Function<>() { @Override public ReturnType returnType() { return ReturnType.VOID; } - + @SuppressWarnings("unchecked") @Override public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { function.accept(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap)); return null; } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java index 05bfecfcd..4cb828d38 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java @@ -23,17 +23,17 @@ public class ZeroArgFunctionBuilder implements FunctionBuilder> { @Override public Function build(List> argumentList, Position position) { - return new Function() { + return new Function<>() { @Override public ReturnType returnType() { return type; } - + @Override public T apply(ImplementationArguments implementationArguments, Map> variableMap) { return function.apply((TerraImplementationArguments) implementationArguments); } - + @Override public Position getPosition() { return position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index 2dbc8c403..3619a02db 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import java.util.Map; @@ -10,7 +12,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; @@ -18,13 +19,13 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class BiomeFunction implements Function { - private final TerraPlugin main; + private final Platform platform; private final Returnable x, y, z; private final Position position; - public BiomeFunction(TerraPlugin main, Returnable x, Returnable y, Returnable z, Position position) { - this.main = main; + public BiomeFunction(Platform platform, Returnable x, Returnable y, Returnable z, Position position) { + this.platform = platform; this.x = x; this.y = y; this.z = z; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index 98ea50446..253d82093 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import java.util.HashMap; @@ -13,7 +15,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; @@ -23,19 +24,19 @@ import com.dfsek.terra.api.util.vector.Vector3; public class BlockFunction implements Function { protected final Returnable x, y, z; protected final Returnable blockData; - protected final TerraPlugin main; + protected final Platform platform; private final Map data = new HashMap<>(); private final Returnable overwrite; private final Position position; public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable blockData, - Returnable overwrite, TerraPlugin main, Position position) { + Returnable overwrite, Platform platform, Position position) { this.x = x; this.y = y; this.z = z; this.blockData = blockData; this.overwrite = overwrite; - this.main = main; + this.platform = platform; this.position = position; } @@ -66,13 +67,13 @@ public class BlockFunction implements Function { RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); arguments.getBuffer().addItem( - new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), main, arguments.isWaterlog()), + new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), platform, arguments.isWaterlog()), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()))); } protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { - return data.computeIfAbsent(blockData.apply(arguments, variableMap), main.getWorldHandle()::createBlockData); + return data.computeIfAbsent(blockData.apply(arguments, variableMap), platform.getWorldHandle()::createBlockData); } @@ -80,9 +81,9 @@ public class BlockFunction implements Function { private final BlockState state; public Constant(Returnable x, Returnable y, Returnable z, StringConstant blockData, - Returnable overwrite, TerraPlugin main, Position position) { - super(x, y, z, blockData, overwrite, main, position); - this.state = main.getWorldHandle().createBlockData(blockData.getConstant()); + Returnable overwrite, Platform platform, Position position) { + super(x, y, z, blockData, overwrite, platform, position); + this.state = platform.getWorldHandle().createBlockData(blockData.getConstant()); } @Override diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java index fbb4da5f8..b975fa990 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java @@ -10,7 +10,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; @@ -19,12 +19,12 @@ import com.dfsek.terra.api.world.generator.SamplerCache; public class CheckFunction implements Function { - private final TerraPlugin main; + private final Platform platform; private final Returnable x, y, z; private final Position position; - public CheckFunction(TerraPlugin main, Returnable x, Returnable y, Returnable z, Position position) { - this.main = main; + public CheckFunction(Platform platform, Returnable x, Returnable y, Returnable z, Position position) { + this.platform = platform; this.x = x; this.y = y; this.z = z; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index b552be9d1..420601b11 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -11,7 +11,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; @@ -22,15 +22,15 @@ public class EntityFunction implements Function { private final EntityType data; private final Returnable x, y, z; private final Position position; - private final TerraPlugin main; + private final Platform platform; - public EntityFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, + public EntityFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, Position position) throws ParseException { this.position = position; - this.main = main; + this.platform = platform; if(!(data instanceof ConstantExpression)) throw new ParseException("Entity data must be constant", data.getPosition()); - this.data = main.getWorldHandle().getEntity(((ConstantExpression) data).getConstant()); + this.data = platform.getWorldHandle().getEntity(((ConstantExpression) data).getConstant()); this.x = x; this.y = y; this.z = z; @@ -44,7 +44,7 @@ public class EntityFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedEntity(data, main), + arguments.getBuffer().addItem(new BufferedEntity(data, platform), new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); return null; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index 94aa26a37..dd5affc45 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -14,7 +14,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.util.RotationUtil; @@ -29,18 +29,18 @@ public class LootFunction implements Function { private final Returnable data; private final Returnable x, y, z; private final Position position; - private final TerraPlugin main; + private final Platform platform; private final StructureScript script; public LootFunction(Registry registry, Returnable x, Returnable y, Returnable z, - Returnable data, TerraPlugin main, Position position, StructureScript script) { + Returnable data, Platform platform, Position position, StructureScript script) { this.registry = registry; this.position = position; this.data = data; this.x = x; this.y = y; this.z = z; - this.main = main; + this.platform = platform; this.script = script; } @@ -60,7 +60,7 @@ public class LootFunction implements Function { return null; } - arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), + arguments.getBuffer().addItem(new BufferedLootApplication(table, platform, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index bb2f86962..8866c1edc 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -13,7 +13,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; @@ -25,12 +25,12 @@ public class PullFunction implements Function { private final Returnable x, y, z; private final Position position; - public PullFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, + public PullFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, Position position) throws ParseException { this.position = position; if(!(data instanceof ConstantExpression)) throw new ParseException("Block data must be constant", data.getPosition()); - this.data = main.getWorldHandle().createBlockData(((ConstantExpression) data).getConstant()); + this.data = platform.getWorldHandle().createBlockData(((ConstantExpression) data).getConstant()); this.x = x; this.y = y; this.z = z; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index c395a55b5..26bc53ed5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -11,7 +11,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; @@ -21,12 +21,12 @@ public class StateFunction implements Function { private final Returnable data; private final Returnable x, y, z; private final Position position; - private final TerraPlugin main; + private final Platform platform; - public StateFunction(Returnable x, Returnable y, Returnable z, Returnable data, TerraPlugin main, + public StateFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, Position position) { this.position = position; - this.main = main; + this.platform = platform; this.data = data; this.x = x; this.y = y; @@ -40,7 +40,7 @@ public class StateFunction implements Function { z.apply(implementationArguments, variableMap).doubleValue()); RotationUtil.rotateVector(xz, arguments.getRotation()); - arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments, variableMap)), + arguments.getBuffer().addItem(new BufferedStateManipulator(platform, data.apply(implementationArguments, variableMap)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ()))); return null; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index c0defae58..380146f21 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -14,7 +14,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.rotation.Rotation; @@ -30,18 +30,18 @@ public class StructureFunction implements Function { private final Returnable id; private final Returnable x, y, z; private final Position position; - private final TerraPlugin main; + private final Platform platform; private final List> rotations; public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, - List> rotations, Registry registry, Position position, TerraPlugin main) { + List> rotations, Registry registry, Position position, Platform platform) { this.registry = registry; this.id = id; this.position = position; this.x = x; this.y = y; this.z = z; - this.main = main; + this.platform = platform; this.rotations = rotations; } @@ -54,7 +54,7 @@ public class StructureFunction implements Function { public Boolean apply(ImplementationArguments implementationArguments, Map> variableMap) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - if(arguments.getRecursions() > main.getTerraConfig().getMaxRecursion()) + if(arguments.getRecursions() > platform.getTerraConfig().getMaxRecursion()) throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java index d5fa937e2..d9147d684 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java @@ -39,14 +39,11 @@ public class ParserTest { @Override public Returnable.ReturnType getArgument(int position) { - switch(position) { - case 0: - return Returnable.ReturnType.STRING; - case 1: - return Returnable.ReturnType.NUMBER; - default: - return null; - } + return switch(position) { + case 0 -> Returnable.ReturnType.STRING; + case 1 -> Returnable.ReturnType.NUMBER; + default -> null; + }; } }); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/TerraPlugin.java b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java similarity index 94% rename from common/api/core/src/main/java/com/dfsek/terra/api/TerraPlugin.java rename to common/api/core/src/main/java/com/dfsek/terra/api/Platform.java index 482a99d04..6d117ffff 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/TerraPlugin.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java @@ -18,7 +18,9 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar; /** * Represents a Terra mod/plugin instance. */ -public interface TerraPlugin extends LoaderRegistrar { +public interface Platform extends LoaderRegistrar { + Logger logger(); + boolean reload(); String platformName(); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java index 356f03814..8d6f0c5f1 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java @@ -1,13 +1,13 @@ package com.dfsek.terra.api.addon; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.CheckedRegistry; public interface AddonLoader { /** * Load all addons. - * @param main TerraPlugin instance. + * @param platform TerraPlugin instance. */ - void load(TerraPlugin main, CheckedRegistry addons); + void load(Platform platform, CheckedRegistry addons); } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index af5565485..2e7770b4f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -9,19 +9,19 @@ import com.dfsek.terra.api.util.generic.Lazy; public interface EnumProperty> extends Property { static > EnumProperty of(String name, Class clazz) { - return new EnumProperty() { + return new EnumProperty<>() { private final Lazy> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants())); - + @Override public Collection values() { return constants.value(); } - + @Override public Class getType() { return clazz; } - + @Override public String getName() { return name; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java index 4a3578bc9..091416781 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java @@ -28,32 +28,21 @@ public enum Direction { } public Direction rotate(Rotation rotation) { - switch(this) { - case UP: - case DOWN: - return this; - default: - return rotations[(this.rotation + rotation.getDegrees() / 90) % 4]; - } + return switch(this) { + case UP, DOWN -> this; + default -> rotations[(this.rotation + rotation.getDegrees() / 90) % 4]; + }; } public Direction opposite() { - switch(this) { - case DOWN: - return UP; - case UP: - return DOWN; - case EAST: - return WEST; - case WEST: - return EAST; - case NORTH: - return SOUTH; - case SOUTH: - return NORTH; - } - - throw new IllegalStateException(); + return switch(this) { + case DOWN -> UP; + case UP -> DOWN; + case EAST -> WEST; + case WEST -> EAST; + case NORTH -> SOUTH; + case SOUTH -> NORTH; + }; } public int getModX() { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java index d0648e9c9..533121bcf 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java @@ -3,9 +3,9 @@ package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public interface ConfigFactory { - O build(C config, TerraPlugin main) throws LoadException; + O build(C config, Platform platform) throws LoadException; } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 4384ba5a2..6598cb01f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -2,7 +2,7 @@ package com.dfsek.terra.api.config; import java.util.function.Supplier; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.util.reflection.TypeKey; @@ -10,7 +10,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey; public interface ConfigType { Supplier> registrySupplier(ConfigPack pack); - T getTemplate(ConfigPack pack, TerraPlugin main); + T getTemplate(ConfigPack pack, Platform platform); ConfigFactory getFactory(); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java index 62d242d3f..f661650e1 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.config; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; public interface PluginConfig { - void load(TerraPlugin main); + void load(Platform platform); boolean dumpDefaultConfig(); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java index cf878b65f..82629f469 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java @@ -10,4 +10,12 @@ public interface Distributor { default Distributor or(Distributor other) { return (x, z, seed) -> this.matches(x, z, seed) || other.matches(x, z, seed); } + + static Distributor yes() { + return (x, z, seed) -> true; + } + + static Distributor no() { + return (x, z, seed) -> false; + } } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java index 55fb7f9c9..685c565d2 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java @@ -16,33 +16,22 @@ public enum Rotation { } public static Rotation fromDegrees(int deg) { - switch(FastMath.floorMod(deg, 360)) { - case 0: - return Rotation.NONE; - case 90: - return Rotation.CW_90; - case 180: - return Rotation.CW_180; - case 270: - return Rotation.CCW_90; - default: - throw new IllegalArgumentException(); - } + return switch(FastMath.floorMod(deg, 360)) { + case 0 -> Rotation.NONE; + case 90 -> Rotation.CW_90; + case 180 -> Rotation.CW_180; + case 270 -> Rotation.CCW_90; + default -> throw new IllegalArgumentException(); + }; } public Rotation inverse() { - switch(this) { - case NONE: - return NONE; - case CCW_90: - return CW_90; - case CW_90: - return CCW_90; - case CW_180: - return CW_180; - default: - throw new IllegalArgumentException(); - } + return switch(this) { + case NONE -> NONE; + case CCW_90 -> CW_90; + case CW_90 -> CCW_90; + case CW_180 -> CW_180; + }; } public Rotation rotate(Rotation rotation) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 2e10ed31b..a216c32ba 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -23,15 +23,9 @@ public final class RotationUtil { public static void rotateVector(Vector2 orig, Rotation r) { Vector2 copy = orig.clone(); switch(r) { - case CW_90: - copy.setX(orig.getZ()).setZ(-orig.getX()); - break; - case CCW_90: - copy.setX(-orig.getZ()).setZ(orig.getX()); - break; - case CW_180: - copy.multiply(-1); - break; + case CW_90 -> copy.setX(orig.getZ()).setZ(-orig.getX()); + case CCW_90 -> copy.setX(-orig.getZ()).setZ(orig.getX()); + case CW_180 -> copy.multiply(-1); } orig.setX(copy.getX()); orig.setZ(copy.getZ()); @@ -64,74 +58,44 @@ public final class RotationUtil { public static RailShape getRotatedRail(RailShape orig, Rotation r) { switch(r) { case CCW_90: - switch(orig) { - case NORTH_WEST: - return RailShape.SOUTH_WEST; - case NORTH_SOUTH: - return RailShape.EAST_WEST; - case SOUTH_WEST: - return RailShape.SOUTH_EAST; - case SOUTH_EAST: - return RailShape.NORTH_EAST; - case EAST_WEST: - return RailShape.NORTH_SOUTH; - case NORTH_EAST: - return RailShape.NORTH_WEST; - case ASCENDING_EAST: - return RailShape.ASCENDING_NORTH; - case ASCENDING_WEST: - return RailShape.ASCENDING_SOUTH; - case ASCENDING_NORTH: - return RailShape.ASCENDING_WEST; - case ASCENDING_SOUTH: - return RailShape.ASCENDING_EAST; - } + return switch(orig) { + case NORTH_WEST -> RailShape.SOUTH_WEST; + case NORTH_SOUTH -> RailShape.EAST_WEST; + case SOUTH_WEST -> RailShape.SOUTH_EAST; + case SOUTH_EAST -> RailShape.NORTH_EAST; + case EAST_WEST -> RailShape.NORTH_SOUTH; + case NORTH_EAST -> RailShape.NORTH_WEST; + case ASCENDING_EAST -> RailShape.ASCENDING_NORTH; + case ASCENDING_WEST -> RailShape.ASCENDING_SOUTH; + case ASCENDING_NORTH -> RailShape.ASCENDING_WEST; + case ASCENDING_SOUTH -> RailShape.ASCENDING_EAST; + }; case CW_90: - switch(orig) { - case NORTH_WEST: - return RailShape.NORTH_EAST; - case NORTH_SOUTH: - return RailShape.EAST_WEST; - case SOUTH_WEST: - return RailShape.NORTH_WEST; - case SOUTH_EAST: - return RailShape.SOUTH_WEST; - case EAST_WEST: - return RailShape.NORTH_SOUTH; - case NORTH_EAST: - return RailShape.SOUTH_EAST; - case ASCENDING_EAST: - return RailShape.ASCENDING_SOUTH; - case ASCENDING_WEST: - return RailShape.ASCENDING_NORTH; - case ASCENDING_NORTH: - return RailShape.ASCENDING_EAST; - case ASCENDING_SOUTH: - return RailShape.ASCENDING_WEST; - } + return switch(orig) { + case NORTH_WEST -> RailShape.NORTH_EAST; + case NORTH_SOUTH -> RailShape.EAST_WEST; + case SOUTH_WEST -> RailShape.NORTH_WEST; + case SOUTH_EAST -> RailShape.SOUTH_WEST; + case EAST_WEST -> RailShape.NORTH_SOUTH; + case NORTH_EAST -> RailShape.SOUTH_EAST; + case ASCENDING_EAST -> RailShape.ASCENDING_SOUTH; + case ASCENDING_WEST -> RailShape.ASCENDING_NORTH; + case ASCENDING_NORTH -> RailShape.ASCENDING_EAST; + case ASCENDING_SOUTH -> RailShape.ASCENDING_WEST; + }; case CW_180: - switch(orig) { - case NORTH_WEST: - return RailShape.SOUTH_EAST; - case NORTH_SOUTH: - return RailShape.NORTH_SOUTH; - case SOUTH_WEST: - return RailShape.NORTH_EAST; - case SOUTH_EAST: - return RailShape.NORTH_WEST; - case EAST_WEST: - return RailShape.EAST_WEST; - case NORTH_EAST: - return RailShape.SOUTH_WEST; - case ASCENDING_EAST: - return RailShape.ASCENDING_WEST; - case ASCENDING_WEST: - return RailShape.ASCENDING_EAST; - case ASCENDING_NORTH: - return RailShape.ASCENDING_SOUTH; - case ASCENDING_SOUTH: - return RailShape.ASCENDING_NORTH; - } + return switch(orig) { + case NORTH_WEST -> RailShape.SOUTH_EAST; + case NORTH_SOUTH -> RailShape.NORTH_SOUTH; + case SOUTH_WEST -> RailShape.NORTH_EAST; + case SOUTH_EAST -> RailShape.NORTH_WEST; + case EAST_WEST -> RailShape.EAST_WEST; + case NORTH_EAST -> RailShape.SOUTH_WEST; + case ASCENDING_EAST -> RailShape.ASCENDING_WEST; + case ASCENDING_WEST -> RailShape.ASCENDING_EAST; + case ASCENDING_NORTH -> RailShape.ASCENDING_SOUTH; + case ASCENDING_SOUTH -> RailShape.ASCENDING_NORTH; + }; } return orig; } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java index dd70538a6..49a54e93f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java @@ -1,6 +1,9 @@ package com.dfsek.terra.api.world; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.structure.feature.BinaryColumn; + +import java.util.function.IntConsumer; /** @@ -18,4 +21,8 @@ public interface Column { int getMinY(); int getMaxY(); + + void forEach(IntConsumer function); + + BinaryColumn newBinaryColumn(); } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java index 080dcd726..a4788a986 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java @@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.util.vector.Vector3; @@ -24,7 +24,7 @@ public interface ChunkGenerator { ConfigPack getConfigPack(); - TerraPlugin getMain(); + Platform getPlatform(); List getGenerationStages(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java rename to common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 8f23509bd..e1b968cbc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractTerraPlugin.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -1,6 +1,9 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; + +import com.dfsek.terra.api.Platform; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; @@ -18,7 +21,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; @@ -43,12 +45,12 @@ import com.dfsek.terra.registry.master.ConfigRegistry; /** - * Skeleton implementation of {@link TerraPlugin} + * Skeleton implementation of {@link Platform} *

* Implementations must invoke {@link #load()} in their constructors. */ -public abstract class AbstractTerraPlugin implements TerraPlugin { - private static final Logger logger = LoggerFactory.getLogger(AbstractTerraPlugin.class); +public abstract class AbstractPlatform implements Platform { + private static final Logger logger = LoggerFactory.getLogger(AbstractPlatform.class); private static final MutableBoolean LOADED = new MutableBoolean(false); private final EventManager eventManager = new EventManagerImpl(this); diff --git a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java index 983a4723d..53d49b72f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java +++ b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java @@ -15,11 +15,10 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; @Author("Terra") @Version("1.0.0") public class InternalAddon extends TerraAddon { + private final AbstractPlatform main; private static final Logger logger = LoggerFactory.getLogger(InternalAddon.class); - private final AbstractTerraPlugin main; - - public InternalAddon(AbstractTerraPlugin main) { + public InternalAddon(AbstractPlatform main) { this.main = main; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java index 53b1053af..50387d83f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.commands; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.entity.CommandSender; @@ -12,12 +12,12 @@ import com.dfsek.terra.api.inject.annotations.Inject; ) public class AddonsCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { sender.sendMessage("Installed Addons:"); - main.getAddons().forEach(addon -> { + platform.getAddons().forEach(addon -> { sender.sendMessage(" - " + addon.getName() + " v" + addon.getVersion() + " by " + addon.getAuthor()); }); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index ac2b671fb..2dae44768 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.commands; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; @@ -19,7 +19,7 @@ import com.dfsek.terra.api.inject.annotations.Inject; ) public class GetBlockCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { 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 0e7a77f9d..1fc666331 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 @@ -1,6 +1,6 @@ package com.dfsek.terra.commands; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.config.ConfigPack; @@ -15,11 +15,11 @@ import com.dfsek.terra.config.lang.LangUtil; ) public class PacksCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { - CheckedRegistry registry = main.getConfigRegistry(); + CheckedRegistry registry = platform.getConfigRegistry(); if(registry.entries().isEmpty()) { LangUtil.send("command.packs.none", sender); @@ -27,8 +27,6 @@ public class PacksCommand implements CommandTemplate { } LangUtil.send("command.packs.main", sender); - registry.entries().forEach(entry -> { - LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion()); - }); + registry.entries().forEach(entry -> LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion())); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java index e58ef0e94..cd4727c4c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java @@ -3,7 +3,7 @@ package com.dfsek.terra.commands; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.entity.CommandSender; @@ -18,12 +18,12 @@ public class ReloadCommand implements CommandTemplate { private static final Logger logger = LoggerFactory.getLogger(ReloadCommand.class); @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { logger.info("Reloading Terra..."); - if(main.reload()) { + if(platform.reload()) { logger.info("Terra reloaded successfully."); LangUtil.send("command.reload", sender); } else { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 1d3cd6125..e12518106 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -1,5 +1,7 @@ package com.dfsek.terra.commands; +import com.dfsek.terra.api.Platform; + import net.jafama.FastMath; import java.lang.reflect.Field; @@ -12,7 +14,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -40,13 +41,13 @@ import com.dfsek.terra.inject.InjectorImpl; public class TerraCommandManager implements CommandManager { private final Map commands = new HashMap<>(); - private final InjectorImpl pluginInjector; - private final TerraPlugin main; + private final InjectorImpl pluginInjector; + private final Platform platform; - public TerraCommandManager(TerraPlugin main) { - this.main = main; - this.pluginInjector = new InjectorImpl<>(main); - pluginInjector.addExplicitTarget(TerraPlugin.class); + public TerraCommandManager(Platform platform) { + this.platform = platform; + this.pluginInjector = new InjectorImpl<>(platform); + pluginInjector.addExplicitTarget(Platform.class); } @Override @@ -81,7 +82,7 @@ public class TerraCommandManager implements CommandManager { private void execute(CommandHolder commandHolder, CommandSender sender, List args) throws CommandException { Class commandClass = commandHolder.clazz; - if(commandClass.isAnnotationPresent(DebugCommand.class) && !main.getTerraConfig().isDebugCommands()) { + if(commandClass.isAnnotationPresent(DebugCommand.class) && !platform.getTerraConfig().isDebugCommands()) { sender.sendMessage("Command must be executed with debug commands enabled."); return; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java index f4b486936..1e213d6f8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.commands; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.entity.CommandSender; @@ -13,11 +13,11 @@ import com.dfsek.terra.config.lang.LangUtil; ) public class VersionCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { - String terraVersion = main.getVersion(); - LangUtil.send("command.version", sender, terraVersion, main.platformName()); + String terraVersion = platform.getVersion(); + LangUtil.send("command.version", sender, terraVersion, platform.platformName()); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java index 87bb3d9d4..332827b24 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java @@ -3,7 +3,7 @@ package com.dfsek.terra.commands.profiler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; @@ -17,12 +17,12 @@ public class ProfileQueryCommand implements CommandTemplate { private static final Logger logger = LoggerFactory.getLogger(ProfileQueryCommand.class); @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { StringBuilder data = new StringBuilder("Terra Profiler data dump: \n"); - main.getProfiler().getTimings().forEach((id, timings) -> data.append(id).append(": ").append(timings.toString()).append('\n')); + platform.getProfiler().getTimings().forEach((id, timings) -> data.append(id).append(": ").append(timings.toString()).append('\n')); logger.info(data.toString()); sender.sendMessage("Profiler data dumped to console."); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java index 7be7a834e..13653496e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.commands.profiler; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; @@ -12,11 +12,11 @@ import com.dfsek.terra.api.inject.annotations.Inject; @DebugCommand public class ProfileResetCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { - main.getProfiler().reset(); + platform.getProfiler().reset(); sender.sendMessage("Profiler reset."); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java index 4d1b6568d..54685095c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.commands.profiler; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; @@ -12,11 +12,11 @@ import com.dfsek.terra.api.inject.annotations.Inject; @DebugCommand public class ProfileStartCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { - main.getProfiler().start(); + platform.getProfiler().start(); sender.sendMessage("Profiling enabled."); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java index f2e1d9074..313707ad5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java @@ -1,6 +1,6 @@ package com.dfsek.terra.commands.profiler; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.type.DebugCommand; @@ -12,11 +12,11 @@ import com.dfsek.terra.api.inject.annotations.Inject; @DebugCommand public class ProfileStopCommand implements CommandTemplate { @Inject - private TerraPlugin main; + private Platform platform; @Override public void execute(CommandSender sender) { - main.getProfiler().stop(); + platform.getProfiler().stop(); sender.sendMessage("Profiling disabled."); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 64a2c15a3..3099119f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.loading.TypeRegistry; import java.util.LinkedHashMap; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -19,10 +19,10 @@ import com.dfsek.terra.config.loaders.RangeLoader; public class GenericLoaders implements LoaderRegistrar { - private final TerraPlugin main; + private final Platform platform; - public GenericLoaders(TerraPlugin main) { - this.main = main; + public GenericLoaders(Platform platform) { + this.platform = platform; } @Override @@ -32,11 +32,11 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()); - if(main != null) { - registry.registerLoader(TerraAddon.class, main.getAddons()) + if(platform != null) { + registry.registerLoader(TerraAddon.class, platform.getAddons()) .registerLoader(BlockType.class, - (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType()) - .registerLoader(BlockState.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object)); + (t, object, cf) -> platform.getWorldHandle().createBlockData((String) object).getBlockType()) + .registerLoader(BlockState.class, (t, object, cf) -> platform.getWorldHandle().createBlockData((String) object)); } } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index 4412aff53..bab550ef2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -15,7 +15,7 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.time.Duration; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; @SuppressWarnings("FieldMayBeFinal") @@ -79,9 +79,9 @@ public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.con private int maxRecursion = 1000; @Override - public void load(TerraPlugin main) { + public void load(Platform platform) { logger.info("Loading config values from config.yml"); - try(FileInputStream file = new FileInputStream(new File(main.getDataFolder(), "config.yml"))) { + try(FileInputStream file = new FileInputStream(new File(platform.getDataFolder(), "config.yml"))) { ConfigLoader loader = new ConfigLoader(); loader.load(this, new YamlConfiguration(file, "config.yml")); } catch(ConfigException | IOException | UncheckedIOException e) { 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 dc0afa954..8afc30719 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 @@ -9,7 +9,7 @@ import java.io.File; import java.io.IOException; import java.util.Objects; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.lang.Language; @@ -22,8 +22,9 @@ public final class LangUtil { private LangUtil() { } - public static void load(String langID, TerraPlugin main) { - File file = new File(main.getDataFolder(), "lang"); + public static void load(String langID, Platform platform) { + Logger logger = platform.logger(); + File file = new File(platform.getDataFolder(), "lang"); try { File file1 = new File(file, langID + ".yml"); logger.info(file1.getAbsolutePath()); 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 6bfc063f9..c5c6a340c 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 @@ -35,7 +35,7 @@ import java.util.function.Supplier; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; @@ -89,7 +89,7 @@ public class ConfigPackImpl implements ConfigPack { private final AbstractConfigLoader abstractConfigLoader = new AbstractConfigLoader(); private final ConfigLoader selfLoader = new ConfigLoader(); private final Scope varScope = new Scope(); - private final TerraPlugin main; + private final Platform platform; private final Loader loader; private final Configuration configuration; @@ -105,18 +105,18 @@ public class ConfigPackImpl implements ConfigPack { private final TreeMap>>> configTypes = new TreeMap<>(); - public ConfigPackImpl(File folder, TerraPlugin main) throws ConfigException { + public ConfigPackImpl(File folder, Platform platform) throws ConfigException { try { this.loader = new FolderLoader(folder.toPath()); - this.main = main; + this.platform = platform; this.configTypeRegistry = createRegistry(); long l = System.nanoTime(); register(abstractConfigLoader); - main.register(abstractConfigLoader); + platform.register(abstractConfigLoader); register(selfLoader); - main.register(selfLoader); + platform.register(selfLoader); File pack = new File(folder, "pack.yml"); @@ -127,17 +127,17 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.load(addonsTemplate, configuration); this.addons = addonsTemplate.getAddons(); - main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); + platform.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); selfLoader.load(template, configuration); logger.info("Loading config pack \"{}\"", template.getID()); - load(l, main); + load(l, platform); ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, configuration); seededBiomeProvider = packPostTemplate.getProviderBuilder(); - checkDeadEntries(main); + checkDeadEntries(platform); } catch(FileNotFoundException e) { throw new LoadException("No pack.yml file found in " + folder.getAbsolutePath(), e); } @@ -148,18 +148,18 @@ public class ConfigPackImpl implements ConfigPack { toWorldConfig(new DummyWorld()); // Build now to catch any errors immediately. } - public ConfigPackImpl(ZipFile file, TerraPlugin main) throws ConfigException { + public ConfigPackImpl(ZipFile file, Platform platform) throws ConfigException { try { this.loader = new ZIPLoader(file); - this.main = main; + this.platform = platform; this.configTypeRegistry = createRegistry(); long l = System.nanoTime(); register(selfLoader); - main.register(selfLoader); + platform.register(selfLoader); register(abstractConfigLoader); - main.register(abstractConfigLoader); + platform.register(abstractConfigLoader); try { ZipEntry pack = null; @@ -177,19 +177,19 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.load(addonsTemplate, configuration); this.addons = addonsTemplate.getAddons(); - main.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); + platform.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); selfLoader.load(template, configuration); logger.info("Loading config pack \"" + template.getID() + "\""); - load(l, main); + load(l, platform); ConfigPackPostTemplate packPostTemplate = new ConfigPackPostTemplate(); selfLoader.load(packPostTemplate, configuration); seededBiomeProvider = packPostTemplate.getProviderBuilder(); - checkDeadEntries(main); + checkDeadEntries(platform); } catch(IOException e) { throw new LoadException("Unable to load pack.yml from ZIP file", e); } @@ -225,7 +225,7 @@ public class ConfigPackImpl implements ConfigPack { @Override public WorldConfigImpl toWorldConfig(World world) { - return new WorldConfigImpl(world, this, main); + return new WorldConfigImpl(world, this, platform); } @Override @@ -273,93 +273,6 @@ public class ConfigPackImpl implements ConfigPack { return template.vanillaDecorations(); } - @SuppressWarnings("unchecked") - private ConfigTypeRegistry createRegistry() { - return new ConfigTypeRegistry(main, (id, configType) -> { - OpenRegistry openRegistry = configType.registrySupplier(this).get(); - if(registryMap.containsKey(configType.getTypeKey() - .getType())) { // Someone already registered something; we need to copy things to the - // new registry. - logger.warn("Copying values from old registry for {}", configType.getTypeKey()); - registryMap.get(configType.getTypeKey().getType()).getLeft().forEach(((OpenRegistry) openRegistry)::register); - } - selfLoader.registerLoader(configType.getTypeKey().getType(), openRegistry); - abstractConfigLoader.registerLoader(configType.getTypeKey().getType(), openRegistry); - registryMap.put(configType.getTypeKey().getType(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); - }); - } - - private void checkDeadEntries(TerraPlugin main) { - registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()) - .getDeadEntries() - .forEach((id, value) -> logger.warn("Dead entry in '{}' registry: '{}'", ReflectionUtil.typeToString(clazz), id))); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void load(long start, TerraPlugin main) throws ConfigException { - configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.register(pair.getLeft(), pair.getRight()))); - - for(Map.Entry var : template.getVariables().entrySet()) { - varScope.create(var.getKey(), var.getValue()); - } - - Map configurations = new HashMap<>(); - - main.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::put)); // Create all the configs. - - MetaStringPreprocessor stringPreprocessor = new MetaStringPreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, stringPreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, stringPreprocessor); - - MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, listPreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); - - MetaMapPreprocessor mapPreprocessor = new MetaMapPreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, mapPreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, mapPreprocessor); - - MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); - - MetaNumberPreprocessor numberPreprocessor = new MetaNumberPreprocessor(configurations); - selfLoader.registerPreprocessor(Meta.class, numberPreprocessor); - abstractConfigLoader.registerPreprocessor(Meta.class, numberPreprocessor); - - Map, List> configs = new HashMap<>(); - - for(Configuration configuration : configurations.values()) { // Sort the configs - if(configuration.contains("type")) { // Only sort configs with type key - ProtoConfig config = new ProtoConfig(); - selfLoader.load(config, configuration); - configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); - } - } - - for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs - CheckedRegistry registry = getCheckedRegistry(configType.getTypeKey()); - main.getEventManager().callEvent(new ConfigTypePreLoadEvent(configType, registry, this)); - for(AbstractConfiguration config : abstractConfigLoader.loadConfigs( - configs.getOrDefault(configType, Collections.emptyList()))) { - try { - Object loaded = ((ConfigFactory) configType.getFactory()).build( - selfLoader.load(configType.getTemplate(this, main), config), main); - registry.register(config.getID(), loaded); - main.getEventManager().callEvent( - new ConfigurationLoadEvent(this, config, template -> selfLoader.load(template, config), configType, loaded)); - } catch(DuplicateEntryException e) { - throw new LoadException("Duplicate registry entry: ", e); - } - } - main.getEventManager().callEvent(new ConfigTypePostLoadEvent(configType, registry, this)); - } - - main.getEventManager().callEvent(new ConfigPackPostLoadEvent(this, template -> selfLoader.load(template, configuration))); - logger.info("Loaded config pack \"{}\" v{} by {} in {}ms.", - template.getID(), template.getVersion(), template.getAuthor(), (System.nanoTime() - start) / 1000000.0D); - } - @Override public BiomeProvider getBiomeProviderBuilder() { return seededBiomeProvider; @@ -373,7 +286,7 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerLoader(c, registry); abstractConfigLoader.registerLoader(c, registry); logger.debug("Registered loader for registry of class {}", ReflectionUtil.typeToString(c)); - + if(type instanceof ParameterizedType param) { Type base = param.getRawType(); if(base instanceof Class // should always be true but we'll check anyways @@ -393,7 +306,7 @@ public class ConfigPackImpl implements ConfigPack { } } } - + return ImmutablePair.of(registry, new CheckedRegistryImpl<>(registry)); }).getRight(); } @@ -433,6 +346,93 @@ public class ConfigPackImpl implements ConfigPack { return template.getGeneratorProvider(); } + @SuppressWarnings("unchecked") + private ConfigTypeRegistry createRegistry() { + return new ConfigTypeRegistry(platform, (id, configType) -> { + OpenRegistry openRegistry = configType.registrySupplier(this).get(); + if(registryMap.containsKey(configType.getTypeKey() + .getType())) { // Someone already registered something; we need to copy things to the + // new registry. + logger.warn("Copying values from old registry for {}", configType.getTypeKey()); + registryMap.get(configType.getTypeKey().getType()).getLeft().forEach(((OpenRegistry) openRegistry)::register); + } + selfLoader.registerLoader(configType.getTypeKey().getType(), openRegistry); + abstractConfigLoader.registerLoader(configType.getTypeKey().getType(), openRegistry); + registryMap.put(configType.getTypeKey().getType(), ImmutablePair.of(openRegistry, new CheckedRegistryImpl<>(openRegistry))); + }); + } + + private void checkDeadEntries(TerraPlugin main) { + registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()) + .getDeadEntries() + .forEach((id, value) -> logger.warn("Dead entry in '{}' registry: '{}'", ReflectionUtil.typeToString(clazz), id))); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + private void load(long start, Platform platform) throws ConfigException { + configTypes.values().forEach(list -> list.forEach(pair -> configTypeRegistry.register(pair.getLeft(), pair.getRight()))); + + for(Map.Entry var : template.getVariables().entrySet()) { + varScope.create(var.getKey(), var.getValue()); + } + + Map configurations = new HashMap<>(); + + platform.getEventManager().callEvent(new ConfigurationDiscoveryEvent(this, loader, configurations::put)); // Create all the configs. + + MetaStringPreprocessor stringPreprocessor = new MetaStringPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, stringPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, stringPreprocessor); + + MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, listPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); + + MetaMapPreprocessor mapPreprocessor = new MetaMapPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, mapPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, mapPreprocessor); + + MetaValuePreprocessor valuePreprocessor = new MetaValuePreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); + + MetaNumberPreprocessor numberPreprocessor = new MetaNumberPreprocessor(configurations); + selfLoader.registerPreprocessor(Meta.class, numberPreprocessor); + abstractConfigLoader.registerPreprocessor(Meta.class, numberPreprocessor); + + Map, List> configs = new HashMap<>(); + + for(Configuration configuration : configurations.values()) { // Sort the configs + if(configuration.contains("type")) { // Only sort configs with type key + ProtoConfig config = new ProtoConfig(); + selfLoader.load(config, configuration); + configs.computeIfAbsent(config.getType(), configType -> new ArrayList<>()).add(configuration); + } + } + + for(ConfigType configType : configTypeRegistry.entries()) { // Load the configs + CheckedRegistry registry = getCheckedRegistry(configType.getTypeKey()); + platform.getEventManager().callEvent(new ConfigTypePreLoadEvent(configType, registry, this)); + for(AbstractConfiguration config : abstractConfigLoader.loadConfigs( + configs.getOrDefault(configType, Collections.emptyList()))) { + try { + Object loaded = ((ConfigFactory) configType.getFactory()).build( + selfLoader.load(configType.getTemplate(this, platform), config), platform); + registry.register(config.getID(), loaded); + platform.getEventManager().callEvent( + new ConfigurationLoadEvent(this, config, template -> selfLoader.load(template, config), configType, loaded)); + } catch(DuplicateEntryException e) { + throw new LoadException("Duplicate registry entry: ", e); + } + } + platform.getEventManager().callEvent(new ConfigTypePostLoadEvent(configType, registry, this)); + } + + platform.getEventManager().callEvent(new ConfigPackPostLoadEvent(this, template -> selfLoader.load(template, configuration))); + logger.info("Loaded config pack \"{}\" v{} by {} in {}ms.", + template.getID(), template.getVersion(), template.getAuthor(), (System.nanoTime() - start) / 1000000.0D); + } + protected Map, CheckedRegistry>> getRegistryMap() { return registryMap; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 5b433e019..6b7de8bc1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -4,7 +4,7 @@ import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.registry.Registry; @@ -25,10 +25,10 @@ public class WorldConfigImpl implements WorldConfig { private final Map> registryMap = new HashMap<>(); - public WorldConfigImpl(World world, ConfigPackImpl pack, TerraPlugin main) { + public WorldConfigImpl(World world, ConfigPackImpl pack, Platform platform) { this.world = world; this.pack = pack; - this.samplerCache = new SamplerCacheImpl(main, world); + this.samplerCache = new SamplerCacheImpl(platform, world); pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java index 9fd8f88e3..8c2a3f367 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java @@ -3,7 +3,7 @@ package com.dfsek.terra.event; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.event.EventHandler; import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.events.Event; @@ -12,11 +12,11 @@ import com.dfsek.terra.api.event.functional.FunctionalEventHandler; public class EventManagerImpl implements EventManager { private final Map, EventHandler> handlers = new HashMap<>(); - private final TerraPlugin main; + private final Platform platform; - public EventManagerImpl(TerraPlugin main) { - this.main = main; - registerHandler(FunctionalEventHandler.class, new FunctionalEventHandlerImpl(main)); // default handler + public EventManagerImpl(Platform platform) { + this.platform = platform; + registerHandler(FunctionalEventHandler.class, new FunctionalEventHandlerImpl(platform)); // default handler } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 34ba14f27..c25f3a84e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.FailThroughEvent; @@ -26,10 +26,10 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { private final Map>> contextMap = new HashMap<>(); - private final TerraPlugin main; + private final Platform platform; - public FunctionalEventHandlerImpl(TerraPlugin main) { - this.main = main; + public FunctionalEventHandlerImpl(Platform platform) { + this.platform = platform; } @SuppressWarnings("unchecked") diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 48b49b376..018910664 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -39,7 +39,7 @@ public class OpenRegistryImpl implements OpenRegistry { T obj = get((String) o); StringBuilder keys = new StringBuilder("["); - objects.keySet().forEach(key -> keys.append(key + ", ")); + objects.keySet().forEach(key -> keys.append(key).append(", ")); if(obj == null) throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o + diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 151aac255..67071b3de 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import java.util.LinkedHashMap; import java.util.function.BiConsumer; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigType; import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.registry.OpenRegistryImpl; @@ -17,12 +17,12 @@ public class ConfigTypeRegistry extends OpenRegistryImpl> { private final BiConsumer> callback; - private final TerraPlugin main; + private final Platform platform; - public ConfigTypeRegistry(TerraPlugin main, BiConsumer> callback) { + public ConfigTypeRegistry(Platform platform, BiConsumer> callback) { super(new LinkedHashMap<>()); // Ordered this.callback = callback; - this.main = main; + this.platform = platform; } @Override diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index b36618268..9028edf5a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -13,7 +13,7 @@ import com.dfsek.terra.addon.AddonClassLoader; import com.dfsek.terra.addon.AddonPool; import com.dfsek.terra.addon.PreLoadAddon; import com.dfsek.terra.addon.exception.AddonLoadException; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.inject.Injector; import com.dfsek.terra.api.inject.exception.InjectionException; @@ -25,14 +25,14 @@ import com.dfsek.terra.registry.OpenRegistryImpl; public class AddonRegistry extends OpenRegistryImpl { private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AddonRegistry.class); - private final TerraPlugin main; + private final Platform platform; - public AddonRegistry(TerraPlugin main) { - this.main = main; + public AddonRegistry(Platform platform) { + this.platform = platform; } - public AddonRegistry(TerraAddon addon, TerraPlugin main) { - this.main = main; + public AddonRegistry(TerraAddon addon, Platform platform) { + this.platform = platform; register(addon); } @@ -54,16 +54,16 @@ public class AddonRegistry extends OpenRegistryImpl { } public boolean loadAll() { - return loadAll(TerraPlugin.class.getClassLoader()); + return loadAll(Platform.class.getClassLoader()); } @SuppressWarnings({ "NestedTryStatement", "ThrowCaughtLocally" }) public boolean loadAll(ClassLoader parent) { - InjectorImpl pluginInjector = new InjectorImpl<>(main); - pluginInjector.addExplicitTarget(TerraPlugin.class); + InjectorImpl pluginInjector = new InjectorImpl<>(platform); + pluginInjector.addExplicitTarget(Platform.class); boolean valid = true; - File addonsFolder = new File(main.getDataFolder(), "addons"); + File addonsFolder = new File(platform.getDataFolder(), "addons"); addonsFolder.mkdirs(); AddonPool pool = new AddonPool(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index ea7be541a..424347e64 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -8,7 +8,7 @@ import java.io.File; import java.io.IOException; import java.util.zip.ZipFile; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.registry.OpenRegistryImpl; @@ -20,18 +20,18 @@ import com.dfsek.terra.registry.OpenRegistryImpl; public class ConfigRegistry extends OpenRegistryImpl { private static final Logger logger = LoggerFactory.getLogger(ConfigRegistry.class); - public void load(File folder, TerraPlugin main) throws ConfigException { - ConfigPack pack = new ConfigPackImpl(folder, main); + public void load(File folder, Platform platform) throws ConfigException { + ConfigPack pack = new ConfigPackImpl(folder, platform); register(pack.getID(), pack); } - public boolean loadAll(TerraPlugin main) { + public boolean loadAll(Platform platform) { boolean valid = true; - File packsFolder = new File(main.getDataFolder(), "packs"); + File packsFolder = new File(platform.getDataFolder(), "packs"); packsFolder.mkdirs(); for(File dir : packsFolder.listFiles(File::isDirectory)) { try { - load(dir, main); + load(dir, platform); } catch(ConfigException e) { logger.error("Error loading config pack {}", dir.getName(), e); valid = false; @@ -40,7 +40,7 @@ public class ConfigRegistry extends OpenRegistryImpl { for(File zip : packsFolder.listFiles(file -> file.getName().endsWith(".zip") || file.getName().endsWith(".terra"))) { try { logger.info("Loading ZIP archive: " + zip.getName()); - load(new ZipFile(zip), main); + load(new ZipFile(zip), platform); } catch(IOException | ConfigException e) { logger.error("Error loading config pack {}", zip.getName(), e); valid = false; @@ -49,8 +49,8 @@ public class ConfigRegistry extends OpenRegistryImpl { return valid; } - public void load(ZipFile file, TerraPlugin main) throws ConfigException { - ConfigPackImpl pack = new ConfigPackImpl(file, main); + public void load(ZipFile file, Platform platform) throws ConfigException { + ConfigPackImpl pack = new ConfigPackImpl(file, platform); register(pack.getTemplate().getID(), pack); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 115ea3d0c..824ab6f90 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -1,12 +1,13 @@ package com.dfsek.terra.world; +import com.dfsek.terra.api.Platform; + import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.math.Sampler; @@ -15,8 +16,8 @@ import com.dfsek.terra.api.util.math.Sampler; public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.SamplerCache { private final LoadingCache cache; - public SamplerCacheImpl(TerraPlugin main, World world) { - cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getSamplerCache()) + public SamplerCacheImpl(Platform platform, World world) { + cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getSamplerCache()) .build(new CacheLoader<>() { @Override public Sampler load(@NotNull Long key) { diff --git a/common/implementation/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java index e6300291d..74836723b 100644 --- a/common/implementation/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/src/test/java/profiler/ProfilerTest.java @@ -30,9 +30,7 @@ public class ProfilerTest { PROFILER.push("thing4"); PROFILER.pop("thing4"); - PROFILER.getTimings().forEach((id, timings) -> { - System.out.println(id + ": " + timings.toString()); - }); + PROFILER.getTimings().forEach((id, timings) -> System.out.println(id + ": " + timings.toString())); } private static void doThing() throws InterruptedException { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java index ac5aa1a94..724d91d09 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java @@ -1,6 +1,6 @@ package com.dfsek.terra.bukkit; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -11,10 +11,10 @@ import com.dfsek.terra.api.addon.annotations.Version; @Version("1.0.0") @Author("Terra") public final class BukkitAddon extends TerraAddon { - private final TerraPlugin main; + private final Platform platform; - public BukkitAddon(TerraPlugin main) { - this.main = main; + public BukkitAddon(Platform platform) { + this.platform = platform; } @Override diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java similarity index 92% rename from platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java rename to platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index 7c346198e..3cefc71be 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraPluginImpl.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -9,7 +9,8 @@ import java.io.File; import java.util.Locale; import java.util.Optional; -import com.dfsek.terra.AbstractTerraPlugin; +import com.dfsek.terra.AbstractPlatform; +import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.handle.ItemHandle; @@ -20,14 +21,14 @@ import com.dfsek.terra.bukkit.handles.BukkitWorldHandle; import com.dfsek.terra.bukkit.world.BukkitBiome; -public class TerraPluginImpl extends AbstractTerraPlugin { +public class PlatformImpl extends AbstractPlatform { private final ItemHandle itemHandle = new BukkitItemHandle(); private final WorldHandle handle = new BukkitWorldHandle(); private final TerraBukkitPlugin plugin; - public TerraPluginImpl(TerraBukkitPlugin plugin) { + public PlatformImpl(TerraBukkitPlugin plugin) { this.plugin = plugin; load(); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 54703a791..25aa690ba 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -34,7 +34,7 @@ import com.dfsek.terra.commands.TerraCommandManager; public class TerraBukkitPlugin extends JavaPlugin { private static final Logger logger = LoggerFactory.getLogger(TerraBukkitPlugin.class); - private final TerraPluginImpl terraPlugin = new TerraPluginImpl(this); + private final PlatformImpl terraPlugin = new PlatformImpl(this); private final Map generatorMap = new HashMap<>(); private final Map worlds = new HashMap<>(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index 661f60030..9f575b33e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.Map; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.generator.ChunkGenerator; @@ -33,7 +33,7 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener private final ChunkGenerator delegate; - private final TerraPlugin main; + private final Platform platform; private boolean needsLoad = true; @@ -41,8 +41,8 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener public BukkitChunkGeneratorWrapper(ChunkGenerator delegate) { this.delegate = delegate; - this.main = delegate.getMain(); - this.popMan = new PopulationManager(delegate, main); + this.platform = delegate.getPlatform(); + this.popMan = new PopulationManager(delegate, platform); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index a51ef9d61..5561d6e8f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -1,5 +1,7 @@ package com.dfsek.terra.bukkit.listeners; +import com.dfsek.terra.api.Platform; + import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -9,7 +11,6 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.world.StructureGrowEvent; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.Tree; @@ -34,10 +35,10 @@ public class CommonListener implements Listener { .add(TreeType.MEGA_REDWOOD, "MEGA_SPRUCE") .add(TreeType.SWAMP, "SWAMP_OAK")) .addTransform(TreeType::toString).build(); - private final TerraPlugin main; + private final Platform platform; - public CommonListener(TerraPlugin main) { - this.main = main; + public CommonListener(Platform platform) { + this.platform = platform; } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 0c9403ea9..8e224d110 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,17 +1,17 @@ package com.dfsek.terra.bukkit.listeners; +import com.dfsek.terra.api.Platform; + import io.papermc.paper.event.world.StructureLocateEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import com.dfsek.terra.api.TerraPlugin; - public class PaperListener implements Listener { - private final TerraPlugin main; + private final Platform platform; - public PaperListener(TerraPlugin main) { - this.main = main; + public PaperListener(Platform platform) { + this.platform = platform; } @EventHandler diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 0e788d3f9..70968fe5e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,5 +1,7 @@ package com.dfsek.terra.bukkit.listeners; +import com.dfsek.terra.api.Platform; + import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -10,8 +12,6 @@ import org.bukkit.event.entity.VillagerCareerChangeEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.api.TerraPlugin; - /** * Listener to load on Spigot servers, contains Villager crash prevention and hacky ender eye redirection. @@ -20,12 +20,11 @@ import com.dfsek.terra.api.TerraPlugin; * StructureLocateEvent). */ public class SpigotListener implements Listener { + private final Platform platform; private static final Logger logger = LoggerFactory.getLogger(SpigotListener.class); - private final TerraPlugin main; - - public SpigotListener(TerraPlugin main) { - this.main = main; + public SpigotListener(Platform platform) { + this.platform = platform; } @EventHandler(priority = EventPriority.NORMAL) diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index e33ddc829..c14e0c0ce 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -1,5 +1,7 @@ package com.dfsek.terra.bukkit.population; +import com.dfsek.terra.api.Platform; + import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; @@ -8,13 +10,12 @@ import java.io.IOException; import java.util.HashSet; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.bukkit.TerraPluginImpl; +import com.dfsek.terra.bukkit.PlatformImpl; import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitWorld; import com.dfsek.terra.util.FastRandom; @@ -26,11 +27,11 @@ import com.dfsek.terra.util.FastRandom; public class PopulationManager extends BlockPopulator { private final ChunkGenerator generator; private final HashSet needsPop = new HashSet<>(); - private final TerraPlugin main; + private final Platform platform; - public PopulationManager(ChunkGenerator generator, TerraPlugin main) { + public PopulationManager(ChunkGenerator generator, Platform platform) { this.generator = generator; - this.main = main; + this.platform = platform; } public static File getDataFolder(World w) { @@ -77,12 +78,12 @@ public class PopulationManager extends BlockPopulator { @Override @SuppressWarnings("try") public void populate(org.bukkit.@NotNull World world, @NotNull Random random, org.bukkit.@NotNull Chunk source) { - try(ProfileFrame ignore = main.getProfiler().profile("popman")) { + try(ProfileFrame ignore = platform.getProfiler().profile("popman")) { Chunk chunk = BukkitAdapter.adapt(source); needsPop.add(new ChunkCoordinate(chunk)); int x = chunk.getX(); int z = chunk.getZ(); - if(((TerraPluginImpl) main).getPlugin().isEnabled()) { + if(((PlatformImpl) platform).getPlugin().isEnabled()) { for(int xi = -1; xi <= 1; xi++) { for(int zi = -1; zi <= 1; zi++) { if(xi == 0 && zi == 0) continue; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index f9fb0f64e..074503435 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -57,132 +57,81 @@ public final class BukkitAdapter { } public static Axis adapt(org.bukkit.Axis axis) { - switch(axis) { - case X: - return Axis.X; - case Y: - return Axis.Y; - case Z: - return Axis.Z; - default: - throw new IllegalStateException(); - } + return switch(axis) { + case X -> Axis.X; + case Y -> Axis.Y; + case Z -> Axis.Z; + }; } public static Half adapt(org.bukkit.block.data.Bisected.Half half) { - switch(half) { - case BOTTOM: - return Half.BOTTOM; - case TOP: - return Half.TOP; - default: - throw new IllegalStateException(); - } + return switch(half) { + case BOTTOM -> Half.BOTTOM; + case TOP -> Half.TOP; + }; } public static RedstoneConnection adapt(org.bukkit.block.data.type.RedstoneWire.Connection connection) { - switch(connection) { - case NONE: - return RedstoneConnection.NONE; - case UP: - return RedstoneConnection.UP; - case SIDE: - return RedstoneConnection.SIDE; - default: - throw new IllegalStateException(); - } + return switch(connection) { + case NONE -> RedstoneConnection.NONE; + case UP -> RedstoneConnection.UP; + case SIDE -> RedstoneConnection.SIDE; + }; } public static org.bukkit.block.data.type.RedstoneWire.Connection adapt(RedstoneConnection connection) { - switch(connection) { - case SIDE: - return org.bukkit.block.data.type.RedstoneWire.Connection.SIDE; - case UP: - return org.bukkit.block.data.type.RedstoneWire.Connection.UP; - case NONE: - return org.bukkit.block.data.type.RedstoneWire.Connection.NONE; - default: - throw new IllegalStateException(); - } + return switch(connection) { + case SIDE -> org.bukkit.block.data.type.RedstoneWire.Connection.SIDE; + case UP -> org.bukkit.block.data.type.RedstoneWire.Connection.UP; + case NONE -> org.bukkit.block.data.type.RedstoneWire.Connection.NONE; + }; } public static RailShape adapt(org.bukkit.block.data.Rail.Shape shape) { - switch(shape) { - case SOUTH_WEST: - return RailShape.SOUTH_WEST; - case SOUTH_EAST: - return RailShape.SOUTH_EAST; - case NORTH_EAST: - return RailShape.NORTH_EAST; - case NORTH_WEST: - return RailShape.NORTH_WEST; - case ASCENDING_EAST: - return RailShape.ASCENDING_EAST; - case ASCENDING_WEST: - return RailShape.ASCENDING_WEST; - case ASCENDING_SOUTH: - return RailShape.ASCENDING_SOUTH; - case ASCENDING_NORTH: - return RailShape.ASCENDING_NORTH; - case NORTH_SOUTH: - return RailShape.NORTH_SOUTH; - case EAST_WEST: - return RailShape.EAST_WEST; - default: - throw new IllegalStateException(); - } + return switch(shape) { + case SOUTH_WEST -> RailShape.SOUTH_WEST; + case SOUTH_EAST -> RailShape.SOUTH_EAST; + case NORTH_EAST -> RailShape.NORTH_EAST; + case NORTH_WEST -> RailShape.NORTH_WEST; + case ASCENDING_EAST -> RailShape.ASCENDING_EAST; + case ASCENDING_WEST -> RailShape.ASCENDING_WEST; + case ASCENDING_SOUTH -> RailShape.ASCENDING_SOUTH; + case ASCENDING_NORTH -> RailShape.ASCENDING_NORTH; + case NORTH_SOUTH -> RailShape.NORTH_SOUTH; + case EAST_WEST -> RailShape.EAST_WEST; + }; } public static org.bukkit.block.data.Rail.Shape adapt(RailShape shape) { - switch(shape) { - case EAST_WEST: - return org.bukkit.block.data.Rail.Shape.EAST_WEST; - case NORTH_SOUTH: - return org.bukkit.block.data.Rail.Shape.NORTH_SOUTH; - case ASCENDING_NORTH: - return org.bukkit.block.data.Rail.Shape.ASCENDING_NORTH; - case ASCENDING_SOUTH: - return org.bukkit.block.data.Rail.Shape.ASCENDING_SOUTH; - case ASCENDING_WEST: - return org.bukkit.block.data.Rail.Shape.ASCENDING_WEST; - case ASCENDING_EAST: - return org.bukkit.block.data.Rail.Shape.ASCENDING_EAST; - case NORTH_WEST: - return org.bukkit.block.data.Rail.Shape.NORTH_WEST; - case NORTH_EAST: - return org.bukkit.block.data.Rail.Shape.NORTH_EAST; - case SOUTH_EAST: - return org.bukkit.block.data.Rail.Shape.SOUTH_EAST; - case SOUTH_WEST: - return org.bukkit.block.data.Rail.Shape.SOUTH_WEST; - default: - throw new IllegalStateException(); - } + return switch(shape) { + case EAST_WEST -> org.bukkit.block.data.Rail.Shape.EAST_WEST; + case NORTH_SOUTH -> org.bukkit.block.data.Rail.Shape.NORTH_SOUTH; + case ASCENDING_NORTH -> org.bukkit.block.data.Rail.Shape.ASCENDING_NORTH; + case ASCENDING_SOUTH -> org.bukkit.block.data.Rail.Shape.ASCENDING_SOUTH; + case ASCENDING_WEST -> org.bukkit.block.data.Rail.Shape.ASCENDING_WEST; + case ASCENDING_EAST -> org.bukkit.block.data.Rail.Shape.ASCENDING_EAST; + case NORTH_WEST -> org.bukkit.block.data.Rail.Shape.NORTH_WEST; + case NORTH_EAST -> org.bukkit.block.data.Rail.Shape.NORTH_EAST; + case SOUTH_EAST -> org.bukkit.block.data.Rail.Shape.SOUTH_EAST; + case SOUTH_WEST -> org.bukkit.block.data.Rail.Shape.SOUTH_WEST; + }; } public static org.bukkit.block.data.Bisected.Half adapt(Half half) { - switch(half) { - case TOP: - return org.bukkit.block.data.Bisected.Half.TOP; - case BOTTOM: - return org.bukkit.block.data.Bisected.Half.BOTTOM; - default: - throw new IllegalStateException(); - } + return switch(half) { + case TOP -> org.bukkit.block.data.Bisected.Half.TOP; + case BOTTOM -> org.bukkit.block.data.Bisected.Half.BOTTOM; + default -> throw new IllegalStateException(); + }; } public static org.bukkit.Axis adapt(Axis axis) { - switch(axis) { - case Z: - return org.bukkit.Axis.Z; - case Y: - return org.bukkit.Axis.Y; - case X: - return org.bukkit.Axis.X; - default: - throw new IllegalStateException(); - } + return switch(axis) { + case Z -> org.bukkit.Axis.Z; + case Y -> org.bukkit.Axis.Y; + case X -> org.bukkit.Axis.X; + }; } public static Vector3 adapt(Location location) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java index 6758f1d85..65e4758dc 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java @@ -1,11 +1,12 @@ package com.dfsek.terra.bukkit.world; +import com.dfsek.terra.api.Platform; + import org.bukkit.TreeType; import java.util.Locale; import java.util.Random; -import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.collection.MaterialSet; @@ -17,37 +18,32 @@ import com.dfsek.terra.api.world.World; public class BukkitTree implements Tree { private final TreeType delegate; private final MaterialSet spawnable; - private final TerraPlugin main; + private final Platform platform; - public BukkitTree(TreeType delegate, TerraPlugin main) { + public BukkitTree(TreeType delegate, Platform platform) { this.delegate = delegate; - this.main = main; + this.platform = platform; this.spawnable = getSpawnable(delegate); } private MaterialSet getSpawnable(TreeType type) { - WorldHandle handle = main.getWorldHandle(); - switch(type) { - case CRIMSON_FUNGUS: - return MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium")); - case WARPED_FUNGUS: - return MaterialSet.get(handle.createBlockData("minecraft:warped_nylium")); - case BROWN_MUSHROOM: - case RED_MUSHROOM: - return MaterialSet.get(handle.createBlockData("minecraft:mycelium"), handle.createBlockData("minecraft:grass_block"), + WorldHandle handle = platform.getWorldHandle(); + return switch(type) { + case CRIMSON_FUNGUS -> MaterialSet.get(handle.createBlockData("minecraft:crimson_nylium")); + case WARPED_FUNGUS -> MaterialSet.get(handle.createBlockData("minecraft:warped_nylium")); + case BROWN_MUSHROOM, RED_MUSHROOM -> MaterialSet.get(handle.createBlockData("minecraft:mycelium"), + handle.createBlockData("minecraft:grass_block"), + handle.createBlockData("minecraft:podzol")); + case CHORUS_PLANT -> MaterialSet.get(handle.createBlockData("minecraft:end_stone")); + default -> MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), handle.createBlockData("minecraft:podzol")); - case CHORUS_PLANT: - return MaterialSet.get(handle.createBlockData("minecraft:end_stone")); - default: - return MaterialSet.get(handle.createBlockData("minecraft:grass_block"), handle.createBlockData("minecraft:dirt"), - handle.createBlockData("minecraft:podzol")); - } + }; } @Override @SuppressWarnings("try") public boolean plant(Vector3 l, World world, Random r) { - try(ProfileFrame ignore = main.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { + try(ProfileFrame ignore = platform.getProfiler().profile("bukkit_tree:" + delegate.toString().toLowerCase(Locale.ROOT))) { return BukkitAdapter.adapt(world).generateTree(BukkitAdapter.adapt(l).toLocation(BukkitAdapter.adapt(world)), delegate); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java index 641c6dc2a..183e24d01 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java @@ -98,32 +98,15 @@ public class BukkitMobSpawner extends BukkitBlockEntity implements MobSpawner { public void applyState(String state) { SerialState.parse(state).forEach((k, v) -> { switch(k) { - case "type": - setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase()))); - return; - case "delay": - setDelay(Integer.parseInt(v)); - return; - case "min_delay": - setMinSpawnDelay(Integer.parseInt(v)); - return; - case "max_delay": - setMaxSpawnDelay(Integer.parseInt(v)); - return; - case "spawn_count": - setSpawnCount(Integer.parseInt(v)); - return; - case "spawn_range": - setSpawnRange(Integer.parseInt(v)); - return; - case "max_nearby": - setMaxNearbyEntities(Integer.parseInt(v)); - return; - case "required_player_range": - setRequiredPlayerRange(Integer.parseInt(v)); - return; - default: - throw new IllegalArgumentException("Invalid property: " + k); + case "type" -> setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase()))); + case "delay" -> setDelay(Integer.parseInt(v)); + case "min_delay" -> setMinSpawnDelay(Integer.parseInt(v)); + case "max_delay" -> setMaxSpawnDelay(Integer.parseInt(v)); + case "spawn_count" -> setSpawnCount(Integer.parseInt(v)); + case "spawn_range" -> setSpawnRange(Integer.parseInt(v)); + case "max_nearby" -> setMaxNearbyEntities(Integer.parseInt(v)); + case "required_player_range" -> setRequiredPlayerRange(Integer.parseInt(v)); + default -> throw new IllegalArgumentException("Invalid property: " + k); } }); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java index 5b14a9b07..1b1547b6e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -35,12 +35,12 @@ import com.dfsek.terra.fabric.util.FabricUtil; @Author("Terra") @Version("1.0.0") public final class FabricAddon extends TerraAddon { + private final PlatformImpl terraFabricPlugin; private static final Logger logger = LoggerFactory.getLogger(FabricAddon.class); - private final TerraPluginImpl terraFabricPlugin; private final Map> templates = new HashMap<>(); - public FabricAddon(TerraPluginImpl terraFabricPlugin) { + public FabricAddon(PlatformImpl terraFabricPlugin) { this.terraFabricPlugin = terraFabricPlugin; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index 785f92c3e..c69d6a038 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -22,12 +22,12 @@ public class FabricEntryPoint implements ModInitializer { private static final Logger logger = LoggerFactory.getLogger(FabricEntryPoint.class); public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC); - public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT) + public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate( + Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); + private static final PlatformImpl TERRA_PLUGIN = new PlatformImpl(); .decorate(Decorator.NOPE.configure( NopeDecoratorConfig.INSTANCE)); - private static final TerraPluginImpl TERRA_PLUGIN = new TerraPluginImpl(); - - public static TerraPluginImpl getTerraPlugin() { + public static PlatformImpl getTerraPlugin() { return TERRA_PLUGIN; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java similarity index 95% rename from platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java rename to platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index 8e2d0b569..4732c4b8a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraPluginImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -9,7 +9,7 @@ import net.minecraft.util.registry.BuiltinRegistries; import java.io.File; import java.util.Optional; -import com.dfsek.terra.AbstractTerraPlugin; +import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; @@ -20,13 +20,13 @@ import com.dfsek.terra.fabric.handle.FabricWorldHandle; import com.dfsek.terra.fabric.util.ProtoBiome; -public class TerraPluginImpl extends AbstractTerraPlugin { +public class PlatformImpl extends AbstractPlatform { private final ItemHandle itemHandle = new FabricItemHandle(); private final WorldHandle worldHandle = new FabricWorldHandle(); private final Lazy dataFolder = Lazy.lazy(() -> new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra")); - public TerraPluginImpl() { + public PlatformImpl() { load(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index 3c303d2ee..5b1d3709d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -97,32 +97,15 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public void terra$applyState(String state) { SerialState.parse(state).forEach((k, v) -> { switch(k) { - case "type": - terra$setSpawnedType(FabricEntryPoint.getTerraPlugin().getWorldHandle().getEntity(v)); - return; - case "delay": - terra$setDelay(Integer.parseInt(v)); - return; - case "min_delay": - terra$setMinSpawnDelay(Integer.parseInt(v)); - return; - case "max_delay": - terra$setMaxSpawnDelay(Integer.parseInt(v)); - return; - case "spawn_count": - terra$setSpawnCount(Integer.parseInt(v)); - return; - case "spawn_range": - terra$setSpawnRange(Integer.parseInt(v)); - return; - case "max_nearby": - terra$setMaxNearbyEntities(Integer.parseInt(v)); - return; - case "required_player_range": - terra$setRequiredPlayerRange(Integer.parseInt(v)); - return; - default: - throw new IllegalArgumentException("Invalid property: " + k); + case "type" -> terra$setSpawnedType(FabricEntryPoint.getTerraPlugin().getWorldHandle().getEntity(v)); + case "delay" -> terra$setDelay(Integer.parseInt(v)); + case "min_delay" -> terra$setMinSpawnDelay(Integer.parseInt(v)); + case "max_delay" -> terra$setMaxSpawnDelay(Integer.parseInt(v)); + case "spawn_count" -> terra$setSpawnCount(Integer.parseInt(v)); + case "spawn_range" -> terra$setSpawnRange(Integer.parseInt(v)); + case "max_nearby" -> terra$setMaxNearbyEntities(Integer.parseInt(v)); + case "required_player_range" -> terra$setRequiredPlayerRange(Integer.parseInt(v)); + default -> throw new IllegalArgumentException("Invalid property: " + k); } }); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index f0bd78968..38dd250fc 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -22,7 +22,7 @@ import com.dfsek.terra.fabric.block.FabricBlockState; public abstract class WorldChunkMixin { @Final @Shadow - private net.minecraft.world.World world; + net.minecraft.world.World world; @Shadow public abstract net.minecraft.block.BlockState getBlockState(BlockPos pos); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index 6b1166d3e..394f8bb8e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -19,7 +19,7 @@ import java.util.Random; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.TerraPluginImpl; +import com.dfsek.terra.fabric.PlatformImpl; import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.TerraBiomeSource; @@ -37,7 +37,7 @@ public abstract class GeneratorOptionsMixin { return; } - TerraPluginImpl main = FabricEntryPoint.getTerraPlugin(); + PlatformImpl main = FabricEntryPoint.getTerraPlugin(); String prop = properties.get("level-type").toString().trim(); if(prop.startsWith("Terra")) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index 5b3e689ef..b08b8a5e7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -30,188 +30,119 @@ public final class FabricAdapter { } public static Direction adapt(com.dfsek.terra.api.block.state.properties.enums.Direction direction) { - switch(direction) { - case SOUTH: - return Direction.SOUTH; - case NORTH: - return Direction.NORTH; - case WEST: - return Direction.WEST; - case EAST: - return Direction.EAST; - case UP: - return Direction.UP; - case DOWN: - return Direction.DOWN; - } - throw new IllegalArgumentException(); + return switch(direction) { + case SOUTH -> Direction.SOUTH; + case NORTH -> Direction.NORTH; + case WEST -> Direction.WEST; + case EAST -> Direction.EAST; + case UP -> Direction.UP; + case DOWN -> Direction.DOWN; + }; } public static com.dfsek.terra.api.block.state.properties.enums.Direction adapt(Direction direction) { - switch(direction) { - case SOUTH: - return com.dfsek.terra.api.block.state.properties.enums.Direction.SOUTH; - case NORTH: - return com.dfsek.terra.api.block.state.properties.enums.Direction.NORTH; - case WEST: - return com.dfsek.terra.api.block.state.properties.enums.Direction.WEST; - case EAST: - return com.dfsek.terra.api.block.state.properties.enums.Direction.EAST; - case UP: - return com.dfsek.terra.api.block.state.properties.enums.Direction.UP; - case DOWN: - return com.dfsek.terra.api.block.state.properties.enums.Direction.DOWN; - } - throw new IllegalArgumentException(); + return switch(direction) { + case SOUTH -> com.dfsek.terra.api.block.state.properties.enums.Direction.SOUTH; + case NORTH -> com.dfsek.terra.api.block.state.properties.enums.Direction.NORTH; + case WEST -> com.dfsek.terra.api.block.state.properties.enums.Direction.WEST; + case EAST -> com.dfsek.terra.api.block.state.properties.enums.Direction.EAST; + case UP -> com.dfsek.terra.api.block.state.properties.enums.Direction.UP; + case DOWN -> com.dfsek.terra.api.block.state.properties.enums.Direction.DOWN; + }; } public static WallHeight adapt(WallShape shape) { - switch(shape) { - case LOW: - return WallHeight.LOW; - case NONE: - return WallHeight.NONE; - case TALL: - return WallHeight.TALL; - } - throw new IllegalArgumentException(); + return switch(shape) { + case LOW -> WallHeight.LOW; + case NONE -> WallHeight.NONE; + case TALL -> WallHeight.TALL; + }; } public static WallShape adapt(WallHeight shape) { - switch(shape) { - case LOW: - return WallShape.LOW; - case NONE: - return WallShape.NONE; - case TALL: - return WallShape.TALL; - } - throw new IllegalArgumentException(); + return switch(shape) { + case LOW -> WallShape.LOW; + case NONE -> WallShape.NONE; + case TALL -> WallShape.TALL; + }; } public static RedstoneConnection adapt(WireConnection connection) { - switch(connection) { - case NONE: - return RedstoneConnection.NONE; - case UP: - return RedstoneConnection.UP; - case SIDE: - return RedstoneConnection.SIDE; - } - throw new IllegalArgumentException(); + return switch(connection) { + case NONE -> RedstoneConnection.NONE; + case UP -> RedstoneConnection.UP; + case SIDE -> RedstoneConnection.SIDE; + }; } public static WireConnection adapt(RedstoneConnection connection) { - switch(connection) { - case NONE: - return WireConnection.NONE; - case UP: - return WireConnection.UP; - case SIDE: - return WireConnection.SIDE; - } - throw new IllegalArgumentException(); + return switch(connection) { + case NONE -> WireConnection.NONE; + case UP -> WireConnection.UP; + case SIDE -> WireConnection.SIDE; + }; } public static Half adapt(BlockHalf half) { - switch(half) { - case BOTTOM: - return Half.BOTTOM; - case TOP: - return Half.TOP; - default: - throw new IllegalStateException(); - } + return switch(half) { + case BOTTOM -> Half.BOTTOM; + case TOP -> Half.TOP; + }; } public static BlockHalf adapt(Half half) { - switch(half) { - case TOP: - return BlockHalf.TOP; - case BOTTOM: - return BlockHalf.BOTTOM; - default: - throw new IllegalStateException(); - } + return switch(half) { + case TOP -> BlockHalf.TOP; + case BOTTOM -> BlockHalf.BOTTOM; + default -> throw new IllegalStateException(); + }; } public static RailShape adapt(net.minecraft.block.enums.RailShape railShape) { - switch(railShape) { - case EAST_WEST: - return RailShape.EAST_WEST; - case NORTH_EAST: - return RailShape.NORTH_EAST; - case NORTH_WEST: - return RailShape.NORTH_WEST; - case SOUTH_EAST: - return RailShape.SOUTH_EAST; - case SOUTH_WEST: - return RailShape.SOUTH_WEST; - case NORTH_SOUTH: - return RailShape.NORTH_SOUTH; - case ASCENDING_EAST: - return RailShape.ASCENDING_EAST; - case ASCENDING_NORTH: - return RailShape.ASCENDING_NORTH; - case ASCENDING_SOUTH: - return RailShape.ASCENDING_SOUTH; - case ASCENDING_WEST: - return RailShape.ASCENDING_WEST; - } - throw new IllegalStateException(); + return switch(railShape) { + case EAST_WEST -> RailShape.EAST_WEST; + case NORTH_EAST -> RailShape.NORTH_EAST; + case NORTH_WEST -> RailShape.NORTH_WEST; + case SOUTH_EAST -> RailShape.SOUTH_EAST; + case SOUTH_WEST -> RailShape.SOUTH_WEST; + case NORTH_SOUTH -> RailShape.NORTH_SOUTH; + case ASCENDING_EAST -> RailShape.ASCENDING_EAST; + case ASCENDING_NORTH -> RailShape.ASCENDING_NORTH; + case ASCENDING_SOUTH -> RailShape.ASCENDING_SOUTH; + case ASCENDING_WEST -> RailShape.ASCENDING_WEST; + }; } public static net.minecraft.block.enums.RailShape adapt(RailShape railShape) { - switch(railShape) { - case EAST_WEST: - return net.minecraft.block.enums.RailShape.EAST_WEST; - case NORTH_EAST: - return net.minecraft.block.enums.RailShape.NORTH_EAST; - case NORTH_WEST: - return net.minecraft.block.enums.RailShape.NORTH_WEST; - case SOUTH_EAST: - return net.minecraft.block.enums.RailShape.SOUTH_EAST; - case SOUTH_WEST: - return net.minecraft.block.enums.RailShape.SOUTH_WEST; - case NORTH_SOUTH: - return net.minecraft.block.enums.RailShape.NORTH_SOUTH; - case ASCENDING_EAST: - return net.minecraft.block.enums.RailShape.ASCENDING_EAST; - case ASCENDING_NORTH: - return net.minecraft.block.enums.RailShape.ASCENDING_NORTH; - case ASCENDING_SOUTH: - return net.minecraft.block.enums.RailShape.ASCENDING_SOUTH; - case ASCENDING_WEST: - return net.minecraft.block.enums.RailShape.ASCENDING_WEST; - } - throw new IllegalStateException(); + return switch(railShape) { + case EAST_WEST -> net.minecraft.block.enums.RailShape.EAST_WEST; + case NORTH_EAST -> net.minecraft.block.enums.RailShape.NORTH_EAST; + case NORTH_WEST -> net.minecraft.block.enums.RailShape.NORTH_WEST; + case SOUTH_EAST -> net.minecraft.block.enums.RailShape.SOUTH_EAST; + case SOUTH_WEST -> net.minecraft.block.enums.RailShape.SOUTH_WEST; + case NORTH_SOUTH -> net.minecraft.block.enums.RailShape.NORTH_SOUTH; + case ASCENDING_EAST -> net.minecraft.block.enums.RailShape.ASCENDING_EAST; + case ASCENDING_NORTH -> net.minecraft.block.enums.RailShape.ASCENDING_NORTH; + case ASCENDING_SOUTH -> net.minecraft.block.enums.RailShape.ASCENDING_SOUTH; + case ASCENDING_WEST -> net.minecraft.block.enums.RailShape.ASCENDING_WEST; + }; } public static Axis adapt(Direction.Axis axis) { - switch(axis) { - case X: - return Axis.X; - case Y: - return Axis.Y; - case Z: - return Axis.Z; - default: - throw new IllegalStateException(); - } + return switch(axis) { + case X -> Axis.X; + case Y -> Axis.Y; + case Z -> Axis.Z; + }; } public static Direction.Axis adapt(Axis axis) { - switch(axis) { - case Z: - return Direction.Axis.Z; - case Y: - return Direction.Axis.Y; - case X: - return Direction.Axis.X; - default: - throw new IllegalStateException(); - } + return switch(axis) { + case Z -> Direction.Axis.Z; + case Y -> Direction.Axis.Y; + case X -> Direction.Axis.X; + }; } } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java similarity index 85% rename from platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java rename to platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java index 9a47512ad..6e4538613 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraPluginImpl.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java @@ -4,17 +4,18 @@ import org.spongepowered.api.Sponge; import java.io.File; -import com.dfsek.terra.AbstractTerraPlugin; + +import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.sponge.handle.SpongeWorldHandle; -public class TerraPluginImpl extends AbstractTerraPlugin { +public class PlatformImpl extends AbstractPlatform { private final TerraSpongePlugin plugin; private final SpongeWorldHandle worldHandle = new SpongeWorldHandle(); - public TerraPluginImpl(TerraSpongePlugin plugin) { + public PlatformImpl(TerraSpongePlugin plugin) { this.plugin = plugin; load(); } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index b8f09ed9c..4a03284be 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -9,12 +9,12 @@ import org.spongepowered.plugin.builtin.jvm.Plugin; @Plugin("terra") public class TerraSpongePlugin { private final PluginContainer plugin; - private final TerraPluginImpl terraPlugin; + private final PlatformImpl terraPlugin; @Inject public TerraSpongePlugin(PluginContainer plugin, Game game) { this.plugin = plugin; - this.terraPlugin = new TerraPluginImpl(this); + this.terraPlugin = new PlatformImpl(this); game.eventManager().registerListeners(plugin, new SpongeListener(this)); } @@ -22,7 +22,7 @@ public class TerraSpongePlugin { return plugin; } - public TerraPluginImpl getTerraPlugin() { + public PlatformImpl getTerraPlugin() { return terraPlugin; } }