Skip to content

Commit 17ebdf5

Browse files
committed
'data' key allowance improvement
1 parent 8c900e5 commit 17ebdf5

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

SharpDenizenTools/ScriptAnalysis/ScriptChecker.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class ScriptChecker
4141
{ "format", new KnownScriptType() { RequiredKeys = new[] { "format" }, LikelyBadKeys = new[] { "script", "actions", "steps", "events" }, ValueKeys = new[] { "format" }, Strict = true, CanHaveRandomScripts = false } },
4242
{ "interact", new KnownScriptType() { RequiredKeys = new[] { "steps" }, LikelyBadKeys = new[] { "script", "actions", "events" }, ScriptKeys = new[] { "steps.*" }, Strict = true } },
4343
{ "inventory", new KnownScriptType() { RequiredKeys = new[] { "inventory" }, LikelyBadKeys = new[] { "script", "steps", "actions", "events" }, ValueKeys = new[] { "inventory", "title", "size", "definitions.*", "gui" }, ScriptKeys = new[] { "procedural items" }, ListKeys = new[] { "slots" }, Strict = true, CanHaveRandomScripts = false } },
44-
{ "item", new KnownScriptType() { RequiredKeys = new[] { "material" }, LikelyBadKeys = new[] { "script", "steps", "actions", "events" }, ValueKeys = new[] { "material", "mechanisms.*", "display name", "durability", "recipes.*", "no_id", "color", "book" }, ListKeys = new[] { "mechanisms.*", "lore", "enchantments", "recipes.*" }, Strict = false, CanHaveRandomScripts = false } },
44+
{ "item", new KnownScriptType() { RequiredKeys = new[] { "material" }, LikelyBadKeys = new[] { "script", "steps", "actions", "events" }, ValueKeys = new[] { "material", "mechanisms.*", "display name", "durability", "recipes.*", "no_id", "color", "book" }, ListKeys = new[] { "mechanisms.*", "lore", "enchantments", "recipes.*" }, Strict = true, CanHaveRandomScripts = false } },
4545
{ "map", new KnownScriptType() { LikelyBadKeys = new[] { "script", "steps", "actions", "events" }, ValueKeys = new[] { "original", "display name", "auto update", "objects.*" }, Strict = true, CanHaveRandomScripts = false } }
4646
};
4747

@@ -1056,6 +1056,10 @@ void checkBasicList(List<object> list)
10561056
{
10571057
warnScript(Warnings, keyLine.Line, "list_should_be_value", $"Bad key `{keyName.Replace('`', '\'')}` (was expected to be a direct Value, but was instead a list - check `!lang {typeString.Text} script containers` for format rules)!");
10581058
}
1059+
else if (typeString.Text == "data" || keyName == "data")
1060+
{
1061+
// Always allow 'data'
1062+
}
10591063
else if (scriptType.Strict)
10601064
{
10611065
warnScript(Warnings, keyLine.Line, "unknown_key_" + typeString.Text, $"Unexpected list key `{keyName.Replace('`', '\'')}` (unrecognized - check `!lang {typeString.Text} script containers` for format rules)!");
@@ -1064,7 +1068,7 @@ void checkBasicList(List<object> list)
10641068
{
10651069
checkAsScript(listAtKey, new HashSet<string>());
10661070
}
1067-
else if (typeString.Text != "data")
1071+
else
10681072
{
10691073
checkBasicList(listAtKey);
10701074
}
@@ -1080,6 +1084,10 @@ void checkBasicList(List<object> list)
10801084
{
10811085
warnScript(Warnings, keyLine.Line, "bad_key_" + typeString.Text, $"Bad key `{keyName.Replace('`', '\'')}` (was expected to be a list or script, but was instead a direct Value - check `!lang {typeString.Text} script containers` for format rules)!");
10821086
}
1087+
else if (typeString.Text == "data" || keyName == "data")
1088+
{
1089+
// Always allow 'data'
1090+
}
10831091
else if (scriptType.Strict)
10841092
{
10851093
warnScript(Warnings, keyLine.Line, "unknown_key_" + typeString.Text, $"Unexpected value key `{keyName.Replace('`', '\'')}` (unrecognized - check `!lang {typeString.Text} script containers` for format rules)!");
@@ -1120,12 +1128,12 @@ void checkSubMaps(Dictionary<LineTrackedString, object> subMap)
11201128
if (scriptType.ValueKeys.Contains(keyText) || scriptType.ListKeys.Contains(keyText) || scriptType.ScriptKeys.Contains(keyText)
11211129
|| scriptType.ValueKeys.Contains("*") || scriptType.ListKeys.Contains("*") || scriptType.ScriptKeys.Contains("*"))
11221130
{
1123-
if (typeString.Text != "data" && keyText != "data")
1131+
if (typeString.Text != "data" && keyName != "data")
11241132
{
11251133
checkSubMaps(keyPairMap);
11261134
}
11271135
}
1128-
else if (scriptType.Strict && keyText != "data")
1136+
else if (scriptType.Strict && keyName != "data")
11291137
{
11301138
warnScript(Warnings, keyLine.Line, "unknown_key_" + typeString.Text, $"Unexpected submapping key `{keyName.Replace('`', '\'')}` (unrecognized - check `!lang {typeString.Text} script containers` for format rules)!");
11311139
}

0 commit comments

Comments
 (0)