From fa81452f198c344dcbe6460f6a189a2400780159 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Mon, 11 Dec 2023 20:49:50 -0500 Subject: 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. --- .../hysky/skyblocker/mixin/DataTrackerMixin.java | 25 ++++++++++++++++++++++ src/main/resources/skyblocker.mixins.json | 1 + 2 files changed, 26 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/mixin/DataTrackerMixin.java 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 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); + } + } +} diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index d7ae26e1..df0a49fa 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", "FarmlandBlockMixin", -- cgit