ZotCoreLoader

- добавлена привязка NativeItemInstanceExtra к Item при получении из Item
- добавлена очистка поинтера после удаления NativeItemInstanceExtra из памяти
This commit is contained in:
Reider745
2023-11-24 18:30:20 +03:00
parent e54e27cccf
commit b9c519e3a7
2 changed files with 13 additions and 2 deletions
@@ -118,9 +118,14 @@ public class ItemUtils implements HookClass {
String custom = tag.getString(INNER_CORE_TAG_NAME); String custom = tag.getString(INNER_CORE_TAG_NAME);
if(!custom.equals("")){ if(!custom.equals("")){
NativeItemInstanceExtra extra = new NativeItemInstanceExtra(); NativeItemInstanceExtra extra = new NativeItemInstanceExtra();
extra.getProvider().apply(item);
extra.setAllCustomData(custom); extra.setAllCustomData(custom);
return extra; return extra;
} }
return null; return null;
} }
public static void removePointer(long ptr){
items_pointers.removePointer(ptr);
}
} }
@@ -115,9 +115,11 @@ public class NativeItemInstanceExtra {
@Override @Override
protected void finalize() throws Throwable { protected void finalize() throws Throwable {
super.finalize(); super.finalize();
if (isFinalizable) {
ItemUtils.removePointer(ptr);
/*if (isFinalizable) {
finalizeNative(ptr); // TODO: !!! make extra ptr for java extra instance unique in any case finalizeNative(ptr); // TODO: !!! make extra ptr for java extra instance unique in any case
} }*/
} }
public NativeItemInstanceExtra(long extra) { public NativeItemInstanceExtra(long extra) {
@@ -158,6 +160,10 @@ public class NativeItemInstanceExtra {
isFinalizable = nativeIsFinalizable(ptr); isFinalizable = nativeIsFinalizable(ptr);
} }
public ItemExtraDataProvider getProvider() {
return provider;
}
public JSONObject asJson() { public JSONObject asJson() {
if (isEmpty()) { if (isEmpty()) {
return null; return null;