fix: version compatibility of GT and NEI

This commit is contained in:
Discreater committed 2021-06-21 20:37:27 +08:00
1 parent 62eef4ffd2
commit 8c005cb81d
5 files changed
+49 -9

No files matched your search

@@ -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`
*
@@ -23,21 +23,27 @@ public class Version implements Comparable<Version> {
}
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];
}