From 2e66a9cfc8adcc0b0fc589e0ee7e9ac068e89e45 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 24 Jan 2024 17:57:33 +0100 Subject: [PATCH] Update to 24w03b --- build.gradle | 2 +- .../events/HitResultRayTraceListener.java | 42 ------------------- .../net/wurstclient/hacks/AutoSwordHack.java | 5 +-- .../net/wurstclient/hacks/LiquidsHack.java | 23 +--------- .../net/wurstclient/hacks/TunnellerHack.java | 8 ++-- .../mixin/ClientPlayNetworkHandlerMixin.java | 9 ++-- .../wurstclient/mixin/GameRendererMixin.java | 27 ++++++++---- .../net/wurstclient/mixin/IngameHudMixin.java | 4 +- .../other_features/VanillaSpoofOtf.java | 29 ++++++------- .../util/LastServerRememberer.java | 2 +- src/main/resources/fabric.mod.json | 6 +-- 11 files changed, 50 insertions(+), 107 deletions(-) delete mode 100644 src/main/java/net/wurstclient/events/HitResultRayTraceListener.java diff --git a/build.gradle b/build.gradle index 9b3ab5461a..2613a25783 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { } plugins { - id 'fabric-loom' version '1.4-SNAPSHOT' + id 'fabric-loom' version '1.5-SNAPSHOT' id 'maven-publish' id 'com.diffplug.spotless' version '6.23.3' } diff --git a/src/main/java/net/wurstclient/events/HitResultRayTraceListener.java b/src/main/java/net/wurstclient/events/HitResultRayTraceListener.java deleted file mode 100644 index 84f55dd56b..0000000000 --- a/src/main/java/net/wurstclient/events/HitResultRayTraceListener.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2014-2023 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.events; - -import java.util.ArrayList; - -import net.wurstclient.event.Event; -import net.wurstclient.event.Listener; - -public interface HitResultRayTraceListener extends Listener -{ - public void onHitResultRayTrace(float partialTicks); - - public static class HitResultRayTraceEvent - extends Event - { - private float partialTicks; - - public HitResultRayTraceEvent(float partialTicks) - { - this.partialTicks = partialTicks; - } - - @Override - public void fire(ArrayList listeners) - { - for(HitResultRayTraceListener listener : listeners) - listener.onHitResultRayTrace(partialTicks); - } - - @Override - public Class getListenerType() - { - return HitResultRayTraceListener.class; - } - } -} diff --git a/src/main/java/net/wurstclient/hacks/AutoSwordHack.java b/src/main/java/net/wurstclient/hacks/AutoSwordHack.java index 7a44fc7c37..5d65db8112 100644 --- a/src/main/java/net/wurstclient/hacks/AutoSwordHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoSwordHack.java @@ -9,7 +9,7 @@ import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityGroup; +import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -156,8 +156,7 @@ private float getValue(ItemStack stack, Entity entity) return ItemUtils.getAttackSpeed(item); case DAMAGE: - EntityGroup group = entity instanceof LivingEntity le - ? le.getGroup() : EntityGroup.DEFAULT; + EntityType group = entity.getType(); float dmg = EnchantmentHelper.getAttackDamage(stack, group); if(item instanceof SwordItem sword) dmg += sword.getAttackDamage(); diff --git a/src/main/java/net/wurstclient/hacks/LiquidsHack.java b/src/main/java/net/wurstclient/hacks/LiquidsHack.java index 0440403c2f..102c0de913 100644 --- a/src/main/java/net/wurstclient/hacks/LiquidsHack.java +++ b/src/main/java/net/wurstclient/hacks/LiquidsHack.java @@ -8,10 +8,9 @@ package net.wurstclient.hacks; import net.wurstclient.Category; -import net.wurstclient.events.HitResultRayTraceListener; import net.wurstclient.hack.Hack; -public final class LiquidsHack extends Hack implements HitResultRayTraceListener +public final class LiquidsHack extends Hack { public LiquidsHack() { @@ -19,23 +18,5 @@ public LiquidsHack() setCategory(Category.BLOCKS); } - @Override - protected void onEnable() - { - EVENTS.add(HitResultRayTraceListener.class, this); - } - - @Override - protected void onDisable() - { - EVENTS.remove(HitResultRayTraceListener.class, this); - } - - @Override - public void onHitResultRayTrace(float partialTicks) - { - double reach = MC.player.getBlockInteractionRange(); - MC.crosshairTarget = - MC.getCameraEntity().raycast(reach, partialTicks, true); - } + // See GameRendererMixin.liquidsRaycast() } diff --git a/src/main/java/net/wurstclient/hacks/TunnellerHack.java b/src/main/java/net/wurstclient/hacks/TunnellerHack.java index 3e97cbddf0..ff9ba6fb65 100644 --- a/src/main/java/net/wurstclient/hacks/TunnellerHack.java +++ b/src/main/java/net/wurstclient/hacks/TunnellerHack.java @@ -713,7 +713,6 @@ private Vec3d toVec3d(BlockPos pos) private class PlaceTorchTask extends Task { - @SuppressWarnings("deprecation") @Override public boolean canRun() { @@ -755,10 +754,9 @@ public boolean canRun() BlockState state = BlockUtils.getState(nextTorch); if(!state.isReplaceable()) return false; - - // Can't see why canPlaceAt() is deprecated. Still seems to be - // widely used with no replacement. - return Blocks.TORCH.canPlaceAt(state, MC.world, nextTorch); + + return Blocks.TORCH.getDefaultState().canPlaceAt(MC.world, + nextTorch); } @Override diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java index 7f2a213f94..7c2f44c2fe 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java @@ -23,7 +23,7 @@ import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkData; import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.ServerMetadataS2CPacket; +import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.wurstclient.WurstClient; @@ -42,15 +42,14 @@ private ClientPlayNetworkHandlerMixin(WurstClient wurst, } @Inject(at = @At("TAIL"), - method = "onServerMetadata(Lnet/minecraft/network/packet/s2c/play/ServerMetadataS2CPacket;)V") - public void onOnServerMetadata(ServerMetadataS2CPacket packet, - CallbackInfo ci) + method = "onGameJoin(Lnet/minecraft/network/packet/s2c/play/GameJoinS2CPacket;)V") + public void onOnGameJoin(GameJoinS2CPacket packet, CallbackInfo ci) { if(!WurstClient.INSTANCE.isEnabled()) return; // Remove Mojang's dishonest warning toast on safe servers - if(!packet.isSecureChatEnforced()) + if(!packet.enforcesSecureChat()) { client.getToastManager().toastQueue.removeIf(toast -> toast .getType() == SystemToast.Type.UNSECURE_SERVER_WARNING); diff --git a/src/main/java/net/wurstclient/mixin/GameRendererMixin.java b/src/main/java/net/wurstclient/mixin/GameRendererMixin.java index 71f9aab3e9..7d4ac335f0 100644 --- a/src/main/java/net/wurstclient/mixin/GameRendererMixin.java +++ b/src/main/java/net/wurstclient/mixin/GameRendererMixin.java @@ -15,15 +15,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; + import net.minecraft.client.render.Camera; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.MathHelper; import net.wurstclient.WurstClient; import net.wurstclient.event.EventManager; import net.wurstclient.events.CameraTransformViewBobbingListener.CameraTransformViewBobbingEvent; -import net.wurstclient.events.HitResultRayTraceListener.HitResultRayTraceEvent; import net.wurstclient.events.RenderListener.RenderEvent; import net.wurstclient.hacks.FullbrightHack; @@ -104,14 +108,21 @@ private void onGetFov(Camera camera, float tickDelta, boolean changingFov, .changeFovBasedOnZoom(cir.getReturnValueD())); } - @Inject(at = @At(value = "INVOKE", - target = "Lnet/minecraft/entity/Entity;getCameraPosVec(F)Lnet/minecraft/util/math/Vec3d;", - opcode = Opcodes.INVOKEVIRTUAL, - ordinal = 0), method = "updateTargetedEntity(F)V") - private void onHitResultRayTrace(float tickDelta, CallbackInfo ci) + /** + * This is the part that makes Liquids work. + */ + @WrapOperation(at = @At(value = "INVOKE", + target = "Lnet/minecraft/entity/Entity;raycast(DFZ)Lnet/minecraft/util/hit/HitResult;", + ordinal = 0), + method = "findCrosshairTarget(Lnet/minecraft/entity/Entity;DDF)Lnet/minecraft/util/hit/HitResult;") + private HitResult liquidsRaycast(Entity instance, double maxDistance, + float tickDelta, boolean includeFluids, Operation original) { - HitResultRayTraceEvent event = new HitResultRayTraceEvent(tickDelta); - EventManager.fire(event); + if(!WurstClient.INSTANCE.getHax().liquidsHack.isEnabled()) + return original.call(instance, maxDistance, tickDelta, + includeFluids); + + return original.call(instance, maxDistance, tickDelta, true); } @Redirect( diff --git a/src/main/java/net/wurstclient/mixin/IngameHudMixin.java b/src/main/java/net/wurstclient/mixin/IngameHudMixin.java index a1c3e59218..590441a6cd 100644 --- a/src/main/java/net/wurstclient/mixin/IngameHudMixin.java +++ b/src/main/java/net/wurstclient/mixin/IngameHudMixin.java @@ -32,8 +32,8 @@ public class IngameHudMixin // runs after renderScoreboardSidebar() // and before playerListHud.setVisible() @Inject(at = @At("HEAD"), - method = "method_55804(Lnet/minecraft/client/gui/DrawContext;F)V") - private void onMethod_55804(DrawContext context, float tickDelta, + method = "renderPlayerList(Lnet/minecraft/client/gui/DrawContext;F)V") + private void onRenderPlayerList(DrawContext context, float tickDelta, CallbackInfo ci) { if(debugHud.shouldShowDebugHud()) diff --git a/src/main/java/net/wurstclient/other_features/VanillaSpoofOtf.java b/src/main/java/net/wurstclient/other_features/VanillaSpoofOtf.java index 0ad9044403..7304a644ab 100644 --- a/src/main/java/net/wurstclient/other_features/VanillaSpoofOtf.java +++ b/src/main/java/net/wurstclient/other_features/VanillaSpoofOtf.java @@ -7,8 +7,8 @@ */ package net.wurstclient.other_features; +import net.minecraft.network.packet.BrandCustomPayload; import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket; -import net.minecraft.util.Identifier; import net.wurstclient.DontBlock; import net.wurstclient.SearchTags; import net.wurstclient.events.ConnectionPacketOutputListener; @@ -42,23 +42,20 @@ public void onSentConnectionPacket(ConnectionPacketOutputEvent event) if(!(event.getPacket() instanceof CustomPayloadC2SPacket packet)) return; - Identifier channel = packet.payload().id(); - - if(channel.getNamespace().equals("minecraft") - && channel.getPath().equals("register")) - event.cancel(); + // change client brand "fabric" back to "vanilla" + if(packet.payload() instanceof BrandCustomPayload) + event.setPacket( + new CustomPayloadC2SPacket(new BrandCustomPayload("vanilla"))); - // Apparently the Minecraft client no longer sends its brand to the - // server as of 23w31a - - // if(packet.getChannel().getNamespace().equals("minecraft") - // && packet.getChannel().getPath().equals("brand")) - // event.setPacket(new CustomPayloadC2SPacket( - // CustomPayloadC2SPacket.BRAND, - // new PacketByteBuf(Unpooled.buffer()).writeString("vanilla"))); + // cancel Fabric's "c:version", "c:register" and + // "fabric:custom_ingredient_sync" packets + // TODO: Something else is needed to prevent the connection from + // hanging when these packets are cancelled. - if(channel.getNamespace().equals("fabric")) - event.cancel(); + // Identifier channel = packet.payload().getId().id(); + // if(channel.getNamespace().equals("fabric") + // || channel.getNamespace().equals("c")) + // event.cancel(); } @Override diff --git a/src/main/java/net/wurstclient/util/LastServerRememberer.java b/src/main/java/net/wurstclient/util/LastServerRememberer.java index 28b5b88f60..c552765cb4 100644 --- a/src/main/java/net/wurstclient/util/LastServerRememberer.java +++ b/src/main/java/net/wurstclient/util/LastServerRememberer.java @@ -49,6 +49,6 @@ public static void reconnect(Screen prevScreen) return; ConnectScreen.connect(prevScreen, WurstClient.MC, - ServerAddress.parse(lastServer.address), lastServer, false); + ServerAddress.parse(lastServer.address), lastServer, false, null); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5f20a31035..fa296f86bb 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,9 +29,9 @@ "accessWidener" : "wurst.accesswidener", "depends": { - "fabricloader": ">=0.15.0", - "fabric-api": ">=0.91.4", - "minecraft": "~1.20.5-alpha.23.51.a", + "fabricloader": ">=0.15.3", + "fabric-api": ">=0.91.5", + "minecraft": "~1.20.5-alpha.24.3.a", "java": ">=17" }, "suggests": {