From 099d5f60c83099f9098baa250630dd89f1d70002 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 16 Jun 2022 01:56:44 -0700 Subject: [PATCH] use propertykey for features --- .../generation/feature/FeatureGenerationAddon.java | 5 ++++- .../generation/feature/FeatureGenerationStage.java | 7 +++++-- .../generation/feature/config/FeatureStageTemplate.java | 9 +++++++-- 3 files changed, 16 insertions(+), 5 deletions(-) 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 c3db72aac..74eed4f98 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 @@ -28,6 +28,8 @@ import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.annotations.Inject; +import com.dfsek.terra.api.properties.Context; +import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.structure.feature.Feature; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.biome.Biome; @@ -49,12 +51,13 @@ public class FeatureGenerationAddon implements AddonInitializer { @SuppressWarnings("unchecked") @Override public void initialize() { + PropertyKey biomeFeaturesKey = Context.create(BiomeFeatures.class); platform.getEventManager() .getHandler(FunctionalEventHandler.class) .register(addon, ConfigPackPreLoadEvent.class) .then(event -> event.getPack() .getOrCreateRegistry(STAGE_TYPE_KEY) - .register(addon.key("FEATURE"), () -> new FeatureStageTemplate(platform))) + .register(addon.key("FEATURE"), () -> new FeatureStageTemplate(platform, biomeFeaturesKey))) .failThrough(); platform.getEventManager() 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 0c250b35c..0a7a0c9b4 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 @@ -9,6 +9,7 @@ package com.dfsek.terra.addons.generation.feature; import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.registry.key.StringIdentifiable; import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.vector.Vector3Int; @@ -29,12 +30,14 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab private final String profile; private final int resolution; + private final PropertyKey biomeFeaturesKey; - public FeatureGenerationStage(Platform platform, String id, int resolution) { + public FeatureGenerationStage(Platform platform, String id, int resolution, PropertyKey biomeFeaturesKey) { this.platform = platform; this.id = id; this.profile = "feature_stage:" + id; this.resolution = resolution; + this.biomeFeaturesKey = biomeFeaturesKey; } @Override @@ -58,7 +61,7 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab long coordinateSeed = (seed * 31 + x) * 31 + z; Column column = world.column(x, z); biome.getContext() - .get(BiomeFeatures.class) + .get(biomeFeaturesKey) .getFeatures() .getOrDefault(this, Collections.emptyList()) .forEach(feature -> { diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java index b1604cc1a..62e7006db 100644 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java +++ b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/FeatureStageTemplate.java @@ -8,11 +8,13 @@ import com.dfsek.tectonic.api.exception.ValidationException; import com.dfsek.terra.addons.generation.feature.FeatureGenerationStage; import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.properties.PropertyKey; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; public class FeatureStageTemplate implements ObjectTemplate, ValidatedConfigTemplate { private final Platform platform; + private final PropertyKey biomeFeaturesKey; @Value("id") private String id; @@ -20,12 +22,15 @@ public class FeatureStageTemplate implements ObjectTemplate, Va @Default private int resolution = 4; - public FeatureStageTemplate(Platform platform) { this.platform = platform; } + public FeatureStageTemplate(Platform platform, PropertyKey biomeFeaturesKey) { + this.platform = platform; + this.biomeFeaturesKey = biomeFeaturesKey; + } @Override public FeatureGenerationStage get() { - return new FeatureGenerationStage(platform, id, resolution); + return new FeatureGenerationStage(platform, id, resolution, biomeFeaturesKey); } @Override