From cd81a92b3b6bfb294fc0e166d9c48b533229b16a Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Thu, 9 Nov 2023 16:43:40 +0000 Subject: [PATCH] catch exceptions from Fluid#fluidType and log an error instead of crashing #1251 --- .../common/fluid/FluidSetup.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/desht/pneumaticcraft/common/fluid/FluidSetup.java b/src/main/java/me/desht/pneumaticcraft/common/fluid/FluidSetup.java index 7f25c3a7c..fc145b1c6 100644 --- a/src/main/java/me/desht/pneumaticcraft/common/fluid/FluidSetup.java +++ b/src/main/java/me/desht/pneumaticcraft/common/fluid/FluidSetup.java @@ -21,6 +21,8 @@ import me.desht.pneumaticcraft.common.config.ConfigHelper; import me.desht.pneumaticcraft.common.core.ModFluids; import me.desht.pneumaticcraft.common.core.ModItems; +import me.desht.pneumaticcraft.lib.Log; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.registries.ForgeRegistries; @@ -36,10 +38,18 @@ public static void init() { // register hot fluids as (very inefficient) fuels for (Fluid fluid : ForgeRegistries.FLUIDS.getValues()) { - int temperature = fluid.getFluidType().getTemperature(); - if (temperature >= ConfigHelper.common().general.minFluidFuelTemperature.get() && fluid.isSource(fluid.defaultFluidState())) { - // non-API usage... register an explicit fluid rather than a tag - FuelRegistry.getInstance().registerHotFluid(fluid, (temperature - 300) * 40, 0.25f); + try { + int temperature = fluid.getFluidType().getTemperature(); + if (temperature >= ConfigHelper.common().general.minFluidFuelTemperature.get() && fluid.isSource(fluid.defaultFluidState())) { + // non-API usage... register an explicit fluid rather than a tag + FuelRegistry.getInstance().registerHotFluid(fluid, (temperature - 300) * 40, 0.25f); + } + } catch (RuntimeException e) { + ResourceLocation fluidId = ForgeRegistries.FLUIDS.getKey(fluid); + Log.error("Caught exception while checking the fluid type of {}: {}", fluidId, e.getMessage()); + if (fluidId != null) { + Log.error("Looks like {} isn't setting a fluid type for this fluid, please report to the mod author", fluidId.getNamespace()); + } } }