From b9c519e3a7e945cd48d1b235e64730b3ea536d33 Mon Sep 17 00:00:00 2001 From: Reider745 <70357814+Reider745@users.noreply.github.com> Date: Fri, 24 Nov 2023 18:30:20 +0300 Subject: [PATCH] ZotCoreLoader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - добавлена привязка NativeItemInstanceExtra к Item при получении из Item - добавлена очистка поинтера после удаления NativeItemInstanceExtra из памяти --- src/main/java/com/reider745/hooks/ItemUtils.java | 5 +++++ .../innercore/api/NativeItemInstanceExtra.java | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) 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;