aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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
-rw-r--r--src/main/resources/skyblocker.mixins.json1
3 files changed, 37 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);
}
}
diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json
index ca5390e0..b6308284 100644
--- a/src/main/resources/skyblocker.mixins.json
+++ b/src/main/resources/skyblocker.mixins.json
@@ -10,6 +10,7 @@
"ClientPlayerEntityMixin",
"ClientPlayerInteractionManagerMixin",
"ClientPlayNetworkHandlerMixin",
+ "DataTrackerMixin",
"DrawContextMixin",
"DyeableItemMixin",
"EntityRenderDispatcherMixin",