Skip to content

Commit 9af4e2b

Browse files
committed
use NBTRaw for raw data
1 parent 90fd232 commit 9af4e2b

File tree

3 files changed

+37
-19
lines changed

3 files changed

+37
-19
lines changed

nbt/src/main/java/io/github/projectunified/craftitem/nbt/NBTMapNormalizer.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,10 +273,7 @@ private static String normalizeToString(Object value, UnaryOperator<String> tran
273273

274274
private static Object normalizeToRaw(Object value, UnaryOperator<String> translator) {
275275
String rawValue = translator.apply(value.toString());
276-
Map<String, Object> rawMap = new HashMap<>();
277-
rawMap.put("$raw", true);
278-
rawMap.put("$value", rawValue);
279-
return rawMap;
276+
return new NBTRaw(rawValue);
280277
}
281278

282279
private static List<?> normalizeToList(Object value, UnaryOperator<String> translator) {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.github.projectunified.craftitem.nbt;
2+
3+
import java.util.Objects;
4+
5+
/**
6+
* A class indicating the raw NBT data.
7+
*/
8+
public class NBTRaw {
9+
public final String value;
10+
11+
/**
12+
* Create the instance
13+
*
14+
* @param value the raw data
15+
*/
16+
public NBTRaw(String value) {
17+
this.value = value;
18+
}
19+
20+
@Override
21+
public boolean equals(Object o) {
22+
if (o == null || getClass() != o.getClass()) return false;
23+
NBTRaw nbtRaw = (NBTRaw) o;
24+
return Objects.equals(value, nbtRaw.value);
25+
}
26+
27+
@Override
28+
public int hashCode() {
29+
return Objects.hashCode(value);
30+
}
31+
}

nbt/src/main/java/io/github/projectunified/craftitem/nbt/SNBTConverter.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,15 @@ private static String convertValue(Object value) {
6161
return "\"\"";
6262
}
6363

64+
// Check for raw NBT data
65+
if (value instanceof NBTRaw) {
66+
return ((NBTRaw) value).value;
67+
}
68+
6469
// Check for map
6570
if (value instanceof Map) {
6671
@SuppressWarnings("unchecked")
6772
Map<String, Object> map = (Map<String, Object>) value;
68-
// Check if this is a raw string map
69-
if (isRawStringMap(map)) {
70-
return map.get("$value").toString();
71-
}
7273
return convertToCompound(map, false);
7374
}
7475

@@ -312,15 +313,4 @@ private static boolean needsQuotesForKey(String key) {
312313
}
313314
return false;
314315
}
315-
316-
/**
317-
* Checks if a map represents a raw string (has $raw flag set to true)
318-
*/
319-
private static boolean isRawStringMap(Map<String, Object> map) {
320-
Object rawFlag = map.get("$raw");
321-
if (rawFlag instanceof Boolean) {
322-
return (Boolean) rawFlag;
323-
}
324-
return false;
325-
}
326316
}

0 commit comments

Comments
 (0)