From 515a6f9c8d4bb8389be860ca16ed863c529b21b9 Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Wed, 8 Mar 2023 10:11:53 -0800 Subject: [PATCH] json-able attributes (#8334) --- core/src/mindustry/mod/ContentParser.java | 6 +++++- core/src/mindustry/world/meta/Attribute.java | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 645b188042..f9fc57c156 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -79,7 +79,11 @@ public class ContentParser{ put(Interp.class, (type, data) -> field(Interp.class, data)); put(Blending.class, (type, data) -> field(Blending.class, data)); put(CacheLayer.class, (type, data) -> field(CacheLayer.class, data)); - put(Attribute.class, (type, data) -> Attribute.get(data.asString())); + put(Attribute.class, (type, data) -> { + String attr = data.asString(); + if(Attribute.exists(attr)) return Attribute.get(attr); + return Attribute.add(attr); + }); put(BuildVisibility.class, (type, data) -> field(BuildVisibility.class, data)); put(Schematic.class, (type, data) -> { Object result = fieldOpt(Loadouts.class, data); diff --git a/core/src/mindustry/world/meta/Attribute.java b/core/src/mindustry/world/meta/Attribute.java index a0be6d1cd2..8b960f2b36 100644 --- a/core/src/mindustry/world/meta/Attribute.java +++ b/core/src/mindustry/world/meta/Attribute.java @@ -47,6 +47,11 @@ public class Attribute{ return map.getThrow(name, () -> new IllegalArgumentException("Unknown Attribute type: " + name)); } + /** @return Whether an attribute exists. */ + public static boolean exists(String name){ + return map.containsKey(name); + } + /** Automatically registers this attribute for use. Do not call after mod init. */ public static Attribute add(String name){ Attribute a = new Attribute(all.length, name);