diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-12-15 15:47:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-15 15:47:39 -0500 |
commit | 8900e7ce79bd16c2b89d9125efcf0ad098842e65 (patch) | |
tree | 68814a3ea04f0ba580b09548b4ccfe9ad4caf301 /src/main/java/de | |
parent | 4b194f8fc191720ee07b349904a75d33dafd0021 (diff) | |
parent | 791f9cd8b40eece4fe258f41ee5bc179cdd63005 (diff) | |
download | Skyblocker-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.java | 19 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java | 25 |
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); } } |