diff --git a/neoforge/src/main/java/com/dtteam/dynamictrees/worldgen/biomemodifier/RunFeatureCancellersBiomeModifier.java b/neoforge/src/main/java/com/dtteam/dynamictrees/worldgen/biomemodifier/RunFeatureCancellersBiomeModifier.java index bc9d62518..5498a936e 100644 --- a/neoforge/src/main/java/com/dtteam/dynamictrees/worldgen/biomemodifier/RunFeatureCancellersBiomeModifier.java +++ b/neoforge/src/main/java/com/dtteam/dynamictrees/worldgen/biomemodifier/RunFeatureCancellersBiomeModifier.java @@ -46,15 +46,30 @@ public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeIn PlacedFeature placedFeature = placedFeatureHolder.value(); - return placedFeature.getFeatures().anyMatch(configuredFeature -> { - for (FeatureCanceller featureCanceller : featureCancellations.getCancellers()) { - if (featureCanceller.shouldCancel(configuredFeature, featureCancellations)) { - return true; - } + try { + var features = placedFeature.getFeatures(); + if (features == null) { + return false; } + return features.filter(cf -> cf.config() != null).anyMatch(configuredFeature -> { + for (FeatureCanceller featureCanceller : featureCancellations.getCancellers()) { + try { + if (featureCanceller.shouldCancel(configuredFeature, featureCancellations)) { + return true; + } + } catch (NullPointerException e) { + // This should be logged + // In this case, we do not want a single FeatureCanceller to break the entire process. + return false; + } + } + return false; + }); + } catch (NullPointerException e) { + // I don't know how to log this return false; - }); + } })); } }