mirror of
https://github.com/ViaVersion/ViaProxy.git
synced 2024-11-14 19:15:08 -05:00
Updated ViaBedrock usage
This commit is contained in:
parent
fae244e5e5
commit
0613132cb1
5 changed files with 42 additions and 16 deletions
|
@ -106,7 +106,7 @@ dependencies {
|
||||||
include "net.lenni0451:Reflect:1.2.0"
|
include "net.lenni0451:Reflect:1.2.0"
|
||||||
include "net.lenni0451:LambdaEvents:2.0.3"
|
include "net.lenni0451:LambdaEvents:2.0.3"
|
||||||
include "net.raphimc.netminecraft:all:2.3.3"
|
include "net.raphimc.netminecraft:all:2.3.3"
|
||||||
include("net.raphimc:MinecraftAuth:2.1.3") {
|
include("net.raphimc:MinecraftAuth:2.1.4-SNAPSHOT") {
|
||||||
exclude group: "com.google.code.gson", module: "gson"
|
exclude group: "com.google.code.gson", module: "gson"
|
||||||
exclude group: "org.slf4j", module: "slf4j-api"
|
exclude group: "org.slf4j", module: "slf4j-api"
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,9 @@ public class ExternalInterface {
|
||||||
} else if (Options.MC_ACCOUNT instanceof BedrockAccount && proxyConnection.getServerVersion().equals(VersionEnum.bedrockLatest)) {
|
} else if (Options.MC_ACCOUNT instanceof BedrockAccount && proxyConnection.getServerVersion().equals(VersionEnum.bedrockLatest)) {
|
||||||
final BedrockAccount bedrockAccount = (BedrockAccount) Options.MC_ACCOUNT;
|
final BedrockAccount bedrockAccount = (BedrockAccount) Options.MC_ACCOUNT;
|
||||||
final StepMCChain.MCChain mcChain = bedrockAccount.getMcChain();
|
final StepMCChain.MCChain mcChain = bedrockAccount.getMcChain();
|
||||||
user.put(new AuthChainData(user, mcChain.mojangJwt(), mcChain.identityJwt(), mcChain.publicKey(), mcChain.privateKey()));
|
final UUID deviceId = mcChain.prevResult().initialXblSession().prevResult2().id();
|
||||||
|
final String playFabId = bedrockAccount.getPlayFabToken().playFabId();
|
||||||
|
user.put(new AuthChainData(user, mcChain.mojangJwt(), mcChain.identityJwt(), mcChain.publicKey(), mcChain.privateKey(), deviceId, playFabId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,8 @@ public class SaveManager {
|
||||||
final JsonObject saveObject = GSON.fromJson(reader, JsonObject.class);
|
final JsonObject saveObject = GSON.fromJson(reader, JsonObject.class);
|
||||||
reader.close();
|
reader.close();
|
||||||
|
|
||||||
|
SaveMigrator.migrate(saveObject);
|
||||||
|
|
||||||
RStream
|
RStream
|
||||||
.of(this)
|
.of(this)
|
||||||
.fields()
|
.fields()
|
||||||
|
@ -66,8 +68,6 @@ public class SaveManager {
|
||||||
Logger.LOGGER.error("Failed to load save " + save.getName(), e);
|
Logger.LOGGER.error("Failed to load save " + save.getName(), e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
SaveMigrator.migrate(this, saveObject);
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Logger.LOGGER.error("Failed to load saves from file", e);
|
Logger.LOGGER.error("Failed to load saves from file", e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,22 +17,26 @@
|
||||||
*/
|
*/
|
||||||
package net.raphimc.viaproxy.saves;
|
package net.raphimc.viaproxy.saves;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import net.raphimc.mcauth.MinecraftAuth;
|
import net.raphimc.viaproxy.saves.impl.accounts.BedrockAccount;
|
||||||
import net.raphimc.viaproxy.util.logging.Logger;
|
import net.raphimc.viaproxy.util.logging.Logger;
|
||||||
|
|
||||||
public class SaveMigrator {
|
public class SaveMigrator {
|
||||||
|
|
||||||
public static void migrate(final SaveManager saveManager, final JsonObject jsonObject) {
|
public static void migrate(final JsonObject jsonObject) {
|
||||||
try {
|
try {
|
||||||
if (jsonObject.has("accounts")) {
|
if (jsonObject.has("new_accounts")) {
|
||||||
for (JsonElement element : jsonObject.getAsJsonArray("accounts")) {
|
final JsonArray accountsArray = jsonObject.getAsJsonArray("new_accounts");
|
||||||
final JsonObject object = element.getAsJsonObject();
|
for (int i = 0; i < accountsArray.size(); i++) {
|
||||||
if (object.has("is_offline_mode_account") && object.get("is_offline_mode_account").getAsBoolean()) {
|
final JsonObject object = accountsArray.get(i).getAsJsonObject();
|
||||||
saveManager.accountsSave.addAccount(object.get("name").getAsString());
|
final String type = object.get("account_type").getAsString();
|
||||||
} else {
|
if (BedrockAccount.class.getName().equals(type) && !object.has("mc_chain")) {
|
||||||
saveManager.accountsSave.addAccount(MinecraftAuth.JAVA_DEVICE_CODE_LOGIN.fromJson(object));
|
final JsonObject newObject = new JsonObject();
|
||||||
|
object.remove("account_type");
|
||||||
|
newObject.add("mc_chain", object);
|
||||||
|
newObject.addProperty("account_type", type);
|
||||||
|
accountsArray.set(i, newObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ package net.raphimc.viaproxy.saves.impl.accounts;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import net.raphimc.mcauth.MinecraftAuth;
|
import net.raphimc.mcauth.MinecraftAuth;
|
||||||
import net.raphimc.mcauth.step.bedrock.StepMCChain;
|
import net.raphimc.mcauth.step.bedrock.StepMCChain;
|
||||||
|
import net.raphimc.mcauth.step.bedrock.playfab.StepPlayFabToken;
|
||||||
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -27,9 +28,13 @@ import java.util.UUID;
|
||||||
public class BedrockAccount extends Account {
|
public class BedrockAccount extends Account {
|
||||||
|
|
||||||
private StepMCChain.MCChain mcChain;
|
private StepMCChain.MCChain mcChain;
|
||||||
|
private StepPlayFabToken.PlayFabToken playFabToken;
|
||||||
|
|
||||||
public BedrockAccount(final JsonObject jsonObject) throws Throwable {
|
public BedrockAccount(final JsonObject jsonObject) throws Throwable {
|
||||||
this.mcChain = MinecraftAuth.BEDROCK_DEVICE_CODE_LOGIN.fromJson(jsonObject);
|
this.mcChain = MinecraftAuth.BEDROCK_DEVICE_CODE_LOGIN.fromJson(jsonObject.getAsJsonObject("mc_chain"));
|
||||||
|
if (jsonObject.has("play_fab_token")) {
|
||||||
|
this.playFabToken = MinecraftAuth.BEDROCK_PLAY_FAB_TOKEN.fromJson(jsonObject.getAsJsonObject("play_fab_token"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public BedrockAccount(final StepMCChain.MCChain mcChain) {
|
public BedrockAccount(final StepMCChain.MCChain mcChain) {
|
||||||
|
@ -38,7 +43,10 @@ public class BedrockAccount extends Account {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JsonObject toJson() {
|
public JsonObject toJson() {
|
||||||
return this.mcChain.toJson();
|
final JsonObject jsonObject = new JsonObject();
|
||||||
|
jsonObject.add("mc_chain", this.mcChain.toJson());
|
||||||
|
jsonObject.add("play_fab_token", this.playFabToken.toJson());
|
||||||
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -55,6 +63,10 @@ public class BedrockAccount extends Account {
|
||||||
return this.mcChain;
|
return this.mcChain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StepPlayFabToken.PlayFabToken getPlayFabToken() {
|
||||||
|
return this.playFabToken;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDisplayString() {
|
public String getDisplayString() {
|
||||||
return this.getName() + " (Bedrock)";
|
return this.getName() + " (Bedrock)";
|
||||||
|
@ -63,6 +75,14 @@ public class BedrockAccount extends Account {
|
||||||
@Override
|
@Override
|
||||||
public void refresh(CloseableHttpClient httpClient) throws Exception {
|
public void refresh(CloseableHttpClient httpClient) throws Exception {
|
||||||
this.mcChain = MinecraftAuth.BEDROCK_DEVICE_CODE_LOGIN.refresh(httpClient, this.mcChain);
|
this.mcChain = MinecraftAuth.BEDROCK_DEVICE_CODE_LOGIN.refresh(httpClient, this.mcChain);
|
||||||
|
try {
|
||||||
|
if (this.playFabToken == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
}
|
||||||
|
this.playFabToken = MinecraftAuth.BEDROCK_PLAY_FAB_TOKEN.refresh(httpClient, this.playFabToken);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
this.playFabToken = MinecraftAuth.BEDROCK_PLAY_FAB_TOKEN.getFromInput(httpClient, this.mcChain.prevResult().fullXblSession());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue