From fc3dc71a44fc239cbb4b4cb2f933667a16f85929 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 22 Nov 2021 17:15:33 +0300 Subject: [PATCH] Feature array length fix --- gradle.properties | 2 +- src/main/java/ru/bclib/api/BiomeAPI.java | 34 ++++++++++++++---------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index 254dfcad..372a5718 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ loader_version= 0.12.4 fabric_version = 0.41.3+1.17 # Mod Properties -mod_version = 0.5.2 +mod_version = 0.5.3 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/BiomeAPI.java b/src/main/java/ru/bclib/api/BiomeAPI.java index 5036f787..f8c1d1f4 100644 --- a/src/main/java/ru/bclib/api/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/BiomeAPI.java @@ -414,13 +414,7 @@ public class BiomeAPI { public static void addBiomeFeature(Biome biome, ConfiguredFeature feature, Decoration step) { GenerationSettingsAccessor accessor = (GenerationSettingsAccessor) biome.getGenerationSettings(); List>>> biomeFeatures = getMutableList(accessor.fabric_getFeatures()); - int index = step.ordinal(); - if (biomeFeatures.size() < index) { - for (int i = biomeFeatures.size(); i <= index; i++) { - biomeFeatures.add(Lists.newArrayList()); - } - } - List>> list = getMutableList(biomeFeatures.get(index)); + List>> list = getList(step, biomeFeatures); list.add(() -> feature); accessor.fabric_setFeatures(biomeFeatures); } @@ -434,18 +428,30 @@ public class BiomeAPI { GenerationSettingsAccessor accessor = (GenerationSettingsAccessor) biome.getGenerationSettings(); List>>> biomeFeatures = getMutableList(accessor.fabric_getFeatures()); for (BCLFeature feature: features) { - int index = feature.getFeatureStep().ordinal(); - if (biomeFeatures.size() < index) { - for (int i = biomeFeatures.size(); i <= index; i++) { - biomeFeatures.add(Lists.newArrayList()); - } - } - List>> list = getMutableList(biomeFeatures.get(index)); + List>> list = getList(feature.getFeatureStep(), biomeFeatures); list.add(feature::getFeatureConfigured); } accessor.fabric_setFeatures(biomeFeatures); } + /** + * Getter for correct feature list from all biome feature list of lists. + * @param step feature {@link Decoration} step. + * @param lists biome accessor lists. + * @return mutable {@link ConfiguredFeature} list. + */ + private static List>> getList(Decoration step, List>>> lists) { + int index = step.ordinal(); + if (lists.size() <= index) { + for (int i = lists.size(); i <= index; i++) { + lists.add(Lists.newArrayList()); + } + } + List>> list = getMutableList(lists.get(index)); + lists.set(index, list); + return list; + } + /** * Adds new structure feature to existing biome. * @param biome {@link Biome} to add structure feature in.