Skip to content

Commit 81c94f6

Browse files
properly count optionals, add error handling for optional->required key replacement
1 parent 52d0b3d commit 81c94f6

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/main/java/dev/latvian/mods/kubejs/recipe/schema/JsonRecipeSchemaLoader.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,15 @@ private List<RecipeKey<?>> getKeys() {
6464
requiredFirst(merged).stream().skip(merged.size() - newOptionals).map(k -> k.name).toList()));
6565
}
6666

67-
merged.put(key.name, key);
68-
if (key.optional()) {
67+
68+
var oldKeyOptional = merged.containsKey(key.name) && merged.get(key.name).optional();
69+
if (!key.optional() && oldKeyOptional) {
70+
throw new IllegalArgumentException("Optional key '%s' from parent may not be replaced by required key!".formatted(key.name));
71+
} else if (!oldKeyOptional) {
6972
newOptionals++;
7073
}
74+
75+
merged.put(key.name, key);
7176
}
7277

7378
return requiredFirst(merged);

0 commit comments

Comments
 (0)