diff --git a/CHANGELOG.md b/CHANGELOG.md index 897138e..2111efd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 3.6.2 + +- Fix: crash when nei version is not number. +- Fix: crash when using old gt5 version. + +## 3.6.1 + +Removed `command` because it may crash. + ## 3.6.0 Add support of `Avaritia` diff --git a/gradle.properties b/gradle.properties index 41666b9..f9e1471 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx3G # suppress inspection "UnusedProperty" for whole file mc_version=1.7.10 nei_version=2.1.2-GTNH -proj_version=3.6.1 \ No newline at end of file +proj_version=3.6.2 \ No newline at end of file diff --git a/src/main/java/me/towdium/jecalculation/nei/adapter/GregTech.java b/src/main/java/me/towdium/jecalculation/nei/adapter/GregTech.java index 9768689..e110518 100644 --- a/src/main/java/me/towdium/jecalculation/nei/adapter/GregTech.java +++ b/src/main/java/me/towdium/jecalculation/nei/adapter/GregTech.java @@ -3,11 +3,13 @@ package me.towdium.jecalculation.nei.adapter; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.IRecipeHandler; +import gregtech.api.enums.ItemList; import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Utility; import gregtech.nei.GT_NEI_AssLineHandler; import gregtech.nei.GT_NEI_DefaultHandler; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import javax.annotation.ParametersAreNonnullByDefault; @@ -45,10 +47,27 @@ public class GregTech implements IAdapter { } protected Object convertFluid(ItemStack itemStack) { - FluidStack fluidStack = GT_Utility.getFluidFromDisplayStack(itemStack); + FluidStack fluidStack = getFluidFromDisplayStack(itemStack); return fluidStack == null ? itemStack : fluidStack; } + /** + * For resolving version compatibility issues. + * Copied from GTNewHorizons/GT5-Unofficial. + */ + private static FluidStack getFluidFromDisplayStack(ItemStack aDisplayStack) { + if (!isStackValid(aDisplayStack) || + aDisplayStack.getItem() != ItemList.Display_Fluid.getItem() || + !aDisplayStack.hasTagCompound()) + return null; + Fluid tFluid = FluidRegistry.getFluid(ItemList.Display_Fluid.getItem().getDamage(aDisplayStack)); + return new FluidStack(tFluid, (int) aDisplayStack.getTagCompound().getLong("mFluidDisplayAmount")); + } + + private static boolean isStackValid(Object aStack) { + return (aStack instanceof ItemStack) && ((ItemStack) aStack).getItem() != null && ((ItemStack) aStack).stackSize >= 0; + } + /** * get from `gregtech.nei.GT_NEI_AssLineHandler$CachedDefaultRecipe::Constructor` * diff --git a/src/main/java/me/towdium/jecalculation/utils/Version.java b/src/main/java/me/towdium/jecalculation/utils/Version.java index 829ff51..f24a89b 100644 --- a/src/main/java/me/towdium/jecalculation/utils/Version.java +++ b/src/main/java/me/towdium/jecalculation/utils/Version.java @@ -23,21 +23,27 @@ public class Version implements Comparable { } public Version(String version) { + boolean success1; String[] split = version.split(PRE_RELEASE_PREFIX); if (split.length == 0) { - success = false; + success1 = false; } else { String[] versions = split[0].split("\\."); if (versions.length != 3) - success = false; + success1 = false; else { - major = Integer.parseInt(versions[0]); - minor = Integer.parseInt(versions[1]); - patch = Integer.parseInt(versions[2]); - success = true; + try { + major = Integer.parseInt(versions[0]); + minor = Integer.parseInt(versions[1]); + patch = Integer.parseInt(versions[2]); + success1 = true; + } catch (NumberFormatException e) { + success1 = false; + } } } + success = success1; if (split.length > 1) { preRelease = split[1]; } diff --git a/src/test/java/me/towdium/jecalculation/utils/VersionTest.java b/src/test/java/me/towdium/jecalculation/utils/VersionTest.java index 38a6043..85882bf 100644 --- a/src/test/java/me/towdium/jecalculation/utils/VersionTest.java +++ b/src/test/java/me/towdium/jecalculation/utils/VersionTest.java @@ -50,4 +50,10 @@ class VersionTest { void compareTo_withPreReleaseName_isGreaterThan() { assertEquals(new Version("2.1.2-GTNH").compareTo(new Version("2.0.1-GTHN")), 1); } + + @Test + void fix_not_number() { + Version version = new Version("1.0.6c"); + assert !version.isSuccess(); + } } \ No newline at end of file