Skip to content
This repository was archived by the owner on Oct 31, 2024. It is now read-only.

Commit 1f7b4be

Browse files
committed
fix: SNBT formatting breaks strings (#62)
1 parent 3b32de5 commit 1f7b4be

File tree

5 files changed

+26
-31
lines changed

5 files changed

+26
-31
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
![Banner](https://raw.githubusercontent.com/wiki/Franckyi/IBE-Editor/img/banner.png)
22

33
[![Latest release](https://img.shields.io/github/v/release/Franckyi/IBE-Editor?label=Latest%20release&color=ff6188&style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QAqgCqAKohOK4IAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5gEIETEZS881VQAAAjpJREFUeNrtmjFrFEEYhp8vhNjIBbtE0CalXVJEsM4vEKz8AUoaK23iXhvs/QVaqPgHJAgWYgRja6eV3oU0cmD/WjiHEXOX3b3d2Zns98LBccPufe8z880M8w20LEmXJD2RNFJ5jcIzK+SuYKSu9tuOzyIAGANrNR8/NrP13AFooQDNWo1xiZ7LATgAB+AAHIADcAAOwAE4AAfgAByAA3AADsABOAAHMFuSHkg6qXKuvWiAFY/RjyXtVnm/VQjkFvA+g04VsG1mn5oeATczGdUGbLeRAoeBbg4j4GPjAMzsAzDMAMCemR21h1d6pHRVxBljaUIo4iZaWhCKbmabNCAU3U653UIo0lh3uoFQJLX2RIZQJLkAR4KQpvlIENI2fwrCwxbMD8lJDUPIy3zDEPI03xCEvM0vCOFimK8JYRgzsDp3ec/ToaTBGf/1uI55SYPwzqb09y7ygnd5m4YQw/y/d5EljVvcuBxJulIyHWKbl6Qxal+zRsI9Sd/D534H5iVJ1sTZfQl9BnbM7GfJeWkAvIlxEh2rMrQFHJyVDl2ajwlgCuGtpGtzzF8H3sWsQcRKgdP6BTwFXgNfwm83gNvALnA5ahWlAwBJyavDfQewnGHME+Alf4qgd4DViu1ZzwETYNPMvoVVYyPsMVZLtmefAi+m5gDM7Gvo7bLt2QOwczxYVY85psBW6NlZKTCv/ULsAybAq/B91iQ4r/0/ACNgnX7qxxLwrMfbgOfLwLTache42hPjo9DxxW8T28aZ6KWnCgAAAABJRU5ErkJggg==)](https://github.com/Franckyi/IBE-Editor/releases/latest)
4-
[![CurseForge](https://img.shields.io/badge/dynamic/json?color=E04E14&label=CurseForge&query=%24.downloadCount&url=https%3A%2F%2Faddons-ecs.forgesvc.net%2Fapi%2Fv2%2Faddon%2F256822&style=for-the-badge&logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/ibe-editor)
54
[![Modrinth](https://img.shields.io/modrinth/dt/E9sX1ncV?color=5da545&label=Modrinth&style=for-the-badge&logo=data:image/png;base64,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)](https://modrinth.com/mod/ibe-editor)
65
[![GitHub](https://img.shields.io/github/downloads/Franckyi/IBE-Editor/total?label=GitHub&color=56a6ff&logo=github&style=for-the-badge)](https://github.com/Franckyi/IBE-Editor/releases)
76
[![License](https://img.shields.io/github/license/Franckyi/IBE-Editor?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAqgCqAKohOK4IAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5gEIERAt5uTUAwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAJFSURBVFjD7Ze7axRRFMbPjHETo4hBfKwIKvhKMHYSyCKBFbQQCyEi/gNaKChGiIUIKbaIXQJqISIr2tgFREVthUCwiVikEEQlGDBE8ZVsHj+bb3EYdmbu7Cjb7GlmzjnfOfe7595z74xZUzII0AV0NpLAV2CukQQAyJLDb/Qy+ilmWwAmgOXwzPkry8IU/mWZ24AbwBLusqSYtjQD3U9IugiUgNaoPQC0CrOYkKtci0A5ZjbjQI/rJgR6FBNVtXtxlWgHZgV8kLULgIeCzQHrXJbiQoBpBdheLwFgG7AQyHc+aXAfmBL4g56lDARKoVxTgB9H4ISA74HDep8F1qYlAKwBvghSAN7p/XgcgZcCDUgfl362DgLn5J6QPiD9RdTgB4AV4DuwQbYzCnoLeCkJTMp9Wvp64JtsB2sF3JVzNGBrCazf0RRteEyuT8DqgH1U9jvhgE3Ab1VgX8h3VUFPUhB4KtdgyL5bx/U8sCXouK6AsRrJOoAfIteZRADYq0F+Ahtr5BtT2LWqIQdMy1iMWM/b8t9yIFDF3ozIVZR/Gsj5ZlYws7yZrZhZEdgPrAq00hEz26H4Uw7XSr+ee4B+YJfuiDzQZ2YnNVbezHqrR++z0FldCfRwVeaBKw4VuAz8crgxHwPt4dKUgY+BO78CvAGGgJ0pNuFW4CLwXPkWgBngNTAMHEo6knPqDO9/f5I1vwkbTqDFocyXzKw3AfMowvXK87yRuFjPgcCMmW2uc4KfPc/LZ6qAmfWZWXedBCabP7BJ8gdedTSMzb8jvAAAAABJRU5ErkJggg==)](https://mit-license.org/)
87
[![Discord](https://img.shields.io/discord/270150463003820033?style=for-the-badge&color=%237289da&label=Discord&logo=discord&logoColor=white)](https://discord.gg/kv2YGxweUj)
8+
[![CurseForge](https://cf.way2muchnoise.eu/256822.svg?badge_style=for_the_badge)](https://www.curseforge.com/minecraft/mc-mods/ibe-editor)
99

1010
## A simple GUI mod to edit an item, a block or an entity in your current world.
1111

common/src/main/java/com/github/franckyi/ibeeditor/client/screen/controller/SNBTEditorController.java

+14-23
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@
66
import com.github.franckyi.ibeeditor.client.screen.view.SNBTEditorView;
77
import com.github.franckyi.ibeeditor.common.EditorType;
88
import com.mojang.brigadier.exceptions.CommandSyntaxException;
9+
import net.minecraft.nbt.SnbtPrinterTagVisitor;
910
import net.minecraft.nbt.TagParser;
11+
import org.apache.logging.log4j.LogManager;
12+
import org.apache.logging.log4j.Logger;
13+
14+
import java.util.ArrayList;
1015

1116
public class SNBTEditorController extends AbstractController<SNBTEditorModel, SNBTEditorView> implements EditorController<SNBTEditorModel, SNBTEditorView> {
17+
18+
private static final Logger LOGGER = LogManager.getLogger();
19+
1220
public SNBTEditorController(SNBTEditorModel model, SNBTEditorView view) {
1321
super(model, view);
1422
}
@@ -26,35 +34,18 @@ public void bind() {
2634
return false;
2735
}
2836
});
37+
view.getFormatButton().disableProperty().bind(view.getTextArea().validProperty().not());
2938
view.getFormatButton().onAction(this::format);
3039
view.getDoneButton().onAction(model::update);
3140
view.getCancelButton().onAction(Guapi.getScreenHandler()::hideScene);
3241
}
3342

3443
private void format() {
35-
String text = model.getValue().replaceAll("\\s", "");
36-
int depth = 0;
37-
StringBuilder newText = new StringBuilder();
38-
for (char c : text.toCharArray()) {
39-
boolean isNewline = false;
40-
if (c == '{' || c == '[') {
41-
depth++;
42-
isNewline = true;
43-
} else if (c == ',') {
44-
isNewline = true;
45-
} else if (c == '}' || c == ']') {
46-
depth--;
47-
newLine(newText, depth);
48-
}
49-
newText.append(c);
50-
if (isNewline) {
51-
newLine(newText, depth);
52-
}
44+
SnbtPrinterTagVisitor formatter = new SnbtPrinterTagVisitor(" ", 0, new ArrayList<>());
45+
try {
46+
model.setValue(formatter.visit(TagParser.parseTag(view.getTextArea().getText())));
47+
} catch (CommandSyntaxException e) {
48+
LOGGER.error("Could not parse NBT tag", e);
5349
}
54-
model.setValue(newText.toString().trim());
55-
}
56-
57-
private void newLine(StringBuilder newText, int depth) {
58-
newText.append("\n").append(" ".repeat(depth));
5950
}
6051
}

forge_update.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"homepage": "https://www.curseforge.com/minecraft/mc-mods/ibe-editor",
33
"promos": {
4-
"1.19-latest": "2.2.0",
5-
"1.19-recommended": "2.2.0",
6-
"1.19.1-latest": "2.2.0",
7-
"1.19.1-recommended": "2.2.0",
8-
"1.19.2-latest": "2.2.0",
9-
"1.19.2-recommended": "2.2.0"
4+
"1.19-latest": "2.2.1",
5+
"1.19-recommended": "2.2.1",
6+
"1.19.1-latest": "2.2.1",
7+
"1.19.1-recommended": "2.2.1",
8+
"1.19.2-latest": "2.2.1",
9+
"1.19.2-recommended": "2.2.1"
1010
}
1111
}

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ org.gradle.daemon=false
44
# IBE Editor
55
minecraft_version=1.19.2
66
archives_base_name=IBEEditor
7-
mod_version=2.2.0
7+
mod_version=2.2.1
88
maven_group=com.github.franckyi.ibeeditor
99
# Fabric https://fabricmc.net/develop/
1010
fabric_loader_version=0.14.9

versions.json

+4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
2+
"2.2.1": {
3+
"type": "release",
4+
"changelog": "* fix: SNBT formatting breaks strings (#82)"
5+
},
26
"2.2.0": {
37
"type": "release",
48
"changelog": "* feat: added button to give item from vault\n* feat: potion effects for tipped arrow (#59)\n* feat: wrap and format SNBT text (#27)\n* feat: Chinese translation (#53)\n* fix: mod not working after changing dimensions\n* fix: GUAPI screen handler not resetting correctly (#60)"

0 commit comments

Comments
 (0)