From 79f3e9cf6b525eb6dcd659541e7907c732d420b1 Mon Sep 17 00:00:00 2001 From: Pyrofab Date: Mon, 22 Apr 2024 21:24:50 +0200 Subject: [PATCH] Throw proper error when a predicate is missing --- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 2 +- .../blabber/impl/common/machine/DialogueStateMachine.java | 4 +++- .../blabber/impl/common/validation/DialogueValidator.java | 5 ----- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e411586..17655d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index e839333..bf68892 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,4 +18,4 @@ pluginManagement { } } -rootProject.name = 'blabber' \ No newline at end of file +rootProject.name = 'blabber' diff --git a/src/main/java/org/ladysnake/blabber/impl/common/machine/DialogueStateMachine.java b/src/main/java/org/ladysnake/blabber/impl/common/machine/DialogueStateMachine.java index ea1c612..696ba8e 100644 --- a/src/main/java/org/ladysnake/blabber/impl/common/machine/DialogueStateMachine.java +++ b/src/main/java/org/ladysnake/blabber/impl/common/machine/DialogueStateMachine.java @@ -135,9 +135,11 @@ public boolean hasConditions() { for (Map.Entry conditionalState : this.conditionalChoices.entrySet()) { List availableChoices = getStates().get(conditionalState.getKey()).choices(); for (Int2BooleanMap.Entry conditionalChoice : conditionalState.getValue().int2BooleanEntrySet()) { + Identifier predicateId = availableChoices.get(conditionalChoice.getIntKey()).condition().orElseThrow().predicate(); LootCondition condition = context.getWorld().getServer().getLootManager().getElement( - LootDataType.PREDICATES, availableChoices.get(conditionalChoice.getIntKey()).condition().orElseThrow().predicate() + LootDataType.PREDICATES, predicateId ); + if (condition == null) throw new IllegalStateException("Could not find predicate " + predicateId); boolean testResult = runTest(condition, context); if (testResult != conditionalChoice.setValue(testResult)) { if (ret == null) ret = new ChoiceAvailabilityPacket(); diff --git a/src/main/java/org/ladysnake/blabber/impl/common/validation/DialogueValidator.java b/src/main/java/org/ladysnake/blabber/impl/common/validation/DialogueValidator.java index e1bacd4..2240b03 100644 --- a/src/main/java/org/ladysnake/blabber/impl/common/validation/DialogueValidator.java +++ b/src/main/java/org/ladysnake/blabber/impl/common/validation/DialogueValidator.java @@ -92,11 +92,6 @@ public static ValidationResult validateStructure(DialogueTemplate dialogue) { } } - // Verify that all illustrations are real. We're doing this here because this is a class and not a record - // So we have our own constructor. - for (Map.Entry state : dialogue.states().entrySet()) { - } - return warnings.isEmpty() ? ValidationResult.success() : new ValidationResult.Warnings(warnings); }