Skip to content

Ыстық қайта жүктеу және уақыт өлшемдері ​

Модты өзгертіп, нәтижені әлемді қайта қоспай-ақ көріңіз. Сервер әкімшілері қай мод қанша уақыт жұмсайтынын да көре алады. Бұл бет сервер иелеріне де, мод авторларына да арналған.

Алдын ала нұсқа

Ыстық қайта жүктеу мен /mods timings Blockheads Server және PC нұсқасының әзірлеу құрастырмаларында бар.

Әкімші пәрмендері ​

Серверде /mods пәрменін әкімшілер (ойын чатында) және консоль қолдана алады:

ПәрменНе істейді
/modsмодтарды және олардың күйін тізімдейді
/mods reloadфайлдары өзгерген әр модты қайта жүктейді, жаңаларын іске қосады, файлдары жойылған модтарды тоқтатады
/mods reload <id>сол модты өзгерген-өзгермегеніне қарамай қайта жүктейді
/mods timings [id]әр шақыру түрі соңғы 60 секундта қанша уақыт алғанын көрсетеді
/mods timings reset [id]осы сандарды тазалайды

/mods кіріктірілген: ешбір мод бұл атауды қолдана алмайды, ал әкімші емес ойыншылар «You do not have permission» жауабын алады.

Қайта жүктеу не істейді ​

Қайта жүктелетін әр мод үшін:

  1. Пакет қайта оқылады (.bhmod файлы немесе ашылған қалта, сондай-ақ mods.toml). Жаңа нұсқа тіпті іске қосыла алмаса, ескісі жұмысын жалғастырады, ал пәрмен себебін айтады.
  2. Ескі нұсқаға on-disable беріледі. Ол тіркеген бәрі жойылады: оқиға өңдеушілері, пәрмендер, таймерлер, сервистер, арналар. Оның сақтауы жазылады.
  3. Жаңа нұсқа іске қосылғандағыдай басталады: сақталған деректері орнында, on-enable орындалады, содан кейін (тек сол модқа) world-loaded келеді.
  4. Оның қате санағышы мен уақыт сандары нөлден басталады.

Әлем, ойыншылар және басқа модтардың бәрі жұмысын жалғастырады.

Білуге болатындар:

  • Жаңа нұсқа on-enable ішінде құлап қалса (мысалы, қате жазу), мод өшірулі қалады, ал пәрмен қатені көрсетеді. Файлды түзетіп, /mods reload <id> пәрменін қайта орындаңыз.
  • Желіде бұрыннан бар ойыншылар қайта жүктелген модқа қайта жарияланбайды. Мод ойыншыларды бақылайтын болса, on-enable ішінде желідегі ойыншыларды оқыңыз.
  • Басқа мод қайта жүктеуге дейін bh.services.get арқылы алған сервис кейін ескіріп қалады. Оны шақыру stale service handle … call services.get again қатесімен бітеді. Сервисті қайта алыңыз немесе әрқашан жаңа нұсқаны табатын bh.services.call арқылы атымен шақырыңыз.
  • Мазмұн (косметика, заттар, блоктар) және native код қайта жүктелмейді. Серверді қайта қосу керек (клиентте жаңа ойын сессиясы).
  • Java модтары жаңа класс жүктеушісін алады. Java модының өзі іске қосқан ағындарды on-disable ішінде тоқтату керек.
  • Қосылып тұрған клиенттер өздерінде бар клиент бөлігін сақтайды. Кейін қосылған ойыншыларға жаңасы ұсынылады.

Мод жазу кезінде қайта жүктеу ​

Серверде BLOCKHEADS_MODS_WATCH=1 орнатыңыз. Сервер модтар қалтасын секундына шамамен екі рет тексеріп, өзгергенді файлдар өзгеруін тоқтатысымен қайта жүктейді. Журналда watch: my-mod: reloaded (0.1.0 -> 0.1.1) немесе сәтсіздік себебі шығады. BLOCKHEADS_MODS_DIR айнымалысын ашылған мод қалтаңыз тұрған қалтаға бағыттаңыз (ішінде mod.toml бар қалта жарайды) да өңдеңіз.

PC нұсқасында әзірлеуші режимін қосып, мод қалтасын іске қосқышқа қосыңыз. Іске қосқыш файлдар өзгергенде қайта жүктейді, ал ойындағы F5 мұны қолмен істейді. Тек өзгерген модтар қайта басталады; сіз әлемде қаласыз.

Уақыт өлшемдері ​

/mods timings «бұл мод серверімді баяулатып жатыр ма?» деген сұраққа жауап береді:

text
Mod timings over the last 60 s (times in ms, inclusive of nested calls):
landclaim [enabled]: 412 calls, 18.40 ms total, 3 budget hits, strikes 0 now / 0 since reset
  event: 380 calls, total 15.10, avg 0.04, max 2.10, over soft 0, timeouts 0, errors 0
  command: 4 calls, total 1.90, avg 0.48, max 0.90, over soft 0, timeouts 0, errors 0
  task: 28 calls, total 1.40, avg 0.05, max 6.20, over soft 3, timeouts 0, errors 0
  • Түрлері: event (ойын және өз оқиғалары), command, task (таймерлер), service (басқа модтардан немесе екінші жақтан модқа шақырулар), channel (хабарлар), lifecycle (on-enable және on-disable).
  • avg және max бір шақыруға есептеледі. Шақыру уақыты ол шақырған модтардың уақытын да қамтиды.
  • over soft 5 мс-тан ұзақ шақыруларды (журналда ескерту), timeouts 25 мс-та тоқтатылған шақыруларды, errors сәтсіз аяқталған шақыруларды санайды.
  • strikes — модты өшіруге жақындататын қателер (60 с ішінде 3). reset есепті тазалайды, қателерді кешірмейді.

PC нұсқасында F9 арқылы Модтар панелін ашып, дәл сол сандарды көру үшін T басыңыз (R немесе «Reset» батырмасы тазалайды, T қайта журналға қайтарады).

Авторларға: сандар bhmod-core ішінен келеді (docs/hot-reload.md), сондықтан сервер, PC нұсқасы және Android жүктеушісі бірдей есеп береді.

Ресми емес қауымдастық жобасы. Majic Jungle Software немесе Noodlecake компанияларымен байланысы жоқ. Ойын файлдары қамтылмаған.