From 4477661d2239d3b2b2c8f7af3b60a511a24acf97 Mon Sep 17 00:00:00 2001 From: SocialMoods Date: Mon, 14 Sep 2026 08:48:24 +0300 Subject: [PATCH 1/2] fix: window index field lookup --- .../virtualinventory/InventoryHooker.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/koshakmine/virtualinventory/InventoryHooker.java b/src/main/java/com/koshakmine/virtualinventory/InventoryHooker.java index de41c97..b63c095 100644 --- a/src/main/java/com/koshakmine/virtualinventory/InventoryHooker.java +++ b/src/main/java/com/koshakmine/virtualinventory/InventoryHooker.java @@ -87,7 +87,7 @@ private boolean processTransaction(Player player, NetworkInventoryAction[] actio boolean cancelled = false; try { - Field field = player.getClass().getDeclaredField("windowIndex"); + Field field = this.findField(player.getClass(), "windowIndex"); field.setAccessible(true); BiMap windows = HashBiMap.create((BiMap) field.get(player)); @@ -123,4 +123,18 @@ private boolean processTransaction(Player player, NetworkInventoryAction[] actio return cancelled; } + + private Field findField(Class clazz, String name) throws NoSuchFieldException { + Class current = clazz; + while (current != null) { + try { + Field f = current.getDeclaredField(name); + f.setAccessible(true); + return f; + } catch (NoSuchFieldException ignored) { + current = current.getSuperclass(); + } + } + throw new NoSuchFieldException(name); + } } \ No newline at end of file From 2b4f798f08a2ee7ad542a7ab67946b8888c2d32b Mon Sep 17 00:00:00 2001 From: SocialMoods Date: Mon, 14 Sep 2026 08:53:01 +0300 Subject: [PATCH 2/2] fix: content loading --- .../com/koshakmine/virtualinventory/InventoryDispatcher.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/koshakmine/virtualinventory/InventoryDispatcher.java b/src/main/java/com/koshakmine/virtualinventory/InventoryDispatcher.java index 669e49f..3220b75 100644 --- a/src/main/java/com/koshakmine/virtualinventory/InventoryDispatcher.java +++ b/src/main/java/com/koshakmine/virtualinventory/InventoryDispatcher.java @@ -42,6 +42,8 @@ public void run() { } if ((timemout & 1) == 0) { + // send contents on every attempt before sending inventory for better content loading + runnable.run(); for (DataPacket packet : packets) { player.directDataPacket(packet); }