mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-12 03:24:14 +00:00
Accurate teleport failures
- Waits for the destination chunk without a wall-clock deadline so a cold first chunk no longer fails the teleport - Reports the failure cause, an unloaded dimension, an offline player or a refused teleport separately - Adds the new messages to every locale
This commit is contained in:
+33
-5
@@ -60,6 +60,7 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import art.arcane.volmlib.util.localization.MessageArgument;
|
||||
@@ -132,8 +133,7 @@ public final class IrisModdedCommands {
|
||||
String dimensionId = level.name();
|
||||
NativeModdedServer server = source.server();
|
||||
CompletableFuture<Boolean> teleport = NativeWorldTeleport.teleport(player, new NativeWorldTeleport.Destination(
|
||||
server, ModdedDimensionManager.level(server, dimensionId), 8.5D, Double.MIN_VALUE, 8.5D,
|
||||
System.nanoTime() + TimeUnit.SECONDS.toNanos(10L)));
|
||||
server, ModdedDimensionManager.level(server, dimensionId), 8.5D, Double.MIN_VALUE, 8.5D, 0L));
|
||||
teleport.whenComplete((success, failure) -> {
|
||||
if (Boolean.TRUE.equals(success) && failure == null) {
|
||||
return;
|
||||
@@ -142,14 +142,42 @@ public final class IrisModdedCommands {
|
||||
ModdedIrisLog.error("Iris teleport into '{}' failed for {}",
|
||||
dimensionId, player.id(), failure);
|
||||
}
|
||||
server.execute(() -> fail(source, IrisLanguage.plain(
|
||||
ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_FAILED_DIMENSION_IS_NOT_LOADED,
|
||||
MessageArgument.untrusted("dimensionId", dimensionId))));
|
||||
server.execute(() -> fail(source, teleportFailure(dimensionId, player.name(), failure,
|
||||
ModdedDimensionManager.level(server, dimensionId) != null, server.player(player.id()) != null)));
|
||||
});
|
||||
ok(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORTING, MessageArgument.untrusted("value", player.name()), MessageArgument.untrusted("dimensionId", dimensionId)));
|
||||
return 1;
|
||||
}
|
||||
|
||||
static String teleportFailure(String dimensionId, String playerName, Throwable failure,
|
||||
boolean dimensionLoaded, boolean playerOnline) {
|
||||
if (failure != null) {
|
||||
return IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_FAILED_REASON,
|
||||
MessageArgument.untrusted("dimensionId", dimensionId),
|
||||
MessageArgument.untrusted("reason", failureReason(failure)));
|
||||
}
|
||||
if (!dimensionLoaded) {
|
||||
return IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_FAILED_DIMENSION_IS_NOT_LOADED,
|
||||
MessageArgument.untrusted("dimensionId", dimensionId));
|
||||
}
|
||||
if (!playerOnline) {
|
||||
return IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_CANCELLED_PLAYER_OFFLINE,
|
||||
MessageArgument.untrusted("dimensionId", dimensionId),
|
||||
MessageArgument.untrusted("value", playerName));
|
||||
}
|
||||
return IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_REFUSED,
|
||||
MessageArgument.untrusted("dimensionId", dimensionId));
|
||||
}
|
||||
|
||||
private static String failureReason(Throwable failure) {
|
||||
Throwable cause = failure;
|
||||
while (cause instanceof CompletionException && cause.getCause() != null) {
|
||||
cause = cause.getCause();
|
||||
}
|
||||
String message = cause.getMessage();
|
||||
return message == null || message.isBlank() ? cause.getClass().getSimpleName() : message;
|
||||
}
|
||||
|
||||
static int evacuate(NativeCommandSource source, NativeWorld target) {
|
||||
NativeModdedServer server = source.server();
|
||||
NativeWorld level = target != null ? target : source.world();
|
||||
|
||||
+15
@@ -71,6 +71,18 @@ public final class ModdedCommandMessages {
|
||||
"iris.modded.irismoddedcommands.teleport_failed_dimension_is_not_loaded",
|
||||
"Teleport failed: dimension " + "{dimensionId}" + " is not loaded."
|
||||
);
|
||||
public static final TextKey IRIS_MODDED_COMMANDS_TELEPORT_FAILED_REASON = TextKey.of(
|
||||
"iris.modded.irismoddedcommands.teleport_failed_reason",
|
||||
"Teleport into " + "{dimensionId}" + " failed: " + "{reason}"
|
||||
);
|
||||
public static final TextKey IRIS_MODDED_COMMANDS_TELEPORT_CANCELLED_PLAYER_OFFLINE = TextKey.of(
|
||||
"iris.modded.irismoddedcommands.teleport_cancelled_player_offline",
|
||||
"Teleport into " + "{dimensionId}" + " cancelled: " + "{value}" + " is no longer online."
|
||||
);
|
||||
public static final TextKey IRIS_MODDED_COMMANDS_TELEPORT_REFUSED = TextKey.of(
|
||||
"iris.modded.irismoddedcommands.teleport_refused",
|
||||
"Teleport into " + "{dimensionId}" + " was refused by the server."
|
||||
);
|
||||
public static final TextKey IRIS_MODDED_COMMANDS_TELEPORTING = TextKey.of(
|
||||
"iris.modded.irismoddedcommands.teleporting",
|
||||
"Teleporting " + "{value}" + " to " + "{dimensionId}" + "..."
|
||||
@@ -1266,6 +1278,9 @@ public final class ModdedCommandMessages {
|
||||
IRIS_MODDED_COMMANDS_CONSOLE_MUST_NAME_PLAYER_IRIS_TP_DIMENSION_PLAYER,
|
||||
IRIS_MODDED_COMMANDS_IS_NOT_GENERATED_BY_IRIS,
|
||||
IRIS_MODDED_COMMANDS_TELEPORT_FAILED_DIMENSION_IS_NOT_LOADED,
|
||||
IRIS_MODDED_COMMANDS_TELEPORT_FAILED_REASON,
|
||||
IRIS_MODDED_COMMANDS_TELEPORT_CANCELLED_PLAYER_OFFLINE,
|
||||
IRIS_MODDED_COMMANDS_TELEPORT_REFUSED,
|
||||
IRIS_MODDED_COMMANDS_TELEPORTING,
|
||||
IRIS_MODDED_COMMANDS_IS_NOT_GENERATED_BY_IRIS_2,
|
||||
IRIS_MODDED_COMMANDS_CANNOT_EVACUATE_PRIMARY_WORLD_THERE_IS_NOWHERE_SEND_PLAYERS,
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package art.arcane.iris.modded.command;
|
||||
|
||||
import art.arcane.iris.localization.IrisLanguage;
|
||||
import art.arcane.iris.modded.localization.ModdedCommandMessages;
|
||||
import art.arcane.volmlib.util.localization.MessageArgument;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.concurrent.CompletionException;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class IrisModdedCommandsTeleportTest {
|
||||
private static final String DIMENSION = "irisworldgen:1";
|
||||
|
||||
@Test
|
||||
public void failureReportsItsRootCauseInsteadOfAnUnloadedDimension() {
|
||||
String message = IrisModdedCommands.teleportFailure(DIMENSION, "Tester",
|
||||
new CompletionException(new IllegalStateException("Exception generating new chunk")), true, true);
|
||||
|
||||
assertEquals(IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_FAILED_REASON,
|
||||
MessageArgument.untrusted("dimensionId", DIMENSION),
|
||||
MessageArgument.untrusted("reason", "Exception generating new chunk")), message);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void failureWithoutMessageNamesTheFailureType() {
|
||||
String message = IrisModdedCommands.teleportFailure(DIMENSION, "Tester", new TimeoutException(), true, true);
|
||||
|
||||
assertEquals(IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_FAILED_REASON,
|
||||
MessageArgument.untrusted("dimensionId", DIMENSION),
|
||||
MessageArgument.untrusted("reason", "TimeoutException")), message);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unloadedDimensionIsReportedOnlyWhenItIsGone() {
|
||||
assertEquals(IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_FAILED_DIMENSION_IS_NOT_LOADED,
|
||||
MessageArgument.untrusted("dimensionId", DIMENSION)),
|
||||
IrisModdedCommands.teleportFailure(DIMENSION, "Tester", null, false, true));
|
||||
assertEquals(IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_CANCELLED_PLAYER_OFFLINE,
|
||||
MessageArgument.untrusted("dimensionId", DIMENSION),
|
||||
MessageArgument.untrusted("value", "Tester")),
|
||||
IrisModdedCommands.teleportFailure(DIMENSION, "Tester", null, true, false));
|
||||
assertEquals(IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_TELEPORT_REFUSED,
|
||||
MessageArgument.untrusted("dimensionId", DIMENSION)),
|
||||
IrisModdedCommands.teleportFailure(DIMENSION, "Tester", null, true, true));
|
||||
}
|
||||
}
|
||||
@@ -769,6 +769,9 @@ opening_your_editor = "Öffne {value} {value2} in deinem Editor."
|
||||
console_must_name_player_iris_tp_dimension_player = "Die Konsole muss einen Spieler benennen: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} wird nicht von Iris generiert."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleportation fehlgeschlagen: Dimension {dimensionId} ist nicht geladen."
|
||||
teleport_failed_reason = "Teleport nach {dimensionId} fehlgeschlagen: {reason}"
|
||||
teleport_cancelled_player_offline = "Teleport nach {dimensionId} abgebrochen: {value} ist nicht mehr online."
|
||||
teleport_refused = "Teleport nach {dimensionId} wurde vom Server abgelehnt."
|
||||
teleporting = "Teleportiere {value} nach {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} wird nicht von Iris generiert."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Die primäre Welt kann nicht evakuiert werden, da es kein Ziel für die Spieler gibt."
|
||||
|
||||
@@ -769,6 +769,9 @@ opening_your_editor = "Abriendo {value} {value2} en tu editor."
|
||||
console_must_name_player_iris_tp_dimension_player = "La consola debe indicar un jugador: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} no se genera por Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "El teletransporte falló: la dimensión {dimensionId} no está cargada."
|
||||
teleport_failed_reason = "El teletransporte a {dimensionId} falló: {reason}"
|
||||
teleport_cancelled_player_offline = "Teletransporte a {dimensionId} cancelado: {value} ya no está conectado."
|
||||
teleport_refused = "El servidor rechazó el teletransporte a {dimensionId}."
|
||||
teleporting = "Teletransportando a {value} a {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} no se genera por Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "No se puede evacuar el mundo principal porque no hay adónde enviar a los jugadores."
|
||||
|
||||
@@ -774,6 +774,9 @@ opening_your_editor = "Avaaminen {value} {value2} Päätoimittajassasi."
|
||||
console_must_name_player_iris_tp_dimension_player = "Konsolin on nimettävä pelaaja: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} ei ole tuotettu Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleportti epäonnistui: ulottuvuus {dimensionId} ei ole ladattu."
|
||||
teleport_failed_reason = "Teleporttaus ulottuvuuteen {dimensionId} epäonnistui: {reason}"
|
||||
teleport_cancelled_player_offline = "Teleporttaus ulottuvuuteen {dimensionId} peruttiin: {value} ei ole enää paikalla."
|
||||
teleport_refused = "Palvelin hylkäsi teleporttauksen ulottuvuuteen {dimensionId}."
|
||||
teleporting = "Telesiirtäminen {value} - {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} ei ole tuotettu Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Ensisijaista maailmaa ei voida evakuoida; pelaajia ei voi lähettää minnekään."
|
||||
|
||||
@@ -769,6 +769,9 @@ opening_your_editor = "Ouverture de {value} {value2} dans votre éditeur."
|
||||
console_must_name_player_iris_tp_dimension_player = "La console doit indiquer un joueur : /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} n'est pas généré par Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Échec de la téléportation : la dimension {dimensionId} n'est pas chargée."
|
||||
teleport_failed_reason = "Échec de la téléportation vers {dimensionId} : {reason}"
|
||||
teleport_cancelled_player_offline = "Téléportation vers {dimensionId} annulée : {value} n'est plus connecté."
|
||||
teleport_refused = "Le serveur a refusé la téléportation vers {dimensionId}."
|
||||
teleporting = "Téléportation de {value} vers {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} n'est pas généré par Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Impossible d'évacuer le monde principal, car aucun autre monde ne peut accueillir les joueurs."
|
||||
|
||||
@@ -774,6 +774,9 @@ opening_your_editor = "פתיחה {value} {value2} בעורך שלך."
|
||||
console_must_name_player_iris_tp_dimension_player = "הקונסולה חייבת לקרוא לשחקן: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} לא נוצר על ידי Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "טלפורט נכשל: ממד {dimensionId} לא טעון."
|
||||
teleport_failed_reason = "השיגור אל {dimensionId} נכשל: {reason}"
|
||||
teleport_cancelled_player_offline = "השיגור אל {dimensionId} בוטל: {value} כבר לא מחובר."
|
||||
teleport_refused = "השרת דחה את השיגור אל {dimensionId}."
|
||||
teleporting = "תקשורת {value} כדי {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} לא נוצר על ידי Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "לא ניתן לפנות לעולם הראשי, אין מקום לשלוח שחקנים."
|
||||
|
||||
@@ -769,6 +769,9 @@ opening_your_editor = "Apertura di {value} {value2} nel tuo editor."
|
||||
console_must_name_player_iris_tp_dimension_player = "La console deve specificare un giocatore: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} non è generato da Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teletrasporto non riuscito: la dimensione {dimensionId} non è caricata."
|
||||
teleport_failed_reason = "Teletrasporto verso {dimensionId} non riuscito: {reason}"
|
||||
teleport_cancelled_player_offline = "Teletrasporto verso {dimensionId} annullato: {value} non è più online."
|
||||
teleport_refused = "Il server ha rifiutato il teletrasporto verso {dimensionId}."
|
||||
teleporting = "Teletrasporto di {value} verso {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} non è generato da Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Impossibile evacuare il mondo principale: non esiste una destinazione per i giocatori."
|
||||
|
||||
@@ -772,6 +772,9 @@ opening_your_editor = "エディターで {value} {value2} を開いています
|
||||
console_must_name_player_iris_tp_dimension_player = "コンソールではプレイヤーを指定してください: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} は Iris によって生成されていません。"
|
||||
teleport_failed_dimension_is_not_loaded = "テレポートに失敗しました: ディメンション {dimensionId} は読み込まれていません。"
|
||||
teleport_failed_reason = "{dimensionId} へのテレポートに失敗しました: {reason}"
|
||||
teleport_cancelled_player_offline = "{dimensionId} へのテレポートを中止しました: {value} はオフラインです。"
|
||||
teleport_refused = "サーバーが {dimensionId} へのテレポートを拒否しました。"
|
||||
teleporting = "{value} を {dimensionId} にテレポートしています..."
|
||||
is_not_generated_by_iris_2 = "{value} は Iris によって生成されていません。"
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "プライマリーワールドからは退避できません。プレイヤーの移動先がありません。"
|
||||
|
||||
@@ -772,6 +772,9 @@ opening_your_editor = "편집기에서 {value} {value2} 여는 중입니다."
|
||||
console_must_name_player_iris_tp_dimension_player = "콘솔은 플레이어를 지정해야 합니다: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} 에 의해 생성되지 않음 Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleport 실패: 차원 {dimensionId} 로드 되지 않습니다."
|
||||
teleport_failed_reason = "{dimensionId}(으)로 순간이동 실패: {reason}"
|
||||
teleport_cancelled_player_offline = "{dimensionId}(으)로 순간이동 취소됨: {value} 님이 더 이상 접속해 있지 않습니다."
|
||||
teleport_refused = "서버가 {dimensionId}(으)로의 순간이동을 거부했습니다."
|
||||
teleporting = "팟캐스트 {value} 으로 {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} 에 의해 생성되지 않음 Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "1 차 세계를 피할 수 없습니다. 플레이어에게 보내는 곳이 없습니다."
|
||||
|
||||
@@ -774,6 +774,9 @@ opening_your_editor = "Atidaryti {value} {value2} redaktoriuje."
|
||||
console_must_name_player_iris_tp_dimension_player = "Konsolė turi pavadinti žaidėją: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} generuoja ne Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleportas nepavyko: dimensija {dimensionId} neįkrauta."
|
||||
teleport_failed_reason = "Teleportavimas į {dimensionId} nepavyko: {reason}"
|
||||
teleport_cancelled_player_offline = "Teleportavimas į {dimensionId} atšauktas: {value} nebėra prisijungęs."
|
||||
teleport_refused = "Serveris atmetė teleportavimą į {dimensionId}."
|
||||
teleporting = "Teleportavimas {value} iki {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} generuoja ne Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Negalima evakuoti pirminio pasaulio; nėra kur siųsti žaidėjų."
|
||||
|
||||
@@ -769,6 +769,9 @@ opening_your_editor = "Openen {value} {value2} in uw redacteur."
|
||||
console_must_name_player_iris_tp_dimension_player = "Console moet een speler een naam geven: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} wordt niet gegenereerd door Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleporteren mislukt: dimensie {dimensionId} is niet geladen."
|
||||
teleport_failed_reason = "Teleporteren naar {dimensionId} mislukt: {reason}"
|
||||
teleport_cancelled_player_offline = "Teleporteren naar {dimensionId} geannuleerd: {value} is niet meer online."
|
||||
teleport_refused = "De server heeft het teleporteren naar {dimensionId} geweigerd."
|
||||
teleporting = "Teleporteren {value} tot {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} wordt niet gegenereerd door Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Kan de primaire wereld niet evacueren; er is geen plek om spelers te sturen."
|
||||
|
||||
@@ -774,6 +774,9 @@ opening_your_editor = "Otwarcie {value} {value2} w twoim wydawcy."
|
||||
console_must_name_player_iris_tp_dimension_player = "Konsola musi nazwać gracza: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} nie jest generowany przez Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleport nie powiódł się: wymiar {dimensionId} nie jest załadowany."
|
||||
teleport_failed_reason = "Teleportacja do {dimensionId} nie powiodła się: {reason}"
|
||||
teleport_cancelled_player_offline = "Teleportacja do {dimensionId} anulowana: {value} nie jest już online."
|
||||
teleport_refused = "Serwer odrzucił teleportację do {dimensionId}."
|
||||
teleporting = "Teleportowanie {value} do {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} nie jest generowany przez Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Nie można ewakuować głównego świata; nie ma gdzie wysłać graczy."
|
||||
|
||||
@@ -769,6 +769,9 @@ opening_your_editor = "Abertura {value} {value2} no seu editor."
|
||||
console_must_name_player_iris_tp_dimension_player = "A consola deve nomear um jogador: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} não é gerado por Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Falha no teletransporte: dimensão {dimensionId} não está carregada."
|
||||
teleport_failed_reason = "Falha no teletransporte para {dimensionId}: {reason}"
|
||||
teleport_cancelled_player_offline = "Teletransporte para {dimensionId} cancelado: {value} já não está online."
|
||||
teleport_refused = "O servidor recusou o teletransporte para {dimensionId}."
|
||||
teleporting = "Teletransportando {value} para {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} não é gerado por Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Não é possível evacuar o mundo primário; não há nenhum lugar para enviar jogadores."
|
||||
|
||||
@@ -774,6 +774,9 @@ opening_your_editor = "Открытие {value} {value2} В вашем реда
|
||||
console_must_name_player_iris_tp_dimension_player = "Консоль должна называть игрока: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} не генерируется путем Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Телепорт провалился: измерение {dimensionId} не загружается."
|
||||
teleport_failed_reason = "Не удалось телепортироваться в {dimensionId}: {reason}"
|
||||
teleport_cancelled_player_offline = "Телепортация в {dimensionId} отменена: {value} больше не в сети."
|
||||
teleport_refused = "Сервер отклонил телепортацию в {dimensionId}."
|
||||
teleporting = "телепортация {value} то {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} не генерируется путем Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Нельзя эвакуировать основной мир, негде отправить игроков."
|
||||
|
||||
@@ -774,6 +774,9 @@ opening_your_editor = "Açılış {value} {value2} editörünüzde."
|
||||
console_must_name_player_iris_tp_dimension_player = "Konsol bir oyuncu adı olmalıdır: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} tarafından üretilmiyor Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleport başarısız oldu: Boyut {dimensionId} yüklenemez."
|
||||
teleport_failed_reason = "{dimensionId} boyutuna ışınlanma başarısız oldu: {reason}"
|
||||
teleport_cancelled_player_offline = "{dimensionId} boyutuna ışınlanma iptal edildi: {value} artık çevrimiçi değil."
|
||||
teleport_refused = "Sunucu {dimensionId} boyutuna ışınlanmayı reddetti."
|
||||
teleporting = "Telporting {value} tom için {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} tarafından üretilmiyor Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "birincil dünyayı tahliye edemez; oyuncuları göndermek için hiçbir yer yoktur."
|
||||
|
||||
@@ -772,6 +772,9 @@ opening_your_editor = "Mở {value} {value2} trong biên tập của anh."
|
||||
console_must_name_player_iris_tp_dimension_player = "Cần phải đặt tên người chơi: /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} không được tạo ra bởi Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Chuyển tiếp thất bại: chiều {dimensionId} không nạp đạn."
|
||||
teleport_failed_reason = "Dịch chuyển tới {dimensionId} thất bại: {reason}"
|
||||
teleport_cancelled_player_offline = "Đã hủy dịch chuyển tới {dimensionId}: {value} không còn trực tuyến."
|
||||
teleport_refused = "Máy chủ đã từ chối dịch chuyển tới {dimensionId}."
|
||||
teleporting = "Chuyển tiếp {value} phải {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} không được tạo ra bởi Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "Không thể sơ tán thế giới chính; không có nơi nào để gửi cầu thủ."
|
||||
|
||||
@@ -772,6 +772,9 @@ opening_your_editor = "开幕 {value} {value2} 在你的编辑。"
|
||||
console_must_name_player_iris_tp_dimension_player = "控制台必须给玩家命名 : /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} 不由 Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleport 失败: 维度 {dimensionId} 未加载。"
|
||||
teleport_failed_reason = "传送到 {dimensionId} 失败:{reason}"
|
||||
teleport_cancelled_player_offline = "已取消传送到 {dimensionId}:{value} 已不在线。"
|
||||
teleport_refused = "服务器拒绝了传送到 {dimensionId}。"
|
||||
teleporting = "远程传送 {value} 改为: {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} 不由 Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "无法撤离主世界; 没有地方可以发送玩家 。"
|
||||
|
||||
@@ -772,6 +772,9 @@ opening_your_editor = "開幕 {value} {value2} 在你的編輯。"
|
||||
console_must_name_player_iris_tp_dimension_player = "控制檯必須給玩家命名 : /iris tp <dimension> <player>"
|
||||
is_not_generated_by_iris = "{value} 不由 Iris."
|
||||
teleport_failed_dimension_is_not_loaded = "Teleport 失敗: 維度 {dimensionId} 未載入。"
|
||||
teleport_failed_reason = "傳送到 {dimensionId} 失敗:{reason}"
|
||||
teleport_cancelled_player_offline = "已取消傳送到 {dimensionId}:{value} 已不在線上。"
|
||||
teleport_refused = "伺服器拒絕了傳送到 {dimensionId}。"
|
||||
teleporting = "遠端傳送 {value} 改為: {dimensionId}..."
|
||||
is_not_generated_by_iris_2 = "{value} 不由 Iris."
|
||||
cannot_evacuate_primary_world_there_is_nowhere_send_players = "無法撤離主世界; 沒有地方可以傳送玩家 。"
|
||||
|
||||
Reference in New Issue
Block a user