Skip to content

Wiki ky kg

pjscruggs edited this page Nov 11, 2026 · 2 revisions

Raknetify2 · Кыргызча (Кыргызстан)

Тил

Тармактык оюн

Minecraft кардарлары жана серверлери үчүн RakNet аркылуу тармактык байланыш.

Жүктөө · GitHub

Minecraft Raknetify2 Кардар / Сервер
Fabric mods/raknetify2-fabric-*.jar Кардар / Сервер
Forge mods/raknetify2-forge-*.jar Кардар / Сервер
NeoForge mods/raknetify2-neoforge-*.jar Кардар / Сервер
Spigot / Paper plugins/raknetify2-spigot-*.jar Сервер
Velocity plugins/raknetify2-velocity-*.jar Velocity
BungeeCord plugins/raknetify2-bungee-*.jar BungeeCord

Сервер кошуу

  1. Тармактык оюн

  2. Сервер кошуу

  3. Сервер дареги

    Сервер дареги
    RakNet · UDP raknet;play.example.com:25565
    TCP play.example.com:25565
  4. Дайын

  5. Серверге кошулуу

F3 · Raknetify2

F3
RakNet · UDP Активдүү · MTU 1400
TCP Активдүү эмес

Velocity / BungeeCord

  1. Кардар · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
  2. Velocity / BungeeCord → TCP → Сервер
Порт номуру · UDP Java
Fabric / Forge / NeoForge 1–65534 -Draknetify.fabric.portOverride=25570
Spigot / Paper ≥ 0.1.0-beta.1.431 1–65535 -Draknetify.spigot.portOverride=25570
Velocity 1–65534 -Draknetify.velocity.portOverride=25570
BungeeCord 1–65534 -Draknetify.bungee.portOverride=25570

Убакыт бүттү

Сервер дареги UDP
raknet;play.example.com:25580 play.example.com:25580 → NAT → 192.0.2.10:25570
Сервер · 192.0.2.10 25570/udp

config/raknetify2-compatibility.json

Сервер / Velocity / BungeeCord

JSON
① ② ③ {"mode":"ordered"}
① ∥ ② ∥ ③ {"mode":"multichannel"}

Simple Voice Chat

Сервер Raknetify2 · UDP 25565 Simple Voice Chat
Fabric / Forge / NeoForge config/raknetify2-voicechat.json · {"enabled":true} config/voicechat/voicechat-server.properties · port=-1
Spigot / Paper config/raknetify2-voicechat.json · {"enabled":true} plugins/voicechat/voicechat-server.properties · port=-1

Simple Voice Chat · Velocity / BungeeCord

PROXY protocol v2 · UDP

Сервер дареги trustedProxies RakNet
192.0.2.10 · PROXY v2 / UDP ["192.0.2.10"] ✓
192.0.2.11 · PROXY v2 / UDP ["192.0.2.10"] ✗
Кардар → RakNet / UDP ["192.0.2.10"] ✗

config/raknetify2-proxy-protocol.json

{"trustedProxies":["192.0.2.10"]}

Minecraft ≥ 1.20.5 · /transfer

  1. Сервер A · Fabric / Forge / NeoForge · config/raknetify2-transfers.json

    {"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]}
  2. Сервер B · play.example.com · server.properties → accepts-transfers=true

  3. Сервер A · /transfer play.example.com 25565 Alex → Кардар (Alex) → RakNet · play.example.com:25570

PacketOrdering

Minecraft
ui Орнотуулар
entity Сүлдөр
world_interaction Инвентарь
effects Бөлүкчөлөр
chunk Блоктор

PacketOrdering.java

Туура келбеген версия!

Ката үчүн

Башкы бет

Raknetify2

Raknetify2 Minecraft оюнчуларын UDP үстүнөн иштеген RakNet аркылуу туташтырат. Пакеттер өз-өзүнчө иреттелген каналдарга бөлүнөт. Бир каналда пакет жоголсо, башка каналдагы маалымат өтө берет. Ошондуктан жоголгон маалымат кайра жөнөтүлүп же дүйнөнүн бөлүктөрү жүктөлүп жатканда да оюн оюнчунун аракетине тез жооп бере алат.

Raknetify2 – ishland түзгөн Raknetify долбоорунун өзүнчө өнүктүрүлүп жаткан бутагы. Ал Minecraft оюнуна чыккан жаңы версияларды колдойт. Долбоор тармак аркылуу маалымат берүү кодун, ар кайсы платформа менен иштешүүнү жана шайкештик сыноолорун да жүргүзөт.

Ишти баштоо

  1. Minecraft версиясы менен моддордун шайкештигин текшериңиз.
  2. Керектүү файлды тандап, жүктөп алып орнотуңуз.
  3. Мисалы, raknet;play.example.com дареги аркылуу туташыңыз.

Сервер администратору үчүн

Моддун автору пакеттерди иреттөө интерфейси аркылуу моддун маалыматы кайсы Minecraft пакеттери менен бир иретте келүүгө тийиш экенин көрсөтө алат.

Долбоордун шилтемелери

Raknetify2 MIT лицензиясы менен тарайт. Баштапкы авторлордун автордук укук жөнүндөгү билдирүүлөрү сакталган. Тармак кодунун негизинде Raknetify жана netty-raknet жатат.

Орнотуу

GitHub Releases барагынан бир чыгарылышты жүктөп алыңыз. Орнотордон мурда ал Minecraft оюну менен мод жүктөгүчтүн кайсы версияларын талап кыларын текшериңиз.

Кайда орнотулат Файл Папка
Fabric кардары же сервери raknetify2-fabric-*.jar mods
Forge кардары же сервери raknetify2-forge-*.jar mods
NeoForge кардары же сервери raknetify2-neoforge-*.jar mods
Spigot же Paper сервери raknetify2-spigot-*.jar plugins
Velocity проксиси raknetify2-velocity-*.jar plugins
BungeeCord проксиси raknetify2-bungee-*.jar plugins

JAR файлын алмаштырардан мурда кардарды жабыңыз же серверди токтотуңуз. Жаңы файлды кошордон мурда ошол эле орнотмодон баштапкы Raknetify JAR файлын жана эски Raknetify2 JAR файлдарынын баарын алып салыңыз.

Кардардын папкалары сиз иштеткен Minecraft нускасына же моддор жыйнагына таандык. Сервердин же проксинин папкалары ал орнотулган жерде болот. Жүктөгүч керектүү папканы түзө элек болсо, өзүңүз түзүңүз.

Серверге түз туташуу

  1. Жүктөгүчүңүзгө ылайыктуу кардар модун орнотуңуз.
  2. Серверге ага туура келген сервер модун же шайкеш серверге Spigot/Paper плагинин орнотуңуз.
  3. Серверге UDP аркылуу туташууга уруксат берүү үчүн брандмауэр менен роутерди жөндөө боюнча нускаманы аткарыңыз.
  4. Кардар менен серверди кайра иштетиңиз.
  5. raknet;play.example.com же raknet;play.example.com:25565 сыяктуу сервер дарегин кошуңуз.

Башында raknet; жок дарек TCP аркылуу туташат.

Кардар модун гана орнотуу алыскы серверге RakNet колдоосун кошпойт. Сервердин администратору RakNet туташуусун кабыл алуучу портту ачышы керек. Башка бирөөнүн серверине кирген оюнчуга адатта өз роутеринде кирүүчү портту багыттоонун кереги жок.

Velocity жана BungeeCord

Проксиге ылайыктуу плагинди, кардарга модду орнотуңуз. Velocity жана BungeeCord бөлүмүндө угулуучу порттор, ички серверлерге маалымат берүү, кирүүнү чектөө жана оюнчулардын дареги түшүндүрүлөт.

UDP үчүн өзүнчө угуу порту

Minecraft серверине түз туташуу үчүн төмөнкү Java параметрлеринен ылайыктуусун кошуңуз. Прокси колдонсоңуз, Velocity менен BungeeCord проксилеринин угуу жөндөөлөрүн караңыз.

Платформа Java параметри Уруксат берилген порттор
Fabric, Forge же NeoForge сервери -Draknetify.fabric.portOverride=25570 1 менен 65534 аралыгы
Spigot же Paper сервери -Draknetify.spigot.portOverride=25570 1 менен 65535 аралыгы

Forge менен NeoForge бир эле угуу кодун колдонгондуктан, параметрдин атында fabric да бар. 25570 ордуна керектүү UDP портун жазыңыз.

Spigot / Paper ≥ 0.1.0-beta.1.431

Параметрди Java буйругундагы -jar алдында же хостингдеги JVM параметрлери талаасына кошуңуз. Серверди кайра иштетип, тандалган портко UDP трафигин өткөрүңүз. Тышкы порт дагы 25570 болсо, raknet;play.example.com:25570 аркылуу туташыңыз. Роутер портту алмаштырса, кардарда тышкы UDP портун көрсөтүңүз. TCP порту өзгөрбөйт.

Spigot/Paper платформасында UDP кызматы Minecraft TCP кызматы уккан жергиликтүү даректи колдонот. Параметр жараксыз болсо же UDP порту бош болбосо, RakNet ишке кирбейт. Байланган UDP дареги менен портту ишке кирүү журналынан көрүңүз. TCP портунун номерине кайтуу үчүн параметрди алып салып, серверди кайра иштетиңиз.

Роутер же UDP проксиси башка тышкы UDP портун ачып, трафикти азыркы угуу портуна багыттай алат. Ал үчүн сервердин Java параметрлерин өзгөртүү талап кылынбайт.

Иштеп чыгуу учурундагы жыйнактар

GitHub Actions барагынан ийгиликтүү аяктаган main ишин ачып, анын Artifacts архивин жүктөп алыңыз. Архивди алуу үчүн GitHub каттоо эсеби керек. Архивден JAR тандоодо жогорудагы орнотуу жадыбалын колдонуңуз.

Velocity жана BungeeCord

Velocity менен BungeeCord оюнчулар менен ички Minecraft серверлеринин ортосунда иштейт. Raknetify2 плагинин проксиге жана RakNet аркылуу туташа турган ар бир кардарга орнотуңуз.

Raknetify2 кардары --UDP--> Velocity же BungeeCord --TCP--> ички сервер

Мындай туташууда ички серверлерге Raknetify2 керек эмес. Бирок тармагыңыз талап кылган моддор, плагиндер жана маалыматты багыттоо колдоосу керек. Raknetify2 Minecraft версияларын бири-бирине которбойт жана проксидеги каттоо эсебин текшерүү тартибин өзгөртпөйт.

Прокси плагинин орнотуу

  1. Прокси аркылуу кадимки TCP туташуусу иштей турганын текшериңиз. Каттоо эсебин текшерүүнү жана бир ички серверден экинчисине өтүүнү да сынаңыз.
  2. Проксини токтотуп, ылайыктуу плагинди GitHub Releases барагынан жүктөп алыңыз.
  3. raknetify2-velocity-*-all.jar же raknetify2-bungee-*-all.jar файлын проксинин plugins папкасына салыңыз. Ал жердеги эски Raknetify же Raknetify2 плагинин алып салыңыз.
  4. Орнотуу нускамасы боюнча кардарга ылайыктуу Raknetify2 модун орнотуңуз.
  5. Төмөндөгү угуу жөндөөлөрүн текшерип, проксини кайра иштетиңиз. Журналда RakNet портун ачуу катасы жок экенин караңыз.
  6. Сырттан проксиге UDP аркылуу кирүүгө уруксат бериңиз, ички серверлердин оюн портторуна кирүүнү брандмауэр менен роутердин нускамасына ылайык чектеңиз.

Кардар менен проксиге бири-бири менен шайкеш Raknetify2 чыгарылыштарын орнотуңуз. Башка-башка версияларды колдонуудан мурда шайкештикти текшериңиз.

Velocity

velocity.toml файлындагы bind Velocity Minecraft туташууларын кабыл ала турган дарек менен TCP портун аныктайт. Адатта Raknetify2 UDP үчүн ошол эле номерди колдонот. Ички серверлер [servers] бөлүмүндө көрсөтүлөт. Ал жердеги даректер ички TCP даректери бойдон калсын. Velocity жөндөөлөрүнүн маалымдамасын караңыз.

Өзүнчө UDP портун колдонуу үчүн Velocity ишке киргизүү буйругунда -jar алдында төмөнкү JVM параметрин кошуңуз:

-Draknetify.velocity.portOverride=25570

25570 ордуна тандаган номериңизди жазыңыз. RakNet UDP порту өзгөрөт, Velocity TCP порту менен ички серверлердин даректери ошол бойдон калат. Андан кийин Velocity кызматын кайра иштетиңиз.

Оюнчунун маалыматын өткөрүүнү Velocity тарапта да, ички серверлерде да жөндөңүз. Ички сервер колдосо, заманбап өткөрүү режимин колдонуңуз жана анын жашыруун ачкычын эч кимге бербеңиз. Velocity нускамасынан ички сервериңизге тиешелүү бөлүмдү аткарыңыз. Ички сервердин брандмауэриндеги чектөөлөрдү сактаңыз.

BungeeCord

BungeeCord проксисинин config.yml файлында ар бир listeners жазуусундагы host Minecraft туташуусун кабыл алуучу дарек менен TCP портун көрсөтөт. Адатта Raknetify2 ошол номерге UDP кошот. servers жазуулары ички TCP даректерин көрсөтөт. BungeeCord жөндөөлөрүнүн нускамасын караңыз.

Өзүнчө UDP порту үчүн BungeeCord ишке киргизүү буйругунда -jar алдында төмөнкү JVM параметрин кошуңуз:

-Draknetify.bungee.portOverride=25570

Параметр проксинин бүт процессине тиешелүү. Minecraft бир нече даректи укса, брандмауэр эрежелерин кошордон мурда RakNet чындап кайда туташканын ишке кирүү журналынан караңыз. Параметрди өзгөрткөндөн кийин BungeeCord кызматын кайра иштетиңиз.

Проксиде каттоо эсебин текшерүү күйгүзүлгөн бойдон калсын. Spigot ички серверлери үчүн BungeeCord IP маалыматын өткөрүү нускамасы проксиде ip_forward: true, ички серверде settings.bungeecord: true коюуну көрсөтөт. Маалыматты өткөрүү өзүнчө ички серверге түз кирүүнү тыйбайт. Брандмауэр нускамасы боюнча ички серверге кирүүнү чектеңиз.

Оюнчулар туташа турган даректи тандоо

Эки проксиде тең порт катары 1 менен 65534 ортосундагы номер алынат. Жараксыз маани эске алынбайт. UDP кайсы портту ээлегенин ишке кирүү журналынан текшериңиз. Minecraft угуу портунун номерине кайтуу үчүн параметрди алып салып, кайра иштетиңиз.

Оюнчулар проксинин тышкы хост атын жана UDP портун колдонушат, мисалы raknet;play.example.com:25570. Роутер порт номерин которсо, кардарда тышкы UDP портун жазыңыз. raknet; деп башталбаган даректер проксинин TCP портуна туташа берет.

Query, Geyser жана башка UDP кызматтарына өзүнчө UDP портторун бөлүңүз. TCP портун өзгөртүү UDP сокетинин кагылышын чечпейт.

Үн чаты жана UDP трафигин кошумча багыттоо

Velocity менен BungeeCord платформаларында Simple Voice Chat өзүнүн прокси плагинин жана UDP портун колдонот. Үн чатынын проксисин жөндөө нускамасын аткарыңыз.

Minecraft проксисинин алдында дагы бир UDP проксиси болуп, ал PROXY protocol v2 баштарын жөнөтсө, Raknetify2 модун UDP трафигин багыттоо жана PROXY протоколу боюнча жөндөңүз. Velocity же BungeeCord кызматын гана орнотсоңуз, бул жөндөө талап кылынбайт.

Туташууну текшерүү

Жергиликтүү тармактын сыртынан Raknetify2 кардары менен сынаңыз. Прокси аркылуу кирип, колдонулуучу ички серверлердин ортосунда которулуп көрүңүз. Оюнчунун кимдиги жана уруксаттары туура сакталышы керек.

  • Прокси аркылуу TCP иштеп, RakNet жооп күтүп бүтсө, проксинин UDP угуу портун, тышкы портту, IPv4 жана IPv6 жолдорун, брандмауэр эрежелерин текшериңиз.
  • Прокси ички серверге туташканда эки ыкма тең иштебесе, ошол сервердин TCP дарегин, кирүү эрежелерин жана оюнчунун маалыматын өткөрүү жөндөөлөрүн текшериңиз.
  • Прокси UDP порту бош эмес десе, аны Query, Geyser, үн проксиси же башка процесс ээлеп турганын текшериңиз.

Билдирүүгө бир эле туташуу аракетине тиешелүү проксинин жана ички сервердин журналдарын кошуңуз. Кайсы версияларды көрсөтүү керектигин көйгөйдүн себебин табуу бөлүмүнөн караңыз.

Брандмауэр менен роутерди жөндөө

Бул нускама сервер администраторуна арналган. RakNet туташуусун кабыл алуучу серверге же проксиге чейин UDP жолу иштеши керек. Демейкиде Minecraft уккан TCP портунун номери колдонулат.

Бир жергиликтүү тармактагы оюнчулар сервердин жергиликтүү дарегин колдонушат. Сервер жайгашкан компьютердин брандмауэринен UDP өткөрүңүз. Интернеттен келген трафик роутердин IPv4 NAT кызматы аркылуу өтүшү керек болгондо портту багыттоо талап кылынат.

Бара турган дарек менен портту тандоо

Түз сервер

Тышкы UDP трафигин Minecraft сервери жана Raknetify2 иштеген компьютерге багыттаңыз. Максаттуу порт – ошол сервердин RakNet UDP угуу порту. Аны компьютердин брандмауэринен ачыңыз. Кадимки Minecraft туташуулары үчүн мурунку TCP жолун сактаңыз.

Мисалы, Raknetify2 UDP 25570 портун укса, тышкы UDP портун сервердин жергиликтүү дарегиндеги 25570 портуна багыттаңыз. Сервердин TCP порту 25565 бойдон кала алат. Башка UDP портун тандоо үчүн түз сервердин угуу жөндөөлөрүн караңыз.

Velocity же BungeeCord

Тышкы UDP трафигин Raknetify2 плагини бар Velocity же BungeeCord иштеген компьютерге багыттаңыз. Проксинин RakNet UDP угуу портун максаттуу порт кылыңыз. Кадимки Minecraft кардарлары үчүн тышкы TCP жолун сактаңыз.

Прокси ички Minecraft серверлерине TCP аркылуу туташат. Проксиге Raknetify2 кошкондо ички серверлердин UDP оюн портторун оюнчуларга ачуу талап кылынбайт.

Туташуу Уруксат берилүүчү трафик
Оюнчулардан проксиге Тышкы UDP – RakNet угуу портуна, ошондой эле мурунку тышкы TCP порту
Проксиден ички серверлерге Ички Minecraft серверлеринин TCP порттору. Аларга белгиленген прокси компьютерлер гана жете алсын
Оюнчулардан ички оюн портторуна түз кирүү Бөгөттөлгөн бойдон калсын, IPv6 аркылуу да

Прокси менен ички серверлер сиз башкарган бир атайын компьютерде түз иштесе, ички серверлер loopback даректерин уга алат. Проксини аларга ошол даректер аркылуу туташтыргыдай жөндөңүз. Өзүнчө компьютерлерде ички TCP портторуна прокси компьютерлерден гана кирүүгө уруксат бериңиз. Бул үчүн брандмауэр же обочолонгон жеке тармак колдонуңуз. Контейнерлер менен башкарылуучу хостингде да тармактын түзүлүшүнө ылайык ушундай чектөө керек. Velocity ички серверлеринин коопсуздугу жана BungeeCord брандмауэри боюнча нускамаларды караңыз.

Оюнчунун маалыматын өткөрүү менен брандмауэр чектөөлөрү бирге иштейт. Ички серверге түз кирген адам проксинин кирүү текшерүүсүн айланып өтүшү мүмкүн. Плагинди орнотуу, маалыматты өткөрүү жана UDP портун өзгөртүү үчүн Velocity жана BungeeCord бөлүмүн караңыз.

Тышкы жана жергиликтүү порт номерлери

Роутер порт номерин которсо, тышкы порт менен угуу порту ар башка болот:

Жөндөө Колдонулуучу порт
Кардарда жазылуучу сервер дареги Тышкы UDP порту
Роутердин багыттоо эрежесиндеги тышкы порт Тышкы UDP порту
Роутердин багыттоо эрежесиндеги ички порт RakNet уккан UDP порту
Компьютердин брандмауэриндеги жергиликтүү порт RakNet уккан UDP порту

IPv4 портун багыттоо

Сервер IPv4 роутеринин артында болсо:

  1. RakNet туташууларын кабыл алган компьютердин жергиликтүү IPv4 дарегин табыңыз. Багыттоо дайыма ошол компьютерге барышы үчүн DHCP аркылуу даректи бекитиңиз же ылайыктуу туруктуу дарек бериңиз.
  2. Оюнчулар колдоно турган тышкы порт үчүн UDP багыттоо эрежесин кошуңуз.
  3. Эрежедеги максат катары ошол компьютердин жергиликтүү дарегин жана RakNet уккан UDP портун көрсөтүңүз.
  4. Сервердин брандмауэринен угуу портуна кирүүчү UDP трафигин өткөрүңүз.

Мисалы, сервер UDP 25565 портун укса, эрежеде тышкы порт 25565, максаттуу дарек 192.168.1.100 жана максаттуу порт 25565 боло алат. Мисалдагы даректи сервериңиздин чыныгы жергиликтүү дареги менен алмаштырыңыз.

Кадимки Minecraft туташуулары үчүн азыркы TCP эрежесин сактаңыз. TCP эрежеси жалгыз өзү UDP трафигин өткөрбөйт.

Багыттоо дагы эле иштебесе

Трафик сиздин роутерге жеткенче башка роутер же интернет провайдери NAT колдонобу, текшериңиз. Эки роутерди тең өзүңүз башкарсаңыз, багыттоону экөөнө тең коюңуз. Провайдер CGNAT колдонсо, тышкы IPv4 дарегин сураңыз же кирүүчү UDP трафигин колдогон хостинг же туннель колдонуңуз. Сиздин роутердин эрежеси провайдердин NAT жөндөөлөрүн өзгөртө албайт. Тышкы WAN дарегине байланыштуу талапты TP-Link нускамасынан караңыз.

IPv6 брандмауэр эрежелери

Тандалган UDP портуна роутердин IPv6 брандмауэринен да, сервер жайгашкан компьютердин брандмауэринен да уруксат бериңиз. Максат катары RakNet туташууларын кабыл алган компьютердин IPv6 дарегин көрсөтүңүз.

Хост атынын IPv6 дареги ошол компьютерге алып барарын текшериңиз. Дарек өзгөрсө, DNS жазуусун жана ошол даректи атаган брандмауэр эрежелерин жаңыртыңыз.

Бир хост аты IPv4 жана IPv6 даректерин тең жарыяласа, ар бир дарекке жол иштеши керек. Бир оюнчу туташып, экинчиси туташа албаса, эки топ эрежени тең текшериңиз.

IPv4 багыттоосу порт номерин алмаштырса, оюнчулар киргизген номер менен IPv6 угуу портуна да жетүүгө болорун текшериңиз. IPv4 портунун которулушу IPv6 жолун жөндөбөйт.

Хостинг жана туннелдер

Провайдер же туннель оюнчуларга берилген тышкы даректе UDP колдоого тийиш. Сервердин өз брандмауэринен тышкары провайдер бөлгөн портторду жана тармактык брандмауэр эрежелерин текшериңиз.

Кошумча UDP проксиси кардар даректерин PROXY protocol v2 аркылуу өткөрсө, UDP трафигин багыттоо жана PROXY протоколу бөлүмүн аткарыңыз. Маалыматты кабыл алган UDP портуна ишенимдүү прокси гана жете алсын.

Туташууну текшерүү

Сервердин жергиликтүү тармагынын сыртынан жаңыртылган Raknetify2 кардары менен, мисалы, raknet;play.example.com:25565 дарегине туташыңыз. Даректе тышкы UDP портун көрсөтүңүз.

Жолду чыныгы RakNet туташуусу менен текшериңиз. UDP сканерине жооп келбесе, жыйынтык так эмес. Иштеп турган кызмат тааныбаган текшерүү пакетин таштап коюшу мүмкүн. Бул тууралуу Nmap UDP сканерлөө нускамасында айтылган.

TCP туташуусунун ийгилиги TCP жолун гана ырастайт. RakNet жооп күтүп бүтсө, көйгөйдү издөө нускамасы боюнча угуу дарегин, багыттоонун максатын, UDP портун жана брандмауэр эрежелерин текшериңиз.

Шайкештик

Жүктөп алган конкреттүү чыгарылыштын колдоосун текшериңиз. Иштеп чыгуу бутагында жарыяланган версияга кире элек колдоо болушу мүмкүн.

Minecraft жана Java версиялары

Minecraft жана Java версиялары · English

Raknetify2 көрсөткөн Java версиясы – эң төмөнкү талап. Minecraft же жүктөгүч жаңыраак Java талап кылышы мүмкүн. Үчөөнүн тең талаптарына жооп берген версияны тандаңыз.

Кардар жана сервер версиялары

Мүмкүн болсо, кардарга жана аны кабыл алуучу серверге же проксиге бир эле Raknetify2 чыгарылышын орнотуңуз. Ар башка версияларды аралаштыруудан мурда чыгарылыштын эскертмелерин окуңуз. Шифрленген RakNet туташуусу үчүн эки тарап тең маалыматтын аныктыгын текшерген шифрлөө протоколун колдошу керек. Баштапкы Raknetify жана бул протокол киргизилгенге чейинки Raknetify2 версиялары жаңыртылган тарап менен мындай шифрленген туташуу түзө албайт.

Raknetify2 Minecraft оюнунун азыркы протоколундагы маалыматты ташыйт. Башка-башка Minecraft версияларын туташтыруу үчүн шайкеш протокол которгуч керек.

Башка моддор

Башка моддор · English

Чоң мод жыйнагында көйгөй чыкса, көйгөйдү издөө нускамасын аткарыңыз. Билдирүүгө бардык моддордун так версияларын кошуңуз.

Иреттелген режим

Иреттелген режим

Демейки режимде бир канал жоголгон маалыматты күтсө да, көз карандысыз каналдар иштей берет. Иреттелген режимде Minecraft пакеттеринин баары бир каналга жайгашат. Бир пакет жоголсо, ошол багыттагы кийинки пакеттердин баары ал кайра жөнөтүлгөнчө күтөт. Бул айрым античит программалары күткөн иретти сактайт. Күтүү учурунда башка оюн трафиги да токтоп турат.

Иреттелген режимди күйгүзүү

  1. Иреттелген режимди колдогон Raknetify2 версиясын RakNet туташуусун кабыл алган серверге же проксиге жана ар бир RakNet кардарына орнотуңуз.

  2. Кабыл алуучу сервердин же проксинин жумушчу папкасына карата config/raknetify2-compatibility.json файлын түзүңүз. config папкасы жок болсо, түзүп алыңыз.

  3. Төмөнкүнү кошуңуз:

    {"mode": "ordered"}
  4. Серверди же проксини кайра иштетиңиз.

Кардарлар сервердин жөндөөсүн автоматтык түрдө кабыл алышат. Оюнчулар жөндөө файлын түзүүгө же RakNet серверинин дарегин алмаштырууга тийиш эмес.

Ар бир багытта Minecraft пакеттеринин баары бир ишенимдүү канал аркылуу ирети менен жеткирилет. Буга топтомдордун чегин белгилеген пакеттер да, дүйнөлөр ортосундагы өтүүлөр да кирет.

Прокси менен колдонуу

Оюнчулар Velocity же BungeeCord аркылуу туташса, античит ички серверде иштесе да, иреттелген режимди проксиде жөндөңүз.

Ички сервер алмашканда да режим сакталат. Иреттелген режимде прокси ички сервердин keepalive суроолоруна өзү жооп бербестен, чыныгы кардарга өткөрөт.

Жөндөөнү текшерүү

Биринчи RakNet туташуусунда консолдо мындай жазуу чыгат:

Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)

Эки тарап режимди ийгиликтүү макулдашса, журналга ordered compatibility negotiated жана андан кийин экинчи тараптын дареги жазылат.

Античит текшерүүлөрүн күйгүзүлгөн абалда калтырып, өз жөндөөлөрүңүздү сынаңыз.

Эски кардарлар

Иреттелген режимди колдобогон RakNet кардары бул режимди талап кылган серверге кире албайт. Ошол кардарда Raknetify2 модун жаңыртыңыз же raknet; префиксин жазбай, сервердин же проксинин кадимки TCP дареги менен портуна туташыңыз.

Көп каналдуу режимге кайтуу

Файлды мындай өзгөртүңүз:

{"mode": "multichannel"}

Андан кийин серверди же проксини кайра иштетиңиз. Файлды өчүрүп, кайра иштетсеңиз да көп каналдуу режим калыбына келет.

Жөндөө каталары

Файлда mode деген бир гана параметр болушу керек. Анын мааниси "ordered" же "multichannel" болот. Баш жана кичине тамгалар айырмаланат.

Жөндөө жараксыз болсо же файл окулбаса, RakNet туташуулары кабыл алынбайт. Файлды оңдоп, процессти кайра иштетиңиз.

Консол мурдагыдай эле multichannel деп көрсөтсө, файл RakNet туташуусун кабыл алган сервердин же проксинин жумушчу папкасында экенин текшерип, ошол процессти кайра иштетиңиз.

Оюнчуну башка серверге автоматтык түрдө өткөрүү

Fabric, Forge жана NeoForge серверлери колдоосу бар кардарды тизмедеги дарекке өткөргөндө RakNet тандай алат. Бул Minecraft оюнуна Java Edition 1.20.5 менен кошулган өткөрүү мүмкүнчүлүгүн колдонот. Ар бир тараптагы Minecraft версиясын жана жүктөгүчтү сиздин Raknetify2 чыгарылышыңыз колдой турганын текшериңиз.

Raknetify2 модун жөнөтүүчү серверге жана кардарга орнотуңуз. Кабыл алуучу даректе шайкеш RakNet угуу порту иштеп, Minecraft аркылуу өткөрүлгөн кардарларды кабыл алууга уруксат берилиши керек.

Бул жөндөө жогорудагы үч мод жүктөгүч жөнөткөн өткөрүү сурамдарына тиешелүү. Spigot/Paper, Velocity жана BungeeCord плагиндери бул файлды окубайт.

Жөнөтүүчү серверди жөндөө

Жөнөтүүчү сервердин папкасында config/raknetify2-transfers.json файлын түзүңүз:

{
  "destinations": [
    {
      "host": "play.example.com",
      "tcpPort": 25565,
      "udpPort": 25570
    }
  ]
}

Мисалдагы хост аты менен портторду кабыл алуучу тараптын маанилерине алмаштырып, жөнөтүүчү серверди кайра иштетиңиз. Башка даректерди да ошол эле массивге кошуңуз.

Талаа Мааниси
host Максаттуу хост аты же IP дареги. Алдында транспорт префикси жана аягында порт болбосун
tcpPort Баштапкы өткөрүү сурамында көрсөтүлгөн максаттуу порт
udpPort Өткөрүлүп жаткан кардар туташа турган тышкы RakNet порту

TCP менен UDP портторунун номери бирдей боло алат. Роутер UDP портун которсо, файлга тышкы номерди жазыңыз. Порттор JSON сандары түрүндө жазылат.

Сурамды кабыл алуучу сервердин кадимки хост аты менен TCP портуна жөнөтүңүз. Raknetify2 кардар автоматтык өткөрүүнү колдой турганын жарыялаган-жарыялабаганын текшерет. Колдогон кардар жана дал келген дарек үчүн файлдагы UDP портун тандайт. Башка кардарларда же тизмеге дал келбеген даректерде баштапкы дарек сакталат.

Салыштырууда сурамдагы хост аты менен TCP порту колдонулат. Аттын чоң-кичине тамгалары, аягындагы DNS чекити жана бир IPv6 дарегинин тең маанилүү жазылыштары бир түргө келтирилет. DNS аркылуу дарек изделбейт. Бир IP дарекке алып барган эки башка хост атына өзүнчө жазуулар керек. Жалпылоочу белгилери бар аттар колдоого алынбайт.

Кабыл алуучу тарапты жөндөө

Кабыл алуучу сервер Minecraft оюнунун server.properties файлын колдонсо, accepts-transfers=true коюп, кайра иштетиңиз. Кабыл алуучу проксинин өзүнчө өткөрүү жөндөөсү болушу мүмкүн. Демейкиде Minecraft түз кирүүгө уруксат берилсе да сырттан өткөрүү сурамын четке кагат.

Кабыл алуучу тарапта RakNet угуу порту, тышкы UDP багыттоосу жана брандмауэр алдын ала жөндөлүшү керек. Жөнөтүүчү сервердин өткөрүү файлы кардарга жөнөтүлө турган даректи тандайт.

Хост аты IPv4 жана IPv6 даректерин тең жарыяласа, кабыл алуучу тарапка чейинки эки жолду тең текшериңиз. Автоматтык өткөрүүнү иликтөөдөн мурда ал жакка кадимки RakNet аркылуу түз туташып көрүңүз.

Кабыл алуучу сервердин кирүү жана оюнчуну кабыл алуу текшерүүлөрүн сактаңыз. Бул жөндөө оюнчуга кирүү укугун бербейт жана сервердин колдонуучуну текшерүү механизмин алмаштырбайт.

Жөндөө каталары жана өчүрүү

Талаалар жетишпесе, белгисиз талаа, жараксыз порт же кайталанган дарек болсо, ишке киргизүүдө ката чыгат. Сервердин журналынан себебин таап, JSON файлын оңдоп, кайра иштетиңиз.

Автоматтык тандоону өчүрүү үчүн жөндөө файлын алып салыңыз же {"destinations": []} деп жазыңыз. Андан кийин жөнөтүүчү серверди кайра иштетиңиз. Өткөрүү сурамдары алгачкы даректерин сактайт.

UDP трафигин багыттоо жана PROXY протоколу

UDP проксиси RakNet трафигин өткөрүп, PROXY protocol v2 аркылуу кардардын баштапкы дарегин сактай алат. Алдыңкы UDP проксиси угуу портуңузга ушундай баш маалыматтарды жөнөткөндө бул функцияны күйгүзүңүз. Роутердеги кадимки порт багыттоо үчүн мунун кереги жок.

Багытталган UDP трафигин кабыл алган серверде же Minecraft проксисинде config/raknetify2-proxy-protocol.json файлын түзүңүз:

{
  "trustedProxies": ["192.0.2.10"]
}

Мисалдын ордуна UDP проксисинин чыныгы булак IP дарегин же өзүңүз көзөмөлдөгөн CIDR даректер аралыгын жазыңыз. Арадагы NAT кызматтарынан өткөндөн кийин кабыл алуучу көргөн дарекке дал келиши керек. IPv4 жана IPv6 даректерин сан түрүндө жазууга болот. DNS аттары кабыл алынбайт. Кабыл алуучу серверди же проксини кайра иштетиңиз.

Багыттоочу проксини UDP үчүн PROXY protocol v2 баш маалыматтарын жөнөткүдөй жөндөңүз. Raknetify2 кардардын багытталган дарегин тизмедеги булактардан гана кабыл алат. Бул жөндөө күйгүзүлүп турганда андай баш маалыматы жок түз RakNet туташуулары четке кагылат. TCP угуу кызматынын жөндөөлөрү сакталып калат.

Ишеним жана кирүү укугу

Тизмедеги ар бир проксиге кардардын дарегин көрсөтүүгө ишеним берилет. Ички сервердин брандмауэринен UDP портуна тандалган прокси гана жете алгыдай чектеңиз. Ишенимдүү даректер аралыгын тармагыңыз жол берген эң тар чекте кармаңыз.

Файлда бир гана trustedProxies талаасы жана анын ичинде кеминде бир жазуу болушу шарт. Бош массив ката болуп эсептелет. Файл жараксыз болсо, RakNet угуу кызматы ишке кирбейт.

Түз UDP туташуусуна кайтуу үчүн файлды өчүрүп, угуу кызматын кайра иштетиңиз. Ошол эле учурда алдыңкы проксинин багыттоо тартибин жана брандмауэр эрежелерин жаңы жолго ылайык өзгөртүңүз.

Күйгүзгөндөн кийин туташуу иштебесе, ички сервер көргөн проксинин чыныгы булак дарегин, ишенимдүү CIDR аралыгын жана проксинин UDP үчүн PROXY protocol v2 башын жөнөтүп жатканын текшериңиз.

Minecraft проксисин орнотуу жана ички серверлерди жөндөө үчүн Velocity жана BungeeCord бөлүмүн караңыз.

Simple Voice Chat

Fabric, Forge, NeoForge, Spigot жана Paper платформаларында Raknetify2 сервердин UDP угуу портун Simple Voice Chat менен бөлүшө алат.

Simple Voice Chat модун серверге жана үн менен сүйлөшкүсү келген ар бир оюнчунун кардарына орнотуңуз. Калган жөндөөлөр үчүн анын серверди жөндөө нускамасын аткарыңыз.

Spigot/Paper кошо алганда, Raknetify2 файлын сервердин башкы папкасындагы config папкасына салыңыз. Simple Voice Chat өз файлын төмөндө көрсөтүлгөн платформага тиешелүү жерде сактайт.

Оюн портун бөлүшүү

  1. Сервердин папкасында config/raknetify2-voicechat.json файлын түзүп, төмөнкүнү жазыңыз:

    {"enabled": true}
  2. Simple Voice Chat сервер жөндөөсүндө port=-1 деп коюңуз. Мод серверинде бул config/voicechat/voicechat-server.properties, ал эми Spigot/Paper платформасында plugins/voicechat/voicechat-server.properties файлы.

  3. Дал келген бир эле RakNet угуучу кызматы болсо, bind_address талаасын бош калтырыңыз. Сервер ошол UDP портун бир нече даректе укса, бөлүшө турган кызматтын жергиликтүү дарегин көрсөтүңүз.

  4. Серверди кайра иштетип, туташкан оюнчу үчүн /voicechat test <PLAYERNAME> буйругун аткарыңыз.

RakNet угуу порту Minecraft портунан башка болсо, үн жөндөөсүнүн port талаасына -1 ордуна ошол жергиликтүү UDP портун түз жазыңыз. Мисалы, RakNet жергиликтүү UDP 25570 портун укса, port=25570 керек.

Кардарга башка тышкы дарек же порт керек болсо, voice_host коюңуз. Роутер тышкы UDP 25580 портун жергиликтүү UDP 25570 портуна багыттаса, port=25570 жана voice_host=play.example.com:25580 колдонуңуз. Тышкы дарек voice_host талаасына жазылат. bind_address жергиликтүү угуу дарегин тандайт.

Raknetify2 жалпы UDP сокетин Simple Voice Chat API аркылуу берет. Үн туташуусунун аныктыгын текшерүүнү жана үндү шифрлөөнү Simple Voice Chat өзү аткарат. Оюн TCP менен да, RakNet менен да туташканда үн чаты иштей алат.

Башка UDP кызматтары жана проксилер

Query менен Geyser үчүн өзүнчө UDP портторун калтырыңыз. Жалпы сокетти колдонуу Simple Voice Chat үчүн гана каралган.

Бул интеграция Velocity же BungeeCord платформасында үн проксисинин сокетин бөлүшпөйт. Simple Voice Chat прокси нускамасын аткарып, үн проксисине өзүнчө UDP портун бериңиз. Расмий үн прокси плагинин колдонсоңуз, тышкы voice_host маанисин проксинин үн жөндөөсүндө коюңуз. Плагин ички серверлердеги voice_host маанилерин колдонбойт.

Кадимки UDP туннели үчүн voice_host талаасына ушул серверге багытталган тышкы хост аты менен UDP портун жазыңыз.

Бөлүшүүнү өчүрүү же сокет кагылышын чечүү

Журналда No RakNet listener matches the voice bind address and port десе, RakNet ийгиликтүү ишке киргенин жана үн кызматынын порту менен дареги жергиликтүү RakNet угуу дарегине дал келерин текшериңиз.

Multiple RakNet listeners match the voice bind address десе, bind_address талаасына дал келген жергиликтүү даректердин бирин так көрсөтүп, кайра иштетиңиз.

Simple Voice Chat кызматына UDP сокетин бир эле плагин бере алат. Ишке киргенде башка плагин сокет берип койгону жазылса, кайсы плагинди колдоно турганыңызды тандаңыз.

Raknetify2 интеграциясын өчүрүү үчүн анын үн жөндөөсүнө {"enabled": false} жазыңыз же ошол файлды өчүрүңүз. Simple Voice Chat үчүн өзүнчө UDP портун бөлүп, брандмауэр же багыттоо эрежелерин өзгөртүңүз жана серверди кайра иштетиңиз.

Көйгөйдүн себебин табуу

TCP иштеп, RakNet жооп күтүп бүтөт

Төмөнкүлөрдү ирети менен текшериңиз:

  1. Кардардагы Raknetify2 моду анын жүктөгүчүнө жана Minecraft версиясына ылайыктуу.
  2. Туташууну кабыл алган серверге же проксиге Raknetify2 орнотулган. Ал угуу портун ачууда катасыз ишке кирген.
  3. Дарек raknet; менен башталып, тышкы UDP портун көрсөтөт.
  4. Хостинг провайдери, роутер жана компьютердин брандмауэри ошол портко UDP трафигин өткөрөт.
  5. Хост атынын IPv4 жана IPv6 даректери керектүү компьютерге алып барат жана эки жолдун брандмауэр эрежелери иштейт.

Ийгиликтүү TCP туташуусу TCP жолун гана ырастайт. UDP багыттоосун жана IPv6 аркылуу кирүүнү брандмауэр менен роутердин нускамасы боюнча текшериңиз. PROXY протоколу күйгүзүлсө, кардарлар угуу портуна тизмедеги ишенимдүү прокси аркылуу жетиши керек.

Дарек колдонулуп жатат

UDP портун башка процесс ээлеп турганын текшериңиз. Query, Geyser жана башка UDP кызматтарына өзүнчө порттор керек. Simple Voice Chat жалпы портту колдоно алат.

Башка жергиликтүү UDP портун түз сервердин угуу жөндөөлөрү же Velocity жана BungeeCord жөндөөлөрү аркылуу тандасаңыз болот. Spigot/Paper параметринин версия талабын текшериңиз. Роутердин тышкы портун гана өзгөртсөңүз, жергиликтүү сокет кагылышы чечилбейт.

Серверге кирүү иштейт, башка серверге өткөрүү иштебейт

Кабыл алуучу дарекке анын raknet; дареги менен түз туташыңыз. Туташуу иштебесе, адегенде ошол тараптагы угуу кызматын же тармак жолун оңдоңуз.

Түз туташуу иштесе, кабыл алуучу тарап сырттан өткөрүүнү кабыл аларын текшериңиз. server.properties колдонгон Minecraft серверине accepts-transfers=true керек. Түз кирүү бул параметрди текшербейт.

Андан кийин өткөрүү сурамындагы хост аты менен TCP портун жөнөтүүчү сервердин config/raknetify2-transfers.json файлы менен салыштырыңыз. Кайра иштеткенден кийин файл окулганын жана кардар автоматтык RakNet өткөрүүнү колдоорун текшериңиз. Автоматтык өткөрүү бөлүмүн караңыз.

Шифрлөө же протокол каталары

Эки тараптагы Raknetify2 версияларын текшериңиз. Чыгарылыш шифрленген протоколду өзгөртсө, кардар менен серверди же проксини бирге жаңыртыңыз. Себепти издеп жатканда сервердин аутентификация жөндөөлөрүн сактаңыз.

Белгилүү бир моддо чыккан ката

Кайсы аракет катаны пайда кыларын жазыңыз. Мисалы, буюмдар тизмесин ачуу, ресурс жыйнагын алуу, дүйнө алмаштыруу же оюн объектисин жаратуу. Мүмкүн болсо, өзүнчө сыноо орнотмосунда ошол эле аракетти TCP жана RakNet аркылуу кайталап салыштырыңыз.

Айрым мод маалыматы кадимки Minecraft пакеттеринин иретине көз каранды. Мод авторлору бул көз карандылыкты пакеттерди иреттөө интерфейси аркылуу көрсөтө алышат.

Ката тууралуу билдирүү

Raknetify2 каталар тизмесинде жаңы билдирүү ачып, буларды кошуңуз:

  • Эки тараптагы Minecraft, Java, жүктөгүч жана Raknetify2 версиялары.
  • Сервердин, проксинин жана бар болсо UDP багыттоочу проксинин программа версиялары.
  • Орнотулган башка моддор жана алардын версиялары.
  • Катаны кайталоо кадамдары жана сиз күткөн натыйжа.
  • Ошол эле кадамдар TCP аркылуу иштеген-иштебегени.
  • Бир эле аракетке тиешелүү кардар, сервер жана прокси журналдарынын үзүндүлөрү.

Журналды жүктөп берерден мурда кирүү токендерин, сырсөздөрдү жана башка купуя маалыматтарды алып салыңыз. Катаны аныктоого керектүү өзгөчө абалдын билдирүүлөрүн жана чакырыктар стегин калтырыңыз.

Модду интеграциялоо

Raknetify2 модго анын маалыматы менен бир иретте кайсы Minecraft трафиги келиши керектигин көрсөтүүгө мүмкүндүк берет. Моддун билдирүүсүн иштетүү үчүн мурдагы пакеттер түзгөн объект, дүйнөнүн бөлүгү, буюмдар тизмеси же башка абал керек болгондо ушуну колдонуңуз.

Иреттөө топтору

Топ Тиешелүү трафик
ui Дүйнөгө көз каранды эмес менюлар жана аракеттер
entity Оюн объектисинин пайда болушу, өчүрүлүшү жана жылышы
world_interaction Буюмдар тизмелери жана дүйнөгө көз каранды болгон башка аракеттер
effects Үндөр жана бөлүкчөлөр
chunk Жер бетинин, блоктордун жана жарыктын жаңырышы

Ар бир топтун пакеттери өз каналында ишенимдүү түрдө ирети менен жеткирилет. Башка-башка топтордун пакеттери бири-бирине карата башка иретте келиши мүмкүн. Маалымат кайсы пакеттерге көз каранды болсо, ошолордун тобун тандаңыз.

Fabric менен кошумча интеграция

Моддун fabric.mod.json файлындагы raknetify:packet_channels кирүү чекитине камсыздоочу класс кошуңуз. Ал JDK түрлөрүн колдонуп Consumer<BiConsumer<String, String>> интерфейсин ишке ашырат. Ага мод маалыматынын идентификатору менен иреттөө тобун кабыл алган каттоочу берилет.

Бул жазууну учурдагы метадайындарга кошуңуз. Класстын атынын ордуна камсыздоочу класстын пакетин камтыган толук атын жазыңыз:

{
  "entrypoints": {
    "raknetify:packet_channels": [
      "com.example.mod.OrderingProvider"
    ]
  }
}

fabric.mod.json файлынын калган мазмунун, анын ичинде азыркы кирүү чекиттерин сактаңыз. Бул метадайын файлынын үзүндүсү гана.

Мисалы, объекттин кыймылын кеңейткен мод example:entity_path идентификаторун entity тобунда каттай алат. Камсыздоочу класстын коду PacketOrdering API документинде берилген.

Raknetify2 жок болсо, Fabric бул кирүү чекитин чакырбайт. Камсыздоочу класстар идентификаторлор менен топторду ишке киргизүү маалында каттайт. Башка моддун ишке кирүүсү аяктаганына таянбаңыз.

Каттоо эрежелери

Raknetify2 бар болсо, Forge жана NeoForge моддору, ошондой эле сервер же прокси плагиндери ишке кирип жатканда PacketOrdering.register(identifier, group) ыкмасын чакыра алат. Класс – com.ishland.raknetify.api.PacketOrdering. Оюнчуларды кабыл алардан мурда каттаңыз. Raknetify2 жок болгондо кошумча интеграция коду анын класстарын жүктөбөсүн.

Билдирилген эрежелер жаңы туташууларга колдонулат. Мурда туташкандар башында алган эрежелерин сактайт. Бирдей эрежени кайталап каттоого болот. Бир идентификатор үчүн бири-бирине каршы келген топтор кабыл алынбайт.

Мод маалыматтарынын идентификатору жарактуу өздүк ат мейкиндигин колдонушу керек. minecraft ат мейкиндиги ээлеп коюлган. Ар бир туташуу тарабында камтылган эрежелерди жана башка моддордун жазууларын кошкондо эң көп 128 билдирүү болот. Идентификатор API талап кылган ат мейкиндиги менен жазылып, узундугу 255 ASCII белгиден ашпашы керек.

Жаңыртылган RakNet тараптары туташуу башталганда эрежелери менен алмашат. Серверде же проксиде ошол маалыматка жергиликтүү эреже жок болсо, экинчи тарап берген эрежени колдоно алат. Жергиликтүү эреже биринчи турат. Каршы тарап берген эрежелер ошол туташуу менен гана чектелет.

UDP проксилери

UDP аркылуу багыттоо жана кардардын баштапкы дарегин өткөрүү үчүн UDP трафигин багыттоо жана PROXY протоколу бөлүмүн караңыз.

Minecraft проксисин жөндөө үчүн Velocity жана BungeeCord бөлүмүн караңыз.

English (US)

Clone this wiki locally