aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-12-15 15:47:39 -0500
committerGitHub <noreply@github.com>2023-12-15 15:47:39 -0500
commit8900e7ce79bd16c2b89d9125efcf0ad098842e65 (patch)
tree68814a3ea04f0ba580b09548b4ccfe9ad4caf301 /src/main/java/de
parent4b194f8fc191720ee07b349904a75d33dafd0021 (diff)
parent791f9cd8b40eece4fe258f41ee5bc179cdd63005 (diff)
downloadSkyblocker-8900e7ce79bd16c2b89d9125efcf0ad098842e65.tar.gz
Skyblocker-8900e7ce79bd16c2b89d9125efcf0ad098842e65.tar.bz2
Skyblocker-8900e7ce79bd16c2b89d9125efcf0ad098842e65.zip
Merge pull request #449 from AzureAaron/performance-fix
Ignore invalid entity data exceptions & broken quiz question
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java19
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java25
2 files changed, 36 insertions, 8 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java b/src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java
new file mode 100644
index 00000000..0d12200c
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java
@@ -0,0 +1,19 @@
+package de.hysky.skyblocker.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import de.hysky.skyblocker.utils.Utils;
+import dev.cbyrne.betterinject.annotations.Inject;
+import net.minecraft.entity.data.DataTracker;
+
+@Mixin(DataTracker.class)
+public class DataTrackerMixin {
+
+ @Inject(method = "copyToFrom", at = @At(value = "NEW", target = "Ljava/lang/IllegalStateException;", shift = At.Shift.BEFORE), cancellable = true)
+ public void skyblocker$ignoreInvalidDataExceptions(CallbackInfo ci) {
+ //These exceptions cause annoying small lag spikes for some reason
+ if (Utils.isOnHypixel()) ci.cancel();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java
index 53368c14..21bbdce0 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java
@@ -10,11 +10,15 @@ import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+
+import com.mojang.logging.LogUtils;
import java.util.*;
import java.util.regex.Matcher;
public class Trivia extends ChatPatternListener {
+ private static final Logger LOGGER = LogUtils.getLogger();
private static final Map<String, String[]> answers;
private List<String> solutions = Collections.emptyList();
@@ -42,14 +46,19 @@ public class Trivia extends ChatPatternListener {
}
private void updateSolutions(String question) {
- String trimmedQuestion = question.trim();
- if (trimmedQuestion.equals("What SkyBlock year is it?")) {
- long currentTime = System.currentTimeMillis() / 1000L;
- long diff = currentTime - 1560276000;
- int year = (int) (diff / 446400 + 1);
- solutions = Collections.singletonList("Year " + year);
- } else {
- solutions = Arrays.asList(answers.get(trimmedQuestion));
+ try {
+ String trimmedQuestion = question.trim();
+ if (trimmedQuestion.equals("What SkyBlock year is it?")) {
+ long currentTime = System.currentTimeMillis() / 1000L;
+ long diff = currentTime - 1560276000;
+ int year = (int) (diff / 446400 + 1);
+ solutions = Collections.singletonList("Year " + year);
+ } else {
+ String[] questionAnswers = answers.get(trimmedQuestion);
+ if (questionAnswers != null) solutions = Arrays.asList(questionAnswers);
+ }
+ } catch (Exception e) { //Hopefully the solver doesn't go south
+ LOGGER.error("[Skyblocker] Failed to update the Trivia puzzle answers!", e);
}
}