diff --git a/fml/src/main/java/cpw/mods/fml/relauncher/CoreModManager.java b/fml/src/main/java/cpw/mods/fml/relauncher/CoreModManager.java index 5bc5e5612..fa3c7f61d 100644 --- a/fml/src/main/java/cpw/mods/fml/relauncher/CoreModManager.java +++ b/fml/src/main/java/cpw/mods/fml/relauncher/CoreModManager.java @@ -534,7 +534,10 @@ public class CoreModManager { { @SuppressWarnings("unchecked") List tweakers = (List) Launch.blackboard.get("Tweaks"); - Collections.sort(tweakers, new Comparator() { + // Basically a copy of Collections.sort pre 8u20, optimized as we know we're an array list. + // Thanks unhelpful fixer of http://bugs.java.com/view_bug.do?bug_id=8032636 + ITweaker[] toSort = tweakers.toArray(new ITweaker[tweakers.size()]); + Arrays.sort(toSort, new Comparator() { @Override public int compare(ITweaker o1, ITweaker o2) { @@ -577,6 +580,11 @@ public class CoreModManager { return Ints.saturatedCast((long)first - (long)second); } }); + // Basically a copy of Collections.sort, optimized as we know we're an array list. + // Thanks unhelpful fixer of http://bugs.java.com/view_bug.do?bug_id=8032636 + for (int j = 0; j < toSort.length; j++) { + tweakers.set(j, toSort[j]); + } } public static List getAccessTransformers()