Hytale Server API Reference: Események, üzenetek és plugin fejlesztési útmutató

Név Kategória: név : perc min read

Master Hytale szerver fejlesztés átfogó API referenciával. Ismerje meg a PlayerConnect Esemény, PlayerDisconnect Esemény, az üzenet osztály chat formázás, parancs regisztráció, és épület az első plugin segítségével Legacy Engine Java-alapú architektúra.

< h2 > A Hytale Server architektúra megértése < / h2 > < p > A Hytale szerver API épül egy robusztus Java-alapú architektúra, amely úgy érzi, ismerős mindenki számára, aki dolgozott Minecraft kiszolgáló bővítmények. A legacy motorhoz való visszatéréssel a fejlesztők most már hozzáférnek egy érett, jól bevált kódhoz, amely prioritásként kezeli az akadálymentesítést a cross-platform komplexitása felett. < / p > < p > A szerver szívében a < erős > com.hypixel.hytale.server.core < / strong > csomag található, amely minden szerverside művelet alapját képezi. Ez magában foglalja a játékosok kezelését, a világ kezelését, az események feladását és a parancsfeldolgozást. < / p > < h2 > Player Connection Események: Kezelés Csatlakozás és elhagyás < / h2 > < p > A szerver plugin egyik leggyakoribb követelménye, hogy reagáljon a játékosokra, akik csatlakoznak vagy távoznak. A Hytale API két lényeges eseményt biztosít e célból. < / p > < h3 > PlayerConnectEvent < / h3 > < p > Kirúgva, ha egy játékos sikeresen csatlakozik a szerverhez, ez az esemény hozzáférést biztosít a játékos referenciájához, mielőtt teljesen kipottyan a világba. A legfontosabb tulajdonságok közé tartozik: < / p > < ul > < li > < strong > playerHif < / strong > - A PlayerHip példány, amely UUID-t, felhasználónevet és hálózati infót tartalmaz < / li > < li > < erős > játékos < / erős > - A játékos entitás, amely képviseli őket a világban < / li > < li > < strong > world < / strong > - A Világ példánya < li > < strong > holder < / strong > - A gazdálkodó egység tulajdonjoga az alkatrészekhez való hozzáféréshez < / li > < / ul > < p > Néhány más eseménytől eltérően, PlayerConnect Esemény < em > nem törölhető < / em >. Ha meg kell akadályoznod, hogy egy játékos csatlakozzon, akkor ezt a hitelesítési rétegben kell kezelned. < / p > < pre > < kód > esemény Registr.register (PlayerConnectEvent:: classi.java) {esemény - > Val player = event.playerHif logger.info ("A játékos csatlakoztatva: ${player.username}") / / Üdvözlő üzenet küldése player.sendMessage (Message.raw ("Üdvözöljük a szerveren!")) } < / kód > < / pre> < h3 > PlayerDisconnectEvent < / h3 > < p > Ha egy játékos elhagyja a szervert, ez az esemény fontos kontextust tartalmaz < em > miért < / em > elválasztva: < / p > < ul > < li > < strong > playerHif < / strong > - Az induló játékos referenciája < / li > < li > < erős > disconnectReason < / strong > - Enum jelzi időkiesés, rúgás, kilépés, vagy szerver leállítása < / li > < / ul > < p > Ez az esemény nem törölhető, mivel a megszakítás hálózati szinten már megtörtént. < / p > < h2 > The Message Class: Rich Text Formatting < / h2 > < p > A szerver tulajdonosai, akik polírozott chat élményeket akarnak létrehozni, jelentős időt töltenek majd az üzenet osztállyal. A központi üzenetcsomagban található API-t biztosít a formázott szöveghez. < / p > < h3 > Alapüzenet létrehozása < / h3 > < előre > < kód > / / Egyszerű szöveges üzenet Val msg = Message.raw ("Hello, világ!") / / Színformázással Val styled = Message.raw ("Fontos!") .color ("piros") .bold (true) .dőlt (hamis) Monospace (true) < / code > < / pre> < h3 > Paraméter szubsztitúció < / h3 > < p > Dinamikus tartalom esetén használja a paramétereket: < / p > < pre > < code > val welcome = Message.raw ("Üdvözöljük, {name}! Vannak érmék".) .param ("name", player.username) Param ("érmék", playerData.coinBalance.toString ()) < / kód > < / pre> < h3 > Clicable Links < / h3 > < p > Üzenetek lehetnek kattintható hiperlinkek: < / p > < pre > < code > val connected = Message.raw ("Kattintson ide, hogy látogasson el honlapunkra") .link ("https: / / example.com") < / code > < / pre > < h2 > Eseménynyilvántartási minták < / h2 > < p > A Hytale eseményrendszer a szinkron és az aszinkron eseménykezelést egyaránt támogatja, így a fejlesztők a teljesítményigényeik alapján rugalmassá válnak. < / p > < h3 > Szinkron Regisztráció < / h3 > < p > Azonnali feldolgozásra szoruló események esetén: < / p > _ BAR _ _ BAR _ _ BAR _ _ BAR _ _ BAR _ _ BAR _ _ BAR _ _ BAR _ _ BAR _ {esemény - > Ha (esemény. Típus = = ActionType.RIGHT _ CLICK) { / / A kölcsönhatás feldolgozása esemény. beállított (igaz) } } < / kód > < / pre> < h3 > Aszinkron Regisztráció < / h3 > < p > A fő szálról feldolgozható események (mint a chat moderation): < / p > < pre > < kód > esemény Registry.registerAsync (PlayerChatEvent:: classi.java) {jövő - > A jövő. {esemény - > / / Az async chat szűrés befejezése ha (consBannedWords (event.content)) { esemény. beállított (igaz) } esemény } } < / kód > < / pre> < h2 > Gyakori Eseményreferenciatáblázat < / h2 > < p > Itt egy gyors referencia a leggyakrabban használt események szerver fejlesztés: < / p > < táblázat > < fej > < tr > < th > Eseménynév < / th > < th > Kulcstulajdonságok < / th > < / tr > < / fej > < tbody > < tr > < td > PlayerConnectEvent < / td > < td > < / td > < td > playerHif, player, world, holder < / td > < / tr > < tr > < td > PlayerDisconnectEvent < / td > < td > < / td > < td > playerHif, disconnectReason < / td > < / tr > < tr > < td > PlayerChatEvent < / td > < td > Igen (Async) < / td > < td > feladó, cél, tartalom, forma > < / tr > < tr > < td > PlayerInteract Event < / td > < td > Igen < / td > < td > játékos, akció Típus, itemInHand, TargetBlock, TargetEntity < / td > < / tr > < tr > < td > PlayerDeathEvent < / td > < td > Nem < / td > < td > játékos < / td > < / tr > < tr > < td > PlayerRespawnEvent < / td > < td > Nem < / td > < td > játékos < / td > < / tr > < tr > < td > BreakBlockEvent < / td > < td > Igen < / td > < td > tétel InHand, targetBlock, blockType < / td > < / tr > < tr > < td > PlaceBlockEvent < / td > < td > Igen < / td > < td > itemInHand, targetBlock, rotációs < / td > < / tr > < tr > < td > DamageBlockEvent < / td > < td > Igen < / td > < td > tétel InHand, targetBlock, currentDamage, default < / td > < / tr > < tr > < td > DropItemEvent < / td > < td > Igen < / td > < td > tétel, hely < / td > < / tr > < tr > < td > CraftRecipeEvent < / td > < td > Igen < / td > < td > craftedRecpe, mennyiség < / td > < / tr > < / test > < / táblázat > < h2 > Építési egyéni parancsok < / h2 > < p > A parancsrendszer lehetővé teszi, hogy regisztrálj sp parancsokat, amiket a játékosok a chat-ben hajthatnak végre. < / p > < h3 > Alapparancs végrehajtása < / h3 > < pre- > < kód > osztály MyCommand: Command {Name felülíró szórakoztató getName (): sztring = "mycommands" felülbírálja a szórakoztató végrehajtást (feladó: CommandSender, args: Array & lt; String & gt;) { sender.sendMessage (Message.raw ("Hello az én egyedi parancs!")) } } / / Regisztráljon a plugin beállítási fázisában CommandRegistr.registerCommand (MyCommand ()) < / Code > < / pre> < h3 > A parancskezelő használata < / h3 > < p > Programosan is végrehajthatod a parancsokat: < / p > < pre > < kód > val commandManager = CommandManager.get () CommandManager.handleCommand (feladó, "időnap") < / kód > < / pre> < h2 > Plugin Életciklus és szerkezet < / h2 > < p > Minden Hytale szerver plugin kiterjeszti a JavaPlugin alaposztály, amely alapvető regiszterek és életciklus kampók. < / p > < h3 > Plugin Életciklus-fázisok < / h3 > < ol > < li > < erős > Építés < / erős > - Plugin osztály instantiation < / li > < li > < erős > PreLoad < / erős > - Szinkron inicializáció a szerver indítása előtt < / li > < li > < erős > Beállítás < / erős > - Regisztráljon komponenseket, eseményeket és parancsokat < / li > < li > < erős > Start < / erős > - A kiszolgáló készen áll a < / li > játékosok fogadására < li > < erős > Shutdown < / erős > - Tisztítás, mielőtt a kiszolgáló megáll < / li > < / ol > < h3 > Key Plugin tulajdonságok < / h3 > < előre > < kód > / / Elérhető a plugin osztályban logger: HytaleLogger / / Naplózási képesség PluginManifest? / / Plugin metaadatok a manifeszt fájlból Eseménynyilvántartás: Regisztrátor / / Regisztráló eseménylisták CommandRegistry: CommandRegistry / / Parancsok regisztrálása adatok A honlap fordítása: Path / / Bővítőmodul tárolási helye feladatjegyzék: A feladatnyilvántartás / / Tervezett feladatkezelés < / kód > < / pre> < h3 > Konfigurációs Helper < / h3 > < p > A bővítmények könnyen betölthetik a JSON konfigurációs fájlokat: < / p > < előre > < kód > / / Az alapértelmezett konfiguráció használata json Val config: Config & lt; MyConfigClass & gt; = Config (MyConfigClass.CODEC) / / Egyedi fájlnév használata Val config: Config & lt; MyConfigClass & gt; = Config ("custom- name.json", MyConfigClass.CODEC) < / kód > < / pre> < h2 > A játékosokkal való munka < / h2 > < p > A PlayerRef osztály az elsődleges interfész a csatlakoztatott játékosokkal való kapcsolattartáshoz. < / p > < h3 > Játékos identitás és elhelyezkedés < / h3 > < pre > < code > val lejátszó: PlayerHif = event.playerHif / / Azonosító Val uid: UUID = player.uuid Val name: String = player.username val nyelv: sztring = játékos nyelv / / Pozíció ValTransform = player.translation Val worldUuid: UUID = player.worldUid Val headRotation: Vector3f = player.headRotation < / code > < / pre> < h3 > A játékoshoz való hozzáférés < / h3 > < p > A mélyebb interakciókért, mint például a leltárkezelés, a játékos entitása: < / p > < pre > < kód > val playerEntity: Player = player.entity / / Leltározási műveletek Val leltár: Leltár = playereculty.leltár playereticty.sendInventory () / / UI vezetők Val hotbar = playeretecty.hotbarManager Val windows = playeretecty.windowManager Val pages = playeretecty.page Manager Val hud = playeretecty.hudManager / / Engedélyek Val canBuild: Boolean = playereticty.hasLEAL ("server.build") < / code > < / pre> < h2 > Világ- és világegyetemkezelés < / h2 > < p > Az Univerzum singleton hozzáférést biztosít minden világhoz és kapcsolódó játékoshoz. < / p > < pre > < kód > val universe = Universe.get () / / A játékos hozzáférése Val allPlayers: List & lt; PlayerHif & gt; = universe.players Dalplayer Számolás: Int = universe.playerCount Val specific Player: PlayerHif? = universe.getPlayer (uuid) / / Világhozzáférés Val worlds: Térkép & lt; String, Világ & gt; = univerz.worlds Val- alapértelmezés Világ: Világ? = Universe.defaultWorld Val-specifikus Világ: Világ? = Universe.getWorld ("my- world") / / Világvezetés Val newWorld: Complatable Future & lt; World & gt; = universe.addWorld ("new-world") Val loaded: Completable Jövőbeli & lt; Világ & gt; = Universe.loadWorld ("létező világ") < / kód > < / pre> < h3 > Szálas biztonsági figyelmeztetés < / h3 > < p > A komponenshez való hozzáférésnek a világszinten kell történnie. Mindig wrap műveletek a végrehajtási blokk: < / p > < pre > < kód > világ. { / / Biztonságos alkatrész hozzáférés itt Val entities = world.getEntities () } < / kód > < / pre> < h2 > A szerver fejlesztőinek lépései < / h2 > < p > Ezzel az API hivatkozással, mint az alapítványod, készen állsz a Hytale szerver bővítmények megépítésére. A következő kulcsfontosságú források: < / p > < ul > < li > A szervezet komponens rendszere (ECS) a fejlett gazdálkodó egység manipulációjára < / li > < li > Beépített modulok, például NPC-k, portálok és Quest rendszerek < / li > < li > A vizuális scripting rendszer játék viselkedés < / li > < li > Hálózati protokoll egyedi csomagkezeléshez < / li > < / ul > < p > Ne feledje, hogy ahogy a Hytale áthalad a korai elérésen, az API fejlődhet. Maradj kapcsolatban a közösséggel és a hivatalos dokumentációval, ahogy alakul. < / p >