Skip to content

Commit 8400155

Browse files
authored
Anvil input and relocation detection fixes (#791)
1 parent 666102c commit 8400155

File tree

2 files changed

+6
-5
lines changed
  • inventory-framework-anvil-input/src/main/java/me/devnatan/inventoryframework
  • inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework

2 files changed

+6
-5
lines changed

inventory-framework-anvil-input/src/main/java/me/devnatan/inventoryframework/AnvilInputNMS.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class AnvilInputNMS {
4040
private static final MethodHandle SET_PLAYER_ACTIVE_CONTAINER;
4141
private static final MethodHandle ADD_CONTAINER_SLOT_LISTENER;
4242
private static final MethodHandle INIT_MENU;
43+
private static final MethodHandle GET_TOP_INVENTORY;
4344

4445
// FIELDS
4546
private static final MethodHandle CONTAINER_CHECK_REACHABLE;
@@ -73,6 +74,8 @@ class AnvilInputNMS {
7374
ADD_CONTAINER_SLOT_LISTENER = getMethod(
7475
CONTAINER, "a", MethodType.methodType(void.class, getNMSClass("world.inventory.ICrafting")));
7576
INIT_MENU = getMethod(ENTITY_PLAYER, "a", MethodType.methodType(void.class, CONTAINER));
77+
78+
GET_TOP_INVENTORY = getMethod(InventoryView.class, "getTopInventory", MethodType.methodType(Inventory.class));
7679
} catch (Exception exception) {
7780
throw new RuntimeException(
7881
"Unsupported version for Anvil Input feature: " + ReflectionUtils.getVersionInformation(),
@@ -92,8 +95,7 @@ public static Inventory open(Player player, Object title, String initialInput) {
9295
final Object anvilContainer = ANVIL_CONSTRUCTOR.invoke(windowId, GET_PLAYER_INVENTORY.invoke(entityPlayer));
9396
CONTAINER_CHECK_REACHABLE.invoke(anvilContainer, false);
9497

95-
final AnvilInventory inventory = (AnvilInventory)
96-
((InventoryView) InventoryUpdate.getBukkitView.invoke(anvilContainer)).getTopInventory();
98+
final AnvilInventory inventory = (AnvilInventory) GET_TOP_INVENTORY.invoke(InventoryUpdate.getBukkitView.invoke(anvilContainer));
9799

98100
inventory.setMaximumRepairCost(0);
99101

inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/ViewFrame.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import me.devnatan.inventoryframework.feature.FeatureInstaller;
1616
import me.devnatan.inventoryframework.internal.BukkitElementFactory;
1717
import me.devnatan.inventoryframework.internal.PlatformUtils;
18-
import me.devnatan.inventoryframework.runtime.InventoryFramework;
1918
import me.devnatan.inventoryframework.runtime.thirdparty.Metrics;
2019
import org.bukkit.entity.Player;
2120
import org.bukkit.plugin.Plugin;
@@ -28,7 +27,7 @@ public class ViewFrame extends IFViewFrame<ViewFrame, View> {
2827

2928
private static final String BSTATS_SYSTEM_PROP = "inventory-framework.enable-bstats";
3029
private static final int BSTATS_PROJECT_ID = 15518;
31-
private static final String PLUGIN_FQN = InventoryFramework.class.getName();
30+
private static final String PLUGIN_FQN = "me#devnatan#inventoryframework#runtime#InventoryFramework";
3231

3332
private static final String RELOCATION_MESSAGE =
3433
"Inventory Framework is running as a shaded non-relocated library. It's extremely recommended that "
@@ -270,7 +269,7 @@ private void checkRelocationIssues() {
270269
getOwner().getServer().getPluginManager().isPluginEnabled("InventoryFramework");
271270
boolean isLibraryPresent = false;
272271
try {
273-
Class.forName(PLUGIN_FQN);
272+
Class.forName(PLUGIN_FQN.replace('#', '.'));
274273
isLibraryPresent = true;
275274
} catch (ClassNotFoundException ignored) {
276275
}

0 commit comments

Comments
 (0)