diff --git a/src/main/java/com/reider745/hooks/ItemUtils.java b/src/main/java/com/reider745/hooks/ItemUtils.java index e70a3fde..8b2d8005 100644 --- a/src/main/java/com/reider745/hooks/ItemUtils.java +++ b/src/main/java/com/reider745/hooks/ItemUtils.java @@ -118,9 +118,14 @@ public class ItemUtils implements HookClass { String custom = tag.getString(INNER_CORE_TAG_NAME); if(!custom.equals("")){ NativeItemInstanceExtra extra = new NativeItemInstanceExtra(); + extra.getProvider().apply(item); extra.setAllCustomData(custom); return extra; } return null; } + + public static void removePointer(long ptr){ + items_pointers.removePointer(ptr); + } } diff --git a/src/main/java/com/zhekasmirnov/innercore/api/NativeItemInstanceExtra.java b/src/main/java/com/zhekasmirnov/innercore/api/NativeItemInstanceExtra.java index 91903b38..17338894 100644 --- a/src/main/java/com/zhekasmirnov/innercore/api/NativeItemInstanceExtra.java +++ b/src/main/java/com/zhekasmirnov/innercore/api/NativeItemInstanceExtra.java @@ -115,9 +115,11 @@ public class NativeItemInstanceExtra { @Override protected void finalize() throws Throwable { super.finalize(); - if (isFinalizable) { + + ItemUtils.removePointer(ptr); + /*if (isFinalizable) { finalizeNative(ptr); // TODO: !!! make extra ptr for java extra instance unique in any case - } + }*/ } public NativeItemInstanceExtra(long extra) { @@ -158,6 +160,10 @@ public class NativeItemInstanceExtra { isFinalizable = nativeIsFinalizable(ptr); } + public ItemExtraDataProvider getProvider() { + return provider; + } + public JSONObject asJson() { if (isEmpty()) { return null;