diff --git a/client/gui/widgets/GuiImgButton.java b/client/gui/widgets/GuiImgButton.java index cc4b1328..e383e00e 100644 --- a/client/gui/widgets/GuiImgButton.java +++ b/client/gui/widgets/GuiImgButton.java @@ -148,6 +148,7 @@ public class GuiImgButton extends GuiButton implements ITooltip registerApp( 64, Settings.SORT_BY, SortOrder.NAME, ButtonToolTips.SortBy, ButtonToolTips.ItemName ); registerApp( 65, Settings.SORT_BY, SortOrder.AMOUNT, ButtonToolTips.SortBy, ButtonToolTips.NumberOfItems ); registerApp( 68, Settings.SORT_BY, SortOrder.INVTWEAKS, ButtonToolTips.SortBy, ButtonToolTips.InventoryTweaks ); + registerApp( 69, Settings.SORT_BY, SortOrder.MOD, ButtonToolTips.SortBy, ButtonToolTips.Mod ); registerApp( 66, Settings.ACTIONS, ActionItems.WRENCH, ButtonToolTips.PartitionStorage, ButtonToolTips.PartitionStorageHint ); registerApp( 6, Settings.ACTIONS, ActionItems.CLOSE, ButtonToolTips.Clear, ButtonToolTips.ClearSettings ); diff --git a/client/me/ItemRepo.java b/client/me/ItemRepo.java index ec107096..1f5f6e6e 100644 --- a/client/me/ItemRepo.java +++ b/client/me/ItemRepo.java @@ -275,7 +275,9 @@ public class ItemRepo ItemSorters.Direction = (appeng.api.config.SortDir) SortDir; ItemSorters.init(); - if ( SortBy == SortOrder.AMOUNT ) + if ( SortBy == SortOrder.MOD ) + Collections.sort( view, ItemSorters.ConfigBased_SortByMod ); + else if ( SortBy == SortOrder.AMOUNT ) Collections.sort( view, ItemSorters.ConfigBased_SortBySize ); else if ( SortBy == SortOrder.INVTWEAKS ) Collections.sort( view, ItemSorters.ConfigBased_SortByInvTweaks ); diff --git a/core/localization/ButtonToolTips.java b/core/localization/ButtonToolTips.java index 83b63301..b4630b52 100644 --- a/core/localization/ButtonToolTips.java +++ b/core/localization/ButtonToolTips.java @@ -34,7 +34,7 @@ public enum ButtonToolTips LevelType, LevelType_Energy, LevelType_Item, InventoryTweaks, TerminalStyle, TerminalStyle_Full, TerminalStyle_Tall, TerminalStyle_Small, - Stash, StashDesc, Encode, EncodeDescription, Substitutions, SubstitutionsOn, SubstitutionsOff, SubstitutionsDesc, CraftOnly, CraftEither, Craft; + Stash, StashDesc, Encode, EncodeDescription, Substitutions, SubstitutionsOn, SubstitutionsOff, SubstitutionsDesc, CraftOnly, CraftEither, Craft, Mod; String root; diff --git a/util/ItemSorters.java b/util/ItemSorters.java index 0bf3c3cb..8f1d41e1 100644 --- a/util/ItemSorters.java +++ b/util/ItemSorters.java @@ -7,6 +7,7 @@ import appeng.api.storage.data.IAEItemStack; import appeng.core.AppEng; import appeng.integration.IntegrationType; import appeng.integration.abstraction.IInvTweaks; +import appeng.util.item.AEItemStack; public class ItemSorters { @@ -63,6 +64,28 @@ public class ItemSorters } }; + public static Comparator ConfigBased_SortByMod = new Comparator() { + + @Override + public int compare(IAEItemStack o1, IAEItemStack o2) + { + AEItemStack op1 = (AEItemStack) o1; + AEItemStack op2 = (AEItemStack) o2; + + if ( Direction == SortDir.ASCENDING ) + return secondarySort( op2.getModID().compareToIgnoreCase( op1.getModID() ), o1, o2 ); + return secondarySort( op1.getModID().compareToIgnoreCase( op2.getModID() ), o2, o1 ); + } + + private int secondarySort(int compareToIgnoreCase, IAEItemStack o1, IAEItemStack o2) + { + if ( compareToIgnoreCase == 0 ) + return Platform.getItemDisplayName( o2 ).compareToIgnoreCase( Platform.getItemDisplayName( o1 ) ); + + return compareToIgnoreCase; + } + }; + public static Comparator ConfigBased_SortBySize = new Comparator() { @Override @@ -73,6 +96,7 @@ public class ItemSorters return compareLong( o1.getStackSize(), o2.getStackSize() ); } }; + public static Comparator ConfigBased_SortByInvTweaks = new Comparator() { @Override