diff --git a/src/main/java/com/github/wohaopa/GTNHModify/strategies/OneTick.java b/src/main/java/com/github/wohaopa/GTNHModify/strategies/OneTick.java index b7b728d..f9e7acc 100644 --- a/src/main/java/com/github/wohaopa/GTNHModify/strategies/OneTick.java +++ b/src/main/java/com/github/wohaopa/GTNHModify/strategies/OneTick.java @@ -31,22 +31,111 @@ public int handler_FurnaceProcessingTime(Object owner, int number) { return 1; } - private Field field; + private Field miningTimeSecondsField; + private Field hydrogenRequirementField; + private Field heliumRequirementField; + private Field baseSuccessChanceField; + private Field euOutputField; + private Field euStartCostField; public void handler_EyeOfHarmonyRecipe(EyeOfHarmonyRecipe eyeOfHarmonyRecipe) { - if (field == null) { - try { - Class clazz = EyeOfHarmonyRecipe.class; - field = clazz.getDeclaredField("miningTimeSeconds"); - field.setAccessible(true); + Class clazz = EyeOfHarmonyRecipe.class; - } catch (NoSuchFieldException ignored) {} + // miningTimeSeconds + { + if (miningTimeSecondsField == null) { + try { + miningTimeSecondsField = clazz.getDeclaredField("miningTimeSeconds"); + miningTimeSecondsField.setAccessible(true); + } catch (NoSuchFieldException ignored) {} + } + if (miningTimeSecondsField != null) { + try { + miningTimeSecondsField.setLong(eyeOfHarmonyRecipe, 1); + } catch (IllegalAccessException ignored) {} + } + } + + // hydrogenRequirement + { + if (hydrogenRequirementField == null) { + try { + hydrogenRequirementField = clazz.getDeclaredField("hydrogenRequirement"); + hydrogenRequirementField.setAccessible(true); + + } catch (NoSuchFieldException ignored) {} + } + if (hydrogenRequirementField != null) { + try { + long hydrogenRequirement = hydrogenRequirementField.getLong(eyeOfHarmonyRecipe); + hydrogenRequirementField.setLong(eyeOfHarmonyRecipe, 1); + } catch (IllegalAccessException ignored) {} + } + } + + // heliumRequirement + { + if (heliumRequirementField == null) { + try { + heliumRequirementField = clazz.getDeclaredField("heliumRequirement"); + heliumRequirementField.setAccessible(true); + + } catch (NoSuchFieldException ignored) {} + } + if (heliumRequirementField != null) { + try { + long heliumRequirement = heliumRequirementField.getLong(eyeOfHarmonyRecipe); + heliumRequirementField.setLong(eyeOfHarmonyRecipe, 1); + } catch (IllegalAccessException ignored) {} + } } - try { - if (field != null) { - field.setLong(eyeOfHarmonyRecipe, 1); + + // baseSuccessChance + { + if (baseSuccessChanceField == null) { + try { + baseSuccessChanceField = clazz.getDeclaredField("baseSuccessChance"); + baseSuccessChanceField.setAccessible(true); + + } catch (NoSuchFieldException ignored) {} + } + if (baseSuccessChanceField != null) { + try { + double baseSuccessChance = baseSuccessChanceField.getDouble(eyeOfHarmonyRecipe); + baseSuccessChanceField.setDouble(eyeOfHarmonyRecipe, 5); + } catch (IllegalAccessException ignored) {} + } + } + + // euOutput + { + if (euOutputField == null) { + try { + euOutputField = clazz.getDeclaredField("euOutput"); + euOutputField.setAccessible(true); + } catch (NoSuchFieldException ignored) {} } - } catch (IllegalAccessException ignored) {} + if (euOutputField != null) { + try { + euOutputField.setLong(eyeOfHarmonyRecipe, 999999999); + } catch (IllegalAccessException ignored) {} + } + } + + // euStartCost + { + if (euStartCostField == null) { + try { + euStartCostField = clazz.getDeclaredField("euStartCost"); + euStartCostField.setAccessible(true); + } catch (NoSuchFieldException ignored) {} + } + if (euStartCostField != null) { + try { + euStartCostField.setLong(eyeOfHarmonyRecipe, 114); + } catch (IllegalAccessException ignored) {} + } + } } }