Ыстық қайта жүктеу және уақыт өлшемдері
Модты өзгертіп, нәтижені әлемді қайта қоспай-ақ көріңіз. Сервер әкімшілері қай мод қанша уақыт жұмсайтынын да көре алады. Бұл бет сервер иелеріне де, мод авторларына да арналған.
Алдын ала нұсқа
Ыстық қайта жүктеу мен /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» жауабын алады.
Қайта жүктеу не істейді
Қайта жүктелетін әр мод үшін:
- Пакет қайта оқылады (
.bhmodфайлы немесе ашылған қалта, сондай-ақmods.toml). Жаңа нұсқа тіпті іске қосыла алмаса, ескісі жұмысын жалғастырады, ал пәрмен себебін айтады. - Ескі нұсқаға
on-disableберіледі. Ол тіркеген бәрі жойылады: оқиға өңдеушілері, пәрмендер, таймерлер, сервистер, арналар. Оның сақтауы жазылады. - Жаңа нұсқа іске қосылғандағыдай басталады: сақталған деректері орнында,
on-enableорындалады, содан кейін (тек сол модқа)world-loadedкеледі. - Оның қате санағышы мен уақыт сандары нөлден басталады.
Әлем, ойыншылар және басқа модтардың бәрі жұмысын жалғастырады.
Білуге болатындар:
- Жаңа нұсқа
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 «бұл мод серверімді баяулатып жатыр ма?» деген сұраққа жауап береді:
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 жүктеушісі бірдей есеп береді.