From f8d4edc26872c71f755e6d2e8062b8046ae0a5b3 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 23 Oct 2022 18:17:23 +0200 Subject: [PATCH] Make 22w42a mostly work NoChatReports is still completely broken. Also WurstClient.MC can't be static final anymore, because something is now loading the WurstClient class extremely early, which causes that field to be null. Can't seem to find what's doing that. --- .../java/net/wurstclient/WurstClient.java | 6 +- .../wurstclient/altmanager/AltRenderer.java | 20 ++---- .../net/wurstclient/commands/AnnoyCmd.java | 2 +- .../java/net/wurstclient/commands/GmCmd.java | 2 +- .../net/wurstclient/commands/LeaveCmd.java | 2 +- .../java/net/wurstclient/commands/SayCmd.java | 4 +- .../net/wurstclient/hacks/AutoLeaveHack.java | 2 +- .../net/wurstclient/hacks/ForceOpHack.java | 6 +- .../net/wurstclient/hacks/InvWalkHack.java | 4 +- .../net/wurstclient/hacks/MassTpaHack.java | 2 +- ....java => AbstractSignEditScreenMixin.java} | 8 +-- .../wurstclient/mixin/ChatScreenMixin.java | 47 ++----------- .../mixin/ClientPlayerEntityMixin.java | 61 ++++++++--------- .../mixin/MessageHandlerMixin.java | 44 ------------ .../wurstclient/mixin/ProfileKeysMixin.java | 67 +++++++++---------- .../other_features/NoChatReportsOtf.java | 4 +- .../ProblematicResourcePackDetector.java | 10 ++- .../wurstclient/util/FakePlayerEntity.java | 3 +- src/main/resources/fabric.mod.json | 6 +- src/main/resources/wurst.mixins.json | 3 +- 20 files changed, 104 insertions(+), 199 deletions(-) rename src/main/java/net/wurstclient/mixin/{SignEditScreenMixin.java => AbstractSignEditScreenMixin.java} (85%) delete mode 100644 src/main/java/net/wurstclient/mixin/MessageHandlerMixin.java diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index d7fce18c..e9d9576c 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -55,8 +55,8 @@ public enum WurstClient { INSTANCE; - public static final MinecraftClient MC = MinecraftClient.getInstance(); - public static final IMinecraftClient IMC = (IMinecraftClient)MC; + public static MinecraftClient MC; + public static IMinecraftClient IMC; public static final String VERSION = "7.29"; public static final String MC_VERSION = "22w42a"; @@ -89,6 +89,8 @@ public enum WurstClient { System.out.println("Starting Wurst Client..."); + MC = MinecraftClient.getInstance(); + IMC = (IMinecraftClient)MC; wurstFolder = createWurstFolder(); String trackingID = "UA-52838431-5"; diff --git a/src/main/java/net/wurstclient/altmanager/AltRenderer.java b/src/main/java/net/wurstclient/altmanager/AltRenderer.java index 0d7b6f74..c1595f70 100644 --- a/src/main/java/net/wurstclient/altmanager/AltRenderer.java +++ b/src/main/java/net/wurstclient/altmanager/AltRenderer.java @@ -19,12 +19,8 @@ import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.util.DefaultSkinHelper; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; -import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.Uuids; -import net.minecraft.world.GameMode; -import net.wurstclient.WurstClient; public final class AltRenderer { @@ -38,13 +34,11 @@ public final class AltRenderer if(loadedSkins.get(name) == null) { - UUID uuid = Uuids - .getUuidFromProfile(new GameProfile((UUID)null, name)); + UUID uuid = + Uuids.getUuidFromProfile(new GameProfile((UUID)null, name)); - PlayerListEntry entry = new PlayerListEntry( - new PlayerListS2CPacket.Entry(new GameProfile(uuid, name), 0, - GameMode.CREATIVE, Text.literal(name), null), - WurstClient.MC.getServicesSignatureVerifier(), false); + PlayerListEntry entry = + new PlayerListEntry(new GameProfile(uuid, name)); loadedSkins.put(name, entry.getSkinTexture()); } @@ -95,8 +89,7 @@ public final class AltRenderer bindSkinTexture(name); boolean slim = DefaultSkinHelper - .getModel(Uuids.getOfflinePlayerUuid(name)) - .equals("slim"); + .getModel(Uuids.getOfflinePlayerUuid(name)).equals("slim"); GL11.glEnable(GL11.GL_BLEND); RenderSystem.setShaderColor(1, 1, 1, 1); @@ -227,8 +220,7 @@ public final class AltRenderer bindSkinTexture(name); boolean slim = DefaultSkinHelper - .getModel(Uuids.getOfflinePlayerUuid(name)) - .equals("slim"); + .getModel(Uuids.getOfflinePlayerUuid(name)).equals("slim"); GL11.glEnable(GL11.GL_BLEND); RenderSystem.setShaderColor(1, 1, 1, 1); diff --git a/src/main/java/net/wurstclient/commands/AnnoyCmd.java b/src/main/java/net/wurstclient/commands/AnnoyCmd.java index d839ae25..6a1aea0d 100644 --- a/src/main/java/net/wurstclient/commands/AnnoyCmd.java +++ b/src/main/java/net/wurstclient/commands/AnnoyCmd.java @@ -112,6 +112,6 @@ public final class AnnoyCmd extends Command implements ChatInputListener if(rcMode.isChecked() && repeated.startsWith(".")) WURST.getCmdProcessor().process(repeated.substring(1)); else - MC.player.sendChatMessage(repeated, null); + MC.getNetworkHandler().method_45729(repeated); } } diff --git a/src/main/java/net/wurstclient/commands/GmCmd.java b/src/main/java/net/wurstclient/commands/GmCmd.java index 5edece2f..56017a98 100644 --- a/src/main/java/net/wurstclient/commands/GmCmd.java +++ b/src/main/java/net/wurstclient/commands/GmCmd.java @@ -49,6 +49,6 @@ public final class GmCmd extends Command } String message = "gamemode " + args2; - MC.player.sendCommand(message); + MC.getNetworkHandler().method_45730(message); } } diff --git a/src/main/java/net/wurstclient/commands/LeaveCmd.java b/src/main/java/net/wurstclient/commands/LeaveCmd.java index c0a6ad83..dd9e4d3b 100644 --- a/src/main/java/net/wurstclient/commands/LeaveCmd.java +++ b/src/main/java/net/wurstclient/commands/LeaveCmd.java @@ -23,7 +23,7 @@ public final class LeaveCmd extends Command { if(args.length == 1 && args[0].equalsIgnoreCase("taco")) for(int i = 0; i < 128; i++) - MC.player.sendChatMessage("Taco!", null); + MC.getNetworkHandler().method_45729("Taco!"); else if(args.length != 0) throw new CmdSyntaxError(); diff --git a/src/main/java/net/wurstclient/commands/SayCmd.java b/src/main/java/net/wurstclient/commands/SayCmd.java index 065b285f..64ddba54 100644 --- a/src/main/java/net/wurstclient/commands/SayCmd.java +++ b/src/main/java/net/wurstclient/commands/SayCmd.java @@ -30,8 +30,8 @@ public final class SayCmd extends Command String message = String.join(" ", args); if(message.startsWith("/")) - MC.player.sendCommand(message.substring(1)); + MC.getNetworkHandler().method_45730(message.substring(1)); else - MC.player.sendChatMessage(message, null); + MC.getNetworkHandler().method_45729(message); } } diff --git a/src/main/java/net/wurstclient/hacks/AutoLeaveHack.java b/src/main/java/net/wurstclient/hacks/AutoLeaveHack.java index f7c4f648..5ebceb9a 100644 --- a/src/main/java/net/wurstclient/hacks/AutoLeaveHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoLeaveHack.java @@ -87,7 +87,7 @@ public final class AutoLeaveHack extends Hack implements UpdateListener break; case CHARS: - MC.player.sendChatMessage("\u00a7", null); + MC.getNetworkHandler().method_45729("\u00a7"); break; case TELEPORT: diff --git a/src/main/java/net/wurstclient/hacks/ForceOpHack.java b/src/main/java/net/wurstclient/hacks/ForceOpHack.java index 5912fca1..d2abfb88 100644 --- a/src/main/java/net/wurstclient/hacks/ForceOpHack.java +++ b/src/main/java/net/wurstclient/hacks/ForceOpHack.java @@ -172,7 +172,8 @@ public final class ForceOpHack extends Hack implements ChatInputListener return; } - MC.player.sendCommand("login " + MC.getSession().getUsername()); + MC.getNetworkHandler() + .method_45730("login " + MC.getSession().getUsername()); lastPW = 0; sendIndexToDialog(); @@ -202,7 +203,8 @@ public final class ForceOpHack extends Hack implements ChatInputListener while(!sent) try { - MC.player.sendCommand("login " + passwords[i]); + MC.getNetworkHandler() + .method_45730("login " + passwords[i]); sent = true; }catch(Exception e) diff --git a/src/main/java/net/wurstclient/hacks/InvWalkHack.java b/src/main/java/net/wurstclient/hacks/InvWalkHack.java index 3cb97244..ff0e114d 100644 --- a/src/main/java/net/wurstclient/hacks/InvWalkHack.java +++ b/src/main/java/net/wurstclient/hacks/InvWalkHack.java @@ -16,7 +16,7 @@ import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.option.KeyBinding; -import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemGroups; import net.wurstclient.Category; import net.wurstclient.SearchTags; import net.wurstclient.clickgui.screens.ClickGuiScreen; @@ -118,7 +118,7 @@ public final class InvWalkHack extends Hack implements UpdateListener return false; CreativeInventoryScreen crInvScreen = (CreativeInventoryScreen)screen; - return crInvScreen.getSelectedTab() == ItemGroup.SEARCH.getIndex(); + return crInvScreen.getSelectedTab() == ItemGroups.SEARCH.getIndex(); } private boolean hasTextBox(Screen screen) diff --git a/src/main/java/net/wurstclient/hacks/MassTpaHack.java b/src/main/java/net/wurstclient/hacks/MassTpaHack.java index 1c867d41..67c51624 100644 --- a/src/main/java/net/wurstclient/hacks/MassTpaHack.java +++ b/src/main/java/net/wurstclient/hacks/MassTpaHack.java @@ -92,7 +92,7 @@ public final class MassTpaHack extends Hack return; } - MC.player.sendCommand("tpa " + players.get(index)); + MC.getNetworkHandler().method_45730("tpa " + players.get(index)); index++; timer = 20; } diff --git a/src/main/java/net/wurstclient/mixin/SignEditScreenMixin.java b/src/main/java/net/wurstclient/mixin/AbstractSignEditScreenMixin.java similarity index 85% rename from src/main/java/net/wurstclient/mixin/SignEditScreenMixin.java rename to src/main/java/net/wurstclient/mixin/AbstractSignEditScreenMixin.java index dbed9b6e..9fa751a2 100644 --- a/src/main/java/net/wurstclient/mixin/SignEditScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/AbstractSignEditScreenMixin.java @@ -15,19 +15,19 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.SignEditScreen; +import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen; import net.minecraft.text.Text; import net.wurstclient.WurstClient; import net.wurstclient.hacks.AutoSignHack; -@Mixin(SignEditScreen.class) -public abstract class SignEditScreenMixin extends Screen +@Mixin(AbstractSignEditScreen.class) +public abstract class AbstractSignEditScreenMixin extends Screen { @Shadow @Final private String[] text; - private SignEditScreenMixin(WurstClient wurst, Text text_1) + private AbstractSignEditScreenMixin(WurstClient wurst, Text text_1) { super(text_1); } diff --git a/src/main/java/net/wurstclient/mixin/ChatScreenMixin.java b/src/main/java/net/wurstclient/mixin/ChatScreenMixin.java index 08532b08..e6756c9f 100644 --- a/src/main/java/net/wurstclient/mixin/ChatScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/ChatScreenMixin.java @@ -17,9 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.client.gui.screen.ChatScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.network.ChatPreviewer; import net.minecraft.text.Text; -import net.minecraft.util.Util; import net.wurstclient.WurstClient; import net.wurstclient.event.EventManager; import net.wurstclient.events.ChatOutputListener.ChatOutputEvent; @@ -30,9 +28,6 @@ public class ChatScreenMixin extends Screen @Shadow protected TextFieldWidget chatField; - @Shadow - private ChatPreviewer chatPreviewer; - private ChatScreenMixin(WurstClient wurst, Text text) { super(text); @@ -46,37 +41,12 @@ public class ChatScreenMixin extends Screen } @Inject(at = @At("HEAD"), - method = "updatePreviewer(Ljava/lang/String;)V", - cancellable = true) - private void onUpdatePreviewer(String chatText, CallbackInfo ci) - { - if(!shouldPreviewChat()) - return; - - String normalized = normalize(chatText); - - if(normalized.startsWith(".say ")) - { - // send preview, but only for the part after ".say " - chatPreviewer.tryRequest(normalized.substring(5)); - ci.cancel(); - - }else if(normalized.startsWith(".")) - { - // disable & delete preview - chatPreviewer.disablePreview(); - ci.cancel(); - } - } - - @Inject(at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/network/ClientPlayerEntity;sendChatMessage(Ljava/lang/String;Lnet/minecraft/text/Text;)V"), method = "sendMessage(Ljava/lang/String;Z)Z", cancellable = true) public void onSendMessage(String message, boolean addToHistory, CallbackInfoReturnable cir) { - if(!addToHistory || (message = normalize(message)).isEmpty()) + if((message = normalize(message)).isEmpty()) return; ChatOutputEvent event = new ChatOutputEvent(message); @@ -92,14 +62,13 @@ public class ChatScreenMixin extends Screen return; String newMessage = event.getMessage(); - client.inGameHud.getChatHud().addToMessageHistory(newMessage); - Text preview = Util.map(chatPreviewer.tryConsumeResponse(newMessage), - ChatPreviewer.Response::previewText); + if(addToHistory) + client.inGameHud.getChatHud().addToMessageHistory(newMessage); if(newMessage.startsWith("/")) - client.player.sendCommand(newMessage.substring(1), preview); + client.player.networkHandler.method_45730(newMessage.substring(1)); else - client.player.sendChatMessage(newMessage, preview); + client.player.networkHandler.method_45729(newMessage); cir.setReturnValue(true); } @@ -109,10 +78,4 @@ public class ChatScreenMixin extends Screen { return null; } - - @Shadow - private boolean shouldPreviewChat() - { - return false; - } } diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java index 947df24c..f227a9f0 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java @@ -7,7 +7,6 @@ */ package net.wurstclient.mixin; -import org.jetbrains.annotations.Nullable; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -19,7 +18,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import com.mojang.authlib.GameProfile; -import com.mojang.brigadier.ParseResults; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; @@ -27,17 +25,9 @@ import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.world.ClientWorld; -import net.minecraft.command.CommandSource; import net.minecraft.entity.MovementType; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.network.encryption.PlayerPublicKey; -import net.minecraft.network.message.ArgumentSignatureDataMap; -import net.minecraft.network.message.DecoratedContents; -import net.minecraft.network.message.LastSeenMessageList; -import net.minecraft.network.message.MessageMetadata; -import net.minecraft.network.message.MessageSignatureData; -import net.minecraft.text.Text; import net.minecraft.util.math.Vec3d; import net.wurstclient.WurstClient; import net.wurstclient.event.EventManager; @@ -67,9 +57,9 @@ public class ClientPlayerEntityMixin extends AbstractClientPlayerEntity private Screen tempCurrentScreen; public ClientPlayerEntityMixin(WurstClient wurst, ClientWorld world, - GameProfile profile, PlayerPublicKey playerPublicKey) + GameProfile profile) { - super(world, profile, playerPublicKey); + super(world, profile); } @Inject(at = @At(value = "INVOKE", @@ -147,28 +137,31 @@ public class ClientPlayerEntityMixin extends AbstractClientPlayerEntity tempCurrentScreen = null; } - @Inject(at = @At("HEAD"), - method = "signChatMessage(Lnet/minecraft/network/message/MessageMetadata;Lnet/minecraft/network/message/DecoratedContents;Lnet/minecraft/network/message/LastSeenMessageList;)Lnet/minecraft/network/message/MessageSignatureData;", - cancellable = true) - private void onSignChatMessage(MessageMetadata metadata, - DecoratedContents content, LastSeenMessageList lastSeenMessages, - CallbackInfoReturnable cir) - { - if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - cir.setReturnValue(MessageSignatureData.EMPTY); - } - - @Inject(at = @At("HEAD"), - method = "signArguments(Lnet/minecraft/network/message/MessageMetadata;Lcom/mojang/brigadier/ParseResults;Lnet/minecraft/text/Text;Lnet/minecraft/network/message/LastSeenMessageList;)Lnet/minecraft/network/message/ArgumentSignatureDataMap;", - cancellable = true) - private void onSignArguments(MessageMetadata metadata, - ParseResults parseResults, @Nullable Text preview, - LastSeenMessageList lastSeenMessages, - CallbackInfoReturnable cir) - { - if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - cir.setReturnValue(ArgumentSignatureDataMap.EMPTY); - } + // FIXME + // @Inject(at = @At("HEAD"), + // method = + // "signChatMessage(Lnet/minecraft/network/message/MessageMetadata;Lnet/minecraft/network/message/DecoratedContents;Lnet/minecraft/network/message/LastSeenMessageList;)Lnet/minecraft/network/message/MessageSignatureData;", + // cancellable = true) + // private void onSignChatMessage(MessageMetadata metadata, + // DecoratedContents content, LastSeenMessageList lastSeenMessages, + // CallbackInfoReturnable cir) + // { + // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) + // cir.setReturnValue(MessageSignatureData.EMPTY); + // } + // + // @Inject(at = @At("HEAD"), + // method = + // "signArguments(Lnet/minecraft/network/message/MessageMetadata;Lcom/mojang/brigadier/ParseResults;Lnet/minecraft/text/Text;Lnet/minecraft/network/message/LastSeenMessageList;)Lnet/minecraft/network/message/ArgumentSignatureDataMap;", + // cancellable = true) + // private void onSignArguments(MessageMetadata metadata, + // ParseResults parseResults, @Nullable Text preview, + // LastSeenMessageList lastSeenMessages, + // CallbackInfoReturnable cir) + // { + // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) + // cir.setReturnValue(ArgumentSignatureDataMap.EMPTY); + // } @Override public void setVelocityClient(double x, double y, double z) diff --git a/src/main/java/net/wurstclient/mixin/MessageHandlerMixin.java b/src/main/java/net/wurstclient/mixin/MessageHandlerMixin.java deleted file mode 100644 index 52faaf91..00000000 --- a/src/main/java/net/wurstclient/mixin/MessageHandlerMixin.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2014-2022 Wurst-Imperium and contributors. - * - * This source code is subject to the terms of the GNU General Public - * License, version 3. If a copy of the GPL was not distributed with this - * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt - */ -package net.wurstclient.mixin; - -import java.time.Instant; - -import org.jetbrains.annotations.Nullable; -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.CallbackInfoReturnable; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.client.network.message.MessageHandler; -import net.minecraft.client.network.message.MessageTrustStatus; -import net.minecraft.network.message.SignedMessage; -import net.minecraft.text.Text; -import net.wurstclient.WurstClient; - -@Mixin(MessageHandler.class) -public class MessageHandlerMixin -{ - /** - * Stops unreportable chat messages from being labeled as "not secure". - */ - @Inject(at = @At("RETURN"), - method = "getStatus(Lnet/minecraft/network/message/SignedMessage;Lnet/minecraft/text/Text;Lnet/minecraft/client/network/PlayerListEntry;Ljava/time/Instant;)Lnet/minecraft/client/network/message/MessageTrustStatus;", - cancellable = true) - private void onGetStatus(SignedMessage message, Text decorated, - @Nullable PlayerListEntry senderEntry, Instant receptionTimestamp, - CallbackInfoReturnable cir) - { - if(!WurstClient.INSTANCE.isEnabled()) - return; - - if(cir.getReturnValue() != MessageTrustStatus.MODIFIED) - cir.setReturnValue(MessageTrustStatus.SECURE); - } -} diff --git a/src/main/java/net/wurstclient/mixin/ProfileKeysMixin.java b/src/main/java/net/wurstclient/mixin/ProfileKeysMixin.java index b9839c7b..ca167b1b 100644 --- a/src/main/java/net/wurstclient/mixin/ProfileKeysMixin.java +++ b/src/main/java/net/wurstclient/mixin/ProfileKeysMixin.java @@ -7,48 +7,41 @@ */ package net.wurstclient.mixin; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; - 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.CallbackInfoReturnable; import net.minecraft.client.util.ProfileKeys; -import net.minecraft.network.encryption.PlayerPublicKey; -import net.minecraft.network.encryption.Signer; -import net.wurstclient.WurstClient; @Mixin(ProfileKeys.class) public class ProfileKeysMixin { - @Inject(at = @At("HEAD"), - method = "getSigner()Lnet/minecraft/network/encryption/Signer;", - cancellable = true) - private void onGetSigner(CallbackInfoReturnable cir) - { - if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - cir.setReturnValue(null); - } - - @Inject(at = @At("HEAD"), - method = "getPublicKey()Ljava/util/Optional;", - cancellable = true) - private void onGetPublicKey( - CallbackInfoReturnable> cir) - { - if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - cir.setReturnValue(Optional.empty()); - } - - @Inject(at = @At("HEAD"), - method = "refresh()Ljava/util/concurrent/CompletableFuture;", - cancellable = true) - private void onGetPublicKeyData( - CallbackInfoReturnable>> cir) - { - if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - cir.setReturnValue(CompletableFuture.supplyAsync(Optional::empty)); - } + // FIXME + // @Inject(at = @At("HEAD"), + // method = "getSigner()Lnet/minecraft/network/encryption/Signer;", + // cancellable = true) + // private void onGetSigner(CallbackInfoReturnable cir) + // { + // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) + // cir.setReturnValue(null); + // } + // + // @Inject(at = @At("HEAD"), + // method = "getPublicKey()Ljava/util/Optional;", + // cancellable = true) + // private void onGetPublicKey( + // CallbackInfoReturnable> cir) + // { + // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) + // cir.setReturnValue(Optional.empty()); + // } + // + // @Inject(at = @At("HEAD"), + // method = "refresh()Ljava/util/concurrent/CompletableFuture;", + // cancellable = true) + // private void onGetPublicKeyData( + // CallbackInfoReturnable>> + // cir) + // { + // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) + // cir.setReturnValue(CompletableFuture.supplyAsync(Optional::empty)); + // } } diff --git a/src/main/java/net/wurstclient/other_features/NoChatReportsOtf.java b/src/main/java/net/wurstclient/other_features/NoChatReportsOtf.java index f94f9155..e8add89a 100644 --- a/src/main/java/net/wurstclient/other_features/NoChatReportsOtf.java +++ b/src/main/java/net/wurstclient/other_features/NoChatReportsOtf.java @@ -67,10 +67,10 @@ public final class NoChatReportsOtf extends OtherFeature if(!WurstClient.INSTANCE.isEnabled()) return indicator; - if(indicator != null || signature == null || signature.isEmpty()) + if(indicator != null || signature == null) return indicator; - return new MessageIndicator(0xE84F58, Icon.CHAT_NOT_SECURE, + return new MessageIndicator(0xE84F58, Icon.CHAT_MODIFIED, Text.literal(ChatUtils.WURST_PREFIX + "\u00a7cReportable\u00a7r - ") .append(Text.translatable( "description.wurst.nochatreports.message_is_reportable")), diff --git a/src/main/java/net/wurstclient/update/ProblematicResourcePackDetector.java b/src/main/java/net/wurstclient/update/ProblematicResourcePackDetector.java index 379eab45..a8ef2aac 100644 --- a/src/main/java/net/wurstclient/update/ProblematicResourcePackDetector.java +++ b/src/main/java/net/wurstclient/update/ProblematicResourcePackDetector.java @@ -8,9 +8,11 @@ package net.wurstclient.update; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; +import net.minecraft.resource.InputSupplier; import net.minecraft.resource.ResourcePack; import net.minecraft.resource.ResourcePackProfile; import net.wurstclient.WurstClient; @@ -74,8 +76,12 @@ public final class ProblematicResourcePackDetector implements UpdateListener { try { - ArrayList lines = - StreamUtils.readAllLines(pack.openRoot("Selected Packs.txt")); + InputSupplier supplier = + pack.openRoot("Selected Packs.txt"); + if(supplier == null) + return false; + + ArrayList lines = StreamUtils.readAllLines(supplier.get()); return lines.stream() .anyMatch(line -> line.contains("TwinklingStars")); diff --git a/src/main/java/net/wurstclient/util/FakePlayerEntity.java b/src/main/java/net/wurstclient/util/FakePlayerEntity.java index 4c703ce5..8c84ceb3 100644 --- a/src/main/java/net/wurstclient/util/FakePlayerEntity.java +++ b/src/main/java/net/wurstclient/util/FakePlayerEntity.java @@ -22,8 +22,7 @@ public class FakePlayerEntity extends OtherClientPlayerEntity public FakePlayerEntity() { - super(WurstClient.MC.world, WurstClient.MC.player.getGameProfile(), - WurstClient.MC.player.getPublicKey()); + super(WurstClient.MC.world, WurstClient.MC.player.getGameProfile()); copyPositionAndRotation(player); copyInventory(); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 781fda09..7e987342 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -28,9 +28,9 @@ "accessWidener" : "wurst.accesswidener", "depends": { - "fabricloader": ">=0.14.9", - "fabric-api": ">=0.59.0", - "minecraft": "~1.19.2", + "fabricloader": ">=0.14.10", + "fabric-api": ">=0.65.0", + "minecraft": "~1.19.3-alpha.22.42.a", "java": ">=17" }, "suggests": { diff --git a/src/main/resources/wurst.mixins.json b/src/main/resources/wurst.mixins.json index 5ac95649..8fc15bdf 100644 --- a/src/main/resources/wurst.mixins.json +++ b/src/main/resources/wurst.mixins.json @@ -7,6 +7,7 @@ ], "client": [ "AbstractBlockStateMixin", + "AbstractSignEditScreenMixin", "ArmorItemMixin", "BackgroundRendererMixin", "BlockEntityRenderDispatcherMixin", @@ -41,7 +42,6 @@ "LanguageManagerMixin", "LightTextureManagerMixin", "LivingEntityRendererMixin", - "MessageHandlerMixin", "MinecraftClientMixin", "MiningToolItemMixin", "MouseMixin", @@ -55,7 +55,6 @@ "ScreenMixin", "ServerListMixin", "ShulkerBoxScreenMixin", - "SignEditScreenMixin", "SimpleOptionMixin", "SodiumBlockOcclusionCacheMixin", "StatsScreenMixin",