fix: Кастомные сохранения и модели блоков

- Если какой-либо скоуп с данными ранее не сохранялся, он не будет выдававать ошибку при чтении.
- Методы, изменяющие текстуры моделей блоков более не приводят к ошибкам.
This commit is contained in:
MaXFeeD
2023-12-30 02:47:16 +03:00
parent 8b5151bc89
commit 27e399218b
3 changed files with 10 additions and 2 deletions
@@ -460,7 +460,7 @@ public class NativeItemModel {
}
public NativeItemModel setItemTexturePath(String path) {
if (!path.endsWith(".png")) {
if (path != null && !path.endsWith(".png")) {
path += ".png";
}
mItemTexturePath = path;
@@ -1,6 +1,8 @@
package com.zhekasmirnov.innercore.api.runtime.saver.world;
import com.zhekasmirnov.innercore.api.runtime.saver.serializer.ScriptableSerializer;
import org.apache.commons.math3.exception.NullArgumentException;
import org.mozilla.javascript.Scriptable;
import java.io.IOException;
@@ -8,7 +10,9 @@ public abstract class ScriptableSaverScope implements WorldDataScopeRegistry.Sav
@Override
public void readJson(Object json) throws Exception {
Object scriptable = ScriptableSerializer.scriptableFromJson(json);
if (scriptable instanceof Scriptable) {
if (scriptable == null) {
throw new NullArgumentException();
} else if (scriptable instanceof Scriptable) {
read((Scriptable) scriptable);
} else {
throw new IOException("scriptable saver scope readJson() de-serialized into non scriptable");
@@ -2,6 +2,8 @@ package com.zhekasmirnov.innercore.api.runtime.saver.world;
import com.zhekasmirnov.innercore.api.mod.ScriptableObjectHelper;
import com.zhekasmirnov.innercore.api.runtime.Callback;
import org.apache.commons.math3.exception.NullArgumentException;
import org.json.JSONObject;
import org.mozilla.javascript.ScriptableObject;
@@ -68,6 +70,8 @@ public class WorldDataScopeRegistry {
Object data = json.opt(key);
try {
entry.getValue().readJson(data);
} catch (NullArgumentException err) {
// Data does not exists in json, skipping
} catch (Throwable err) {
errorHandler.handle(key, err);
}