@@ -119,7 +119,7 @@ public void drawForeground(ModularGuiContext context) {
119119
120120 @ Override
121121 public void setGhostIngredient (@ NotNull ItemStack ingredient ) {
122- syncHandler .setStack (ingredient );
122+ syncHandler .setStack (ingredient , true );
123123 }
124124
125125 @ Override
@@ -141,7 +141,7 @@ public int getIndex() {
141141 }
142142
143143 public void setStack (ItemStack stack ) {
144- this .syncHandler .setStack (stack );
144+ this .syncHandler .setStack (stack , true );
145145 }
146146
147147 protected static class InputSyncHandler extends SyncHandler {
@@ -168,22 +168,16 @@ public void init(String key, PanelSyncManager syncHandler) {
168168 @ Override
169169 public void readOnClient (int id , PacketBuffer buf ) {
170170 if (id == SLOT_CHANGED ) {
171- boolean onlyAmt = buf .readBoolean ();
172171 var stack = NetworkUtils .readItemStack (buf );
173- boolean init = buf .readBoolean ();
174-
175- this .handler .setStackInSlot (this .index , stack );
176- this .listener .onChange (stack , onlyAmt , true , init );
172+ setStack (stack , false );
177173 }
178174 }
179175
180176 @ Override
181177 public void readOnServer (int id , PacketBuffer buf ) {
182178 if (id == SLOT_CHANGED ) {
183- var onlyAmt = buf .readBoolean ();
184179 var stack = NetworkUtils .readItemStack (buf );
185- this .handler .setStackInSlot (this .index , stack );
186- this .listener .onChange (stack , onlyAmt , false , false );
180+ this .setStack (stack , false );
187181 }
188182 }
189183
@@ -201,25 +195,13 @@ public void detectAndSendChanges(boolean init) {
201195 } else {
202196 this .lastStoredItem = itemStack .isEmpty () ? ItemStack .EMPTY : itemStack .copy ();
203197 }
204- final boolean finalOnlyAmountChanged = onlyAmountChanged ;
205- syncToClient (SLOT_CHANGED , buffer -> {
206- buffer .writeBoolean (finalOnlyAmountChanged );
207- NetworkUtils .writeItemStack (buffer , itemStack );
208- buffer .writeBoolean (init );
209- });
198+ syncToClient (SLOT_CHANGED , buffer -> NetworkUtils .writeItemStack (buffer , itemStack ));
210199 }
211200 }
212201
213202 public void syncStack () {
214203 final var cursorStack = GTUtility .copy (1 , getSyncManager ().getCursorItem ());
215- final var curStack = getStack ();
216- final boolean onlyAmt = ItemHandlerHelper .canItemStacksStackRelaxed (curStack , cursorStack );
217-
218- setStack (cursorStack );
219- syncToServer (SLOT_CHANGED , buffer -> {
220- buffer .writeBoolean (onlyAmt );
221- NetworkUtils .writeItemStack (buffer , cursorStack );
222- });
204+ setStack (cursorStack , true );
223205 }
224206
225207 public ItemStack getStack () {
@@ -231,9 +213,12 @@ public ItemStack getStack() {
231213 *
232214 * @param stack stack to put into this slot
233215 */
234- public void setStack (ItemStack stack ) {
216+ public void setStack (ItemStack stack , boolean sync ) {
217+ var old = getStack ();
218+ boolean onlyAmt = ItemHandlerHelper .canItemStacksStackRelaxed (stack , old );
235219 this .handler .setStackInSlot (this .index , stack );
236- this .listener .onChange (stack , false , getSyncManager ().isClient (), false );
220+ this .listener .onChange (stack , onlyAmt , getSyncManager ().isClient (), false );
221+ if (sync ) syncToServer (SLOT_CHANGED , buffer -> NetworkUtils .writeItemStack (buffer , getStack ()));
237222 }
238223 }
239224}
0 commit comments