From 8e044e8abc6b3b9d1965e7775524849c64cd4038 Mon Sep 17 00:00:00 2001
From: RaphiMC <50594595+RaphiMC@users.noreply.github.com>
Date: Sun, 27 Aug 2023 14:50:58 +0200
Subject: [PATCH] Fixed sign editor closing when sign is too far away in <=
1.19.4
---
.../screen/MixinAbstractSignEditScreen.java | 45 +++++++++++++++++++
src/main/resources/viafabricplus.mixins.json | 1 +
2 files changed, 46 insertions(+)
create mode 100644 src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAbstractSignEditScreen.java
diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAbstractSignEditScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAbstractSignEditScreen.java
new file mode 100644
index 00000000..3c66baaf
--- /dev/null
+++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAbstractSignEditScreen.java
@@ -0,0 +1,45 @@
+/*
+ * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
+ * Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen;
+
+import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
+import net.minecraft.block.entity.SignBlockEntity;
+import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen;
+import net.raphimc.vialoader.util.VersionEnum;
+import org.spongepowered.asm.mixin.Final;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@Mixin(AbstractSignEditScreen.class)
+public abstract class MixinAbstractSignEditScreen {
+
+ @Shadow
+ @Final
+ private SignBlockEntity blockEntity;
+
+ @Inject(method = "canEdit", at = @At("HEAD"), cancellable = true)
+ private void dontCloseTooFarAwaySigns(CallbackInfoReturnable cir) {
+ if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) {
+ cir.setReturnValue(this.blockEntity.getType().supports(this.blockEntity.getCachedState()));
+ }
+ }
+
+}
diff --git a/src/main/resources/viafabricplus.mixins.json b/src/main/resources/viafabricplus.mixins.json
index e1ae0ef1..7ef7a23e 100644
--- a/src/main/resources/viafabricplus.mixins.json
+++ b/src/main/resources/viafabricplus.mixins.json
@@ -112,6 +112,7 @@
"fixes.minecraft.packet.MixinChatMessageC2SPacket",
"fixes.minecraft.packet.MixinPacketByteBuf",
"fixes.minecraft.packet.MixinUpdatePlayerAbilitiesC2SPacket",
+ "fixes.minecraft.screen.MixinAbstractSignEditScreen",
"fixes.minecraft.screen.MixinAnvilScreen",
"fixes.minecraft.screen.MixinChatHud",
"fixes.minecraft.screen.MixinChatScreen",