From d4b196dffe5bfd3e131b8aa7f393a2910a44a191 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Mon, 6 Mar 2023 21:19:54 +0100 Subject: [PATCH] added Block Spam fix --- .../MixinConnectionData_NeighbourUpdater.java | 23 +++++++++++++++++++ .../settings/groups/DebugSettings.java | 1 + src/main/resources/viafabricplus.mixins.json | 1 + 3 files changed, 25 insertions(+) create mode 100644 src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/protocol1_13to1_12_2/MixinConnectionData_NeighbourUpdater.java diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/protocol1_13to1_12_2/MixinConnectionData_NeighbourUpdater.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/protocol1_13to1_12_2/MixinConnectionData_NeighbourUpdater.java new file mode 100644 index 00000000..78ad80dd --- /dev/null +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/protocol1_13to1_12_2/MixinConnectionData_NeighbourUpdater.java @@ -0,0 +1,23 @@ +package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion.protocol1_13to1_12_2; + +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_8; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections.ConnectionData; +import de.florianmichael.viafabricplus.settings.groups.DebugSettings; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import java.util.List; + +// Copyright RaphiMC/RK_01 - LICENSE file +@Mixin(value = ConnectionData.NeighbourUpdater.class, remap = false) +public class MixinConnectionData_NeighbourUpdater { + + @Inject(method = "updateBlock", at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z"), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) + public void preventBlockSpam(int x, int y, int z, List records, CallbackInfo ci, int blockState, int newBlockState) { + if (!DebugSettings.getClassWrapper().preventBlockSpam.getValue()) return; + if (blockState == newBlockState) ci.cancel(); + } +} diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/groups/DebugSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/groups/DebugSettings.java index 730964db..b3378d8a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/groups/DebugSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/groups/DebugSettings.java @@ -18,6 +18,7 @@ public class DebugSettings extends SettingGroup { // 1.13 -> 1.12.2 public final ProtocolSyncBooleanSetting executeInputsInSync = new ProtocolSyncBooleanSetting(this, "Execute inputs in sync", ProtocolRange.andOlder(ProtocolVersion.v1_12_2)); public final ProtocolSyncBooleanSetting sneakInstant = new ProtocolSyncBooleanSetting(this, "Sneak instant", new ProtocolRange(ProtocolVersion.v1_12_2, ProtocolVersion.v1_8)); + public final ProtocolSyncBooleanSetting preventBlockSpam = new ProtocolSyncBooleanSetting(this, "Prevent block spam", ProtocolRange.andOlder(ProtocolVersion.v1_12_2)); // 1.12 -> 1.11.1-1.11.2 public final ProtocolSyncBooleanSetting sendOpenInventoryPacket = new ProtocolSyncBooleanSetting(this, "Send open inventory packet", ProtocolRange.andOlder(ProtocolVersion.v1_11_1)); diff --git a/src/main/resources/viafabricplus.mixins.json b/src/main/resources/viafabricplus.mixins.json index 2b835fcc..1d5b3943 100644 --- a/src/main/resources/viafabricplus.mixins.json +++ b/src/main/resources/viafabricplus.mixins.json @@ -105,6 +105,7 @@ "fixes.viaversion.protocol1_11to1_10.MixinProtocol1_11To1_10", "fixes.viaversion.protocol1_12to1_11_1.MixinChatItemRewriter", "fixes.viaversion.protocol1_13to1_12_2.MixinAbstractFenceConnectionHandler", + "fixes.viaversion.protocol1_13to1_12_2.MixinConnectionData_NeighbourUpdater", "fixes.viaversion.protocol1_13to1_12_2.MixinGlassConnectionHandler", "fixes.viaversion.protocol1_13to1_12_2.MixinWorldPackets1_13", "fixes.viaversion.protocol1_14to1_13_2.MixinInventoryPackets_2",