Hytale Modding API: راهنمای توسعه کامل سرور

By HytaleCharts Team Category: guides 7 min read

همه چیز شما باید شروع به ساخت افزونه های سرور Hytale کنید. این راهنما شامل تنظیمات جاوا 25، چرخه عمر پلاگین، سیستم رویداد دوگانه (EventBus + ECS)، ثبت نام فرمان، اجزای سازمانی، فرمت مانیفست.json و استقرار به CurseForge است.

سیستم پلاگین سرور Hytale به توسعه دهندگان کنترل عمیقی بر تمام جنبه های بازی می دهد. اگر افزونه های Bukkit یا Spigot را برای Minecraft نوشته اید، انتقال ساده است – اما معماری Hytale اساساً متفاوت است. این راهنما شما را از طریق همه چیز از تنظیمات اولیه تا استقرار تولید پیاده می کند. Architecture قبل از نوشتن هر کد، درک کنید که چگونه تنظیم Hytale کار می کند: مشتری یک رندر کننده است. مشتری Hytale’s C# گرافیک، ورودی و صدا را کنترل می کند، اما هیچ منطق بازی ندارد. همه شبیه سازی ها بر روی سرور جاوا اجرا می شوند، حتی در تک نفره. همه چیز سرور است. هنگامی که بازیکنان به یک سرور اصلاح شده، دارایی های سفارشی و جریان رفتار به طور خودکار ملحق می شوند. نیازی به تنظیمات مشتری نیست. چهار دسته بندی وجود دارد: دارایی های داده (JSON)، دارایی های هنری (مدل های Blockbench)، پلاگین های سرور (Java)، و اسکریپت نویسی بصری (به زودی) پلاگین های Server قدرتمندترین دسته هستند – آنها دسترسی کامل جاوا را به سرور زمان اجرا می دهند، از جمله سیستم اجزای Entity، خط لوله رویداد، چارچوب فرمان و دستکاری جهانی. راه اندازی محیط زیست Prerequisites ToolVersionNotes java25+ Hytale از ویژگی های مدرن از جمله موضوعات مجازی (Project Loom) استفاده می کند. IntelliJ IDEACommunity یا UltimateRecommrated IDE – Free Community Edition به خوبی کار می کند Gradle9.2.0+Build system (شامل قالب پلاگین) هر نسخه اخیر برای جمع آوری قالب رسمی Clone the Official Template Hypx Studios یک قالب پلاگین رسمی در GitHub فراهم می کند: git Clone https://github.com/HytaleModding/plugin-template My FirstPlugin پروژه را در IntelliJ IDEA باز کنید و اجازه دهید همگام سازی Gradle. قالب شامل ساختار دایرکتوری صحیح، پیکربندی و وابستگی های API سرور است. Alternatively، HytaleIO Project Generator در Hytaleio.com/Project-generator می تواند پروژه Plugin، Mod یا Full (combo) را با یک UI وب ایجاد کند. ساختار هر افزونه Hytale این طرح دایرکتوری را دنبال می کند: شما s src/main/java/com/yourname/yourplugin// │ YourPlugin java # نقطه ورودی اصلی ├── src/main/resources آشکار است. json # Plugindata (نیاز) دارایی های مشترک / مشترک (مدل ها، بافت ها) │ سرور/ # Server-side data Asset ساخت.gradle.kts تنظیمات.gradle.kts └── درجه بندی.properties manifest.json هر پلاگین نیاز به manifest.json در ریشه JAR کامپایل شده دارد. این معادل Hytale’s plugin.yml است: { "Group": "com.yourname" «نام»: «PluginName» "Main": "com.yourname.yourepin. yourPlugin" "Version": "1.0.0" “Description”: “آنچه پلاگین شما انجام می دهد” نویسنده: «نام» "ServerVersion" : " » پرداخت ها » : {} گزینه های اختیاری: {} «پیش از آن»: «مشرکان» : دروغ "IncludesAssetPack" : کاذب } شناسه پلاگین به عنوان تشکیل شده است. گروه:Name (به عنوان مثال، com.yourPluginName) Main فیلد به کلاس ورودی شما اشاره می کند - این اشتباه را دریافت کنید و افزونه بارگیری نخواهد شد. Plugin Lifecycle کلاس اصلی شما JavaPlugin را گسترش می دهد و دارای چهار مرحله چرخه عمر است: کلاس شما افزونه Plugin گسترش می یابد JavaPlugin { عمومی شما Plugin (@ nonnull JavaPluginInit) آری؛ (.info ("Plugin Built") 😉 @ Override تنظیمات خالی عمومی () { // مرحله دوم: ثبت حوادث، دستورات، سیستم های ECS // این جایی است که اکثر کد ثبت نام شما می رود. 😉 @ Override شروع خالی عمومی () { // مرحله 3: سرور برای بازیکنان آماده است // شروع وظایف برنامه ریزی شده، اتصالات باز 😉 @ Override تعطیلی عمومی () { // مرحله 4: تمیز کردن قبل از اینکه سرور متوقف شود // ذخیره داده ها، اتصالات نزدیک، لغو وظایف 😉 } مرحله Method چه کارهایی باید انجام دهید 1 ابتدایی سازی پایه، ورود 2 راه اندازی setup() ثبت نام رویدادها، دستورات، اجزای ECS و سیستم ها 3. Start Start() وظایف را شروع کنید، سرور بازیکنان را قبول می کند 4. Silentdownshutdown() ذخیره داده ها، پاک کردن منابع سیستم رویداد دوگانه این مهم ترین مفهوم برای درک است. Hytale دارای دو سیستم رویداد جداگانه است و استفاده از اشتباه یک اشتباه رایج است. Event اتوبوس: Global Server Events حتیtBus رویدادهای گسترده سرور مانند اتصالات بازیکن، چت و بارگیری جهانی را کنترل می کند. EventRegistry ارائه شده به پلاگین شما: @ Override تنظیمات خالی عمومی () { رویداد جهانی Synchronous دریافت کننده (.registerGlobal) بازی PlayerReadyEvent رویداد > getLogger().info ("Player به آن پیوست: " + رویداد.getPlayer().get Username() 😉 ) رویداد Async (مانند PlayerChatEvent) دریافت کننده (.registerAsyncGlobal) ClassChat آینده > آینده پس از آن (تعهد) اگر (حتی با استفاده از (Spam) { نام بازی: SetCancelleded (True)؛ 😉 😉 😉 ) } Cl Event رویدادهای اتوبوس: PlayerConnectConnectt / Player Disconnectt چرخه عمر اتصال PlayerReadyevent بازیکن به طور کامل بارگذاری و آماده PlayerChatt – پیام های چت (async, cancellable) AddPlayerToWorldevent – بازیکنی که وارد جهان می شود StartWorldevent / AddWorldEvent / RemoveWorld Event مدیریت جهانی اولویت های رویداد: استفاده از EventPriority EARLY برای اجرای اول و اصلاح رویدادها قبل از اینکه دیگران آنها را ببینند. استفاده از EventPriority LATE برای دیدن وضعیت نهایی پس از پردازش همه طرف های دیگر. ECS حوادث - اقدامات اجباری Entity-level Events مانند شکستن بلوک، قرار دادن بلوک و آسیب از طریق Entity Component System، نه EventBus. شما یک ایجاد می کنید. Entityt System: Public Class BlockBreakHandler گسترش Entity System @ Override عمومی Query دریافت Query() { * اشخاص هدف با اجزای خاص بازگشت Query.builder() 😉 @ Override کلاس < عمومی:BreakBlockevent >؛ getEventType() { بازگشت بازگشت دانلود بازی BreakBlockEvent 😉 @ Override دسته خالی عمومی (EntityStore) سوگند به نفس شکستن Block رویداد رویداد) // فرآیند شکستن بلوک // لغو در فاز فیلتر، نه اینجا 😉 } Critical Rule: فقط رویدادهای ECS را در طول فاز فیلتر کنید. کنترل در مرحله بازرسی هیچ تاثیری ندارد زیرا این اقدام در حال حاضر اتفاق افتاده است. Entity Component System (ECS) Hytale از معماری ECS سفارشی استفاده می کند. درک این موضوع برای هر پلاگین غیر بخار ضروری است. Concepts Entity – فقط یک ID منحصر به فرد، حاوی هیچ گونه داده ای به نام Component – ظرف داده های خالص متصل به یک نهاد System منطق که نهادها را با ترکیبات خاص پردازش می کند - مدیریت ایمن به یک نهاد (هرگز منابع سازمانی مستقیم را ذخیره نکنید) Store – مدیریت نهادهای با استفاده از Archetypes برای طرح حافظه کارآمد Options Public Class Score پیاده سازی داده ها بخش امتیاز عمومی = 0 تیم رشته عمومی = " مدت زمان های طولانی در = System.currentTimeMillis (); @ Override Public ScoreData Clone() { نسخه ScoreData = New ScoreData (); کپی: این کپی تیم = این کپی پیوستن در = این.joined در بازگشت کپی؛ 😉 } Components باید clone() را پیاده سازی کنند. آنها را به موسسات برای ذخیره داده های سفارشی - نمرات، تیم ها، خنک کننده ها، مخترعان یا هر حالت خاص بازی متصل کنید. بازی PlayerRef/h3> A "Player" در Hytale یک کلاس ویژه نیست - این یک نهاد متشکل از اجزای است. PlayerRef در واقع یک جزء است که نام کاربری بازیکن، UUID، زبان و کنترل کننده شبکه را ذخیره می کند. تا زمانی که بازیکن متصل شود فعال می شود. ثبت نام Commands رابط Command را پیاده سازی می کنند: کلاس عمومی Spawn فرمان فرمان فرمان را اجرا می کند. @ Override گزینه Public String GetName() (بازگشت به “spawn”؛ @ Override اجرای عمومی (CommandSender فرستنده، رشته[۱]) اگر (بازیگر بازیگر) // بازی Teleport Player برای تولید فرستنده (Teleporting to Cause) 😉 😉 😉 ثبت نام در تنظیمات() دستور Registry.registerCommand (جدید Spawnmand())؛ Both Player و CommandSender پشتیبانی از has Permission()check. سیستم مجوز داخلی از مجوز سطح کاربر، ارث گروهی و تطبیق کارت های وحشی پشتیبانی می کند. Build و Deploy ساخت خروجی JAR به build/libs/ می رود. Deployment Paths Platform Re Directory Windows (local)%AppData%/Roaming/Hytale/User/data/Mods/ Linux server/opt/hytale/Server/mods/ Hot reload به طور جزئی برای تغییرات جزئی پشتیبانی می شود - استفاده از Ctrl+F9 در Intelli برای بازسازی بدون شروع مجدد کامل تغییرات عمده نیاز به راه اندازی مجدد سرور دارند. EventRegistry به طور خودکار هنگامی که یک پلاگین تخلیه می شود، دستگیره ها را تمیز می کند. Publishing to CurseForge CurseForge سه نوع را به رسمیت می شناسد: Packs – بسته های دارایی/content (اطلاعات، مدل ها، بافت ها) Plugins – فایل های جاوا JAR با استفاده از API Early Plugins – افزونه های بوت استرپ برای تغییرات سطح پایین کلاس (advanced, Use Sparingly) Community Resources جامعه مدینگ مستندات گسترده ای را فراتر از آنچه که استودیو هی پیکسل ارائه می دهد، ساخته است: ResourceFocus Hytalemrousing.dev راهنماها، docs، ابزارها – 8000+ عضو Discord Britrace Studios GitBookComprehensive آموزش های تست شده برای بسته ها و پلاگین ها HytaleDocs.comCommunity wiki و API مرجع Hytale-Toolkit (GitHub)Decompiled Source، javadocs، جستجوی کد معنایی Patcher (GitHub) مرور سرور JAR به عنوان یک پروژه IntelliJ Note: سرور JAR گمراه نیست و می تواند آزادانه از بین برود. استودیوی هی پیکسلی متعهد به آزاد کردن کد منبع سرور کامل در عرض 1 تا 2 ماه از راه اندازی EA است. What’s Coming Server source code انتظار می رود تا 2026 -Visual Scripting – اسکریپت مبتنی بر گره برای غیر برنامه نویسان (شبیه به غیرواقعی) Development bounties – Hywich Studios قصد دارد برای کمک های اجتماعی گسترش مستندات رسمی – به عنوان ناقص شناخته شده است و بر اساس بازخورد جامعه گسترش یافته است. Ready برای استقرار پلاگین شما؟ سرور تنظیم شده خود را در