Skip to content

Commit

Permalink
1.19.1
Browse files Browse the repository at this point in the history
  • Loading branch information
DustinRepo committed Aug 4, 2022
1 parent dfce640 commit 6de6081
Show file tree
Hide file tree
Showing 21 changed files with 91 additions and 68 deletions.
2 changes: 2 additions & 0 deletions JexChangelog.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
0.8.5
Added Opacity mode back to Xray
Fixed blur effect and shader ESP modes becoming broken by Sodium
Redesigned GUI to use rounded corners

0.8.4
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G

minecraft_version=1.19
yarn_mappings=1.19+build.1
loader_version=0.14.6
minecraft_version=1.19.1
yarn_mappings=1.19.1+build.4
loader_version=0.14.8

#Fabric api
fabric_version=0.55.1+1.19
fabric_version=0.58.5+1.19.1

# Mod Properties
mod_version=0.8.4
mod_version=0.8.5
maven_group=me.dustin
archives_base_name=jex-client
2 changes: 1 addition & 1 deletion src/main/java/me/dustin/jex/feature/keybind/Keybind.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void execute() {
Wrapper.INSTANCE.getLocalPlayer().sendCommand(command().substring(1), Text.literal(command()));
return;
}
Wrapper.INSTANCE.getLocalPlayer().sendChatMessage((isJexCommand() ? CommandManager.INSTANCE.getPrefix() : "") + command());
Wrapper.INSTANCE.getLocalPlayer().sendChatMessage((isJexCommand() ? CommandManager.INSTANCE.getPrefix() : "") + command(), null);
}
public static ArrayList<Keybind> getKeybinds() {
return keybinds;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public MassTPA() {
@EventPointer
private final EventListener<EventPacketReceive> eventPacketReceiveEventListener = new EventListener<>(event -> {
ChatMessageS2CPacket gameMessageS2CPacket = (ChatMessageS2CPacket) event.getPacket();
if (gameMessageS2CPacket.getSignedMessage().signedContent().getString().toLowerCase().contains("accepted your tpa")) {
if (gameMessageS2CPacket.message().getContent().getString().toLowerCase().contains("accepted your tpa")) {
ChatHelper.INSTANCE.addClientMessage("TPA accepted. Turning off");
setState(false);
}
Expand Down
17 changes: 11 additions & 6 deletions src/main/java/me/dustin/jex/feature/mod/impl/misc/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@
import me.dustin.jex.helper.misc.ChatHelper;
import me.dustin.jex.helper.misc.Wrapper;
import me.dustin.jex.helper.network.NetworkHelper;
import net.minecraft.network.message.ChatMessageSigner;
import net.minecraft.network.message.MessageSignature;
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.network.packet.c2s.play.ChatMessageC2SPacket;
import net.minecraft.text.Text;

import java.time.Instant;
import java.util.Random;

public class Messages extends Feature {
Expand All @@ -31,7 +34,7 @@ public Messages() {
@EventPointer
private final EventListener<EventPacketSent> eventPacketSentEventListener = new EventListener<>(event -> {
ChatMessageC2SPacket chatMessageC2SPacket = (ChatMessageC2SPacket) event.getPacket();
String message = chatMessageC2SPacket.getChatMessage();
String message = chatMessageC2SPacket.chatMessage();
if (message.startsWith("/"))
return;
switch (modeProperty.value()) {
Expand All @@ -50,9 +53,11 @@ public Messages() {
case BACKWARDS -> message = new StringBuilder(message).reverse().toString();
case RANDOM_CAPITAL -> message = randomCapitalize(message);
}
ChatMessageSigner chatMessageSigner = ChatMessageSigner.create(Wrapper.INSTANCE.getLocalPlayer().getUuid());
MessageSignature chatSigData = ChatHelper.INSTANCE.signChatMessage(chatMessageSigner, Text.literal(message));
NetworkHelper.INSTANCE.sendPacketDirect(new ChatMessageC2SPacket(message, chatSigData, false));
DecoratedContents decoratedContents = ChatHelper.INSTANCE.getDecoratedContents(message, null);
LastSeenMessageList.Acknowledgment acknowledgment = Wrapper.INSTANCE.getMinecraft().getNetworkHandler().consumeAcknowledgment();
MessageMetadata chatMessageSigner = MessageMetadata.of(Wrapper.INSTANCE.getLocalPlayer().getUuid());
MessageSignatureData chatSigData = ChatHelper.INSTANCE.signChatMessage(chatMessageSigner, decoratedContents, acknowledgment.lastSeen());
NetworkHelper.INSTANCE.sendPacketDirect(new ChatMessageC2SPacket(message, Instant.now(), new Random().nextLong(), chatSigData, false, acknowledgment));
event.cancel();
}, new ClientPacketFilter(EventPacketSent.Mode.PRE, ChatMessageC2SPacket.class));

Expand Down
35 changes: 22 additions & 13 deletions src/main/java/me/dustin/jex/helper/misc/ChatHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,42 +6,51 @@
import me.dustin.jex.load.impl.IClientPlayerEntity;
import net.minecraft.command.CommandSource;
import net.minecraft.network.encryption.Signer;
import net.minecraft.network.message.ArgumentSignatureDataMap;
import net.minecraft.network.message.ChatMessageSigner;
import net.minecraft.network.message.MessageSignature;
import net.minecraft.network.message.*;
import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
import net.minecraft.network.packet.c2s.play.CommandExecutionC2SPacket;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.StringHelper;

import java.time.Instant;
import java.util.Random;

public enum ChatHelper {
INSTANCE;

public void sendChatMessage(String chat) {
ChatMessageSigner chatMessageSigner = ChatMessageSigner.create(Wrapper.INSTANCE.getLocalPlayer().getUuid());
MessageSignature chatSigData = signChatMessage(chatMessageSigner, Text.literal(chat));
NetworkHelper.INSTANCE.sendPacket(new ChatMessageC2SPacket(chat, chatSigData, false));
LastSeenMessageList.Acknowledgment acknowledgment = Wrapper.INSTANCE.getMinecraft().getNetworkHandler().consumeAcknowledgment();
MessageMetadata chatMessageSigner = MessageMetadata.of(Wrapper.INSTANCE.getLocalPlayer().getUuid());
DecoratedContents decoratedContents = getDecoratedContents(chat, null);
MessageSignatureData chatSigData = signChatMessage(chatMessageSigner, decoratedContents, acknowledgment.lastSeen());
NetworkHelper.INSTANCE.sendPacket(new ChatMessageC2SPacket(chat, Instant.now(), new Random().nextLong(), chatSigData, false, acknowledgment));
}

public void sendCommand(String command) {
ChatMessageSigner chatMessageSigner = ChatMessageSigner.create(Wrapper.INSTANCE.getLocalPlayer().getUuid());
MessageMetadata chatMessageSigner = MessageMetadata.of(Wrapper.INSTANCE.getLocalPlayer().getUuid());
ParseResults<CommandSource> parseResults = Wrapper.INSTANCE.getMinecraft().getNetworkHandler().getCommandDispatcher().parse(command, Wrapper.INSTANCE.getMinecraft().getNetworkHandler().getCommandSource());
IClientPlayerEntity iClientPlayerEntity = (IClientPlayerEntity)Wrapper.INSTANCE.getLocalPlayer();
ArgumentSignatureDataMap argumentSignatureDataMap = iClientPlayerEntity.callSignArguments(chatMessageSigner, parseResults, null);
NetworkHelper.INSTANCE.sendPacket(new CommandExecutionC2SPacket(command, chatMessageSigner.timeStamp(), argumentSignatureDataMap, false));
LastSeenMessageList.Acknowledgment acknowledgment = Wrapper.INSTANCE.getMinecraft().getNetworkHandler().consumeAcknowledgment();
ArgumentSignatureDataMap argumentSignatureDataMap = iClientPlayerEntity.callSignArguments(chatMessageSigner, parseResults, null, acknowledgment.lastSeen());
NetworkHelper.INSTANCE.sendPacket(new CommandExecutionC2SPacket(command, chatMessageSigner.timestamp(), new Random().nextLong(), argumentSignatureDataMap, false, acknowledgment));
}

public MessageSignature signChatMessage(ChatMessageSigner signer, Text message) {
public MessageSignatureData signChatMessage(MessageMetadata signer, DecoratedContents decoratedContents, LastSeenMessageList lastSeenMessageList) {
try {
Signer lv = Wrapper.INSTANCE.getMinecraft().getProfileKeys().getSigner();
if (lv != null) {
return signer.sign(lv, message);
return Wrapper.INSTANCE.getMinecraft().getNetworkHandler().getMessagePacker().pack(lv, signer, decoratedContents, lastSeenMessageList).signature();
}
} catch (Exception var4) {
JexClient.INSTANCE.getLogger().error("Failed to sign chat message: '{}'", message.getString(), var4);
JexClient.INSTANCE.getLogger().error("Failed to sign chat message: '{}'", decoratedContents.decorated().getString(), var4);
}
return MessageSignatureData.EMPTY;
}

return MessageSignature.none();
public DecoratedContents getDecoratedContents(String string, Text text) {
String string2 = StringHelper.truncateChat(string);
return text != null ? new DecoratedContents(string2, text) : new DecoratedContents(string2);
}

public void addClientMessage(String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public enum JexSiteHelper {
INSTANCE;
Expand Down Expand Up @@ -134,7 +135,7 @@ protected void initChannel(Channel channel) throws Exception {
e.printStackTrace();
}
clientConnection.send(new HandshakeC2SPacket(minecraftServerAddress.getIp(), minecraftServerAddress.getPort(), NetworkState.LOGIN));
clientConnection.send(new LoginHelloC2SPacket(Wrapper.INSTANCE.getMinecraft().getSession().getUsername(), Wrapper.INSTANCE.getMinecraft().getProfileKeys().getPublicKeyData()));
clientConnection.send(new LoginHelloC2SPacket(Wrapper.INSTANCE.getMinecraft().getSession().getUsername(), Wrapper.INSTANCE.getMinecraft().getProfileKeys().getPublicKeyData(), Optional.ofNullable(Wrapper.INSTANCE.getMinecraft().getSession().getUuidOrNull())));
}
};
thread.start();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ public Entity getCrosshairEntity(float tickDelta, RotationVector rots, float rea
Vec3d vec3d3 = vec3d.add(vec3d2.x * reach, vec3d2.y * reach, vec3d2.z * reach);

Box box = entity.getBoundingBox().stretch(vec3d2.multiply(reach)).expand(1.0D, 1.0D, 1.0D);
EntityHitResult entityHitResult = ProjectileUtil.raycast(entity, vec3d, vec3d3, box, (entityx) -> !entityx.isSpectator() && entityx.collides(), reach);
EntityHitResult entityHitResult = ProjectileUtil.raycast(entity, vec3d, vec3d3, box, (entityx) -> !entityx.isSpectator() && entityx.canHit(), reach);
if (entityHitResult != null) {
Entity entity2 = entityHitResult.getEntity();
if (entity2 instanceof LivingEntity || entity2 instanceof ItemFrameEntity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,8 @@ public void onDisconnect(DisconnectS2CPacket packet) {
public void onChatMessage(ChatMessageS2CPacket packet) {
IChatHud iChatHud = (IChatHud) Wrapper.INSTANCE.getMinecraft().inGameHud.getChatHud();
try {
if (!iChatHud.containsMessage(packet.getSignedMessage().signedContent().getString()))
ChatHelper.INSTANCE.addRawMessage(String.format("%s[%s%s%s]%s: %s%s", Formatting.DARK_GRAY, Formatting.GREEN, playerBot.getGameProfile().getName(), Formatting.DARK_GRAY, Formatting.WHITE, Formatting.GRAY, packet.getSignedMessage().signedContent().getString()));
if (!iChatHud.containsMessage(packet.message().getContent().getString()))
ChatHelper.INSTANCE.addRawMessage(String.format("%s[%s%s%s]%s: %s%s", Formatting.DARK_GRAY, Formatting.GREEN, playerBot.getGameProfile().getName(), Formatting.DARK_GRAY, Formatting.WHITE, Formatting.GRAY, packet.message().getContent().getString()));
} catch (Exception e){}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import me.dustin.jex.helper.misc.Wrapper;
import me.dustin.jex.helper.network.NetworkHelper;
import me.dustin.jex.helper.network.WebHelper;
import net.minecraft.class_7648;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.network.ClientLoginNetworkHandler;
Expand Down Expand Up @@ -67,7 +68,7 @@ public void onHello(LoginHelloS2CPacket packet) {
}
}
ChatHelper.INSTANCE.addRawMessage(Text.translatable("connect.encrypting"));
this.playerBot.getClientConnection().send(loginKeyC2SPacket, future -> this.playerBot.getClientConnection().setupEncryption(cipher, cipher2));
this.playerBot.getClientConnection().send(loginKeyC2SPacket, class_7648.method_45084(() -> this.playerBot.getClientConnection().setupEncryption(cipher, cipher2)));
});
}

Expand Down
17 changes: 9 additions & 8 deletions src/main/java/me/dustin/jex/helper/player/bot/PlayerBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
import net.minecraft.network.encryption.NetworkEncryptionUtils;
import net.minecraft.network.encryption.PlayerKeyPair;
import net.minecraft.network.encryption.PlayerPublicKey;
import net.minecraft.network.message.MessageSignature;
import net.minecraft.network.message.MessageSignatureData;
import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket;
import net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket;
import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
Expand Down Expand Up @@ -119,7 +119,7 @@ public void connect(ServerAddress serverAddress) {
this.clientConnection = currentConnection = connect(optional.get());
clientConnection.setPacketListener(new BotLoginNetworkHandler(clientConnection, Wrapper.INSTANCE.getMinecraft(), null, this::log, gameProfile, this));
clientConnection.send(new HandshakeC2SPacket(serverAddress.getAddress(), serverAddress.getPort(), NetworkState.LOGIN));
clientConnection.send(new LoginHelloC2SPacket(gameProfile.getName(), keyPair == null ? Optional.empty() : Optional.ofNullable(keyPair.publicKey().data())));
clientConnection.send(new LoginHelloC2SPacket(gameProfile.getName(), keyPair == null ? Optional.empty() : Optional.ofNullable(keyPair.publicKey().data()), Optional.ofNullable(this.session.getUuidOrNull())));
} catch (Exception e) {
ChatHelper.INSTANCE.addClientMessage("Error logging in player");
e.printStackTrace();
Expand All @@ -139,8 +139,8 @@ private PlayerKeyPair generateKeyPair() throws NetworkEncryptionException {

KeyPairResponse keyPairResponse = JsonHelper.INSTANCE.gson.fromJson(httpResponse.data(), KeyPairResponse.class);
PublicKey publicKey = NetworkEncryptionUtils.decodeRsaPublicKeyPem(keyPairResponse.getPublicKey());
byte[] keySig = Base64.getDecoder().decode(keyPairResponse.getPublicKeySignature());
return new PlayerKeyPair(NetworkEncryptionUtils.decodeRsaPrivateKeyPem(keyPairResponse.getPrivateKey()), new PlayerPublicKey(new PlayerPublicKey.PublicKeyData(Instant.parse(keyPairResponse.getExpiresAt()), publicKey, keySig)), Instant.parse(keyPairResponse.getRefreshedAfter()));
ByteBuffer keySig = Base64.getDecoder().decode(keyPairResponse.getPublicKeySignature());
return new PlayerKeyPair(NetworkEncryptionUtils.decodeRsaPrivateKeyPem(keyPairResponse.getPrivateKey()), new PlayerPublicKey(new PlayerPublicKey.PublicKeyData(Instant.parse(keyPairResponse.getExpiresAt()), publicKey, keySig.array())), Instant.parse(keyPairResponse.getRefreshedAfter()));
}

public void disconnect() {
Expand Down Expand Up @@ -205,9 +205,10 @@ public GameProfile getGameProfile() {
}

public void sendMessage(String chat) {
Instant instant = Instant.now();
MessageSignature chatSigData = new MessageSignature(UUID.fromString(getSession().getUuid()), instant, sigForMessage(instant, chat));
this.clientConnection.send(new ChatMessageC2SPacket(chat, chatSigData, false));
//TODO: fix this
/*Instant instant = Instant.now();
MessageSignatureData chatSigData = new MessageSignatureData(UUID.fromString(getSession().getUuid()), instant, sigForMessage(instant, chat));
this.clientConnection.send(new ChatMessageC2SPacket(chat, chatSigData, false));*/
}

private NetworkEncryptionUtils.SignatureData sigForMessage(Instant instant, String string) {
Expand Down Expand Up @@ -331,7 +332,7 @@ public Entity getCrosshairEntity(float reach) {
Vec3d vec3d3 = vec3d.add(vec3d2.x * reach, vec3d2.y * reach, vec3d2.z * reach);

Box box = player.getBoundingBox().stretch(vec3d2.multiply(reach)).expand(1.0D, 1.0D, 1.0D);
EntityHitResult entityHitResult = raycast(player, vec3d, vec3d3, box, (entityx) -> !entityx.isSpectator() && entityx.collides(), reach);
EntityHitResult entityHitResult = raycast(player, vec3d, vec3d3, box, (entityx) -> !entityx.isSpectator() && entityx.canHit(), reach);
if (entityHitResult != null) {
Entity entity2 = entityHitResult.getEntity();
if (entity2 instanceof LivingEntity || entity2 instanceof ItemFrameEntity) {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/me/dustin/jex/load/impl/IChatHud.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

import java.util.List;
import net.minecraft.client.gui.hud.ChatHudLine;
import net.minecraft.text.Text;

public interface IChatHud {
boolean containsMessage(String message);
List<ChatHudLine<Text>> getMessages();
List<ChatHudLine> getMessages();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package me.dustin.jex.load.impl;

public interface ICommandSuggestor {
public interface IChatInputSuggestor {
boolean isWindowActive();
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import com.mojang.brigadier.ParseResults;
import net.minecraft.command.CommandSource;
import net.minecraft.network.message.ArgumentSignatureDataMap;
import net.minecraft.network.message.ChatMessageSigner;
import net.minecraft.network.message.LastSeenMessageList;
import net.minecraft.network.message.MessageMetadata;
import net.minecraft.text.Text;
import org.jetbrains.annotations.Nullable;

public interface IClientPlayerEntity {
ArgumentSignatureDataMap callSignArguments(ChatMessageSigner signer, ParseResults<CommandSource> parseResults, Text text);
ArgumentSignatureDataMap callSignArguments(MessageMetadata signer, ParseResults<CommandSource> parseResults, @Nullable Text preview, LastSeenMessageList lastSeenMessages);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
@Mixin(ChatHud.class)
public class MixinChatHud implements IChatHud {

@Shadow @Final private List<ChatHudLine<Text>> messages;
@Shadow @Final private List<ChatHudLine> messages;

@Inject(method = "isChatHidden", at = @At("HEAD"), cancellable = true)
public void isChatHidden1(CallbackInfoReturnable<Boolean> cir) {
Expand Down Expand Up @@ -68,15 +68,15 @@ private ChatHud getThis() {

@Override
public boolean containsMessage(String message) {
for (ChatHudLine<Text> textChatHudLine : this.messages) {
if (textChatHudLine.getText().getString().equalsIgnoreCase(message))
for (ChatHudLine textChatHudLine : this.messages) {
if (textChatHudLine.content().getString().equalsIgnoreCase(message))
return true;
}
return false;
}

@Override
public List<ChatHudLine<Text>> getMessages() {
public List<ChatHudLine> getMessages() {
return messages;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.mojang.brigadier.suggestion.Suggestions;
import me.dustin.jex.event.chat.EventSortSuggestions;
import me.dustin.jex.feature.command.CommandManager;
import me.dustin.jex.load.impl.ICommandSuggestor;
import net.minecraft.client.gui.screen.CommandSuggestor;
import me.dustin.jex.load.impl.IChatInputSuggestor;
import net.minecraft.client.gui.screen.ChatInputSuggestor;
import net.minecraft.client.gui.widget.TextFieldWidget;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
Expand All @@ -19,10 +19,10 @@

import java.util.List;

@Mixin(CommandSuggestor.class)
public abstract class MixinCommandSuggestor implements ICommandSuggestor {
@Mixin(ChatInputSuggestor.class)
public abstract class MixinChatInputSuggestor implements IChatInputSuggestor {
@Shadow @Final private TextFieldWidget textField;
@Shadow @Nullable private CommandSuggestor.SuggestionWindow window;
@Shadow @Nullable private ChatInputSuggestor.SuggestionWindow window;

@Redirect(method = "refresh", at = @At(value = "INVOKE", target = "com/mojang/brigadier/StringReader.peek()C"))
public char refresh(StringReader stringReader) {
Expand Down
Loading

0 comments on commit 6de6081

Please sign in to comment.