Repository navigation
Wiki fa ir
- خانه
- نصب
- Velocity و BungeeCord
- پیکربندی فایروال و روتر
- سازگاری
- حالت مرتبسازی
- انتقالهای خودکار
- انتقال پیامهای UDP و پروتکل PROXY
- Simple Voice Chat
- راهحل مشکلات
- ادغام مدیریتهای مختلف
- پروکسیهای UDP
اتصال شبکه از طریق RakNet برای کارخواهها و سرورهای Minecraft.
| 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 |
-
چند نفره
-
اضافه کردن سرور
-
آدرس سرور
آدرس سرور RakNet · UDP raknet;play.example.com:25565TCP play.example.com:25565 -
انجام
-
پيوستن به سرور
| F3 | |
|---|---|
| RakNet · UDP | فعال · MTU 1400 |
| TCP | غیرفعال |
- کارخواه · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
- 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 |
سرور / Velocity / BungeeCord
| JSON | |
|---|---|
| ① ② ③ | {"mode":"ordered"} |
| ① ∥ ② ∥ ③ | {"mode":"multichannel"} |
| سرور | 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
| آدرس سرور | 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"]}-
سرور A · Fabric / Forge / NeoForge ·
config/raknetify2-transfers.json{"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]} -
سرور B ·
play.example.com·server.properties→accepts-transfers=true -
سرور A ·
/transfer play.example.com 25565 Alex→ کارخواه (Alex) → RakNet ·play.example.com:25570
| Minecraft | |
|---|---|
ui |
تنظيمات |
entity |
اسکلت |
world_interaction |
کوله پشتی |
effects |
ذرات |
chunk |
بلوک ها |
- Fabric · Minecraft / Java · English
- Forge / NeoForge / Spigot / Paper · GitHub Releases
Raknetify2 برای بازی چندنفرهٔ Minecraft از RakNet بر بستر UDP استفاده میکند. دادهها در چند کانال فرستاده میشوند و هر کانال ترتیب بستههای خودش را حفظ میکند. اگر بستهای در یک کانال گم شود، کانالهای دیگر میتوانند به انتقال داده ادامه دهند. در نتیجه، هنگام ارسال دوبارهٔ دادههای گمشده یا انتقال بخشهایی از دنیای بازی، بازی میتواند همچنان به کارهای بازیکن پاسخ دهد.
Raknetify2 شاخهای از Raknetify است که بهطور مستقل نگهداری میشود. سازندهٔ پروژهٔ اصلی ishland است. این شاخه از نسخههای جدیدتر Minecraft پشتیبانی میکند و کد انتقال داده، یکپارچهسازی با پلتفرمها و آزمونهای سازگاری آن همچنان نگهداری میشوند.
- تأیید سازگاری Minecraft و مدهای آن.
- فایل را دانلود و نصب کنید.
- با آدرسهایی مانند
raknet;play.example.comارتباط برقرار کنید.
- Velocity و BungeeCord
- پیکربندی فایروال و روتر
- انتقالات خودکار
- انتقال پیامهای UDP و پروتکل PROXY
- اشتراکگذاری پورت UDP با Simple Voice Chat
- راهحل مشکلات و گزارشات نقصهای برنامهای
سازندگان مادها میتوانند با رابط ترتیب بستهها مشخص کنند که پردازش دادههای سفارشی ماد به دریافت کدام بستههای 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 یا پک Modی که شما راهاندازی میکنید هستند. فولدرهای سرور و پروکسی نیز متعلق به نصب سرور یا پروکسی مربوطه هستند. اگر لوازم نصب کلاینت هنوز فولدر مربوطه ایجاد نکرده باشد، فولدر مربوطه را ایجاد کنید.
- ماژول کلاینت را برای لودر خود نصب کنید.
- روی یک سرور سازگار، ماژول مربوطه یا پلاگین Spigot/Paper را نصب کنید.
- از راهنمای پیکربندی فایروال و روتر پیروی کنید تا امکان اتصال UDP به سرور فراهم شود.
- کلاینت و سرور را دوباره راهاندازی کنید.
- آدرس سرور را به گونهای وارد کنید که مثلاً
raknet;play.example.comیاraknet;play.example.com:25565باشد.
آدرسهایی که پیشوند raknet; ندارند، از پروتکل TCP استفاده میکنند.
نصب تنها ماژول کلاینت، حمایت از پروتکل RakNet را بر روی سرور دوربرد اضافه نمیکند. مدیر سرور باید یک اندیشهی RakNet فراهم کند. بازیکنانی که به سرور دیگران میپیوندند، معمولاً نیازی به قوانین فرستندهی روتر ندارند.
نرمافزارهای مربوط به پروکسی و کلاینت مود را نصب کنید. برای تنظیمات شنونده، ارسال دادهها از پشت سر، محدودیتهای دسترسی و آدرسهایی که بازیکنان باید از آنها استفاده کنند، از راهنمای Velocity و BungeeCord پیروی کنید.
برای یک سرور مستقیم Minecraft، آرگومان Java مربوطه را در زیر تنظیم کنید. اپراتورهای پروکسی باید از تنظیمات Velocity و BungeeCord listener استفاده کنند.
| پلتفرم | آرگومان جاوا | پورتهای مجاز |
|---|---|---|
| سرورهای 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 متصل شوید. اگر روتر پورت را تبدیل کند، از پورت عمومی آن در آدرس کلاینت استفاده کنید. پورت TCP همچنان به مقدار فعلی خود باقی خواهد ماند.
در سیستم Spigot/Paper، گیرنده UDP آدرس محلی گیرنده TCP Minecraft را حفظ میکند. یک پورت UDP نامعتبر یا اشغالشده، از شروع RakNet جلوگیری میکند. لطفاً در فایل لاگ راهاندازی، آدرس و پورت UDP مربوطه را بررسی کنید. آرگومان را حذف کرده و دوباره راهاندازی کنید تا به شماره پورت گیرنده TCP بازگردید.
روتر یا پروکسی UDP میتواند یک پورت عمومی UDP متفاوت را نیز فراهم کند و آن را بدون تغییر در آرگومانهای جاوا سرور، به گیرنده موجود ارسال نماید.
یک عملیات main موفق در GitHub Actions را باز کنید و آرشیو Artifacts آن را دانلود کنید. GitHub برای دانلود آرشیوهای عملیات نیاز به یک حساب کاربری دارد. از جدول نصب بالا برای انتخاب یک JAR از آرشیو استفاده کنید.
Velocity و BungeeCord، بین بازیکنان و سرورهای پشتیبانی Minecraft قرار دارند. Raknetify2 را روی پروکسی و هر کلاینتی که از طریق RakNet متصل میشود، نصب کنید.
Raknetify2 کلاینت --UDP--> Velocity یا BungeeCord --TCP--> سرور پشتیبانی.
سرورهای پشتیبانی نیازی به Raknetify2 برای این مسیر اتصال ندارند. آنها همچنان به مدیریتهای، پلاگینها و پشتیبانی فرستندهای که توسط شبکه شما مورد نیاز است، نیاز دارند. Raknetify2 نه ترجمه نسخههای Minecraft را انجام میدهد و نه از روش احراز هویت حساب کاربری پروکسی تغییر میکند.
- بررسی کنید که اتصالات TCP عادی از طریق پروکسی شما، همچنین امکان احراز هویت و تغییر بین سرورهای پشتیبانی، به خوبی انجام میشود.
- پروکسی را متوقف کنید و پلاگین مربوطه را از GitHub Releases دانلود کنید.
-
raknetify2-velocity-*-all.jarیاraknetify2-bungee-*-all.jarرا در پوشهpluginsپروکسی قرار دهید. هر پلاگین قدیمیتر از Raknetify یا Raknetify2 را از آن پوشه حذف کنید. - کلپ مود مناسب Raknetify2 را با استفاده از راهنمای نصب installation guide نصب کنید.
- بررسی تنظیمات شنونده زیر، راهاندازی مجدد پروکسی، و بررسی فایل چکهای آن برای یافتن اشتباهات مربوط به شنونده RakNet.
- اجازه دهید ترافیک عمومی UDP به پروکسی وارد شود و پورتهای بازی در پشتبینه را مطابق با توضیحات پیکربندی فایروال و روتر محدود کنیم.
در کلاینت و پروکسی، از نسخههای سازگار Raknetify2 استفاده کنید. قبل از ترکیب نسخهها، سازگاری را بررسی کنید.
تنظیم bind در فایل velocity.toml، آدرس گوش دادن Minecraft و پورت TCP را انتخاب میکند. Raknetify2 معمولاً برای UDP از همان شماره پورت استفاده میکند. پیوندهای [servers] سرورهای پشتی را مشخص میکنند؛ این پیوندها باید به آدرسهای TCP سرورهای پشتی اشاره کنند. برای اطلاعات بیشتر، به راهنمای پیکربندی Velocity مراجعه کنید.
برای استفاده از یک پورت UDP جداگانه، این آرگومان JVM را قبل از -jar در دستور راهاندازی Velocity اضافه کنید:
-Draknetify.velocity.portOverride=25570
25570 را با پورت انتخابی خود جایگزین کنید. این کار باعث تغییر پورت UDP RakNet میشود، در حالی که پورت TCP و آدرسهای بکاند Velocity حفظ خواهند شد. پس از تغییر پورت، Velocity را دوباره راهاندازی کنید.
تنظیم فرستندگی بازیکنان در هر دو سرویس Velocity و پشتیبانیهای آنها. از فرستندگی مدرن استفاده کنید زمانی که نرمافزار پشتیبانی کند، و فرستندگی خود را محرمانه نگه دارید. دستورالعملهای مربوط به پشتیبانیهای سرویسهای Velocity را در راهنمای فرستندگی اطلاعات بازیکنان دنبال کنید. محدودیتهای فایروال پشتیبانیهای سرویسها را نیز همزمان حفظ کنید.
در config.yml BungeeCord، مقدار host در زیر هر خط listeners، آدرس و پورت TCP مربوط به خواهانکنندههای Minecraft را مشخص میکند. Raknetify2 معمولاً UDP را روی همین شماره پورت اضافه میکند. خطوط servers نیز آدرسهای TCP پشتیبانی را نشان میدهند. این تنظیمات در راهنمای پیکربندی BungeeCord توصیف شدهاند (BungeeCord configuration guide).
برای یک پورت UDP جداگانه، این آرگومان JVM را قبل از -jar در دستور راهاندازی BungeeCord اضافه کنید:
-Draknetify.bungee.portOverride=25570
تغییرات مربوط به پروکسی، شامل کل فرآیند پروکسی میشود. برای پیکربندی دارای چندین گیرنده Minecraft، قبل از افزودن قوانین فایروال، به نقاط پایانی RakNet در فایل لاگ راهاندازی توجه کنید. پس از تغییر آرگومان، BungeeCord را دوباره راهاندازی کنید.
حفظ احراز هویت کاربری در پروکسی ضروری است. برای پشتیبانیهای Spigot، راهنمای انتقال IP BungeeCord، ip_forward: true در پروکسی را با settings.bungeecord: true در پشتیبان همپوشانی میکند. انتقال تکتکی فقط مانع از اتصال مستقیم به پشتیبان نمیشود. دسترسی به پشتیبان را با استفاده از دستورالعملهای فایروال محدود کنید.
هر دو روش پروتکتور، پورتهای بین 1 تا 65534 را میپذیرند. مقادیر نامعتبر نادیده گرفته میشوند؛ بنابراین پورت UDP متصل را در لاگ راهاندازی بررسی کنید. آرگومان را حذف کرده و دوباره راهاندازی کنید تا به شماره پورت شنونده Minecraft بازگردید.
بازیکنان به نام دامنه عمومی پروکسی و پورت UDP متصل میشوند؛ مثلاً raknet;play.example.com:25570. هنگامی که یک روتر پورتها را تبدیل میکند، از پورت عمومی UDP آن استفاده کند. آدرسهایی که پیشوند raknet; را دارند، همچنان از پادکست گیرنده TCP پروکسی استفاده خواهند کرد. شناسههای محصولات و پروتکلهای مربوطه، مانند TCP و UDP، حفظ خواهند شد.
سرویسهای UDP مانند Query، Geyser و سایر سرویسها را روی پورتهای UDP مجزا قرار دهید. یک پورت TCP متفاوت، تداخل سوکت UDP را حل نمیکند.
Simple Voice Chat از پلاگین پروکسی و پورت UDP مخصوص به خود روی Velocity و BungeeCord استفاده میکند. برای آن تنظیم، راهنمای پروکسی چت صوتی را دنبال کنید.
اگر یک ریلی UDP جداگانه در مقابل پروکسی Minecraft قرار داشته باشد و هدرهای پروتکل PROXY v2 را ارسال کند، Raknetify2 را با استفاده از UDP forwarding و پروتکل PROXY پیکربندی کنید. نصب Velocity یا BungeeCord به تنهایی نیازی به پیکربندی ندارد.
از خارج از شبکه محلی خود، با کلاینت Raknetify2 آزمایش کنید. از طریق پروکسی وارد شوید، بین سرورهای پشتیبانی مورد استفاده تغییر دهید، و اطمینان حاصل کنید که هویت بازیکن و دسترسیهایش همچنان صحیح باشد.
- اگر TCP از طریق پروکسی کار میکند اما RakNet مهلت تمام میشود، شنونده UDP، پورت عمومی، مسیرهای IPv4 و IPv6 و قوانین فایروال پروکسی را بررسی کنید.
- اگر هر دو روش انتقال نتوانند عمل کنند و پروکسی به یک بکاند متصل شود، بررسی کنید که آیا آدرس TCP آن بکاند، قوانین دسترسی و پیکربندی ارسال بازیکنان درست هستند یا خیر.
- اگر پروکسی یک پورت UDP اشغالشده را گزارش کند، بررسی کنید که آیا پروکسی Query، Geyser، پروکسی صوتی یا سایر فرآیندهایی که به آن متصل هستند، در حال استفاده از آن پورت هستند یا خیر.
برای گزارشها، هم لگهای پراکسی و هم لگهای بکاند را از همان تلاش اتصال در نظر بگیرید. برای اطلاعات نسخه، به بخش راهحلهای مشکلات مراجعه کنید.
این راهنما برای مدیران سرور است. Raknetify2 نیاز به مسیر UDPی قابل استفاده به سرور یا پروکسی دارد که قابلیت پذیرش اتصالات RakNet را داشته باشد. تنظیم پیشفرض از همان شماره پورتی است که در Minecraft برای گیرنده TCP استفاده میشود.
برای بازیکنانی که در همان شبکه محلی هستند، از آدرس محلی سرور استفاده کنید و اجازه دهید پیامهای UDP از طریق فایروال میزبان آن سرور عبور کنند. هنگامی که ترافیک اینترنت باید از طریق NAT IPv4 روتر شما عبور کند، استفاده از روش بازگشت پورت روتر ضروری است.
ترافیک عمومی UDP را به کامپیوتری که سرور Minecraft را اجرا میکند، با استفاده از Raknetify2 ارسال کنید. پورت مقصد، پورت UDP شنونده RakNet سرور است. این پورت را در فایروال میزبان کامپیوتر سرور مجاز کنید. مسیر TCP موجود را برای اتصالات عادی Minecraft حفظ کنید.
برای مثال، اگر Raknetify2 روی پورت UDP 25570 گوش دهد، پورت عمومی UDP را به آدرس محلی سرور در پورت 25570 ارسال کنید. پورت TCP سرور میتواند همچنان 25565 باقی بماند. برای انتخاب پورت UDP دیگری، به تنظیمات گوشدار سرور مستقیم مراجعه کنید.
ترافیک عمومی UDP را به دستگاهی که از Velocity یا BungeeCord استفاده میکند و دارای پلاگین Raknetify2 است، ارسال کنید. از گیرنده UDP RakNet پروکسی دستگاه برای مقصد ارسال ترافیک استفاده کنید. مسیر TCP عمومی موجود پروکسی را برای اتصالات معمول Minecraft حفظ کنید.
پروکسی از طریق TCP به سرورهای پشتیبان Minecraft متصل میشود. افزودن Raknetify2 به پروکسی نیازی به باز کردن پورتهای UDP برای بازی با بازیکنان ندارد.
| اتصال | دسترسی برای اجازه دادن |
|---|---|
| بازیکنانی که از پروکسی استفاده میکنند | پیوستن به پیامرسانی عمومی UDP به سمت گیرنده RakNet، همراه با گیرنده پیامرسانی عمومی TCP موجود. |
| پروکسی برای سرورهای پشتیبانی | پورتهای TCP در بکاند Minecraft، که تنها از طریق سرورهای پروکسی مورد نظر قابل دسترسی هستند. |
| بازیکنان، مستقیماً به پورتهای بازی پشتیبانیشده بروید. | بازرسیها باید مسدود باقی بمانند، حتی از طریق IPv6. |
هنگامی که پروکسی و بسترها مستقیماً روی یک ماشین اختصاصی که شما کنترل میکنید اجرا میشوند، شنوندگان بستر میتوانند از آدرسهای لوپبک استفاده کنند و پروکسی به گونهای تنظیم شده باشد که به آنجا دسترسی داشته باشند. در بین ماشینها، دسترسی بستر TCP به پروکسی را با استفاده از فایروال یا شبکه خصوصی جداگانه محدود کنید. کانتینرها و میزبانهای مدیریتی نیز باید از محدودیتهای مشابهی برای ساختار شبکه خود داشته باشند. برای اطلاعات بیشتر، به راهنمای امنیت بستر Velocity و راهنمای فایروال BungeeCord مراجعه کنید.
فرماندهی بازیکنان و محدودیتهای فایروال با هم همکاری میکنند. دسترسی مستقیم به بکاینریو میتواند از بررسیهای ورودی پروکسی عبور کند. برای نصب پلاگین، تنظیمات فرماندهی و تعویض پورت UDP، از راهنمای Velocity و BungeeCord استفاده کنید.
در صورتی که روتر بین پورت عمومی و پورت شنونده تبدیل انجام دهد، پورتهای مذکور میتوانند متفاوت باشند.
| تنظیمات | پورتی که باید استفاده شود: |
|---|---|
| آدرس کلاینت و سرور | پورت عمومی UDP |
| قوانین ارسال داده توسط روتر، پورت خارجی | پورت عمومی UDP |
| قوانین ارسال دادههای روتر در پورت داخلی | پورت UDP شنونده RakNet |
| پورت محلی فایروال میزبان | پورت UDP شنونده RakNet |
برای پشتیبانی از ترافیک از پشت روتر IPv4:
- آدرس IPv4 محلی ماشینی که اتصالات RakNet را پذیرش میکند را پیدا کنید. از روش رزرو DHCP یا یک آدرس ثابت مناسب استفاده کنید تا قوانین هدایت اتصالات همچنان به آن ماشین هدف باشد.
- قوانین جابجایی UDP را برای پورت عمومی که بازیکنان از آن استفاده میکنند، ایجاد کنید.
- قوانین را به آدرس محلی آن ماشین و پورت UDP شنونده RakNet تغییر دهید.
- اجازه دادن به پیوستن پیامهای UDP از طریق پورت شنونده در فایروال میزبان.
برای مثال، یک سرور که روی پورت UDP 25565 گوش داده میکند، میتواند از قوانینی با پورت عمومی 25565، آدرس مقصد 192.168.1.100 و پورت مقصد 25565 استفاده کند. آدرس مثال را با آدرس واقعی سرور خود جایگزین کنید.
قوانین TCP برای اتصالات عادی Minecraft حفظ خواهد شد. یک قانون انتقال TCP به تنهایی نمیتواند UDP را انتقال دهد.
قبل از رسیدن ترافیک به روتر خود، بررسی کنید که آیا روتر دیگری یا ارائهدهنده خدمات اینترنتی شما، فعالیت NAT دارد یا نه. با داشتن دو روتر، فرستندگی باید هر دو را پوشش دهد. اگر ارائهدهنده خدمات اینترنتی شما از NAT در سطح شرکتی استفاده میکند، بپرسید که آیا میتواند یک آدرس IPv4 عمومی ارائه دهد یا از خدمات پشتیبانی یا تونلهایی که UDP را پشتیبانی میکنند، استفاده کند. قوانین فرستندگی روتر شما نمیتواند NAT ارائهدهنده خدمات اینترنتی را تنظیم کند. برای اطلاعات بیشتر درباره نیاز به آدرس WAN عمومی، به راهنمای فرستندگی پورتهای TP-Link مراجعه کنید.
اجازه دهید پورت UDP انتخاب شده، هم از سوی فایروال IPv6 روتر و هم از سوی فایروال میزبان عبور کند. آدرس IPv6 ماشینی که اتصالات RakNet را پذیرش میکند، هدف قرار داده شود.
بررسی کنید که آدرس IPv6 نام سرور به آن ماشین اشاره میکند یا نه. اگر آدرس IPv6 آن تغییر کند، رکورد DNS و هر قوانین فایروال مربوط به آدرس را بهروزرسانی کنید.
نام خانهای که هم آدرسهای IPv4 و هم IPv6 را منتشر میکند، نیاز به یک مسیر کارآمد برای هر آدرس اعلانشده دارد. هنگامی که یک بازیکن میتواند متصل شود و بازیکن دیگر نمیتواند، هر دو مجموعه قوانین را بررسی کنید.
اگر انتقال پیام در پروتکل IPv4 شماره پورت را تغییر دهد، مطمئن شوید که پورت ورودی توسط بازیکنان به گیرندههای IPv6 نیز دسترسی داشته باشد. ترجمه پورت در پروتکل IPv4، مسیر پیام در پروتکل IPv6 را تنظیم نمیکند.
ارائهدهنده یا تونل باید در انتهای عمومی که به بازیکنان ارائه میدهید، از پروتکل UDP پشتیبانی کند. بررسی کنید که آیا اختصاص پورتها و قوانین فایروال شبکه ارائهدهنده وجود دارد یا خیر، همچنین فایروال خود سرور نیز باید مطابق با استاندارد باشد.
اگر یک پروکسی UDP اضافی آدرسهای کلاینتها را با استفاده از پروتکل PROXY نسخه ۲ ارسال کند، از روش انتقال UDP و پروتکل PROXY پیروی کنید و دسترسی به گیرنده UDP را فقط به پروکسی معتبر محدود کنید.
با استفاده از کلاینت Raknetify2 بهروزرسانیشده و از طریق آدرس مانند raknet;play.example.com:25565، از خارج از شبکه محلی سرور به آن متصل شوید. از پورت عمومی UDP در این آدرس استفاده کنید.
برای تأیید مسیر، از اتصال واقعی RakNet استفاده کنید. اسکن UDP که هیچ پاسخی دریافت نکند، میتواند نتیجهای بیپایه و اساس ارائه دهد؛ زیرا سرویسهای فعال ممکن است تستهای ناآشنا را کنار بگذارند. مستندات اسکن UDP نماتک این رفتار را توضیح میدهد.
یک اتصال TCP موفقیتآمیز فقط مسیر TCP را تأیید میکند. اگر RakNet مهلت تمام میشود، شنونده، مقصد فورواردینگ، پورت UDP و قوانین فایروال را با استفاده از راهنمای عیبیابی بررسی کنید.
برای نسخه خاصی که دانلود میکنید، سازگاری را بررسی کنید. شاخه توسعه ممکن است حمایتهایی داشته باشد که هنوز در یک نسخه منتشر شده وجود ندارند.
نسخههای Minecraft و Java · English
نسخهٔ Java که Raknetify2 اعلام میکند حداقل نسخهٔ لازم است. ممکن است Minecraft یا بارگذار ماد به محیط اجرای جدیدتری نیاز داشته باشد. نسخهای از Java را انتخاب کنید که نیاز هر سه را برآورده کند.
در صورت امکان، از همان نسخه Raknetify2 در کلاینت و سرور یا پروکسی که امکان اتصال به آن وجود دارد، استفاده کنید. قبل از ترکیب نسخهها، به یادداشتهای راهنمای نسخهها توجه کنید. اتصالات رمزنگاری شده RakNet نیازمند پشتیبانی از پروتکل رمزنگاری تأییدشده در هر دو سمت هستند. نسخههای اصلی Raknetify و Raknetify2 که قبل از معرفی این پروتکل تولید شدهاند، نمیتوانند چنین اتصالات رمزنگاری شدهای را با همکاران بهروز انجام دهند.
Raknetify2 پروتکل بازی موجود در Minecraft را حمل میکند. اتصال نسخههای مختلف Minecraft نیازمند تنظیم مناسب پروتکل است.
برای خرابی در یک مادپک بزرگتر، راهنمای عیبیابی اینجا را دنبال کنید. نسخههای کامل مادها را در گزارش خود بگنجانید.
در حالت عادی، اگر یک کانال منتظر دادههای گمشده بماند، Raknetify2 اجازه میدهد کانالهای مستقل دیگر به کارشان ادامه دهند. در حالت ترتیبی، همهٔ بستههای Minecraft از یک کانال میگذرند. اگر بستهای گم شود، تمام بستههای بعدی در همان جهت تا ارسال دوبارهٔ آن منتظر میمانند. به این ترتیب، بستهها مطابق انتظار بعضی از برنامههای ضدتقلب میرسند، اما دادههای بازی که به بستهٔ گمشده وابسته نیستند هم باید منتظر بمانند.
-
روی سرور یا پروکسی که امکان اتصال به پروتکل RakNet را دارد، و همچنین در هر کلاینت RakNet، نسخه Raknetify2 را نصب کنید که از حالت مرتبشده پشتیبانی کند.
-
فایل
config/raknetify2-compatibility.jsonرا در دایرکتوری مربوط به سرور یا پروکسی ایجاد کنید. اگر دایرکتوریconfigوجود نداشته باشد، آن را ایجاد کنید. -
لطفاً مطلب زیر را اضافه کنید:
{"mode": "ordered"} -
سرور یا پروکسی را دوباره راهاندازی کنید.
کلایهها به طور خودکار از تنظیمات سرور پیروی میکنند. بازیکنان نیازی به ایجاد فایل تنظیمی یا تغییر آدرس سرور RakNet خود ندارند.
تمام بستههای ارتباطی در Minecraft، در هر جهت از یک کانال قابل اعتماد و منظم استفاده میکنند؛ این کانال شامل حدود بستهها و انتقالات جهتهای مختلف دنیاست.
وقتی بازیکنان از طریق Velocity یا BungeeCord متصل میشوند، حالت ترتیبی را روی همان پراکسی تنظیم کنید، حتی اگر برنامهٔ ضدتقلب روی سرور پشتی اجرا شود.
این تنظیم هنگام جابهجایی میان سرورهای پشتی هم برقرار میماند. در حالت ترتیبی، پراکسی بهجای آنکه خودش به درخواستهای بررسی زندهبودن اتصال پاسخ دهد، آنها را از سرور پشتی به کلاینت واقعی بازیکن میفرستد.
در اولین اتصال RakNet، کنسول گزارش میدهد:
Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)
یک تبادل سازگاری موفقیتآمیز همچنین ordered compatibility negotiated را ثبت میکند، و پس از آن آدرس همتای را نشان میدهد.
بررسیهای ضدتقلب را فعال نگه دارید و تنظیمات را روی سامانهٔ خودتان بیازمایید.
مشتریان RakNet که از حالت مرتب شده پشتیبانی نمیکنند نمیتوانند به سروری که نیاز به آن دارد متصل شوند. Raknetify2 را در آن مشتریان بهروز کنید، یا با استفاده از آدرس و پورت عادی TCP سرور یا پروکسی بدون پیشوند raknet; متصل شوید.
فایل را به این شکل تغییر دهید:
{"mode": "multichannel"}سپس سرور یا پروکسی را دوباره راهاندازی کنید. حذف این فایل، پس از راهاندازی مجدد، حالت چندکانالی را نیز احیا میکند.
فایل باید دقیقاً حاوی یک تنظیم به نام mode باشد؛ مقدار این تنظیم میتواند یا "ordered" یا "multichannel" باشد. مقادیر این تنظیم به حروف بزرگ و کوچک توجه دارند.
پیوستن به شبکه در ماینکرین، تنها در صورتی امکانپذیر است که پیکربندی فایل صحیح باشد. پیکربندی نامعتبر یا قابل خواندن نیست، لذا پیوستن به شبکه RakNet غیرممکن خواهد بود. فایل را اصلاح کنید و فرآیند را دوباره شروع کنید.
اگر کنسول همچنان نشان میدهد که اتصال multichannel است، بررسی کنید که آیا فایل در پوشه کاری سرور یا پروکسی که اتصال RakNet را میپذیرد قرار دارد یا نه؛ سپس آن فرآیند را دوباره راهاندازی کنید.
سرورهای Fabric، Forge و NeoForge میتوانند هنگام انتقال کلاینت قابل استفاده به مقصد مشخص، از RakNet استفاده کنند. این روش از پشتیبانی ذاتی Minecraft برای انتقال دادهها استفاده میکند؛ پشتیبانیای که در نسخه Java Edition 1.20.5 معرفی شده است. بررسی کنید که نسخه Raknetify2 شما از نسخه و لوازمآهنگی Minecraft در هر دو سمت پشتیبانی میکند یا خیر.
روی سرور فرستنده و کلاینت، برنامه 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 در فرآیند تطبیق شرکت نمیکنند؛ بنابراین دو نام سرور مختلف که به همان آدرس منتقل میشوند، نیاز به ورودیهای جداگانه دارند. ورودیهای کارتشناسی پشتیبانی نمیشوند.
برای مقصدی که از server.properties Minecraft استفاده میکند، accepts-transfers=true را تنظیم کنید و دوباره آن را راهاندازی نمایید. پروکسی مقصد ممکن است تنظیمات مربوط به انتقال را داشته باشد. Minecraft به طور پیشفرض انتقالهای ورودی را رد میکند، حتی زمانی که پیوستن مستقیم معمولی امکانپذیر باشد.
گیرنده RakNet مقصد، فرستنده عمومی UDP و فایروال میزبان باید از قبل پیکربندی شده باشند. فایل انتقال سرور فرستنده، آدرسی را که برای کلاینت ارسال میشود، انتخاب میکند.
در هنگامی که نام سرور مقصد هر دو نوع آدرس (IPv4 و IPv6) را منتشر میکند، هر دو مسیر IPv4 و IPv6 را بررسی کنید. قبل از بررسی رفتار انتقال خودکار، یک اتصال مستقیم معمولی از طریق RakNet به مقصد را آزمایش کنید.
بررسیهای ورود و اجازهٔ دسترسی را در مقصد فعال نگه دارید. این تنظیم به بازیکنان اجازهٔ دسترسی نمیدهد و جای احراز هویت سرور را نمیگیرد.
فیلدهای گمشده، فیلدهای ناشناخته، پورتهای نامعتبر و مقاصد تکراری باعث ایجاد خطا در هنگام پیشفرضسازی میشوند. از پیوست سرور برای شناسایی خطا، اصلاح JSON و راهاندازی مجدد استفاده کنید.
برای غیرفعال کردن انتخاب خودکار، فایل پیکربندی را حذف کنید یا از {"destinations": []} استفاده کنید؛ سپس سرور ارسال را دوباره راهاندازی کنید. در این حالت، درخواستهای انتقال همچنان به آدرسهای اصلی خود خواهند بود.
پروکسی UDP میتواند ترافیک RakNet را ارسال کند و آدرس اصلی کلاینت را با استفاده از پروتکل PROXY نسخه ۲ حفظ کند. این ویژگی را زمانی فعال کنید که یک پروکسی UDP بالانت، آن هدرها را به گیرنده شما ارسال کند؛ فعالسازی این ویژگی برای فعالسازی ساده پورت روتر لازم نیست.
در سرور یا پروکسی Minecraft که ترافیک UDP ارسالی را دریافت میکند، فایل config/raknetify2-proxy-protocol.json را ایجاد کنید:
{
"trustedProxies": ["192.0.2.10"]
}مثال را با آدرس IP منبع واقعی پروکسی UDP یا یک محدوده CIDR که شما کنترل میکنید جایگزین کنید. آدرس باید با آنچه شنونده دریافت میکند پس از هر NAT واسط مطابقت داشته باشد. مقادیر IPv4 و IPv6 پذیرفته میشوند. نامهای میزبان DNS رد میشوند. سرور یا پروکسی گیرنده را مجدداً راهاندازی کنید.
پراکسیِ فرستنده را طوری تنظیم کنید که همراه بستههای UDP سرآیند PROXY v2 بفرستد. Raknetify2 نشانیهای کلاینت را فقط از مبدأهای فهرستشده میپذیرد. تا وقتی این تنظیم فعال است، اتصال مستقیم RakNet بدون این سرآیندها رد میشود. تنظیمات شنوندهٔ TCP تغییر نمیکند.
هر پراکسیِ فهرست میتواند نشانی کلاینت را اعلام کند. دیوار آتشِ سرور پشتی را طوری تنظیم کنید که فقط پراکسی تعیینشده به درگاه UDP آن دسترسی داشته باشد. محدودهٔ نشانیهای مورد اعتماد را تا جایی که شبکهتان اجازه میدهد کوچک نگه دارید.
فایل باید فقط trustedProxies را داشته باشد و فهرست آن دستکم یک ورودی داشته باشد. آرایهٔ خالی خطاست. اگر فایل معتبر نباشد، شنوندهٔ RakNet راهاندازی نمیشود.
برای بازگشت به اتصالات مستقیم UDP، فایل مربوطه را حذف کرده و پخشگر را دوباره راهاندازی کنید. همزمان، رفتار انتقال دادهها از مسیر بالا و قوانین فایروال را برای مسیر جدید بهروزرسانی کنید.
اگر اتصالات پس از فعالسازی این ویژگی شکست بخورند، آدرس واقعی پروکسی را در بخش پشتیبانی بررسی کنید، محدوده اعتباردهی پیشفرض را بررسی کنید و بررسی کنید که آیا پروکسی هدهای پروتکل UDP PROXY نسخه ۲ را ارسال میکند یا خیر.
برای نصب پروکسی Minecraft و پیکربندی بکاند، از راهنمای Velocity و BungeeCord پیروی کنید.
Raknetify2 میتواند گیرنده UDP خود را با Simple Voice Chat در Fabric، Forge، NeoForge، Spigot و Paper به اشتراک بگذارد.
Simple Voice Chat را روی سرور و روی کلاینت هر بازیکنی که میخواهد از گفتوگوی صوتی استفاده کند نصب کنید. بقیهٔ تنظیمات در راهنمای راهاندازی سرور آمده است.
از پوشه config در سطح بالای سرور برای فایلهای Raknetify2 استفاده کنید، حتی در پلتفرم Spigot/Paper. فایلهای Simple Voice Chat در محل خاص هر پلتفرم نگهداری میشوند.
-
در پوشه سرور، فایل
config/raknetify2-voicechat.jsonرا با محتوای زیر ایجاد کنید:{"enabled": true} -
در پیکربندی سرور Simple Voice Chat، مقدار
port=-1را تنظیم کنید. در سرورهای موددهیشده، این مقدار در فایلconfig/voicechat/voicechat-server.propertiesقرار دارد؛ در Spigot/Paper نیز در فایلplugins/voicechat/voicechat-server.properties. -
در صورت وجود یک گیرنده RakNet مطابق، مقدار
bind_addressرا خالی بگذارید. اگر سرور چندین گیرنده روی همان پورت UDP داشته باشد، آن را به آدرس محلی گیرندهای که میخواهید به اشتراک بگذارید، تغییر دهید. -
سرور را مجدداً راهاندازی کنید و برای یک بازیکن متصل،
/voicechat test <PLAYERNAME>را اجرا کنید.
اگر گیرنده RakNet از پورتی متفاوت از Minecraft استفاده میکند، باید پورت port را به طور صریح روی همان پورت UDP محلی تنظیم کنید، به جای استفاده از -1. به عنوان مثال، گیرنده RakNet که از پورت UDP محلی 25570 استفاده میکند، نیاز دارد که port=25570 تنظیم شود.
voice_host را در صورتی تنظیم کنید که کلاینتها نیاز به آدرس عمومی یا پورت متفاوتی داشته باشند. برای روتری که UDP عمومی 25580 را به UDP محلی 25570 ارسال میکند، از پارامترهای port=25570 و voice_host=play.example.com:25580 استفاده کنید. آدرس عمومی باید در voice_host قرار داشته باشد. پارامتر bind_address مکان گیرنده محلی را انتخاب میکند.
Raknetify2 از طریق API Simple Voice Chat، سوکت UDP مشترک را فراهم میکند. Simple Voice Chat مسئولیت احراز هویت صوتی و رمزنگاری را بر عهده دارد. بازیکنان میتوانند از چت صوتی با استفاده از اتصالات TCP یا RakNet استفاده کنند.
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 با موفقیت شروع شده است و پورت صدا و آدرس اتصال آن با شنونده محلی آن مطابقت دارد.
اگر گزارش میدهد Multiple RakNet listeners match the voice bind address، یک آدرس محلی خاص مطابقتدهنده را در bind_address انتخاب کرده و مجدداً راهاندازی کنید.
تنها یک پلاگین Simple Voice Chat میتواند سوکت UDP خود را فراهم کند. اگر در زمان راهاندازی گزارش شود که پلاگین دیگری قبلاً سوکتی فراهم کرده است، باید انتخاب کنید که کدام سوکت را برای پیوستن استفاده کنید.
برای غیرفعال کردن یکپارچگی Raknetify2، مقدار {"enabled": false} را در پیکربندی صدا آن تنظیم کنید یا آن فایل را حذف نمایید. پورت UDP مخصوص Simple Voice Chat را جداگانه تعیین کنید، قوانین فایروال یا قوانین ارسال را بهروزرسانی کنید و سرور را دوباره راهاندازی نمایید.
اینها را به ترتیب بررسی کنید:
- کلاینت، ماژول صحیح Raknetify2 را برای نسخهی لودر و Minecraft خود دارد.
- سرور یا پروکسی که اتصال را میپذیرد، نرمافزار Raknetify2 را نصب کرده و بدون هیچ خطایی راهاندازی شده است.
- آدرس با
raknet;شروع میشود و از پورت عمومی UDP استفاده میکند. - ارائهدهنده خدمات میزبانی، روتر و فایروال میزبان، همگی امکان استفاده از پورت UDP را فراهم میکنند.
- آدرسهای IPv4 و IPv6 نام میزبان، به میزبان مورد نظر منتهی میشوند و قوانین فایروال آن سالم هستند.
یک اتصال TCP موفق، تنها مسیر TCP را تأیید میکند. برای بررسی انتقال UDP و دسترسی به IPv6، از پیکربندی فایروال و روتر** استفاده کنید. اگر پروتکل PROXY فعال باشد، کلاینتها باید از طریق یک پروکسی معتبر که پیکربندی شده است، به گیرنده دسترسی پیدا کنند.
بررسی کنید که آیا فرآیند دیگری از طریق پورت UDP در حال انجام است یا خیر. سرویسهای Geyser و سایر سرویسهای UDP به پورتهای جداگانهای نیاز دارند. سرویس Simple Voice Chat میتواند از [توافق پورتاتی shared-port استفاده کند.
شما میتوانید از طریق تنظیمات شنونده سرور مستقیم یا تنظیمات Velocity و BungeeCord، پورت UDP محلی دیگری را انتخاب کنید. نیاز به نسخه خاص برای تنظیمات Spigot/Paper را بررسی کنید. تغییر تنها پورت عمومی روتر، باعث ایجاد تداخل در سوکت محلی میشود.
دسترسی مستقیم به مقصد را با استفاده از آدرس raknet; آن انجام دهید. اگر این کار موفقیتآمیز نبود، ابتدا گیرنده مخاطب یا مسیر شبکه مقصد را اصلاح کنید.
اگر اتصالات مستقیم امکانپذیر باشند، بررسی کنید که آیا مقصد امکان دریافت انتقالات را میپذیرد یا خیر. یک سرور Minecraft که از server.properties استفاده میکند، باید 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 |
مجموعههای ذخیرهسازی و سایر تعاملات وابسته به دنیای Minecraft |
effects |
صداها و ذرات |
chunk |
بهروزرسانیهای مربوط به زمین، بلوکها و نورپردازی |
در هر گروه، بستهها در کانال خودشان بهطور قابلاعتماد و بهترتیب تحویل میشوند. بستههای گروههای مختلف ممکن است نسبت به هم به ترتیب دیگری برسند. گروه را بر اساس وابستگی دادهٔ سفارشی انتخاب کنید.
در فایل 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 ثبت کند. مستندات API PacketOrdering پیادهسازی ارائهدهنده را در بر میگیرد.
در صورت عدم وجود Raknetify2، Fabric این نقطه ورود را فراموش میکند. ارائهدهندگان خدمات باید هنگام مقداردهی اولیه، شناسهها و گروهها را اعلام کنند، بدون اینکه به ارائهدهندههای دیگر اعتماد کنند که مقداردهی خود را انجام داده باشند.
مادهای Forge و NeoForge و افزونههای سرور یا پراکسی میتوانند هنگام مقداردهی اولیه، اگر Raknetify2 در دسترس است، PacketOrdering.register(identifier, group) را فراخوانی کنند. این متد در کلاس com.ishland.raknetify.api.PacketOrdering است. پیش از پذیرش اتصال بازیکنان ثبت را انجام دهید. کد اتصال اختیاری نباید هنگام نبود Raknetify2 کلاسهای آن را بارگذاری کند.
اعلامیهها مربوط به اتصالات جدید هستند. اتصالات موجود، قوانینی را که در زمان راهاندازی دریافت کردهاند، حفظ میکنند. تکرار یک اعلامیه یکسان مجاز است. گروههای متناقض برای همان شناسه رد میشوند.
شناسهٔ دادهٔ سفارشی باید در یک فضای نام سفارشی معتبر باشد. فضای نام minecraft رزرو شده است. هر سر اتصال حداکثر ۱۲۸ تعریف میپذیرد؛ قواعد داخلی و ثبتهای سایر مادها هم در این تعداد حساب میشوند. هر شناسه طبق قالب شناسههای دارای فضای نام در API میتواند تا ۲۵۵ نویسهٔ ASCII داشته باشد.
دو طرفِ بهروزشدهٔ RakNet هنگام برقراری اتصال، تعریفهایشان را مبادله میکنند. اگر سرور یا پراکسی برای دادهٔ سفارشی قاعدهٔ محلی نداشته باشد، میتواند از تعریف طرف مقابل استفاده کند. قواعد محلی اولویت دارند و تعریفهای طرف مقابل فقط برای همان اتصال معتبرند.
برای اطلاعات مربوط به ریلیهای UDP و آدرسهای کلاینتهای ارسالی، به UDP forwarding و PROXY protocol مراجعه کنید.
برای تنظیم پروکسی Minecraft، به Velocity و BungeeCord مراجعه کنید.