From 55df8d6cf9315509847b58d1120055ca5f6beb09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C4=B1lcan?= Date: Wed, 1 Jan 2020 22:22:57 +0300 Subject: [PATCH] chore(tsl): add detailed info on item parsing errors --- gradle.properties | 2 +- .../tslanguage/action/ChangeAction.java | 6 ++++-- .../twitchspawn/tslanguage/action/DropAction.java | 6 ++++-- .../igoodie/twitchspawn/util/ItemParser.java | 14 ++++++++++++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 80d3fee..f0de4bd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false mod_id=twitchspawn mod_group=net.programmer.igoodie -mod_version=0.4.15 +mod_version=0.4.16 minecraft_version=1.12.2 forge_version=14.23.3.2655 diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/ChangeAction.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/ChangeAction.java index a197f4c..6ea9b86 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/ChangeAction.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/ChangeAction.java @@ -80,8 +80,10 @@ private void parseItem(List itemPart) throws TSLSyntaxError { String randomItem = ExpressionEvaluator.replaceExpressions(this.itemRaw, expression -> { return ExpressionEvaluator.fromArgs(expression, randomEvent); }); - if (!new ItemParser(randomItem).isValid()) - throw new TSLSyntaxError("Invalid item text"); + ItemParser itemParser = new ItemParser(randomItem); + if (!itemParser.isValid()) { + throw new TSLSyntaxError("Invalid item text (%s)", itemParser.getError().getMessage()); + } } @Override diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/DropAction.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/DropAction.java index f4729ff..0e08547 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/DropAction.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/action/DropAction.java @@ -41,8 +41,10 @@ public DropAction(List words) throws TSLSyntaxError { String randomItem = ExpressionEvaluator.replaceExpressions(this.itemRaw, expression -> { return ExpressionEvaluator.fromArgs(expression, randomEvent); }); - if (!new ItemParser(randomItem).isValid()) - throw new TSLSyntaxError("Invalid item text"); + ItemParser itemParser = new ItemParser(randomItem); + if (!itemParser.isValid()) { + throw new TSLSyntaxError("Invalid item text (%s)", itemParser.getError().getMessage()); + } } @Override diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/util/ItemParser.java b/src/main/java/net/programmer/igoodie/twitchspawn/util/ItemParser.java index d535b49..c1220d7 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/util/ItemParser.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/util/ItemParser.java @@ -6,6 +6,7 @@ import net.minecraft.nbt.NBTException; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.programmer.igoodie.twitchspawn.tslanguage.parser.TSLSyntaxError; public class ItemParser { @@ -43,6 +44,19 @@ public boolean isValid() { return true; } + public TSLSyntaxError getError() { + if (getItem() == null) + return new TSLSyntaxError("Unknown item name"); + + try { + JsonToNBT.getTagFromJson(itemNbt); + return null; + + } catch (NBTException e) { + return new TSLSyntaxError(e.getMessage()); + } + } + public ItemStack generateItemStack(int amount) { if (!isValid()) throw new IllegalArgumentException("Cannot generate item stack from invalid item text");