Implemented setting to spoof username if using ClassiCube

This commit is contained in:
FlorianMichael 2023-03-26 22:44:02 +02:00
parent 75bf5ddd69
commit ed52f9fb30
3 changed files with 17 additions and 1 deletions

View File

@ -21,12 +21,15 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.ProfileKey;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.definition.bedrock.BedrockAccountHandler;
import de.florianmichael.viafabricplus.definition.c0_30.classicube.ClassiCubeAccountHandler;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
import de.florianmichael.viafabricplus.injection.access.IPublicKeyData;
import de.florianmichael.viafabricplus.definition.v1_19_0.storage.ChatSession1_19_0;
import de.florianmichael.viafabricplus.definition.v1_19_2.storage.ChatSession1_19_2;
import de.florianmichael.viafabricplus.injection.access.IServerInfo;
import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
import de.florianmichael.viafabricplus.protocolhack.provider.vialegacy.ViaFabricPlusClassicMPPassProvider;
import de.florianmichael.viafabricplus.settings.groups.MPPassSettings;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import net.minecraft.client.MinecraftClient;
@ -36,6 +39,8 @@ import net.minecraft.client.network.ServerInfo;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.encryption.PlayerKeyPair;
import net.minecraft.network.encryption.PlayerPublicKey;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket;
import net.raphimc.mcauth.step.bedrock.StepMCChain;
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
import net.raphimc.viabedrock.protocol.storage.AuthChainData;
@ -83,6 +88,15 @@ public class MixinConnectScreen_1 {
return instance.getPort();
}
@Redirect(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V", ordinal = 1))
public void spoofUserName(ClientConnection instance, Packet<?> packet) {
if (!MPPassSettings.INSTANCE.spoofUserNameIfUsingClassiCube.getValue()) return;
if (ViaFabricPlusClassicMPPassProvider.classiCubeMPPass != null && ClassiCubeAccountHandler.INSTANCE.getAccount() != null) {
instance.send(new LoginHelloC2SPacket(ClassiCubeAccountHandler.INSTANCE.getAccount().username, Optional.ofNullable(MinecraftClient.getInstance().getSession().getUuidOrNull())));
}
}
@Redirect(method = "run", at = @At(value = "INVOKE", target = "Ljava/util/Optional;get()Ljava/lang/Object;"))
public Object mapSocketAddress(Optional<InetSocketAddress> instance) {
final InetSocketAddress address = instance.get();

View File

@ -28,6 +28,7 @@ public class MPPassSettings extends SettingGroup {
public final BooleanSetting allowViaLegacyToCallJoinServerToVerifySession = new BooleanSetting(this, Text.translatable("mppass.viafabricplus.verify"), true);
public final BooleanSetting disconnectIfJoinServerCallFails = new BooleanSetting(this, Text.translatable("mppass.viafabricplus.fail"), true);
public final BooleanSetting forceCPEIfUsingClassiCube = new BooleanSetting(this, Text.translatable("mppass.viafabricplus.classicube"), true);
public final BooleanSetting spoofUserNameIfUsingClassiCube = new BooleanSetting(this, Text.translatable("mppass.viafabricplus.spoof"), true);
public MPPassSettings() {
super("MP Pass");

View File

@ -36,7 +36,8 @@
"mppass.viafabricplus.betacraft": "Use BetaCraft authentication",
"mppass.viafabricplus.verify": "Allow ViaLegacy to call joinServer() to verify session",
"mppass.viafabricplus.fail": "Disconnect if joinServer() call fails",
"mppass.viafabricplus.classicube": "Force CPE Version if using ClassiCube MP Pass",
"mppass.viafabricplus.classicube": "Force CPE Version if using ClassiCube",
"mppass.viafabricplus.spoof": "Spoof Username to ClassiCube Name if using ClassiCube",
"visual.viafabricplus.secure": "Disable secure chat warning",
"visual.viafabricplus.indicator": "Hide signature indicator",