2121import net .minecraft .client .gui .screens .inventory .AbstractContainerScreen ;
2222import net .minecraft .client .gui .screens .inventory .CreativeModeInventoryScreen ;
2323import net .minecraft .client .gui .screens .inventory .EffectRenderingInventoryScreen ;
24+ import net .minecraft .client .resources .sounds .SimpleSoundInstance ;
25+ import net .minecraft .sounds .SoundEvents ;
2426import net .minecraft .world .entity .HumanoidArm ;
25- import net .minecraft .world .entity .player .Inventory ;
2627import net .minecraft .world .entity .player .Player ;
2728import net .minecraft .world .inventory .CraftingContainer ;
2829import net .minecraft .world .inventory .Slot ;
@@ -57,6 +58,11 @@ private static void requestSort(boolean isPlayer, String screenClass) {
5758 }
5859 }
5960
61+ private static void requestSortFromInput (boolean isPlayer , String screenClass ) {
62+ Minecraft .getInstance ().getSoundManager ().play (SimpleSoundInstance .forUI (SoundEvents .UI_BUTTON_CLICK , 1.0F ));
63+ requestSort (isPlayer , screenClass );
64+ }
65+
6066 //region onScreenEventInit
6167
6268 public static @ Nullable Slot getDefaultButtonPlacement (Collection <Slot > slots , Predicate <Slot > filter ) {
@@ -75,8 +81,12 @@ private static void requestSort(boolean isPlayer, String screenClass) {
7581 @ SubscribeEvent
7682 public static void onScreenEventInit (ScreenEvent .Init .Post event ) {
7783 if (event .getScreen () instanceof AbstractContainerScreen <?> screen && !(screen instanceof CreativeModeInventoryScreen )) {
84+ if (InvTweaksConfig .isDebugEnabled ()) {
85+ InvTweaksMod .LOGGER .info ("Opened screen {} with menu {}" , screen .getClass ().getName (), screen .getMenu ().getClass ().getName ());
86+ }
87+
7888 // first, work with player inventory
79- Slot placement = getDefaultButtonPlacement (screen .getMenu ().slots , slot -> slot . container instanceof Inventory );
89+ Slot placement = getDefaultButtonPlacement (screen .getMenu ().slots , Utils :: isPlayerSlot );
8090 if (placement != null
8191 && InvTweaksConfig .isSortEnabled (true )
8292 && InvTweaksConfig .isButtonEnabled (true )) {
@@ -102,7 +112,7 @@ public static void onScreenEventInit(ScreenEvent.Init.Post event) {
102112 x = override .getX ();
103113 y = override .getY ();
104114 }
105- placement = getDefaultButtonPlacement (screen .getMenu ().slots , slot -> !( slot .container instanceof Inventory || slot .container instanceof CraftingContainer ));
115+ placement = getDefaultButtonPlacement (screen .getMenu ().slots , slot -> slot .isActive () && !( Utils . isPlayerSlot ( slot ) || slot .container instanceof CraftingContainer ));
106116 if (placement != null ) {
107117 if (x == InvTweaksConfig .NO_POS_OVERRIDE ) {
108118 x = placement .x + 17 ;
@@ -114,7 +124,8 @@ public static void onScreenEventInit(ScreenEvent.Init.Post event) {
114124
115125 if (InvTweaksConfig .isSortEnabled (false )) {
116126 try {
117- if (InvTweaksConfig .isButtonEnabled (false )) {
127+ boolean hasButtonPosition = x != InvTweaksConfig .NO_POS_OVERRIDE && y != InvTweaksConfig .NO_POS_OVERRIDE ;
128+ if (hasButtonPosition && InvTweaksConfig .isButtonEnabled (false )) {
118129 event .addListener (new InvTweaksButtonSort (screen .getGuiLeft () + x , screen .getGuiTop () + y , btn -> requestSort (false , screen .getClass ().getName ())));
119130 }
120131 screensWithExtSort .add (screen );
@@ -147,24 +158,24 @@ public static void onKeyPressed(ScreenEvent.KeyPressed.Pre event) {
147158 InvTweaksConfig .isSortEnabled (true ) &&
148159 KeyMappings .SORT_PLAYER .isActiveAndMatches (InputConstants .getKey (event .getKeyCode (), event .getScanCode ()))
149160 ) {
150- requestSort (true , screen .getClass ().getName ());
161+ requestSortFromInput (true , screen .getClass ().getName ());
151162 }
152163 if (
153164 InvTweaksConfig .isSortEnabled (false ) &&
154165 screensWithExtSort .contains (event .getScreen ()) &&
155166 KeyMappings .SORT_INVENTORY .isActiveAndMatches (InputConstants .getKey (event .getKeyCode (), event .getScanCode ()))
156167 ) {
157- requestSort (false , screen .getClass ().getName ());
168+ requestSortFromInput (false , screen .getClass ().getName ());
158169 }
159170
160171 Slot slot = screen .getSlotUnderMouse ();
161172 if (slot != null ) {
162- boolean isPlayerSort = Utils .isPlayerContainer (slot . container , screen , Minecraft . getInstance (). player ); ;
173+ boolean isPlayerSort = Utils .isPlayerSlot (slot ) ;
163174 if (InvTweaksConfig .isSortEnabled (isPlayerSort )
164175 && (isPlayerSort || screensWithExtSort .contains (event .getScreen ()))
165176 && KeyMappings .SORT_EITHER .isActiveAndMatches (
166177 InputConstants .getKey (event .getKeyCode (), event .getScanCode ()))) {
167- requestSort (isPlayerSort , screen .getClass ().getName ());
178+ requestSortFromInput (isPlayerSort , screen .getClass ().getName ());
168179 }
169180 }
170181 }
@@ -188,9 +199,9 @@ public static void onMouseButtonPressed(ScreenEvent.MouseButtonPressed.Pre event
188199 if (Minecraft .getInstance ().player != null && Minecraft .getInstance ().player .hasInfiniteMaterials () && !slot .getItem ().isEmpty ()) {
189200 return ;
190201 }
191- boolean isPlayerSort = Utils .isPlayerContainer (slot . container , screen , Minecraft . getInstance (). player );
202+ boolean isPlayerSort = Utils .isPlayerSlot (slot );
192203 if (InvTweaksConfig .isSortEnabled (isPlayerSort ) && (isPlayerSort || screensWithExtSort .contains (event .getScreen ()))) {
193- requestSort (isPlayerSort , screen .getClass ().getName ());
204+ requestSortFromInput (isPlayerSort , screen .getClass ().getName ());
194205 event .setCanceled (true ); // stop pick block event
195206 }
196207 }
0 commit comments