mirror of
https://github.com/ViaVersion/ViaProxy.git
synced 2025-01-17 20:41:53 +01:00
Moved OpenAuthMod authentication into its own ViaProxy plugin
https://github.com/ViaVersionAddons/ViaProxyOpenAuthMod OpenAuthMod is dead and rarely used
This commit is contained in:
parent
e6dc79ff61
commit
b8a1a63e1c
@ -490,11 +490,7 @@ public class ViaProxyConfig {
|
|||||||
/**
|
/**
|
||||||
* No authentication (Offline mode)
|
* No authentication (Offline mode)
|
||||||
*/
|
*/
|
||||||
NONE("tab.general.minecraft_account.option_no_account"),
|
NONE("tab.general.minecraft_account.option_no_account");
|
||||||
/**
|
|
||||||
* Requires the OpenAuthMod client mod (https://modrinth.com/mod/openauthmod)
|
|
||||||
*/
|
|
||||||
OPENAUTHMOD("tab.general.minecraft_account.option_openauthmod");
|
|
||||||
|
|
||||||
private final String guiTranslationKey;
|
private final String guiTranslationKey;
|
||||||
|
|
||||||
|
@ -230,7 +230,6 @@ public class Client2ProxyHandler extends SimpleChannelInboundHandler<Packet> {
|
|||||||
this.proxyConnection.setUserOptions(userOptions);
|
this.proxyConnection.setUserOptions(userOptions);
|
||||||
this.proxyConnection.setC2pConnectionState(intendedState.getConnectionState());
|
this.proxyConnection.setC2pConnectionState(intendedState.getConnectionState());
|
||||||
this.proxyConnection.getPacketHandlers().add(new StatusPacketHandler(this.proxyConnection));
|
this.proxyConnection.getPacketHandlers().add(new StatusPacketHandler(this.proxyConnection));
|
||||||
this.proxyConnection.getPacketHandlers().add(new OpenAuthModPacketHandler(this.proxyConnection));
|
|
||||||
if (ViaProxy.getConfig().shouldSupportSimpleVoiceChat() && serverVersion.newerThan(ProtocolVersion.v1_14) && clientVersion.newerThan(ProtocolVersion.v1_14)) {
|
if (ViaProxy.getConfig().shouldSupportSimpleVoiceChat() && serverVersion.newerThan(ProtocolVersion.v1_14) && clientVersion.newerThan(ProtocolVersion.v1_14)) {
|
||||||
this.proxyConnection.getPacketHandlers().add(new SimpleVoiceChatPacketHandler(this.proxyConnection));
|
this.proxyConnection.getPacketHandlers().add(new SimpleVoiceChatPacketHandler(this.proxyConnection));
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,8 @@ import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19
|
|||||||
import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19_1;
|
import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19_1;
|
||||||
import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19_3;
|
import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19_3;
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import io.netty.buffer.Unpooled;
|
|
||||||
import net.raphimc.minecraftauth.step.bedrock.StepMCChain;
|
import net.raphimc.minecraftauth.step.bedrock.StepMCChain;
|
||||||
import net.raphimc.minecraftauth.step.java.StepPlayerCertificates;
|
import net.raphimc.minecraftauth.step.java.StepPlayerCertificates;
|
||||||
import net.raphimc.netminecraft.packet.PacketTypes;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.login.C2SLoginHelloPacket;
|
import net.raphimc.netminecraft.packet.impl.login.C2SLoginHelloPacket;
|
||||||
import net.raphimc.netminecraft.packet.impl.login.C2SLoginKeyPacket;
|
import net.raphimc.netminecraft.packet.impl.login.C2SLoginKeyPacket;
|
||||||
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
|
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
|
||||||
@ -36,8 +33,6 @@ import net.raphimc.viabedrock.protocol.storage.AuthChainData;
|
|||||||
import net.raphimc.viaproxy.ViaProxy;
|
import net.raphimc.viaproxy.ViaProxy;
|
||||||
import net.raphimc.viaproxy.plugins.events.FillPlayerDataEvent;
|
import net.raphimc.viaproxy.plugins.events.FillPlayerDataEvent;
|
||||||
import net.raphimc.viaproxy.plugins.events.JoinServerRequestEvent;
|
import net.raphimc.viaproxy.plugins.events.JoinServerRequestEvent;
|
||||||
import net.raphimc.viaproxy.protocoltranslator.viaproxy.ViaProxyConfig;
|
|
||||||
import net.raphimc.viaproxy.proxy.packethandler.OpenAuthModPacketHandler;
|
|
||||||
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
|
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
|
||||||
import net.raphimc.viaproxy.proxy.util.CloseAndReturn;
|
import net.raphimc.viaproxy.proxy.util.CloseAndReturn;
|
||||||
import net.raphimc.viaproxy.saves.impl.accounts.Account;
|
import net.raphimc.viaproxy.saves.impl.accounts.Account;
|
||||||
@ -50,10 +45,7 @@ import java.security.PublicKey;
|
|||||||
import java.security.SignatureException;
|
import java.security.SignatureException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ExecutionException;
|
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
|
|
||||||
public class ExternalInterface {
|
public class ExternalInterface {
|
||||||
|
|
||||||
@ -110,15 +102,7 @@ public class ExternalInterface {
|
|||||||
public static void joinServer(final String serverIdHash, final ProxyConnection proxyConnection) {
|
public static void joinServer(final String serverIdHash, final ProxyConnection proxyConnection) {
|
||||||
Logger.u_info("auth", proxyConnection, "Trying to join online mode server");
|
Logger.u_info("auth", proxyConnection, "Trying to join online mode server");
|
||||||
try {
|
try {
|
||||||
if (ViaProxy.getConfig().getAuthMethod() == ViaProxyConfig.AuthMethod.OPENAUTHMOD) {
|
if (proxyConnection.getUserOptions().account() instanceof MicrosoftAccount microsoftAccount) {
|
||||||
try {
|
|
||||||
final ByteBuf response = proxyConnection.getPacketHandler(OpenAuthModPacketHandler.class).sendCustomPayload(OpenAuthModConstants.JOIN_CHANNEL, PacketTypes.writeString(Unpooled.buffer(), serverIdHash)).get(6, TimeUnit.SECONDS);
|
|
||||||
if (response == null) throw new TimeoutException();
|
|
||||||
if (response.isReadable() && !response.readBoolean()) throw new TimeoutException();
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
proxyConnection.kickClient("§cAuthentication cancelled! You need to install OpenAuthMod in order to join this server.");
|
|
||||||
}
|
|
||||||
} else if (proxyConnection.getUserOptions().account() instanceof MicrosoftAccount microsoftAccount) {
|
|
||||||
try {
|
try {
|
||||||
AuthLibServices.SESSION_SERVICE.joinServer(microsoftAccount.getGameProfile(), microsoftAccount.getMcProfile().getMcToken().getAccessToken(), serverIdHash);
|
AuthLibServices.SESSION_SERVICE.joinServer(microsoftAccount.getGameProfile(), microsoftAccount.getMcProfile().getMcToken().getAccessToken(), serverIdHash);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -135,21 +119,11 @@ public class ExternalInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void signNonce(final byte[] nonce, final C2SLoginKeyPacket packet, final ProxyConnection proxyConnection) throws InterruptedException, ExecutionException, SignatureException {
|
public static void signNonce(final byte[] nonce, final C2SLoginKeyPacket packet, final ProxyConnection proxyConnection) throws SignatureException {
|
||||||
Logger.u_info("auth", proxyConnection, "Requesting nonce signature");
|
Logger.u_info("auth", proxyConnection, "Requesting nonce signature");
|
||||||
final UserConnection user = proxyConnection.getUserConnection();
|
final UserConnection user = proxyConnection.getUserConnection();
|
||||||
|
|
||||||
if (ViaProxy.getConfig().getAuthMethod() == ViaProxyConfig.AuthMethod.OPENAUTHMOD) {
|
if (user.has(ChatSession1_19_0.class)) {
|
||||||
try {
|
|
||||||
final ByteBuf response = proxyConnection.getPacketHandler(OpenAuthModPacketHandler.class).sendCustomPayload(OpenAuthModConstants.SIGN_NONCE_CHANNEL, PacketTypes.writeByteArray(Unpooled.buffer(), nonce)).get(5, TimeUnit.SECONDS);
|
|
||||||
if (response == null) throw new TimeoutException();
|
|
||||||
if (!response.readBoolean()) throw new TimeoutException();
|
|
||||||
packet.salt = response.readLong();
|
|
||||||
packet.signature = PacketTypes.readByteArray(response);
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
proxyConnection.kickClient("§cAuthentication cancelled! You need to install OpenAuthMod in order to join this server.");
|
|
||||||
}
|
|
||||||
} else if (user.has(ChatSession1_19_0.class)) {
|
|
||||||
final long salt = ThreadLocalRandom.current().nextLong();
|
final long salt = ThreadLocalRandom.current().nextLong();
|
||||||
packet.signature = user.get(ChatSession1_19_0.class).sign(updater -> {
|
packet.signature = user.get(ChatSession1_19_0.class).sign(updater -> {
|
||||||
updater.accept(nonce);
|
updater.accept(nonce);
|
||||||
|
@ -157,7 +157,7 @@ public class LoginPacketHandler extends PacketHandler {
|
|||||||
final byte[] encryptedNonce = CryptUtil.encryptData(publicKey, loginHelloPacket.nonce);
|
final byte[] encryptedNonce = CryptUtil.encryptData(publicKey, loginHelloPacket.nonce);
|
||||||
|
|
||||||
final C2SLoginKeyPacket loginKey = new C2SLoginKeyPacket(encryptedSecretKey, encryptedNonce);
|
final C2SLoginKeyPacket loginKey = new C2SLoginKeyPacket(encryptedSecretKey, encryptedNonce);
|
||||||
if (this.proxyConnection.getServerVersion().newerThanOrEqualTo(ProtocolVersion.v1_19) && this.proxyConnection.getLoginHelloPacket().key != null) {
|
if (this.proxyConnection.getServerVersion().betweenInclusive(ProtocolVersion.v1_19, ProtocolVersion.v1_19_1) && this.proxyConnection.getLoginHelloPacket().key != null) {
|
||||||
ExternalInterface.signNonce(loginHelloPacket.nonce, loginKey, this.proxyConnection);
|
ExternalInterface.signNonce(loginHelloPacket.nonce, loginKey, this.proxyConnection);
|
||||||
}
|
}
|
||||||
this.proxyConnection.getChannel().writeAndFlush(loginKey).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
this.proxyConnection.getChannel().writeAndFlush(loginKey).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
|
@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy
|
|
||||||
* Copyright (C) 2021-2024 RK_01/RaphiMC and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package net.raphimc.viaproxy.proxy.packethandler;
|
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import io.netty.buffer.ByteBufUtil;
|
|
||||||
import io.netty.buffer.Unpooled;
|
|
||||||
import io.netty.channel.ChannelFutureListener;
|
|
||||||
import net.lenni0451.mcstructs.text.components.StringComponent;
|
|
||||||
import net.raphimc.netminecraft.packet.Packet;
|
|
||||||
import net.raphimc.netminecraft.packet.PacketTypes;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.common.C2SCustomPayloadPacket;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.login.C2SLoginCustomQueryAnswerPacket;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.login.C2SLoginKeyPacket;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.login.S2CLoginCustomQueryPacket;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.login.S2CLoginDisconnectPacket;
|
|
||||||
import net.raphimc.netminecraft.packet.impl.play.S2CPlayCustomPayloadPacket;
|
|
||||||
import net.raphimc.viaproxy.proxy.external_interface.OpenAuthModConstants;
|
|
||||||
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
|
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
public class OpenAuthModPacketHandler extends PacketHandler {
|
|
||||||
|
|
||||||
private final AtomicInteger id = new AtomicInteger(0);
|
|
||||||
private final Map<Integer, CompletableFuture<ByteBuf>> customPayloadListener = new ConcurrentHashMap<>();
|
|
||||||
|
|
||||||
public OpenAuthModPacketHandler(ProxyConnection proxyConnection) {
|
|
||||||
super(proxyConnection);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handleC2P(Packet packet, List<ChannelFutureListener> listeners) {
|
|
||||||
if (packet instanceof C2SCustomPayloadPacket customPayloadPacket) {
|
|
||||||
final ByteBuf data = Unpooled.wrappedBuffer(customPayloadPacket.data);
|
|
||||||
if (customPayloadPacket.channel.equals(OpenAuthModConstants.DATA_CHANNEL) && this.handleCustomPayload(PacketTypes.readVarInt(data), data)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (packet instanceof C2SLoginCustomQueryAnswerPacket loginCustomQueryAnswer) {
|
|
||||||
if (loginCustomQueryAnswer.response != null && this.handleCustomPayload(loginCustomQueryAnswer.queryId, Unpooled.wrappedBuffer(loginCustomQueryAnswer.response))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (packet instanceof C2SLoginKeyPacket loginKeyPacket) {
|
|
||||||
if (this.proxyConnection.getClientVersion().olderThanOrEqualTo(ProtocolVersion.v1_12_2) && new String(loginKeyPacket.encryptedNonce, StandardCharsets.UTF_8).equals(OpenAuthModConstants.DATA_CHANNEL)) { // 1.8-1.12.2 OpenAuthMod response handling
|
|
||||||
final ByteBuf byteBuf = Unpooled.wrappedBuffer(loginKeyPacket.encryptedSecretKey);
|
|
||||||
this.handleCustomPayload(PacketTypes.readVarInt(byteBuf), byteBuf);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompletableFuture<ByteBuf> sendCustomPayload(final String channel, final ByteBuf data) {
|
|
||||||
if (channel.length() > 20) throw new IllegalStateException("Channel name can't be longer than 20 characters");
|
|
||||||
final CompletableFuture<ByteBuf> future = new CompletableFuture<>();
|
|
||||||
final int id = this.id.getAndIncrement();
|
|
||||||
|
|
||||||
switch (this.proxyConnection.getC2pConnectionState()) {
|
|
||||||
case LOGIN:
|
|
||||||
if (this.proxyConnection.getClientVersion().newerThanOrEqualTo(ProtocolVersion.v1_13)) {
|
|
||||||
this.proxyConnection.getC2P().writeAndFlush(new S2CLoginCustomQueryPacket(id, channel, PacketTypes.readReadableBytes(data))).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
|
||||||
} else {
|
|
||||||
final ByteBuf disconnectPacketData = Unpooled.buffer();
|
|
||||||
PacketTypes.writeString(disconnectPacketData, channel);
|
|
||||||
PacketTypes.writeVarInt(disconnectPacketData, id);
|
|
||||||
disconnectPacketData.writeBytes(data);
|
|
||||||
this.proxyConnection.getC2P().writeAndFlush(new S2CLoginDisconnectPacket(new StringComponent("§cYou need to install OpenAuthMod in order to join this server.§k\n" + Base64.getEncoder().encodeToString(ByteBufUtil.getBytes(disconnectPacketData)) + "\n" + OpenAuthModConstants.LEGACY_MAGIC_STRING))).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PLAY:
|
|
||||||
final ByteBuf responseData = Unpooled.buffer();
|
|
||||||
PacketTypes.writeVarInt(responseData, id);
|
|
||||||
responseData.writeBytes(data);
|
|
||||||
this.proxyConnection.getC2P().writeAndFlush(new S2CPlayCustomPayloadPacket(channel, ByteBufUtil.getBytes(responseData))).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalStateException("Can't send a custom payload packet during " + this.proxyConnection.getC2pConnectionState());
|
|
||||||
}
|
|
||||||
|
|
||||||
this.customPayloadListener.put(id, future);
|
|
||||||
return future;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handleCustomPayload(final int id, final ByteBuf data) {
|
|
||||||
if (this.customPayloadListener.containsKey(id)) {
|
|
||||||
this.customPayloadListener.remove(id).complete(data);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -62,7 +62,7 @@ public class AccountsTab extends UITab {
|
|||||||
|
|
||||||
int gridy = 0;
|
int gridy = 0;
|
||||||
{
|
{
|
||||||
JLabel infoLabel = new JLabel("<html><p>" + I18n.get("tab.accounts.description.line1") + "</p><br><p>" + I18n.get("tab.accounts.description.line2") + "</p></html>");
|
JLabel infoLabel = new JLabel("<html><p>" + I18n.get("tab.accounts.description.line1") + "</p></html>");
|
||||||
GBC.create(body).grid(0, gridy++).weightx(1).insets(BORDER_PADDING, BORDER_PADDING, 0, BORDER_PADDING).fill(GBC.HORIZONTAL).add(infoLabel);
|
GBC.create(body).grid(0, gridy++).weightx(1).insets(BORDER_PADDING, BORDER_PADDING, 0, BORDER_PADDING).fill(GBC.HORIZONTAL).add(infoLabel);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Verze serveru:
|
|||||||
tab.general.minecraft_account.label=Minecraft Účet:
|
tab.general.minecraft_account.label=Minecraft Účet:
|
||||||
tab.general.minecraft_account.option_no_account=Nepoužívat účet
|
tab.general.minecraft_account.option_no_account=Nepoužívat účet
|
||||||
tab.general.minecraft_account.option_select_account=Použít vybraný účet
|
tab.general.minecraft_account.option_select_account=Použít vybraný účet
|
||||||
tab.general.minecraft_account.option_openauthmod=Použít OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Povolování BetaCraft Authentikace vám umožní připojit se na BetaCraft servery se zapnutým online módem.
|
tab.general.betacraft_auth.tooltip=Povolování BetaCraft Authentikace vám umožní připojit se na BetaCraft servery se zapnutým online módem.
|
||||||
tab.general.state.loading=Načítání ViaProxy...
|
tab.general.state.loading=Načítání ViaProxy...
|
||||||
@ -43,7 +42,6 @@ tab.advanced.upload_latest_log.error_generic=Log nebylo možno nahrát: %s
|
|||||||
tab.advanced.upload_latest_log.error_not_found=Log soubor nebyl nalezen.
|
tab.advanced.upload_latest_log.error_not_found=Log soubor nebyl nalezen.
|
||||||
tab.accounts.name=Účty
|
tab.accounts.name=Účty
|
||||||
tab.accounts.description.line1=Pro připojení na online servery musíte přidat Microsoft účet. Můžete vybrat účet tím že na něj kliknete pravým tlačítkem myši. Vy výchozím nastavení bude vybrán první účet.
|
tab.accounts.description.line1=Pro připojení na online servery musíte přidat Microsoft účet. Můžete vybrat účet tím že na něj kliknete pravým tlačítkem myši. Vy výchozím nastavení bude vybrán první účet.
|
||||||
tab.accounts.description.line2=Pokud často měníte účet, můžete na svůj klient nainstalovat OpenAuthMod. Toto umožní ViaProxy použít účet který je použit na klientu.
|
|
||||||
tab.accounts.list.context_menu.select=Vybrat účet
|
tab.accounts.list.context_menu.select=Vybrat účet
|
||||||
tab.accounts.list.context_menu.remove=Vymazat
|
tab.accounts.list.context_menu.remove=Vymazat
|
||||||
tab.accounts.list.context_menu.move_up=Posunout nahoru ↑
|
tab.accounts.list.context_menu.move_up=Posunout nahoru ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Server Version:
|
|||||||
tab.general.minecraft_account.label=Minecraft Konto:
|
tab.general.minecraft_account.label=Minecraft Konto:
|
||||||
tab.general.minecraft_account.option_no_account=Kein Konto verwenden
|
tab.general.minecraft_account.option_no_account=Kein Konto verwenden
|
||||||
tab.general.minecraft_account.option_select_account=Ausgewähltes Konto verwenden
|
tab.general.minecraft_account.option_select_account=Ausgewähltes Konto verwenden
|
||||||
tab.general.minecraft_account.option_openauthmod=OpenAuthMod verwenden
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Authentifizierung (Classic)
|
tab.general.betacraft_auth.label=BetaCraft Authentifizierung (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Wenn du die BetaCraft Authentifizierung aktivierst, kannst du auf Classic Server, die Online Mode aktiviert haben joinen.
|
tab.general.betacraft_auth.tooltip=Wenn du die BetaCraft Authentifizierung aktivierst, kannst du auf Classic Server, die Online Mode aktiviert haben joinen.
|
||||||
tab.general.state.loading=Lade ViaProxy...
|
tab.general.state.loading=Lade ViaProxy...
|
||||||
@ -52,7 +51,6 @@ tab.advanced.upload_latest_log.error_generic=Die Log-Datei konnte nicht hochgela
|
|||||||
tab.advanced.upload_latest_log.error_not_found=Die Log-Datei konnte nicht gefunden werden.
|
tab.advanced.upload_latest_log.error_not_found=Die Log-Datei konnte nicht gefunden werden.
|
||||||
tab.accounts.name=Konten
|
tab.accounts.name=Konten
|
||||||
tab.accounts.description.line1=Um auf Online Mode Server zu joinen musst du ein Minecraft Konto im ViaProxy hinzufügen. Du kannst ein Konto auswählen indem du es rechtsklickst. Standardmäßig wird das erste verwendet.
|
tab.accounts.description.line1=Um auf Online Mode Server zu joinen musst du ein Minecraft Konto im ViaProxy hinzufügen. Du kannst ein Konto auswählen indem du es rechtsklickst. Standardmäßig wird das erste verwendet.
|
||||||
tab.accounts.description.line2=Wenn du dein Konto oft änderst, kannst du stattdessen OpenAuthMod auf deinem Client installieren. Das erlaubt ViaProxy das aktuell eingeloggte Konto von deinem Client zu verwenden.
|
|
||||||
tab.accounts.list.context_menu.select=Konto auswählen
|
tab.accounts.list.context_menu.select=Konto auswählen
|
||||||
tab.accounts.list.context_menu.remove=Löschen
|
tab.accounts.list.context_menu.remove=Löschen
|
||||||
tab.accounts.list.context_menu.move_up=Nach oben schieben ↑
|
tab.accounts.list.context_menu.move_up=Nach oben schieben ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Server Version:
|
|||||||
tab.general.minecraft_account.label=Minecraft Account:
|
tab.general.minecraft_account.label=Minecraft Account:
|
||||||
tab.general.minecraft_account.option_no_account=Use no account
|
tab.general.minecraft_account.option_no_account=Use no account
|
||||||
tab.general.minecraft_account.option_select_account=Use selected account
|
tab.general.minecraft_account.option_select_account=Use selected account
|
||||||
tab.general.minecraft_account.option_openauthmod=Use OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Enabling BetaCraft Auth allows you to join classic servers which have online mode enabled.
|
tab.general.betacraft_auth.tooltip=Enabling BetaCraft Auth allows you to join classic servers which have online mode enabled.
|
||||||
tab.general.state.loading=Loading ViaProxy...
|
tab.general.state.loading=Loading ViaProxy...
|
||||||
@ -52,7 +51,6 @@ tab.advanced.upload_latest_log.error_generic=The log file could not be uploaded:
|
|||||||
tab.advanced.upload_latest_log.error_not_found=The log file could not be found.
|
tab.advanced.upload_latest_log.error_not_found=The log file could not be found.
|
||||||
tab.accounts.name=Accounts
|
tab.accounts.name=Accounts
|
||||||
tab.accounts.description.line1=To join online mode servers you have to add a minecraft account for ViaProxy to use. You can select an account by right clicking it. By default the first one will be used.
|
tab.accounts.description.line1=To join online mode servers you have to add a minecraft account for ViaProxy to use. You can select an account by right clicking it. By default the first one will be used.
|
||||||
tab.accounts.description.line2=If you change your account frequently, you can install OpenAuthMod on your client. This allows ViaProxy to use the account you are logged in with on the client.
|
|
||||||
tab.accounts.list.context_menu.select=Select Account
|
tab.accounts.list.context_menu.select=Select Account
|
||||||
tab.accounts.list.context_menu.remove=Remove
|
tab.accounts.list.context_menu.remove=Remove
|
||||||
tab.accounts.list.context_menu.move_up=Move up ↑
|
tab.accounts.list.context_menu.move_up=Move up ↑
|
||||||
|
@ -7,7 +7,6 @@ tab.general.server_version.label=Vertion du serveur:
|
|||||||
tab.general.minecraft_account.label=Compte Minecraft:
|
tab.general.minecraft_account.label=Compte Minecraft:
|
||||||
tab.general.minecraft_account.option_no_account=Pas de compte
|
tab.general.minecraft_account.option_no_account=Pas de compte
|
||||||
tab.general.minecraft_account.option_select_account=compte selectionné
|
tab.general.minecraft_account.option_select_account=compte selectionné
|
||||||
tab.general.minecraft_account.option_openauthmod=Utiliser OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Activer BetaCraft Auth permet de se connecter a des serveurs classiques qui on le mode enligne activé.
|
tab.general.betacraft_auth.tooltip=Activer BetaCraft Auth permet de se connecter a des serveurs classiques qui on le mode enligne activé.
|
||||||
tab.general.state.loading=Chargement de ViaProxy...
|
tab.general.state.loading=Chargement de ViaProxy...
|
||||||
@ -51,7 +50,6 @@ tab.advanced.upload_latest_log.error_generic=Le fichier de log n'as pas pu etre
|
|||||||
tab.advanced.upload_latest_log.error_not_found=Le fichier de log est introuvable.
|
tab.advanced.upload_latest_log.error_not_found=Le fichier de log est introuvable.
|
||||||
tab.accounts.name=Comptes
|
tab.accounts.name=Comptes
|
||||||
tab.accounts.description.line1=Pour rejoindre un serveur en ligne, ViaProxy a besoin d'un compre microsoft. Vous pouver selectionner un compte en faisant un clique droit dessu. Par default, le premier est selectionné.
|
tab.accounts.description.line1=Pour rejoindre un serveur en ligne, ViaProxy a besoin d'un compre microsoft. Vous pouver selectionner un compte en faisant un clique droit dessu. Par default, le premier est selectionné.
|
||||||
tab.accounts.description.line2=Si vous changez souvent de compte, vous pouver installer OpenAuthMod (client). Cela permet a ViaProxy d'utiliser le compte avec lequelle vous etes connecté dans le client.
|
|
||||||
tab.accounts.list.context_menu.select=Selectioner ce compte
|
tab.accounts.list.context_menu.select=Selectioner ce compte
|
||||||
tab.accounts.list.context_menu.remove=Enlever
|
tab.accounts.list.context_menu.remove=Enlever
|
||||||
tab.accounts.list.context_menu.move_up=Envoyer vers le haut
|
tab.accounts.list.context_menu.move_up=Envoyer vers le haut
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Szerver Verzió:
|
|||||||
tab.general.minecraft_account.label=Minecraft Fiók:
|
tab.general.minecraft_account.label=Minecraft Fiók:
|
||||||
tab.general.minecraft_account.option_no_account=Ne használj semmilyen fiókot
|
tab.general.minecraft_account.option_no_account=Ne használj semmilyen fiókot
|
||||||
tab.general.minecraft_account.option_select_account=Kiválasztott fiók használata
|
tab.general.minecraft_account.option_select_account=Kiválasztott fiók használata
|
||||||
tab.general.minecraft_account.option_openauthmod=OpenAuthMod Használata
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Auth(Classic)
|
tab.general.betacraft_auth.label=BetaCraft Auth(Classic)
|
||||||
tab.general.betacraft_auth.tooltip=BetaCraft bekapcsolása. Fel enged Classic minecraft szerverekre.
|
tab.general.betacraft_auth.tooltip=BetaCraft bekapcsolása. Fel enged Classic minecraft szerverekre.
|
||||||
tab.general.state.loading=ViaProxy Betöltése...
|
tab.general.state.loading=ViaProxy Betöltése...
|
||||||
@ -48,7 +47,6 @@ tab.advanced.upload_latest_log.error_generic=A naplófájlt nem sikerült feltö
|
|||||||
tab.advanced.upload_latest_log.error_not_found=A naplófájl nem található.
|
tab.advanced.upload_latest_log.error_not_found=A naplófájl nem található.
|
||||||
tab.accounts.name=Fiókok
|
tab.accounts.name=Fiókok
|
||||||
tab.accounts.description.line1=Az online módú szerverekhez való csatlakozáshoz hozzá kell adnod egy minecraft fiókot, hogy a ViaProxy használhassa. A fiókot jobb egérgombbal kattintva választhatod ki. Alapértelmezés szerint az elsőt fogja használni.
|
tab.accounts.description.line1=Az online módú szerverekhez való csatlakozáshoz hozzá kell adnod egy minecraft fiókot, hogy a ViaProxy használhassa. A fiókot jobb egérgombbal kattintva választhatod ki. Alapértelmezés szerint az elsőt fogja használni.
|
||||||
tab.accounts.description.line2=Ha gyakran változtatja fiókját, telepítheti az OpenAuthMod-ot az ügyfélre. Ez lehetővé teszi a ViaProxy számára, hogy azt a fiókot használja, amellyel bejelentkezett az ügyfélnél.
|
|
||||||
tab.accounts.list.context_menu.select=Fiók kiválasztása
|
tab.accounts.list.context_menu.select=Fiók kiválasztása
|
||||||
tab.accounts.list.context_menu.remove=Törlés
|
tab.accounts.list.context_menu.remove=Törlés
|
||||||
tab.accounts.list.context_menu.move_up=Feljebb lépés ↑
|
tab.accounts.list.context_menu.move_up=Feljebb lépés ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=サーバーバージョン:
|
|||||||
tab.general.minecraft_account.label=Minecraftアカウント:
|
tab.general.minecraft_account.label=Minecraftアカウント:
|
||||||
tab.general.minecraft_account.option_no_account=アカウントを使用しない
|
tab.general.minecraft_account.option_no_account=アカウントを使用しない
|
||||||
tab.general.minecraft_account.option_select_account=選択したアカウントを使用する
|
tab.general.minecraft_account.option_select_account=選択したアカウントを使用する
|
||||||
tab.general.minecraft_account.option_openauthmod=OpenAuthModを使用する
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Auth (クラシック)
|
tab.general.betacraft_auth.label=BetaCraft Auth (クラシック)
|
||||||
tab.general.betacraft_auth.tooltip=BetaCraft Authを有効にすると、online modeが有効化されたクラシックサーバーに参加できるようになります。
|
tab.general.betacraft_auth.tooltip=BetaCraft Authを有効にすると、online modeが有効化されたクラシックサーバーに参加できるようになります。
|
||||||
tab.general.state.loading=ViaProxyをロードしています...
|
tab.general.state.loading=ViaProxyをロードしています...
|
||||||
@ -48,7 +47,6 @@ tab.advanced.upload_latest_log.error_generic=ログをアップロードでき
|
|||||||
tab.advanced.upload_latest_log.error_not_found=ログが見つかりませんでした。
|
tab.advanced.upload_latest_log.error_not_found=ログが見つかりませんでした。
|
||||||
tab.accounts.name=アカウント
|
tab.accounts.name=アカウント
|
||||||
tab.accounts.description.line1=オンラインモードが有効化されたサーバーにViaproxyで参加するにはMinecraftアカウントでログインしている必要があります。使用したいアカウントを右クリックすることで選択できます。デフォルトでは一番最初のものが使用されます。
|
tab.accounts.description.line1=オンラインモードが有効化されたサーバーにViaproxyで参加するにはMinecraftアカウントでログインしている必要があります。使用したいアカウントを右クリックすることで選択できます。デフォルトでは一番最初のものが使用されます。
|
||||||
tab.accounts.description.line2=アカウントを頻繁に変える場合は、OpenAuthModをクライアントにインストールすることができます。これをインストールすることでクライアントでログインしているアカウントを使ってViaProxyで接続できます。
|
|
||||||
tab.accounts.list.context_menu.select=アカウントを選択
|
tab.accounts.list.context_menu.select=アカウントを選択
|
||||||
tab.accounts.list.context_menu.remove=削除
|
tab.accounts.list.context_menu.remove=削除
|
||||||
tab.accounts.list.context_menu.move_up=上に上げる↑
|
tab.accounts.list.context_menu.move_up=上に上げる↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=서버 버전:
|
|||||||
tab.general.minecraft_account.label=마인크래프트 계정:
|
tab.general.minecraft_account.label=마인크래프트 계정:
|
||||||
tab.general.minecraft_account.option_no_account=계정 사용 안함
|
tab.general.minecraft_account.option_no_account=계정 사용 안함
|
||||||
tab.general.minecraft_account.option_select_account=선택된 계정 사용
|
tab.general.minecraft_account.option_select_account=선택된 계정 사용
|
||||||
tab.general.minecraft_account.option_openauthmod=OpenAuthMod 사용
|
|
||||||
tab.general.betacraft_auth.label=Betacraft 인증(클래식)
|
tab.general.betacraft_auth.label=Betacraft 인증(클래식)
|
||||||
tab.general.betacraft_auth.tooltip=Betacraft 인증을 활성화하면 클래식 정품 서버에 접속하실 수 있습니다.
|
tab.general.betacraft_auth.tooltip=Betacraft 인증을 활성화하면 클래식 정품 서버에 접속하실 수 있습니다.
|
||||||
tab.general.state.loading=ViaProxy를 불러오는 중...
|
tab.general.state.loading=ViaProxy를 불러오는 중...
|
||||||
@ -52,7 +51,6 @@ tab.advanced.upload_latest_log.error_generic=로그파일을 업로드할 수
|
|||||||
tab.advanced.upload_latest_log.error_not_found=로그파일을 찾을 수 없습니다.
|
tab.advanced.upload_latest_log.error_not_found=로그파일을 찾을 수 없습니다.
|
||||||
tab.accounts.name=계정
|
tab.accounts.name=계정
|
||||||
tab.accounts.description.line1=온라인 모드 서버를 플레이하려면 이 목록에서 계정을 선택해야 합니다. 오른쪽 마우스 클릭으로 계정을 선택할 수 있습니다. 기본적으로는 첫 번째 계정이 사용됩니다.
|
tab.accounts.description.line1=온라인 모드 서버를 플레이하려면 이 목록에서 계정을 선택해야 합니다. 오른쪽 마우스 클릭으로 계정을 선택할 수 있습니다. 기본적으로는 첫 번째 계정이 사용됩니다.
|
||||||
tab.accounts.description.line2=계정을 자주 바꾸는 경우, 클라이언트에 OpenAuthMod를 설치해보세요. OpenAuthMod를 쓰는 경우 ViaProxy가 클라이언트의 계정으로 로그인합니다.
|
|
||||||
tab.accounts.list.context_menu.select=계정 선택
|
tab.accounts.list.context_menu.select=계정 선택
|
||||||
tab.accounts.list.context_menu.remove=계정 제거
|
tab.accounts.list.context_menu.remove=계정 제거
|
||||||
tab.accounts.list.context_menu.move_up=위 ↑
|
tab.accounts.list.context_menu.move_up=위 ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Wersja Serwera:
|
|||||||
tab.general.minecraft_account.label=Konto Minecraft:
|
tab.general.minecraft_account.label=Konto Minecraft:
|
||||||
tab.general.minecraft_account.option_no_account=Nie używaj konta.
|
tab.general.minecraft_account.option_no_account=Nie używaj konta.
|
||||||
tab.general.minecraft_account.option_select_account=Użyj wybranego konta.
|
tab.general.minecraft_account.option_select_account=Użyj wybranego konta.
|
||||||
tab.general.minecraft_account.option_openauthmod=Użyj modyfikacji OpenAuth
|
|
||||||
tab.general.betacraft_auth.label=Autoryzacja BetaCraft (Classic)
|
tab.general.betacraft_auth.label=Autoryzacja BetaCraft (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Włączenie autoryzacji BetaCraft pozwoli tobie na dołączenie do serwerów klasycznych które posiadają włączony tryb online.
|
tab.general.betacraft_auth.tooltip=Włączenie autoryzacji BetaCraft pozwoli tobie na dołączenie do serwerów klasycznych które posiadają włączony tryb online.
|
||||||
tab.general.state.loading=Ładowanie ViaProxy...
|
tab.general.state.loading=Ładowanie ViaProxy...
|
||||||
@ -43,7 +42,6 @@ tab.advanced.upload_latest_log.error_generic=Plik dziennika nie może zostać pr
|
|||||||
tab.advanced.upload_latest_log.error_not_found=Plik dziennika nie został znaleziony.
|
tab.advanced.upload_latest_log.error_not_found=Plik dziennika nie został znaleziony.
|
||||||
tab.accounts.name=Konta
|
tab.accounts.name=Konta
|
||||||
tab.accounts.description.line1=Aby dołączyć do serwerów które mają tryb online, musisz dodać oryginalne konto Minecraft. Konto możesz wybrać klikając na nie prawym przyciskiem, domyślnie pierwsze konto jest używane.
|
tab.accounts.description.line1=Aby dołączyć do serwerów które mają tryb online, musisz dodać oryginalne konto Minecraft. Konto możesz wybrać klikając na nie prawym przyciskiem, domyślnie pierwsze konto jest używane.
|
||||||
tab.accounts.description.line2=Jeśli często zmieniasz konto możesz użyć modyfikacji OpenAuth która umożliwi ViaProxy używanie konta na którym jesteś aktualnie zalogowany.
|
|
||||||
tab.accounts.list.context_menu.select=Wybierz Konto
|
tab.accounts.list.context_menu.select=Wybierz Konto
|
||||||
tab.accounts.list.context_menu.remove=Usuń
|
tab.accounts.list.context_menu.remove=Usuń
|
||||||
tab.accounts.list.context_menu.move_up=Góra ↑
|
tab.accounts.list.context_menu.move_up=Góra ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Версия сервера:
|
|||||||
tab.general.minecraft_account.label=Учётная запись Minecraft:
|
tab.general.minecraft_account.label=Учётная запись Minecraft:
|
||||||
tab.general.minecraft_account.option_no_account=Не использовать
|
tab.general.minecraft_account.option_no_account=Не использовать
|
||||||
tab.general.minecraft_account.option_select_account=Использовать выбранную
|
tab.general.minecraft_account.option_select_account=Использовать выбранную
|
||||||
tab.general.minecraft_account.option_openauthmod=OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.label=Авторизация BetaCraft (Classic)
|
tab.general.betacraft_auth.label=Авторизация BetaCraft (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Включение авторизации BetaCraft позволяет происоединяться\nк серверам Classic с включённой проверкой лицензии.
|
tab.general.betacraft_auth.tooltip=Включение авторизации BetaCraft позволяет происоединяться\nк серверам Classic с включённой проверкой лицензии.
|
||||||
tab.general.state.loading=Загрузка ViaProxy...
|
tab.general.state.loading=Загрузка ViaProxy...
|
||||||
@ -50,7 +49,6 @@ tab.advanced.upload_latest_log.error_generic=Не удалось загрузи
|
|||||||
tab.advanced.upload_latest_log.error_not_found=Не удалось найти файл журнала.
|
tab.advanced.upload_latest_log.error_not_found=Не удалось найти файл журнала.
|
||||||
tab.accounts.name=Учётные записи
|
tab.accounts.name=Учётные записи
|
||||||
tab.accounts.description.line1=Добавьте в ViaProxy учётную запись Minecraft, чтобы присоединяться к серверам с проверкой лицензии. Учётную запись можно выбрать двойным щелчком или в контекстном меню. По умолчанию будет использоваться верхняя позиция.
|
tab.accounts.description.line1=Добавьте в ViaProxy учётную запись Minecraft, чтобы присоединяться к серверам с проверкой лицензии. Учётную запись можно выбрать двойным щелчком или в контекстном меню. По умолчанию будет использоваться верхняя позиция.
|
||||||
tab.accounts.description.line2=Если вы часто меняете учётные записи, можно установить мод OpenAuthMod. Это позволит ViaProxy использовать учётную запись вашего клиента.
|
|
||||||
tab.accounts.list.context_menu.select=Выбрать
|
tab.accounts.list.context_menu.select=Выбрать
|
||||||
tab.accounts.list.context_menu.remove=Удалить
|
tab.accounts.list.context_menu.remove=Удалить
|
||||||
tab.accounts.list.context_menu.move_up=↑ Вверх
|
tab.accounts.list.context_menu.move_up=↑ Вверх
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=Phiên bản:
|
|||||||
tab.general.minecraft_account.label=Tài khoản Minecraft:
|
tab.general.minecraft_account.label=Tài khoản Minecraft:
|
||||||
tab.general.minecraft_account.option_no_account=Không dùng tài khoản
|
tab.general.minecraft_account.option_no_account=Không dùng tài khoản
|
||||||
tab.general.minecraft_account.option_select_account=Dùng tài khoản đã chọn
|
tab.general.minecraft_account.option_select_account=Dùng tài khoản đã chọn
|
||||||
tab.general.minecraft_account.option_openauthmod=Dùng OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
tab.general.betacraft_auth.label=BetaCraft Auth (Classic)
|
||||||
tab.general.betacraft_auth.tooltip=Bật BetaCraft Auth cho phép bạn tham gia các server classic (<=1.7x) bằng tài khoản chính thức.
|
tab.general.betacraft_auth.tooltip=Bật BetaCraft Auth cho phép bạn tham gia các server classic (<=1.7x) bằng tài khoản chính thức.
|
||||||
tab.general.state.loading=Đang tải...
|
tab.general.state.loading=Đang tải...
|
||||||
@ -51,7 +50,6 @@ tab.advanced.upload_latest_log.error_generic=Không thể tải lên tập tin n
|
|||||||
tab.advanced.upload_latest_log.error_not_found=Không tìm được tập tin nhật kí.
|
tab.advanced.upload_latest_log.error_not_found=Không tìm được tập tin nhật kí.
|
||||||
tab.accounts.name=Tài khoản
|
tab.accounts.name=Tài khoản
|
||||||
tab.accounts.description.line1=Để tham gia server Minecraft chính chủ, bạn phải thêm tài khoản vào ViaProxy để chơi. Bạn có thể nhấn chuột phải vào tài khoản để chọn. Theo mặc định tài khoản đầu tiên sẽ được sử dụng.
|
tab.accounts.description.line1=Để tham gia server Minecraft chính chủ, bạn phải thêm tài khoản vào ViaProxy để chơi. Bạn có thể nhấn chuột phải vào tài khoản để chọn. Theo mặc định tài khoản đầu tiên sẽ được sử dụng.
|
||||||
tab.accounts.description.line2=Nếu bạn thường xuyên chuyển tài khoản, bạn có thể sử dụng mod OpenAuth. Điều này cho phép ViaProxy sử dụng tài khoản bạn đã đăng nhập trên máy.
|
|
||||||
tab.accounts.list.context_menu.select=Chọn tài khoản
|
tab.accounts.list.context_menu.select=Chọn tài khoản
|
||||||
tab.accounts.list.context_menu.remove=Loại bỏ
|
tab.accounts.list.context_menu.remove=Loại bỏ
|
||||||
tab.accounts.list.context_menu.move_up=lên ↑
|
tab.accounts.list.context_menu.move_up=lên ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=服务器版本:
|
|||||||
tab.general.minecraft_account.label=Minecraft账户:
|
tab.general.minecraft_account.label=Minecraft账户:
|
||||||
tab.general.minecraft_account.option_no_account=不使用账户
|
tab.general.minecraft_account.option_no_account=不使用账户
|
||||||
tab.general.minecraft_account.option_select_account=使用选定账户
|
tab.general.minecraft_account.option_select_account=使用选定账户
|
||||||
tab.general.minecraft_account.option_openauthmod=使用OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.label=BetaCraft验证(Classic)
|
tab.general.betacraft_auth.label=BetaCraft验证(Classic)
|
||||||
tab.general.betacraft_auth.tooltip=启用BetaCraft验证可以让你加入启用在线模式的Classic服务器。
|
tab.general.betacraft_auth.tooltip=启用BetaCraft验证可以让你加入启用在线模式的Classic服务器。
|
||||||
tab.general.state.loading=正在加载ViaProxy…
|
tab.general.state.loading=正在加载ViaProxy…
|
||||||
@ -52,7 +51,6 @@ tab.advanced.upload_latest_log.error_generic=无法上传日志文件:%s
|
|||||||
tab.advanced.upload_latest_log.error_not_found=找不到日志文件。
|
tab.advanced.upload_latest_log.error_not_found=找不到日志文件。
|
||||||
tab.accounts.name=账户
|
tab.accounts.name=账户
|
||||||
tab.accounts.description.line1=要加入在线模式服务器,你必须为ViaProxy添加一个Minecraft账户。可以通过右键点击选择账户。默认会使用首个账户。
|
tab.accounts.description.line1=要加入在线模式服务器,你必须为ViaProxy添加一个Minecraft账户。可以通过右键点击选择账户。默认会使用首个账户。
|
||||||
tab.accounts.description.line2=如果需要频繁更换账户,可以在客户端安装OpenAuthMod。这允许ViaProxy使用你在客户端登录的账户。
|
|
||||||
tab.accounts.list.context_menu.select=选择账户
|
tab.accounts.list.context_menu.select=选择账户
|
||||||
tab.accounts.list.context_menu.remove=移除
|
tab.accounts.list.context_menu.remove=移除
|
||||||
tab.accounts.list.context_menu.move_up=上移 ↑
|
tab.accounts.list.context_menu.move_up=上移 ↑
|
||||||
|
@ -8,7 +8,6 @@ tab.general.server_version.label=伺服器版本:
|
|||||||
tab.general.minecraft_account.label=Minecraft帳號:
|
tab.general.minecraft_account.label=Minecraft帳號:
|
||||||
tab.general.minecraft_account.option_no_account=不使用帳號
|
tab.general.minecraft_account.option_no_account=不使用帳號
|
||||||
tab.general.minecraft_account.option_select_account=使用選擇的帳號
|
tab.general.minecraft_account.option_select_account=使用選擇的帳號
|
||||||
tab.general.minecraft_account.option_openauthmod=使用 OpenAuthMod
|
|
||||||
tab.general.betacraft_auth.tooltip=啟用 BetaCraft Auth 可以讓你加入啟用線上模式的 Classic 伺服器。
|
tab.general.betacraft_auth.tooltip=啟用 BetaCraft Auth 可以讓你加入啟用線上模式的 Classic 伺服器。
|
||||||
tab.general.state.loading=正在載入 ViaProxy...
|
tab.general.state.loading=正在載入 ViaProxy...
|
||||||
tab.general.state.start=啟動
|
tab.general.state.start=啟動
|
||||||
@ -51,7 +50,6 @@ tab.advanced.upload_latest_log.error_generic=無法上傳記錄檔:%s
|
|||||||
tab.advanced.upload_latest_log.error_not_found=找不到記錄檔。
|
tab.advanced.upload_latest_log.error_not_found=找不到記錄檔。
|
||||||
tab.accounts.name=帳號
|
tab.accounts.name=帳號
|
||||||
tab.accounts.description.line1=要加入線上模式伺服器,你必須為 ViaProxy 新增一個 Minecraft 帳號。你可以對帳號按右鍵來選擇帳號。在預設情況下,會使用第一個帳號。
|
tab.accounts.description.line1=要加入線上模式伺服器,你必須為 ViaProxy 新增一個 Minecraft 帳號。你可以對帳號按右鍵來選擇帳號。在預設情況下,會使用第一個帳號。
|
||||||
tab.accounts.description.line2=如果你經常更換帳號,可以在用戶端安裝 OpenAuthMod。這會讓 ViaProxy 可以使用你在用戶端登入的帳號。
|
|
||||||
tab.accounts.list.context_menu.select=選擇帳號
|
tab.accounts.list.context_menu.select=選擇帳號
|
||||||
tab.accounts.list.context_menu.remove=移除
|
tab.accounts.list.context_menu.remove=移除
|
||||||
tab.accounts.list.context_menu.move_up=向上移動 ↑
|
tab.accounts.list.context_menu.move_up=向上移動 ↑
|
||||||
|
Loading…
Reference in New Issue
Block a user