aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-12-11 20:49:50 -0500
committerAaron <51387595+AzureAaron@users.noreply.github.com>2023-12-11 20:49:50 -0500
commitfa81452f198c344dcbe6460f6a189a2400780159 (patch)
tree1b03e87e8173bb1269281ce9a15c457a1ad2c629 /src/main/java/de/hysky/skyblocker
parentab3d2e8535500225eb0b71b03026853999aef381 (diff)
downloadSkyblocker-fa81452f198c344dcbe6460f6a189a2400780159.tar.gz
Skyblocker-fa81452f198c344dcbe6460f6a189a2400780159.tar.bz2
Skyblocker-fa81452f198c344dcbe6460f6a189a2400780159.zip
Ignore invalid entity data exceptions
These exceptions seem to be triggered in dungeons as a result of sending invalid data in entity packets, and for some reason when the exceptions are left unchecked they cause lag spikes.
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java25
1 files changed, 25 insertions, 0 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..a5ab3b3e
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java
@@ -0,0 +1,25 @@
+package de.hysky.skyblocker.mixin;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
+import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
+
+import de.hysky.skyblocker.utils.Utils;
+import net.minecraft.entity.data.DataTracker;
+
+@Mixin(DataTracker.class)
+public class DataTrackerMixin {
+
+ @WrapOperation(method = "writeUpdatedEntries", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/data/DataTracker;copyToFrom(Lnet/minecraft/entity/data/DataTracker$Entry;Lnet/minecraft/entity/data/DataTracker$SerializedEntry;)V"))
+ public void skyblocker$ignoreInvalidDataExceptions(DataTracker dataTracker, DataTracker.Entry<?> to, DataTracker.SerializedEntry<?> from, Operation<Void> operation) {
+ if (Utils.isOnHypixel()) {
+ try {
+ operation.call(dataTracker, to, from);
+ } catch (IllegalStateException ignored) {} //These exceptions cause annoying small lag spikes for some reason
+ } else {
+ operation.call(dataTracker, to, from);
+ }
+ }
+}