Skip to content

Commit 811b69a

Browse files
authored
Fix IllegalStateException when BiomeExtract contains a biome from a removed/updated mod (#1179)
Closes #1178
1 parent d194fbf commit 811b69a

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

src/main/java/org/cyclops/evilcraft/component/DataComponentBiomeConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.cyclops.cyclopscore.config.extendedconfig.DataComponentConfig;
1414
import org.cyclops.evilcraft.EvilCraft;
1515

16+
import javax.annotation.Nullable;
17+
1618
/**
1719
* @author rubensworks
1820
*/
@@ -32,8 +34,9 @@ public static record BiomeHolder(ResourceLocation id, HolderGetter<Biome> getter
3234
.apply(builder, BiomeHolder::new)
3335
);
3436

37+
@Nullable
3538
public Holder<Biome> getBiome() {
36-
return getter.getOrThrow(ResourceKey.create(Registries.BIOME, id));
39+
return getter.get(ResourceKey.create(Registries.BIOME, id)).orElse(null);
3740
}
3841
}
3942
}

src/main/java/org/cyclops/evilcraft/item/ItemBiomeExtract.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,17 @@ public InteractionResultHolder<ItemStack> use(Level world, Player player, Intera
8686
@OnlyIn(Dist.CLIENT)
8787
public void appendHoverText(ItemStack itemStack, Item.TooltipContext context, List<Component> list, TooltipFlag flag) {
8888
super.appendHoverText(itemStack, context, list, flag);
89-
Holder<Biome> biome = getBiome(itemStack);
90-
if (biome != null) {
91-
// Biome name generation based on CreateBuffetWorldScreen
92-
ResourceLocation key = biome.unwrapKey().get().location();
93-
list.add(Component.translatable(getDescriptionId() + ".info.content",
94-
Component.translatable("biome." + key.getNamespace() + "." + key.getPath())));
89+
DataComponentBiomeConfig.BiomeHolder biomeHolder = itemStack.get(RegistryEntries.COMPONENT_BIOME);
90+
if (biomeHolder != null) {
91+
Holder<Biome> biome = biomeHolder.getBiome();
92+
if (biome != null) {
93+
// Biome name generation based on CreateBuffetWorldScreen
94+
ResourceLocation key = biome.unwrapKey().get().location();
95+
list.add(Component.translatable(getDescriptionId() + ".info.content",
96+
Component.translatable("biome." + key.getNamespace() + "." + key.getPath())));
97+
} else {
98+
list.add(Component.translatable(getDescriptionId() + ".info.content", biomeHolder.id().toString()));
99+
}
95100
}
96101
}
97102

0 commit comments

Comments
 (0)