aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyeyoung <42869671+cyoung06@users.noreply.github.com>2023-10-20 16:01:22 +0900
committerGitHub <noreply@github.com>2023-10-20 16:01:22 +0900
commit4a38331c9742a39348e0c21dd861314b19fcf391 (patch)
tree82d319e43fee38342fbb11b2e2e83bc096b3413d
parent1164a7259d7bf8eef332bbb48bc141e08a22b780 (diff)
downloadSkyblock-Dungeons-Guide-4a38331c9742a39348e0c21dd861314b19fcf391.tar.gz
Skyblock-Dungeons-Guide-4a38331c9742a39348e0c21dd861314b19fcf391.tar.bz2
Skyblock-Dungeons-Guide-4a38331c9742a39348e0c21dd861314b19fcf391.zip
Multi Language support for Party context detection (#427)
* - Automatic Party Control Message collection for 25 languages Signed-off-by: syeyoung <cyoung06@naver.com> * - Processing generated file Signed-off-by: syeyoung <cyoung06@naver.com> * - Processing generated file, and add script for "transfering because leader left" message - Change how message detection is done to regex Maybe implement aho-corasick later. :D Signed-off-by: syeyoung <cyoung06@naver.com> * - update party messages Signed-off-by: syeyoung <cyoung06@naver.com> --------- Signed-off-by: syeyoung <cyoung06@naver.com>
-rw-r--r--mod/data/party/README.md15
-rw-r--r--mod/data/party/partyMessages110
-rw-r--r--mod/data/party/party_languages.json694
-rw-r--r--mod/data/party/partymessages.txt4369
-rw-r--r--mod/data/party/partymessages_old.txt4219
-rw-r--r--mod/data/party/process1.json2153
-rw-r--r--mod/data/party/process2_old.json655
-rwxr-xr-xmod/data/party/processor.py121
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/chat/ChatProcessor.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/chat/ChatRoutine.java209
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/commands/CommandDgDebug.java195
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/party/MessageMatcher.java73
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/party/PartyManager.java213
-rw-r--r--mod/src/main/resources/party_languages.json694
14 files changed, 13607 insertions, 115 deletions
diff --git a/mod/data/party/README.md b/mod/data/party/README.md
new file mode 100644
index 00000000..0e6e7c76
--- /dev/null
+++ b/mod/data/party/README.md
@@ -0,0 +1,15 @@
+This directory contains Hypixel's party messages for all 25 languages.
+
+It has been collected by running
+`/dgdebug partycollection (secondary ign) (effective fragbot) (offline player)`
+
+- Secondary IGN is the ign you must have control of
+- In the implementation, http server is running on localhost:3000 which makes Secondary IGN player send the body as a chat message
+- FragBot is the bot which auto accepts party invites from secondary ign
+- Offline player is player who exists, but is not on hypixel.
+
+This will create file in runtime/partymessages.txt
+
+
+The file has been post-processed, and included as resource to dg.
+
diff --git a/mod/data/party/partyMessages b/mod/data/party/partyMessages
new file mode 100644
index 00000000..2eacf1aa
--- /dev/null
+++ b/mod/data/party/partyMessages
@@ -0,0 +1,110 @@
+ENGLISH
+
+~ §ehas disbanded the party!§r
+
+§cYou are not currently in a party.§r
+§cYou are not in a party!§r
+§cYou are not in a party right now.§r
+§cYou must be in a party to join the party channel!§r
+
+§b[MVP§r§a+§r§b] syeyoung §r§einvited §r§b[MVP§r§0+§r§b] Azael_Nya §r§eto the party! They have §r§c60 §r§eseconds to accept.§r
+
+§ejoined the party.§r
+
+§aYou are now in the §r§6PARTY§r§a channel§r
+
+
+§aenabled All Invite§r
+§cdisabled All Invite§r
+
+
+§cCouldn't find a player with that name!§r
+§cYou cannot invite that player since they're not online.
+
+§b[MVP§r§f+§r§b] apotato321§r§e has promoted §r§a[VIP§r§6+§r§a] syeyoung §r§eto Party Moderator§r
+§a[VIP§r§6+§r§a] syeyoung§r§e has promoted §r§b[MVP§r§f+§r§b] apotato321 §r§eto Party Leader§r
+§b[MVP§r§a+§r§b] syeyoung§r§e has demoted §r§b[MVP§r§0+§r§b] Azael_Nya §r§eto Party Member§r
+§eThe party was transferred to §r§b[MVP§r§f+§r§b] apotato321 §r§eby §r§a[VIP§r§6+§r§a] syeyoung§r
+
+
+§ehas left the party.§r
+
+§cThe party was disbanded because all invites expired and the party was empty§r
+§cYou are not in a party and were moved to the ALL channel.§r
+
+|§r§b[MVP§r§0+§r§b] Azael_Nya §r§ehas invited you to join their party!
+|§r§eYou have §r§c60 §r§eseconds to accept. §r§6Click here to join!§r§9
+
+|§eYou have joined §r§b[MVP§r§0+§r§b] Azael_Nya's §r§eparty!§r
+|§eYou'll be partying with:
+
+§cYou are not allowed to invite players.§r
+
+§ehas been removed from the party.§r
+
+§eYou have been kicked from the party by
+
+
+§6Party Members
+
+
+§eYou left the party.§r
+
+
+
+
+
+
+
+/
+
+
+
+§r§ejoined the dungeon group! (§r§b
+GERMAN
+
+FRENCH
+
+DUTCH
+
+SPANISH
+
+ITALIAN
+
+CHINESE_SIMPLIFIED
+
+CHINESE_TRADITIONAL
+
+PORTUGUESE_BR
+
+RUSSIAN
+
+KOREAN
+
+POLISH
+
+JAPANESE
+
+PIRATE
+
+NORWEGIAN
+
+PORTUGUESE_PT
+
+SWEDISH
+
+TURKISH
+
+DANISH
+
+CZECH
+
+FINNISH
+
+GREEK
+
+UKRAINIAN
+
+ROMANIAN
+
+HUNGARIAN \ No newline at end of file
diff --git a/mod/data/party/party_languages.json b/mod/data/party/party_languages.json
new file mode 100644
index 00000000..a3fd97d3
--- /dev/null
+++ b/mod/data/party/party_languages.json
@@ -0,0 +1,694 @@
+{
+ "not_in_party": [
+ "R(?<p0>.+)\\ §r§ehas\\ disbanded\\ the\\ party!§r",
+ "=§cYou are not currently in a party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cYou are not in a party right now.§r",
+ "=§cYou must be in a party to join the party channel!§r",
+ "=§cThe party was disbanded because all invites expired and the party was empty.§r",
+ "=§cYou are not in a party and were moved to the ALL channel.§r",
+ "R§eYou\\ have\\ been\\ kicked\\ from\\ the\\ party\\ by\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eYou left the party.§r",
+ "R(?<p0>.+)\\ §r§ehat\\ die\\ Party\\ aufgelöst!§r",
+ "=§cDu bist aktuell in keiner Party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cDu bist im Moment in keiner Party.§r",
+ "=§cDu musst in einer Party sein um den Party-Chat betreten zu können!§r",
+ "=§cDie Party wurde aufgelöst, weil alle Einladungen abgelaufen sind und die Party leer war.§r",
+ "=§cDu befindest dich nicht in einer Party und wurdest in den ALL-Kanal verschoben.§r",
+ "R§eDu\\ wurdest\\ von\\ §r(?<p1>.+)\\ §r§eaus\\ der\\ Party\\ gekickt§r",
+ "=§eDu hast die Party verlassen.§r",
+ "R(?<p0>.+)\\ §r§ea\\ dissout\\ la\\ party!§r",
+ "=§cVous n'êtes pas actuellement dans une party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cVous n'êtes pas actuellement dans une party.§r",
+ "=§cVous devez être dans une party pour rejoindre le canal de party!§r",
+ "=§cLa party a été dissoute car toutes les invitations ont expirées et la party était vide.§r",
+ "=§cVous n'êtes pas dans une party et avez été déplacé dans le canal PUBLIC.§r",
+ "R§eVous\\ avez\\ été\\ expulsé\\ de\\ la\\ party\\ par\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eVous avez quitté la party.§r",
+ "R(?<p0>.+)\\ §r§eheeft\\ de\\ party\\ ontbonden!§r",
+ "=§cJe bent momenteel niet in een party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cJe zit nu niet in een party.§r",
+ "=§cJe moet in een party zitten om het partykanaal te kunnen betreden!§r",
+ "R(?<p1>.+)\\ §r§everliet\\ de\\ party\\.§r",
+ "=§cJe zit niet in een party en bent verplaatst naar het openbare kanaal.§r",
+ "R§eJe\\ bent\\ door\\ §r(?<p1>.+)\\ §r§euit\\ de\\ party\\ verwijderd§r",
+ "=§eJe verliet de party.§r",
+ "R§e¡§r(?<p0>.+)\\ §r§eha\\ disuelto\\ la\\ party!§r",
+ "=§cActualmente no estás en una party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cNo estás en una party ahora mismo.§r",
+ "=§c¡Debes estar en una party para usar el canal de party!§r",
+ "=§cLa party fue disuelta porque todas las invitaciones expiraron y la party estaba vacía.§r",
+ "=§cNo estás en una party y fuiste movido al canal TODO.§r",
+ "R§eHas\\ sido\\ expulsado\\ de\\ la\\ party\\ por\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eHas abandonado la party.§r",
+ "R(?<p0>.+)\\ §r§eha\\ sciolto\\ il\\ party!§r",
+ "=§cNon sei in un party al momento.§r",
+ "=§cYou are not in a party!§r",
+ "=§cNon sei in un party al momento.§r",
+ "=§cDevi essere in un party per entrare nel canale party!§r",
+ "=§cIl party è stato sciolto perché tutti gli inviti sono scaduti e il party era vuoto.§r",
+ "=§cNon sei in un party e sei stato spostato nel canale TUTTI.§r",
+ "R§eSei\\ stato\\ cacciato\\ dal\\ party\\ da\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eHai lasciato il party.§r",
+ "R(?<p0>.+)§r§e解散了组队!§r",
+ "=§c你当前不在组队中。§r",
+ "=§cYou are not in a party!§r",
+ "=§c你当前不在组队中。§r",
+ "=§c你必须加入一个组队才能使用组队频道!§r",
+ "R(?<p1>.+)§r§e离开了组队。§r",
+ "=§c你不在任何组队中,故被移至公共频道。§r",
+ "R§e你已被§r(?<p1>.+)§r§e踢出组队§r",
+ "=§e你离开了组队。§r",
+ "R(?<p0>.+)§r§e\\ 解散了組隊!§r",
+ "=§c你目前不在組隊裡。§r",
+ "=§cYou are not in a party!§r",
+ "=§c你目前不在組隊裡。§r",
+ "=§c你必須在組隊裡才能使用組隊頻道!§r",
+ "=§c組隊因所有邀請均已過期且沒有沒有成員而解散。§r",
+ "=§c你並不在任何組隊裡,故將你移至公頻。§r",
+ "R§e你已被\\ §r(?<p1>.+)§r§e\\ 踢出組隊§r",
+ "=§e你離開了組隊。§r",
+ "R(?<p0>.+)\\ §r§edesfez\\ a\\ party!§r",
+ "=§cVocê não está em uma party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cVocê não está em uma party.§r",
+ "=§cVocê precisa estar em uma party para usar este canal!§r",
+ "=§cA party foi desfeita pois todos os convites expiraram e a party estava vazia.§r",
+ "=§cVocê não está em uma party e foi movido para o canal PÚBLICO§r",
+ "R§eVocê\\ foi\\ expulso\\ da\\ party\\ por\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eVocê saiu da party.§r",
+ "R(?<p0>.+)\\ §r§eраспустил\\ компанию!§r",
+ "=§cВы не состоите в компании.§r",
+ "=§cYou are not in a party!§r",
+ "=§cВы не в компании.§r",
+ "=§cВы должны быть в компании, чтобы выбрать данный канал!§r",
+ "=§cКомпания была распущена, потому что все приглашения истекли и компания пуста.§r",
+ "=§cВы не в компании и были перемещены в ОБЩИЙ канал.§r",
+ "R§eВы\\ были\\ выгнаны\\ из\\ компании\\ игроком\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eВы покинули компанию.§r",
+ "R(?<p0>.+)§r§e이\\(가\\)\\ Party를\\ 해산했습니다!§r",
+ "=§c현재 Party에 있지 않습니다.§r",
+ "=§cYou are not in a party!§r",
+ "=§c지금은 Party에 있지 않습니다.§r",
+ "=§c참여한 Party가 있어야 Party 채널에 입장할 수 있습니다!§r",
+ "=§c모든 초대가 만료되고 Party가 비었기 때문에 Party가 해산되었습니다.§r",
+ "=§cParty에 있지 않아 전체 채널로 이동되었습니다.§r",
+ "R(?<p1>.+)§r§e에\\ 의해\\ Party에서\\ 추방되었습니다§r",
+ "=§eParty를 떠났습니다.§r",
+ "R(?<p0>.+)\\ §r§erozwiązuje\\ party!§r",
+ "=§cNie jesteś obecnie w party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cNie jesteś teraz w party.§r",
+ "=§cMusisz być w party, żeby dołączyć do kanału party!§r",
+ "=§cThe party was disbanded because all invites expired and the party was empty.§r",
+ "=§cNie jesteś w party i został(a)sz przeniesiony(-a) do kanału WSZYSTKIE.§r",
+ "R§eZostałeś\\(\\-aś\\)\\ wyrzucony\\(\\-a\\)\\ z\\ party\\ przez\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eOpuszczono party.§r",
+ "R(?<p0>.+)\\ §r§eが\\ Party\\ を解散させました!§r",
+ "=§c現在あなたは Party に参加していません。§r",
+ "=§cYou are not in a party!§r",
+ "=§cあなたは現在 Party に参加していません。§r",
+ "=§cParty チャンネルに参加するには Party に参加している必要があります!§r",
+ "=§cすべての招待の有効期限が切れ、誰もいなくなったため、Partyは解散されました。§r",
+ "=§cParty から退出したため、全体チャンネルに移動しました。§r",
+ "R§eあなたは\\ §r(?<p1>.+)§r§e\\ によって\\ Party\\ から退出させられました§r",
+ "=§eParty から退出しました。§r",
+ "R(?<p0>.+)\\ §r§ehas\\ disbanded\\ th'\\ party!§r",
+ "=§cYe nah be in a party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cYe nah be in a party right now.§r",
+ "=§cYe must be in a party t' join th' party channel!§r",
+ "=§cTh' party be disbanded because all invites expired an' th' party be empty.§r",
+ "=§cYe no longer be in a party! Ye be moved t' th' ALL channel.§r",
+ "R§eYe\\ be\\ kicked\\ from\\ th'\\ party\\ by\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eYe abandoned ship.§r",
+ "R(?<p0>.+)\\ §r§ehar\\ oppløst\\ partyet!§r",
+ "=§cDu er ikke i et party for øyeblikket.§r",
+ "=§cYou are not in a party!§r",
+ "=§cDu er ikke i et party akkurat nå.§r",
+ "=§cDu må være i et party for å bli med i partykanalen!§r",
+ "=§cPartyet ble oppløst fordi alle invitasjonene utløpte og partyet var tomt.§r",
+ "=§cDu er ikke i et party og ble flyttet til ALLE-kanalen.§r",
+ "R§eDu\\ ble\\ kastet\\ ut\\ av\\ partyet\\ av\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eDu forlot partyet.§r",
+ "R(?<p0>.+)\\ §r§edesfez\\ a\\ party!§r",
+ "=§cNão estás numa party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cNão estás numa party.§r",
+ "=§cTens de estar numa party para acederes ao canal da party!§r",
+ "=§cA party foi desfeita porque estava vazia e todos os convites expiraram.§r",
+ "=§cNão estás numa party, logo foste movido para o canal GERAL.§r",
+ "R§eFoste\\ expulso\\ da\\ party\\ por\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eSaíste da party.§r",
+ "R(?<p0>.+)\\ §r§ehar\\ upplöst\\ partyt!§r",
+ "=§cDur är för närvarande inte med i ett party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cDu är inte med i ett party just nu.§r",
+ "=§cDu måste vara i ett party att gå med i partykanalen!§r",
+ "=§cPartyt upplöstes eftersom alla inbjudningar gick ut och partyt var tomt.§r",
+ "=§cDu är inte med i ett party och flyttades till ALLA-kanalen.§r",
+ "R§eDu\\ har\\ sparkades\\ från\\ partyt\\ av\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eDu lämnade partyt.§r",
+ "R(?<p0>.+)\\ §r§epartiyi\\ dağıttı!§r",
+ "=§cŞu anda bir partide değilsin.§r",
+ "=§cYou are not in a party!§r",
+ "=§cŞu an herhangi bir partide değilsin.§r",
+ "=§cParti kanalına girmek için bir partide olmalısın!§r",
+ "=§cParti dağıtıldı çünkü tüm davetlerin süresi doldu ve parti boş.§r",
+ "=§cBir partide değilsiniz ve GENEL kanala taşındınız.§r",
+ "R(?<p1>.+)§r§e\\ tarafından\\ partiden\\ atıldınız\\.§r",
+ "=§ePartiden ayrıldın.§r",
+ "R(?<p0>.+)\\ §r§ehar\\ opløst\\ partyet!§r",
+ "=§cDu er i øjeblikket ikke i et party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cDu er ikke i et party lige nu.§r",
+ "=§cDu skal være i et party for at tilmelde dig party kanalen!§r",
+ "=§cPartyet blev opløst fordi alle invitationer udløb, og partyet var tomt.§r",
+ "=§cDu er ikke i et party og blev flyttet til ALLE kanalen.§r",
+ "R§eDu\\ er\\ blevet\\ smidt\\ ud\\ af\\ partyet\\ af\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eDu har forladt partyet§r",
+ "R(?<p0>.+)\\ §r§erozpustil\\ party!§r",
+ "=§cMomentálně nejsi v party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cMomentálně nejsi v party.§r",
+ "=§cYou must be in a party to join the party channel!§r",
+ "=§cThe party was disbanded because all invites expired and the party was empty.§r",
+ "=§cNejsi v party, takže jsi byl přesunut do chatu „ALL“.§r",
+ "R§eByl\\ jsi\\ vyhozen\\ z\\ party\\ hráčem\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eOpustil jsi party.§r",
+ "R(?<p0>.+)\\ §r§ehajotti\\ partyn!§r",
+ "=§cEt ole partyssa juuri nyt.§r",
+ "=§cYou are not in a party!§r",
+ "=§cEt ole partyssa juuri nyt.§r",
+ "=§cSinun tulee olla partyssa voidaksesi liittyä partyn kanavalle!§r",
+ "=§cParty hajotettiin, koska kaikki kutsut vanhentuivat ja party on tyhjä.§r",
+ "=§cEt ole partyssa, joten sinut siirrettiin kanavalle ALL.§r",
+ "R(?<p1>.+)§r§e\\ potki\\ sinut\\ partysta§r",
+ "=§ePoistuit partysta.§r",
+ "R§eΟ\\ §r(?<p0>.+)\\ §r§eδιέλυσε\\ το\\ party!§r",
+ "=§cΔεν είσαι προσωρινά σε party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cΔεν είσαι σε κάποιο party αυτή τη στιγμή.§r",
+ "=§cΠρέπει να είσαι σε party για να συμμετέχεις στο κανάλι του party!§r",
+ "R§eΟ\\ §r(?<p1>.+)\\ §r§eβγήκε\\ από\\ το\\ party\\.§r",
+ "=§cΔεν είσαι σε party οπότε μετακινήθηκες στο κανάλι ΟΛΑ.§r",
+ "R§eέχεις\\ διωχθεί\\ από\\ το\\ party\\ από\\ τον\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eΈφυγες από το party.§r",
+ "R(?<p0>.+)\\ §r§eрозпустив\\ групу!§r",
+ "=§cВи не є членом групи.§r",
+ "=§cYou are not in a party!§r",
+ "=§cВи не в групі.§r",
+ "=§cВи повинні бути в групі, щоб вступити в канал групи!§r",
+ "R(?<p1>.+)\\ §r§eзалишив\\ групу\\.§r",
+ "=§cВи не в групі і були переміщені до ЗАГАЛЬНОГО каналу.§r",
+ "R§eВи\\ були\\ вигнані\\ з\\ групи\\ гравцем\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eВи покинули групу.§r",
+ "R(?<p0>.+)\\ §r§ea\\ destrămat\\ party\\-ul!§r",
+ "=§cÎn acest moment nu te afli în vreun party.§r",
+ "=§cYou are not in a party!§r",
+ "=§cNu te afli într-un party în acest moment.§r",
+ "=§cTrebuie să fii într-un party pentru a te alătura canalului de party!§r",
+ "=§cParty-ul a fost destrămat deoarece toate invitațiile au expirat iar party-ul a fost gol.§r",
+ "=§cNu ești într-un party așa că ai fost mutat în canalul ALL.§r",
+ "R§eAi\\ fost\\ dat\\ afară\\ din\\ party\\ de\\ către\\ §r(?<p1>.+)\\ §r§e§r",
+ "=§eAi ieșit din party.§r",
+ "R(?<p0>.+)\\ §r§efeloszlatta\\ a\\ partyt!§r",
+ "=§cJelenleg nem vagy egy party tagja.§r",
+ "=§cYou are not in a party!§r",
+ "=§cJelenleg nem vagy partyban.§r",
+ "=§cEgy partyban kell lenned hogy csatlakozhass a party csatornához!§r",
+ "=§cA party fel lett oszlatva mert az összes meghívás lejárt és a party üres volt.§r",
+ "=§cNem vagy egy party tagja se, ezért átraktunk az ALL csatornába.§r",
+ "R§eKi\\ lettél\\ rúgva\\ a\\ partyból\\ §r(?<p1>.+)\\ §r§eáltal§r",
+ "=§eKiléptél a partyból.§r"
+ ],
+ "party_channel": [
+ "=§aYou are now in the §r§6PARTY§r§a channel§r",
+ "=§aDu bist nun im §r§6PARTY§r§a Channel§r",
+ "=§aVous êtes maintenant dans le canal §r§6PARTY§r",
+ "=§aJe bent naar het §r§6partykanaal §r§averplaatst§r",
+ "=§aAhora estás en el canal de §r§6PARTY§r",
+ "=§aTi trovi nel canale: §r§6PARTY§r",
+ "=§aYou are now in the §r§6组队§r§a channel§r",
+ "=§aYou are now in the §r§6組隊§r§a channel§r",
+ "=§aYou are now in the §r§6КОМПАНИЯ§r§a channel§r",
+ "=§aYou are now in the §r§6PARTݧr§a channel§r",
+ "=§aYou are now in the §r§6ГРУПА§r§a channel§r",
+
+ "=§aYou are now in the §r§6PARTY§r§a channel§r",
+ "=§aDu bist nun im §r§6PARTY§r§a Channel§r",
+ "=§aVous êtes maintenant dans le canal §r§6PARTY§r",
+ "=§aJe bent naar het §r§6partykanaal §r§averplaatst§r",
+ "=§aAhora estás en el canal de §r§6PARTY§r",
+ "=§aTi trovi nel canale: §r§6PARTY§r",
+ "=§a你正处于§r§6组队§r§a频道中§r",
+ "=§a已切換聊天頻道至§r§6組隊§r§a頻道§r",
+ "=§aVocê está no canal §r§6PARTY§r§a§r",
+ "=§aТеперь вы находитесь в канале \"§r§6КОМПАНИЯ§r§a\"§r",
+ "=§6PARTY§r§a 채널에 입장했습니다§r",
+ "=§aJesteś teraz na kanale „§r§6PARTY§r§a”§r",
+ "=§aあなたは現在 §r§6PARTY§r§a チャンネルにいます§r",
+ "=§aYe now be in th' §r§6PARTY§r§a channel§r",
+ "=§aDu er nå i §r§6PARTY§r§a-kanalen§r",
+ "=§aFoste para o canal §r§6PARTY§r§a§r",
+ "=§aDu är nu i §r§6PARTY§r§a-kanalen§r",
+ "=§aŞimdi §r§6PARTݧr§a kanalındasın§r",
+ "=§aDu er nu i §r§6PARTY§r§a kanalen§r",
+ "=§aNyní jsi v kanálu §r§6PARTY§r§a§r",
+ "=§aOlet nyt kanavalla §r§6PARTY§r",
+ "=§aΕίσαι τώρα στο §r§6PARTY§r§a κανάλι§r",
+ "=§aYou are now in the §r§6ГРУПА§r§a channel§r",
+ "=§aAcum ești în canalul §r§6PARTY§r§a§r",
+ "=§aMost már a(z) §r§6PARTY§r§a csatornában vagy§r"
+ ],
+ "all_invite_on": [
+ "R(?<p0>.+)\\ §r§aenabled\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§ahat\\ die\\ Option\\ All\\ Invite\\ aktiviert§r",
+ "R(?<p0>.+)\\ §r§aa\\ activé\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aheeft\\ All\\ Invite\\ §r§ageactiveerd§r",
+ "R(?<p0>.+)\\ §r§aha\\ activado\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aha\\ abilitato\\ All\\ Invite§r",
+ "R(?<p0>.+)§r§a启用了All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§a啟用了\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aativou\\ a\\ opção\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aвключил\\ All\\ Invite§r",
+ "R(?<p0>.+)§r§a\\ 님이\\ All\\ Invite§r§a을\\(를\\)\\ 활성화했습니다§r",
+ "R(?<p0>.+)\\ §r§awłącza\\ All\\ Invite§r",
+ "R(?<p0>.+)§r§a\\ が\\ All\\ Invite\\ を有効にしました§r",
+ "R(?<p0>.+)\\ §r§aenabled\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aaktiverte\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aativou\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aaktiverade\\ All\\ Invite§r",
+ "R(?<p0>.+)§r§a,\\ All\\ Invite\\ ayarını\\ aktifleştirdi§r",
+ "R(?<p0>.+)\\ §r§aaktiverede\\ All\\ Invite§r",
+ "R§aHráč\\ §r(?<p0>.+)\\ §r§apovolil\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aasetti\\ vaihtoehdon\\ All\\ Invite\\ päälle\\.§r",
+ "R§aΟ\\ §r(?<p0>.+)\\ §r§aενεργοποίησε\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aувімкнув\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§aa\\ activat\\ All\\ Invite§r",
+ "R(?<p0>.+)\\ §r§abekapcsolta\\ ezt:\\ All\\ Invite§r"
+ ],
+ "all_invite_off": [
+ "R(?<p0>.+)\\ §r§cdisabled\\ All\\ Invite§r",
+ "=§cYou are not allowed to invite players.§r",
+ "R(?<p0>.+)\\ §r§chat\\ All\\ Invite\\ deaktiviert§r",
+ "=§cDu bist nicht berechtigt andere Spieler in die Party einzuladen.§r",
+ "R(?<p0>.+)\\ §r§ca\\ désactivé\\ All\\ Invite§r",
+ "=§cVous n'êtes pas autorisé à inviter des joueurs.§r",
+ "R(?<p0>.+)\\ §r§cheeft\\ All\\ Invite\\ §r§cuitgeschakeld§r",
+ "=§cJe bent niet toegestaan om spelers uit te nodigen.§r",
+ "R(?<p0>.+)\\ §r§cha\\ desactivado\\ All\\ Invite§r",
+ "=§cNo tienes permitido invitar jugadores.§r",
+ "R(?<p0>.+)\\ §r§cha\\ disabilitato\\ All\\ Invite§r",
+ "=§cNon sei autorizzato ad invitare giocatori.§r",
+ "R(?<p0>.+)\\ §r§c禁用了All\\ Invite§r",
+ "=§c你无权邀请其他玩家。§r",
+ "R(?<p0>.+)\\ §r§c停用了\\ All\\ Invite§r",
+ "=§c你沒有邀請其他玩家的權限。§r",
+ "R(?<p0>.+)\\ §r§cdesativou\\ a\\ opção\\ All\\ Invite§r",
+ "=§cVocê não possui permissão para convidar jogadores.§r",
+ "R(?<p0>.+)\\ §r§cотключил\\ All\\ Invite§r",
+ "=§cУ вас нет прав на приглашение игроков.§r",
+ "R(?<p0>.+)§r§c이\\(가\\)\\ All\\ Invite을\\(를\\)\\ 비활성화했습니다§r",
+ "=§c플레이어를 초대할 수 없습니다.§r",
+ "R(?<p0>.+)\\ §r§cwyłącza\\ All\\ Invite§r",
+ "=§cNie masz pozwolenia, aby zapraszać graczy.§r",
+ "R(?<p0>.+)\\ §r§cが\\ All\\ Invite\\ を無効化しました§r",
+ "=§cプレイヤーを招待する権限がありません。§r",
+ "R(?<p0>.+)\\ §r§cdisabled\\ All\\ Invite§r",
+ "=§cYe nah be allowed t' invite pirates.§r",
+ "R(?<p0>.+)\\ §r§cdeaktiverte\\ All\\ Invite§r",
+ "=§cDu har ikke lov til å invitere spillere.§r",
+ "R(?<p0>.+)\\ §r§cdesativou\\ All\\ Invite§r",
+ "=§cNão tens permissão para convidar jogadores.§r",
+ "R(?<p0>.+)\\ §r§cinaktiverade\\ All\\ Invite§r",
+ "=§cDu har inte tillåtelse att bjuda in spelare.§r",
+ "R(?<p0>.+)\\ All\\ Invite\\ §r§cayarını\\ devre\\ dışı\\ bıraktı§r",
+ "=§cOyuncu davet etme izniniz yok.§r",
+ "R(?<p0>.+)\\ §r§cdeaktiverede\\ All\\ Invite§r",
+ "=§cDu har ikke tilladelse til at invitere spillere.§r",
+ "R§cHráč\\ §r(?<p0>.+)\\ §r§czakázal\\ All\\ Invite§r",
+ "=§cNemáš povolení zvát hráče.§r",
+ "R(?<p0>.+)\\ §r§cotti\\ pois\\ päältä\\ asetuksen\\ All\\ Invite§r",
+ "=§cEt voi kutsua pelaajia.§r",
+ "R§cΟ\\ §r(?<p0>.+)\\ §r§cαπενεργοποίησε\\ All\\ Invite§r",
+ "=§cΔεν επιτρέπεται να προσκαλέσεις παίκτες.§r",
+ "R(?<p0>.+)\\ §r§cвимкнув\\ All\\ Invite§r",
+ "=§cУ вас немає прав на запрошення гравців.§r",
+ "R(?<p0>.+)\\ §r§ca\\ dezactivat\\ All\\ Invite§r",
+ "=§cNu ai permisiunea de a invita jucători în party.§r",
+ "R(?<p0>.+)\\ §r§ckikapcsolta\\ ezt\\ All\\ Invite§r",
+ "=§cTe nem hívhatsz meg játékosokat.§r"
+ ],
+ "party_join": [
+ "R(?<p1>.+)\\ §r§ejoined\\ the\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eist\\ der\\ Party\\ beigetreten\\.§r",
+ "R(?<p1>.+)\\ §r§ea\\ rejoint\\ la\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§ejoined\\ the\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§ese\\ unió\\ a\\ la\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eè\\ entrato\\ nel\\ party\\.§r",
+ "R(?<p1>.+)§r§e加入了组队。§r",
+ "R(?<p1>.+)\\ §r§e加入了組隊。§r",
+ "R(?<p1>.+)\\ §r§eentrou\\ na\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eприсоединился\\ к\\ компании\\.§r",
+ "R(?<p1>.+)§r§e\\ 님이\\ Party에\\ 참여했습니다\\.§r",
+ "R(?<p1>.+)\\ §r§edołącza\\ do\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§ejoined\\ the\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eboarded\\ th'\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eble\\ med\\ i\\ partyet\\.§r",
+ "R(?<p1>.+)\\ §r§eentrou\\ na\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§egick\\ med\\ i\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§epartiye\\ katıldı\\.§r",
+ "R(?<p1>.+)\\ §r§etilsluttede\\ sig\\ partyet\\.§r",
+ "R§eHráč\\ §r(?<p1>.+)\\ §r§ese\\ připojil\\ do\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eliittyi\\ partyyn\\.§r",
+ "R§eΟ\\ §r(?<p1>.+)\\ §r§eμπήκε\\ στο\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eприєднався\\ до\\ групи\\.§r",
+ "R(?<p1>.+)\\ §r§es\\-a\\ alăturat\\ party\\-ului\\.§r",
+ "R(?<p1>.+)\\ §r§ecsatlakozott\\ a\\ partyhoz\\.§r"
+ ],
+ "party_leave": [
+ "R(?<p1>.+)\\ §r§ehas\\ left\\ the\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§ehas\\ been\\ removed\\ from\\ the\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§ehat\\ die\\ Party\\ verlassen\\.§r",
+ "R(?<p2>.+)\\ §r§ewurde\\ aus\\ der\\ Party\\ entfernt\\.§r",
+ "R(?<p1>.+)\\ §r§ea\\ quitté\\ la\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§ea\\ été\\ retiré\\ de\\ la\\ party\\.§r",
+ "=§cThe party was disbanded because all invites expired and the party was empty.§r",
+ "R(?<p2>.+)\\ §r§eis\\ uit\\ de\\ party\\ verwijderd\\.§r",
+ "R(?<p1>.+)\\ §r§eabandonó\\ la\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§eha\\ sido\\ expulsado\\ de\\ la\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eha\\ lasciato\\ il\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§eè\\ stato\\ rimosso\\ dal\\ party\\.§r",
+ "=§c因组队中没有成员, 且所有邀请均已过期, 组队已被解散。§r",
+ "R(?<p2>.+)§r§e已被移出组队。§r",
+ "R(?<p1>.+)\\ §r§e離開了組隊。§r",
+ "R(?<p2>.+)\\ §r§e已被移出組隊。§r",
+ "R(?<p1>.+)\\ §r§esaiu\\ da\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§efoi\\ removido\\ da\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eпокинул\\ компанию\\.§r",
+ "R(?<p2>.+)\\ §r§eбыл\\ выгнан\\ из\\ компании\\.§r",
+ "R(?<p1>.+)§r§e\\ 님이\\ Party에서\\ 나갔습니다\\.§r",
+ "R(?<p2>.+)§r§e\\ 님이\\ Party에서\\ 추방되었습니다\\.§r",
+ "R(?<p1>.+)\\ §r§eopuszcza\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§ezostał\\(a\\)\\ usunięty\\(\\-a\\)\\ z\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eが\\ Party\\ から退出しました。§r",
+ "R(?<p2>.+)\\ §r§eが\\ Party\\ から削除されました。§r",
+ "R(?<p1>.+)\\ §r§eabandoned\\ ship\\.§r",
+ "R(?<p2>.+)\\ §r§ebe\\ kicked\\ out\\ from\\ th'\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§eforlot\\ partyet\\.§r",
+ "R(?<p2>.+)\\ §r§ehar\\ blitt\\ fjernet\\ fra\\ partyet\\.§r",
+ "R(?<p1>.+)\\ §r§esaiu\\ da\\ party\\.§r",
+ "R(?<p2>.+)\\ §r§efoi\\ removido\\ da\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§elämnade\\ partyt\\.§r",
+ "R(?<p2>.+)\\ §r§ehar\\ tagits\\ bort\\ från\\ partyt\\.§r",
+ "R(?<p1>.+)§r§epartiden\\ ayrıldı\\.§r",
+ "R(?<p2>.+)§r§epartiden\\ çıkarıldı\\.§r",
+ "R(?<p1>.+)\\ §r§eforlod\\ partyet\\.§r",
+ "R(?<p2>.+)\\ §r§eer\\ blevet\\ fjernet\\ fra\\ partyet\\.§r",
+ "R§eHráč\\ §r(?<p1>.+)\\ §r§eopustil\\ party\\.§r",
+ "R§eHráč\\ §r(?<p2>.+)\\ §r§ebyl\\ vyhozen\\ z\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§epoistui\\ partysta\\.§r",
+ "R(?<p2>.+)\\ §r§epoistettiin\\ partysta§r",
+ "=§cΤο party διαλύθηκε επειδή όλες οι προσκλήσεις έληξαν και το party ήταν άδειο.§r",
+ "R§eΟ\\ §r(?<p2>.+)\\ §r§eέχει\\ αφαιρεθεί\\ από\\ το\\ party\\.§r",
+ "=§cThe party was disbanded because all invites expired and the party was empty.§r",
+ "R(?<p2>.+)\\ §r§eбув\\ вигнаний\\ з\\ групи\\.§r",
+ "R(?<p1>.+)\\ §r§ea\\ părăsit\\ party\\-ul\\.§r",
+ "R(?<p2>.+)\\ §r§ea\\ fost\\ înlăturat\\(ă\\)\\ din\\ party\\.§r",
+ "R(?<p1>.+)\\ §r§ekilépett\\ a\\ partyból\\.§r",
+ "R(?<p2>.+)\\ §r§eki\\ lett\\ rúgva\\ a\\ partyból\\.§r"
+ ],
+ "invited": [
+ "R(?<p0>.+)\\ §r§einvited\\ §r(?<p1>.+)\\ §r§eto\\ the\\ party!\\ They\\ have\\ §r§c60\\ §r§eseconds\\ to\\ accept\\.§r",
+ "R(?<p0>.+)\\ §r§ehat\\ §r(?<p1>.+)\\ §r§ein\\ die\\ Party\\ eingeladen!\\ §r\\k<p1>§r§e\\ hat\\ §r§c60\\ §r§eSekunden,\\ um\\ zu\\ akzeptieren\\.§r",
+ "R(?<p0>.+)\\ §r§ea\\ invité\\ §r(?<p1>.+)\\ §r§edans\\ la\\ party!\\ Cette\\ personne\\ a\\ §r§c60\\ §r§esecondes\\ pour\\ accepter\\.§r",
+ "R(?<p0>.+)\\ §r§eheeft\\ §r(?<p1>.+)\\ §r§euitgenodigd\\ voor\\ de\\ party!\\ Deze\\ speler\\ heeft\\ §r§c60\\ §r§eseconden\\ om\\ te\\ accepteren\\.§r",
+ "R§e¡§r(?<p0>.+)\\ §r§einvitó\\ a\\ §r(?<p1>.+)\\ §r§ea\\ la\\ party!\\ Tiene\\ §r§c60\\ §r§esegundos\\ para\\ aceptar\\.§r",
+ "R(?<p0>.+)\\ §r§eha\\ invitato\\ §r(?<p1>.+)\\ §r§enel\\ party!\\ Ha\\ §r§c60\\ §r§esecondi\\ per\\ accettare\\.§r",
+ "R(?<p0>.+)§r§e已邀请§r(?<p1>.+)§r§e到组队中!他们有§r§c60§r§e秒时间接受邀请。§r",
+ "R(?<p0>.+)§r§e\\ 邀請了\\ §r(?<p1>.+)§r§e\\ 到組隊裡!他們有\\ §r§c60§r§e\\ 秒的時間答覆。§r",
+ "R(?<p0>.+)\\ §r§econvidou\\ §r(?<p1>.+)\\ §r§epara\\ entrar\\ na\\ party!\\ Este\\ convite\\ expira\\ em\\ §r§c60\\ §r§esegundos\\.§r",
+ "R(?<p0>.+)\\ §r§eпригласил\\ §r(?<p1>.+)\\ §r§eв\\ компанию!\\ У\\ него\\ есть\\ §r§c60\\ §r§eсекунд,\\ чтобы\\ принять\\ приглашение\\.§r",
+ "R(?<p0>.+)§r§e\\ 님이\\ §r(?<p1>.+)§r§e\\ 님을\\ Party로\\ 초대했습니다!\\ §r§c60§r§e초\\ 내로\\ 수락하면\\ Party에\\ 참가합니다\\.§r",
+ "R(?<p0>.+)\\ §r§ezaprasza\\ §r(?<p1>.+)\\ §r§e\\ do\\ party!\\ Ma\\ §r§c60\\ §r§esekund\\ na\\ przyjęcie\\.§r",
+ "R(?<p0>.+)\\ §r§eが\\ §r(?<p1>.+)\\ §r§eを\\ Party\\ に招待しました!\\ 承認の有効時間は\\ §r§c60\\ §r§e秒です。§r",
+ "R(?<p0>.+)\\ §r§einvited\\ §r(?<p1>.+)\\ §r§et'\\ board\\ th'\\ party!\\ They\\ 'ave\\ §r§c60\\ §r§eseconds\\ t'\\ accept\\.§r",
+ "R(?<p0>.+)\\ §r§einviterte\\ §r(?<p1>.+)\\ §r§etil\\ partyet!\\ De\\ har\\ §r§c60\\ §r§esekunder\\ på\\ å\\ akseptere\\.§r",
+ "R(?<p0>.+)\\ §r§econvidou\\ §r(?<p1>.+)\\ §r§epara\\ a\\ party!\\ Ele\\ tem\\ §r§c60\\ §r§esegundos\\ para\\ aceitar\\.§r",
+ "R(?<p0>.+)\\ §r§ebjöd\\ in\\ §r(?<p1>.+)\\ §r§etill\\ partyt!\\ Hen\\ har\\ §r§c60\\ §r§esekunder\\ att\\ acceptera\\.§r",
+ "R(?<p0>.+)§r§e,\\ §r(?<p1>.+)§r§e\\ kişisini\\ partiye\\ davet\\ etti!\\ Kabul\\ etmeleri\\ için\\ §r§c60\\ §r§esaniyeleri\\ var\\.§r",
+ "R(?<p0>.+)\\ §r§einviterede\\ §r(?<p1>.+)\\ §r§etil\\ partyet!\\ De\\ har\\ §r§c60\\ §r§esekunder\\ til\\ at\\ acceptere\\.§r",
+ "R§eHráč\\ §r(?<p0>.+)\\ §r§epozval\\ hráče\\ §r(?<p1>.+)\\ §r§edo\\ party!\\ Nyní\\ má\\ §r§c60\\ §r§esekund\\ na\\ přijetí\\.§r",
+ "R(?<p0>.+)\\ §r§ekutsui\\ pelaajan\\ §r(?<p1>.+)\\ §r§epartyyn!\\ Hänellä\\ on\\ §r§c60\\ §r§esekuntia\\ aikaa\\ hyväksyä\\.§r",
+ "R§eΟ\\ §r(?<p0>.+)\\ §r§eπροσκάλεσε\\ τον\\ §r(?<p1>.+)\\ §r§eστο\\ party!\\ Έχει\\ §r§c60\\ §r§eδευτερόλεπτα\\ να\\ αποδεχτεί\\.§r",
+ "R(?<p0>.+)\\ §r§einvited\\ §r(?<p1>.+)\\ §r§eto\\ the\\ party!\\ They\\ have\\ §r§c60\\ §r§eseconds\\ to\\ accept\\.§r",
+ "R(?<p0>.+)\\ §r§ea\\ invitat\\ pe\\ §r(?<p1>.+)\\ §r§eîn\\ party!\\ Ei\\ au\\ §r§c60\\ §r§ede\\ secunde\\ să\\ accepte\\.§r",
+ "R(?<p0>.+)\\ §r§emeghívta\\ §r(?<p1>.+)§r§e\\-t\\ a\\ partyba!\\ §r§c60§r§e\\ másodperce\\ van\\ elfogadni\\.§r"
+ ],
+ "invite_perm": [
+ "=§cCouldn't find a player with that name!§r",
+ "=§cYou cannot invite that player since they're not online.§r",
+ "=§cKeinen Spieler mit diesem Namen gefunden!§r",
+ "=§cDu kannst diesen Spieler nicht einladen, da er nicht online ist.§r",
+ "=§cImpossible de trouver un joueur avec ce nom!§r",
+ "=§cVous ne pouvez pas inviter ce joueur puisqu'il n'est pas en ligne.§r",
+ "=§cKon geen speler vinden met die naam!§r",
+ "=§cJe kunt die speler niet uitnodigen, omdat deze niet online is.§r",
+ "=§c¡No se pudo encontrar un jugador con ese nombre!§r",
+ "=§cNo puedes invitar a ese jugador porque no está en línea.§r",
+ "=§cNon è stato possibile trovare un giocatore con quel nome!§r",
+ "=§cNon puoi invitare quel giocatore perché non è online.§r",
+ "=§c无法找到叫这个名字的玩家!§r",
+ "=§c你不能邀请离线的玩家。§r",
+ "=§c找不到叫做該名稱的玩家!§r",
+ "=§c你不能邀請不在線上的玩家。§r",
+ "=§cNão foi possível encontrar este jogador!§r",
+ "=§cVocê não pode convidar um jogador que não está online.§r",
+ "=§cНе получается найти игрока с этим именем!§r",
+ "=§cВы не можете пригласить этого