{"id":341631,"date":"2022-11-24T03:00:06","date_gmt":"2022-11-24T03:00:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=341631"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=341631","title":{"rendered":"<span>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0430\u0434\u0434\u043e\u043d\u043e\u0432 \u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u2014 minecraft<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044c \u0442\u0435\u043c\u0443 \u0430\u0434\u0434\u043e\u043d\u043e\u0432. \u041c\u043d\u043e\u0433\u0438\u043c \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432 \u0438\u0433\u0440\u0435, \u0438 \u043e\u043d\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u0430\u0434\u0434\u043e\u043d\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0434\u043e\u043d \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0437\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439, \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435 \u0435\u0433\u043e. \u042f, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0434\u0434\u043e\u043d \u0432 minecraft bedrock. \u0415\u0441\u043b\u0438 \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u0430\u0434\u0434\u043e\u043d, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0440\u044b\u043d\u043e\u043a. \u0417\u0430\u043c\u0430\u043d\u0447\u0438\u0432\u043e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0432\u043e\u0451. \u041f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 json \u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 javascript. <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 myaddon \u043f\u043e \u043f\u0443\u0442\u0438 <code>android\/data\/com.mojang...\/files\/\/games\/com.mojang\/behaivor_packs<\/code>                                                \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>games\/com.mojang...\/...<\/code>                      \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438, \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0430. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 manifest.json, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u0430\u043f\u043a\u0435. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0438\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<\/p>\n<pre><code class=\"json\">{     \"format_version\": 1,     \"header\": {         \"description\": \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0434\u0434\u043e\u043d\u0430\"         \"name\": \"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0434\u0434\u043e\u043d\u0430\",         \"uuid\": \"\u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u044e\u0434\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",         \"version\": [ 1, 0, 5 ],         \"min_engine_version\": [ 1, 17, 10 ]     },     \"modules\": [         {             \"description\": \"\",             \"type\": \"data\",             \"uuid\": \"\u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u044e\u0434\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",             \"version\": [1, 0, 0]         }     ] }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, uuid \u044d\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0430\u0434\u0434\u043e\u043d\u0430. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0439\u0434\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 uuidgener*tor.net, \u044f \u043d\u0435 \u0445\u043e\u0447\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e &#171;\u0430&#187; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b &#171;*&#187;. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0443 \u043d\u0430\u0448\u0435\u043c\u0443 \u0430\u0434\u0434\u043e\u043d\u0443, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0430\u0434\u0434\u043e\u043d\u0430 \u0444\u0430\u0439\u043b pack_icon.jpg \u0438\u043b\u0438 pack_icon.png. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b, \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043c &#8212; \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0438\u0440\u0430 \u0432 &#171;\u043d\u0430\u0431\u043e\u0440\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432&#187; \u0435\u0441\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0430\u0434\u0434\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0451 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439. <\/p>\n<p>Function &#8212; \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0430\u0434\u0434\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u0447\u0430\u0442 \u0432\u0432\u0435\u0434\u0451\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \/function myfunction, \u0432\u0430\u043c \u0434\u0430\u0434\u0443\u0442 \u0438 \u044f\u0431\u043b\u043e\u043a\u043e, \u0438 \u0434\u0435\u0440\u0435\u0432\u043e. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 function \u0434\u0430\u0436\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u043d\u0442\u0438\u0447\u0438\u0442\u044b, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 minecraft bedrock. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0430\u0434\u0434\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0430\u0434\u0434\u043e\u043d\u0430 \u043f\u0430\u043f\u043a\u0443 functions. \u0412 \u043d\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u0442\u0435 myfunction.mcfunction, \u0432\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f myfunction. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u0434.<\/p>\n<pre><code>#\u0432\u044b\u0434\u0430\u0442\u044c \u0432\u0441\u0451\u043c \u044f\u0431\u043b\u043e\u043a\u043e give @a apple  #\u0432\u044b\u0434\u0430\u0442\u044c \u0432\u0441\u0435\u043c \u0434\u0435\u0440\u0435\u0432\u043e give @a log  #\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u0431\u043e\u0440\u0434 scoreboard objectives add my score dummy<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \/function ****. \u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0432\u0435\u0434\u0451\u0442\u0435 \/function myfunction, \u0432\u0441\u0435\u043c \u0438\u0433\u0440\u043e\u043a\u0430\u043c \u0432 \u043c\u0438\u0440\u0435 \u0434\u0430\u0434\u0443\u0442 \u044f\u0431\u043b\u043e\u043a\u043e \u0438 \u0434\u0435\u0440\u0435\u0432\u043e, \u0430 \u0435\u0449\u0451 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0441\u043a\u043e\u0440\u0431\u043e\u0440\u0434. \u0427\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043a \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u043d\u0435 \u0432\u0432\u043e\u0434\u044f \u0435\u0451 \u0432 \u0447\u0430\u0442 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0435 function \u0444\u0430\u0439\u043b tick.json. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043a. \u0412\u0432\u0435\u0434\u0451\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 json \u043a\u043e\u0434<\/p>\n<pre><code class=\"json\">{   \"values\": [     \"myfunction\"   ] }<\/code><\/pre>\n<p>\u0442\u0435\u043f\u0435\u0440\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f myfunction \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043a. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u043e\u0434\u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u044d\u0442\u043e 20 \u0442\u0438\u043a\u043e\u0432. <\/p>\n<p>\u0418\u0434\u0451\u043c \u0432\u0441\u0451 \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u0447\u0430\u0442. \u0412\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0434\u0430\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0442, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u043d\u0433\u0438, \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c. \u0422\u0443\u0442 \u0432\u0441\u0451 \u0432 \u043e\u0434\u043d\u043e\u043c \u0430\u0434\u0434\u043e\u043d\u0430 &#8212; \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c, \u0440\u0430\u043d\u0433\u0438 \u0432 \u0447\u0430\u0442\u0435 \u0438 \u0442\u0434. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c manifest.json, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 javascript. <\/p>\n<pre><code class=\"json\">{    \"format_version\": 2,    \"header\": {      \"name\": \"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0430\",      \"description\": \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0430\",      \"uuid\": \"\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",      \"version\": [ 1, 0, 3 ],      \"min_engine_version\": [ 1, 14, 0 ]    },    \"modules\": [      {        \"description\": \"made by habr @DinoZavr2\",        \"type\": \"data\",        \"uuid\": \"\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",        \"version\": [ 1, 0, 0 ]      },      {        \"description\": \"\",        \"language\": \"javascript\",        \"type\": \"script\",        \"uuid\": \"\u0422\u0440\u0435\u0442\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",        \"version\": [0, 0, 1],        \"entry\": \"scripts\/main\/index.js\"      }    ],    \"dependencies\": [      {        \"uuid\": \"\u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",        \"version\": [ 0, 1, 0 ]      },      {        \"uuid\": \"\u041f\u044f\u0442\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",              \"version\": [ 0, 1, 0 ]      }    ]  }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0431\u0440\u0430\u0442\u044c. \u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f 5 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0439\u0434\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0443\u0442\u044c \u043a \u0438\u043d\u0434\u0435\u043a\u0441\u0443. \u0412\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. <\/p>\n<p>\u0412 \u043f\u0430\u043f\u043a\u0435 \u0430\u0434\u0434\u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 scripts, \u0432 \u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u044b (\u0442\u043e\u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e). \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0435 scripts \u043f\u0430\u043f\u043a\u0443 main. \u0412 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b index.js, \u044f\u0437\u044b\u043a\u0430 javascript. \u042d\u0442\u043e \u043d\u0430\u0448 \u0438\u043d\u0434\u0435\u043a\u0441. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0443\u0434\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n<pre><code class=\"javascript\">import { chatrank } from '.\/misc\/chat.js' import { world } from 'mojang-minecraft' import { timer } from '.\/misc\/second.js' let tick = 0, worldLoaded = false, loadTime = 0;  world.events.beforeChat.subscribe((data) => {     chatrank(data) }) world.events.tick.subscribe((ticks) => {     tick++     if (!world.getDimension(\"overworld\").runCommand('testfor @a').error &amp;&amp; !worldLoaded) {         loadTime = tick         worldLoaded = true;         world.getDimension(\"overworld\").runCommand(`execute @r ~~~ say \u00a7l\u00a7a\u041c\u0438\u0440 \u0431\u044b\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432 ${ticks} \u0442\u0438\u043a\u0430\u0445. \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! `)         world.getDimension(\"overworld\").runCommand(`scoreboard objectives add chatsSent dummy`)     }     if(tick >= 20){         tick = 0         timer()     } })<\/code><\/pre>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043a\u0430\u0445 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u043c\u0438\u0440. \u041d\u0443, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 js \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0443\u0442 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 main \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 misc, \u0430 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b chat.js, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0441\u043f\u0430\u043c \u0438 \u0440\u0430\u043d\u0433\u0438. <\/p>\n<pre><code class=\"javascript\">import { world } from \"mojang-minecraft\"  let messages = new Map()  function chatrank(data){     const tags = data.sender.getTags()     data.sender.runCommand(`scoreboard players add @s chatsSent 0`)     let score = parseInt(data.sender.runCommand(`scoreboard players test @s chatsSent *`).statusMessage.match(\/-?\\d+\/)[0])     let ranks = [];     for(const tag of tags){         if(tag.startsWith('rank:')){             ranks.push(tag.replace('rank:', ''))         }     }     if(ranks.length == 0)ranks = [\"\u00a7l\u00a7aPlayer\"]          if(data.message.startsWith(\"!*\")){         data.cancel = true         return     }     if(score >= 3){         data.cancel = true         return world.getDimension(\"overworld\").runCommand(`ability \"${data.sender.nameTag}\" mute true`)     }     if(!messages.get(data.sender.name)){         messages.set(data.sender.name, data.message)     }else {         const oldMsg = messages.get(data.sender.name)         if(oldMsg == data.message){             data.cancel = true             return world.getDimension(\"overworld\").runCommand(`tellraw \"${data.sender.nameTag}\" {\"rawtext\":[{\"text\":\"\u00a7l\u00a7c\u041d\u0435 \u043f\u0438\u0448\u0438\u0442\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\"}]}`)         }     }     let text = `\u00a7f[${ranks}\u00a7r\u00a7f] \u00a77${data.sender.nameTag}: \u00a7f${data.message}`     world.getDimension('overworld').runCommand(`tellraw @a {\"rawtext\":[{\"translate\":\"\u00a7l\u00a7eM\u00a7r - ${JSON.stringify(text)}}]}`)     messages.set(data.sender.name, data.message)     data.sender.runCommand(`scoreboard players add @s chatsSent 1`)     data.cancel = true } export { chatrank }<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0440\u0430\u043d\u0433, \u043d\u0443\u0436\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c tag @s add rank:\u0412\u0410\u0428_\u0420\u0410\u041d\u0413. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, rank:\u00a7l\u00a7cADMIN, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0430\u0441\u043d\u044b\u043c ADMIN, \u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u043d\u0433 \u0437\u0435\u043b\u0451\u043d\u044b\u043c Player. \u041d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0440\u0430\u043d\u0433\u0438 \u0438 \u0430\u043d\u0442\u0438-\u0441\u043f\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u0432 misc \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b second.js, \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. <\/p>\n<pre><code class=\"javascript\">import { world } from 'mojang-minecraft' let seconds = 0  export function timer(){     seconds++     if(seconds >= 4){         world.getDimension(\"overworld\").runCommand(`scoreboard players reset * chatsSent`)         world.getDimension(\"overworld\").runCommand(`scoreboard players set \"dummy\" chatsSent 1`)         seconds = 0         return seconds     } }<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 js \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442, \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0438\u0440 \u0441 \u044d\u0442\u0438\u043c \u0430\u0434\u0434\u043e\u043d\u043e\u043c, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u0438\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c gametest \u0438 education edition. \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0440\u0430\u043d\u0433\u043e\u0432 \u0438 \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c\u0430 &#8212; 1.19.11 \u0438 \u0432\u044b\u0448\u0435. \u041d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445, \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0430\u0433 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 tellraw.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/260\/073\/103\/26007310354b975331f5e9bd2d2f4f68.jpg\" alt=\"\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043d\u0438\u043a, \u0442\u0430\u043c \u0432\u043c\u0435\u0441\u0442\u043e >> \u0431\u0443\u0434\u0435\u0442 &quot;:&quot;. \u041f\u0435\u0440\u0435\u0434 >> \u043d\u0438\u043a, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439&#187; title=&#187;\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043d\u0438\u043a, \u0442\u0430\u043c \u0432\u043c\u0435\u0441\u0442\u043e >> \u0431\u0443\u0434\u0435\u0442 &quot;:&quot;. \u041f\u0435\u0440\u0435\u0434 >> \u043d\u0438\u043a, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439&#187; width=&#187;2340&#8243; height=&#187;1080&#8243; data-src=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/260\/073\/103\/26007310354b975331f5e9bd2d2f4f68.jpg&#187; data-blurred=&#187;true&#187;\/><figcaption>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043d\u0438\u043a, \u0442\u0430\u043c \u0432\u043c\u0435\u0441\u0442\u043e >> \u0431\u0443\u0434\u0435\u0442 &#171;:&#187;. \u041f\u0435\u0440\u0435\u0434 >> \u043d\u0438\u043a, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439<\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 &#8212; \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0447\u0430\u0442\u0435. \u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u0447\u0430\u0442 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0432\u0435\u043b\u0438     .mycommand, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432\u0441\u0435\u043c \u0438\u0433\u0440\u043e\u043a\u0430\u043c. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 scripts \u0444\u0430\u0439\u043b commands.js<\/p>\n<pre><code class=\"javascript\">import { world } from \"mojang-minecraft\";  world.events.beforeChat.subscribe((eventData) => {     var player_name = eventData.sender.name     var player = eventData.sender     var args = eventData.message.split(\" \")     if (args[0].charAt(0) == \".\") {         eventData.cancel = true         if (args[0] == \".mycommand\") {             player.runCommand(\"\u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\")             player.runCommand(\"\u0437\u0434\u0435\u0441\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\")         } else {             player.runCommand(\"tellraw @s {\\\"rawtext\\\":[{\\\"text\\\":\\\"\u00a7c\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\\\"}]}\");         }     } });<\/code><\/pre>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 player.runCommand(&#171;\u043a\u043e\u043c\u0430\u043d\u0434\u0430&#187;). \u0414\u0430\u043b\u0435\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b main.js<\/p>\n<pre><code class=\"javascript\">import 'scripts\/commands.js'<\/code><\/pre>\n<p>\u0412\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u043a\u0440\u0438\u043f\u0442. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442\u0435 \u0432\u0432\u0435\u0434\u0451\u043c \u0432 \u0447\u0430\u0442 .mycommand, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. <\/p>\n<p>\u041a\u0430\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0430\u0434\u0434\u043e\u043d? \u041b\u0435\u0433\u043a\u043e. \u0415\u0441\u043b\u0438 \u0430\u0434\u0434\u043e\u043d \u043d\u0435 \u0431\u044b\u043b \u0441\u043a\u0430\u0447\u0430\u043d, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0444\u0430\u0439\u043b LICENSE.md \u0438\u043b\u0438 LICENSE.txt, \u0432 \u043d\u0438\u0445 \u0432\u0441\u0451 \u0443\u043a\u0430\u0437\u0430\u0442\u044c. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<pre><code>this addon by @DinoZavr2 AntiSpam and chat rangs  \u00a92022<\/code><\/pre>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u0430\u044f, \u0432\u0441\u0451 \u043d\u0430 \u0432\u0430\u0448 \u0432\u043a\u0443\u0441. <\/p>\n<h2>\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b<\/h2>\n<p>\u041c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0430\u0434\u0434\u043e\u043d\u0430\u0445. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430\u0445. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 mytextures \u043f\u043e \u043f\u0443\u0442\u0438 android\/data\/com.mojang&#8230;\/files\/games\/com.mojang\/resource_packs, \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0430. \u0412 \u043f\u0430\u043f\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0430\u0448 manifest.json. \u0412\u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u043a\u043e\u0434<\/p>\n<pre><code class=\"json\">{   \"format_version\": 1,   \"header\": {     \"description\": \"\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",     \"name\": \"\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",     \"uuid\": \"\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0439\u0434\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",     \"version\": [       0,       0,       1     ],     \"min_engine_version\": [       1,       8,       0     ]   },   \"modules\": [     {       \"description\": \"\",       \"type\": \"resources\",       \"uuid\": \"\u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0439\u0434\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",       \"version\": [         0,         0,         1       ]     }   ] }<\/code><\/pre>\n<p>\u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0430\u0434\u0434\u043e\u043d\u0435, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0439\u0434\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0441\u0430\u0439\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uuidgener*tor.net. \u0412\u043c\u0435\u0441\u0442\u043e &#171;\u0430&#187; \u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b &#171;*&#187;, \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u0442\u044c. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043a\u043e\u043d\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b pack_icon.jpg \u0438\u043b\u0438 pack_icon.png.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0431\u043b\u043e\u043a\u043e\u0432, \u043d\u0443\u0436\u043d\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 textures. \u0412 \u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0443 blocks. \u0412 blocks \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b diamond_block.jpg (\u0438\u043b\u0438 .png). \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0438\u0433\u0440\u0435 \u0430\u043b\u043c\u0430\u0437\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a, \u043a\u0430\u043a \u0432 diamond_block.jpg.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443 \u0432\u0430\u0441 \u0432 \u0440\u0443\u043a\u0430\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 textures \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 items. \u0412 \u043d\u0435\u0451 \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0439\u0442\u0435 item.jpg, \u0442\u043e\u0435\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 stick.jpg, \u0432 \u0438\u0433\u0440\u0435 \u043f\u0430\u043b\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u0442\u043e\u0435\u0441\u0442\u044c \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 stick.png.<\/p>\n<p>\u0421\u0443\u0431\u043f\u0430\u043a\u0438. Subpacks &#8212; \u044d\u0442\u043e \u043f\u0430\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 json \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0442\u043e-\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u043e\u0432 \u0438\u0433\u0440\u043e\u043a\u0430. \u0412\u043e\u0442 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0434\u043b\u044f \u0441\u0443\u0431\u043f\u0430\u043a\u043e\u0432<\/p>\n<pre><code class=\"json\">{    \"format_version\":2,    \"header\":{       \"description\":\"\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",       \"name\":\"\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",        \"uuid\":\"\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",       \"version\":[1,0,0],       \"min_engine_version\":[1,14,0]    },    \"modules\":[       {          \"description\":\"\",          \"type\":\"resources\",          \"uuid\":\"\u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",          \"version\":[1,0,0]       }    ],    \"subpacks\":[       {          \"folder_name\":\"no_ray\",          \"name\":\"\",          \"memory_tier\":1       },       {          \"folder_name\":\"opaque_model_collision\",          \"name\":\"\",          \"memory_tier\":2       },       {          \"folder_name\":\"default\",          \"name\":\"\",          \"memory_tier\":3       }    ] }<\/code><\/pre>\n<p>\u041f\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0443 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e. \u041d\u043e \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u043e\u0432. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430 \u043f\u0430\u043f\u043a\u0430 subpacks. \u0412 \u043d\u0435\u0439 \u0435\u0449\u0451 \u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 &#8212; default, no_ray, opaque_model_collision. \u0421\u0440\u0430\u0437\u0443 \u0433\u043e\u0432\u043e\u0440\u044e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0441\u0443\u0431\u043f\u0430\u043a\u0430\u043c\u0438 \u0438 json, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0438\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0434\u0435\u0441\u044c \u0432\u0430\u043c \u0431\u0435\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u043e \u0441\u0443\u0431\u043f\u0430\u043a\u0430\u0445 \u0432\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 default \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0430\u043f\u043a\u0443 animations, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432\u0441\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u0412 \u043d\u0435\u0439 hitboxrot.json. \u0412 \u043d\u0435\u0439 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438<\/p>\n<pre><code class=\"json\">{ \"format_version\" : \"1.8.0\", \"animations\" : { \"animation.player.hitboxrot\" : { \"loop\" : true, \"bones\" : { \"hitbox\" : { \"rotation\" : [ 0.0, \"-query.body_y_rotation\", 0.0 ] } } }, \"animation.player.rayrot\" : { \"loop\" : true, \"bones\" : { \"ray\" : { \"rotation\" : [ \"query.is_sneaking ? query.target_x_rotation - 1.5 : query.target_x_rotation\", \"query.target_y_rotation\", 0.0 ], \"position\" : [ 0.0, \"query.is_sneaking ? -4.25 : 0.0\", 0.0 ] } } }, \"animation.player.axis\" : { \"loop\" : true, \"bones\" : { \"axis\" : { \"rotation\" : [ 0.0, \"-query.body_y_rotation\", 0.0 ] } } } } }<\/code><\/pre>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0434 \u0432 30 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043f\u043e\u0434\u0432\u0438\u0436\u0438\u0442\u0441\u044f, \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0441 \u043d\u0438\u043c \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u0414\u0430\u043b\u0435\u0435 \u0432 subpack\/default \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0430\u043f\u043a\u0443 entity, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0430\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u0412 entity \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b player.entity.json, \u044d\u0442\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430. \u0412\u043e\u0442 \u043a\u043e\u0434<\/p>\n<pre><code class=\"json\">{   \"format_version\": \"1.10.0\",   \"minecraft:client_entity\": {     \"description\": {       \"identifier\": \"minecraft:player\",       \"materials\": {         \"default\": \"entity_alphatest\",         \"cape\": \"entity_alphatest\",         \"animated\": \"player_animated\",         \"emissive\": \"entity_emissive_alpha_hitbox\"       },       \"textures\": {         \"default\": \"textures\/entity\/steve\",         \"cape\": \"textures\/entity\/cape_invisible\",         \"hitbox\": \"textures\/models\/hitboxoverlay\",         \"ray\": \"textures\/models\/ray\"       },       \"geometry\": {         \"default\": \"geometry.humanoid.custom\",         \"cape\": \"geometry.cape\",         \"hitbox\": \"geometry.hitbox\",         \"hitbox.swimming\": \"geometry.hitbox.swimming\",         \"ray\": \"geometry.ray\"       },       \"scripts\": {         \"scale\": \"0.9375\",         \"initialize\": [           \"variable.is_holding_right = 0.0;\",           \"variable.is_blinking = 0.0;\",           \"variable.last_blink_time = 0.0;\",           \"variable.hand_bob = 0.0;\"         ],         \"pre_animation\": [           \"variable.helmet_layer_visible = 1.0;\",           \"variable.leg_layer_visible = 1.0;\",           \"variable.boot_layer_visible = 1.0;\",           \"variable.chest_layer_visible = 1.0;\",           \"variable.attack_body_rot_y = Math.sin(360*Math.sqrt(variable.attack_time)) * 5.0;\",           \"variable.tcos0 = (math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed \/ variable.gliding_speed_value) * 57.3;\",           \"variable.first_person_rotation_factor = math.sin((1 - variable.attack_time) * 180.0);\",           \"variable.hand_bob = query.life_time &lt; 0.01 ? 0.0 : variable.hand_bob + ((query.is_on_ground &amp;&amp; query.is_alive ? math.clamp(math.sqrt(math.pow(query.position_delta(0), 2.0) + math.pow(query.position_delta(2), 2.0)), 0.0, 0.1) : 0.0) - variable.hand_bob) * 0.02;\",            \"variable.map_angle = math.clamp(1 - variable.player_x_rotation \/ 45.1, 0.0, 1.0);\",           \"variable.item_use_normalized = query.main_hand_item_use_duration \/ query.main_hand_item_max_duration;\"         ],         \"animate\": [           \"root\",           \"hitbox_rot\",           \"ray_rot\",           \"axis\"         ]       },       \"animations\": {       \"hitbox_rot\": \"animation.player.hitboxrot\",       \"ray_rot\": \"animation.player.rayrot\",       \"axis\": \"animation.player.axis\",         \"root\": \"controller.animation.player.root\",         \"base_controller\": \"controller.animation.player.base\",         \"hudplayer\":  \"controller.animation.player.hudplayer\",         \"humanoid_base_pose\": \"animation.humanoid.base_pose\",         \"look_at_target\": \"controller.animation.humanoid.look_at_target\",         \"look_at_target_ui\": \"animation.player.look_at_target.ui\",         \"look_at_target_default\": \"animation.humanoid.look_at_target.default\",         \"look_at_target_gliding\": \"animation.humanoid.look_at_target.gliding\",         \"look_at_target_swimming\": \"animation.humanoid.look_at_target.swimming\",         \"look_at_target_inverted\": \"animation.player.look_at_target.inverted\",         \"cape\": \"animation.player.cape\",         \"move.arms\": \"animation.player.move.arms\",         \"move.legs\": \"animation.player.move.legs\",         \"swimming\": \"animation.player.swim\",         \"swimming.legs\": \"animation.player.swim.legs\",         \"riding.arms\": \"animation.player.riding.arms\",         \"riding.legs\": \"animation.player.riding.legs\",         \"holding\": \"animation.player.holding\",         \"brandish_spear\": \"animation.humanoid.brandish_spear\",         \"charging\": \"animation.humanoid.charging\",         \"attack.positions\": \"animation.player.attack.positions\",         \"attack.rotations\": \"animation.player.attack.rotations\",         \"sneaking\": \"animation.player.sneaking\",         \"bob\": \"animation.player.bob\",         \"damage_nearby_mobs\": \"animation.humanoid.damage_nearby_mobs\",         \"bow_and_arrow\": \"animation.humanoid.bow_and_arrow\",         \"fishing_rod\": \"animation.humanoid.fishing_rod\",         \"use_item_progress\": \"animation.humanoid.use_item_progress\",         \"skeleton_attack\": \"animation.skeleton.attack\",         \"sleeping\": \"animation.player.sleeping\",         \"first_person_base_pose\": \"animation.player.first_person.base_pose\",         \"first_person_empty_hand\": \"animation.player.first_person.empty_hand\",         \"first_person_swap_item\": \"animation.player.first_person.swap_item\",         \"first_person_attack_controller\": \"controller.animation.player.first_person_attack\",         \"first_person_attack_rotation\": \"animation.player.first_person.attack_rotation\",         \"first_person_vr_attack_rotation\": \"animation.player.first_person.vr_attack_rotation\",         \"first_person_walk\": \"animation.player.first_person.walk\",         \"first_person_map_controller\": \"controller.animation.player.first_person_map\",         \"first_person_map_hold\": \"animation.player.first_person.map_hold\",         \"first_person_map_hold_attack\": \"animation.player.first_person.map_hold_attack\",         \"first_person_map_hold_off_hand\": \"animation.player.first_person.map_hold_off_hand\",         \"first_person_map_hold_main_hand\": \"animation.player.first_person.map_hold_main_hand\",         \"first_person_crossbow_equipped\": \"animation.player.first_person.crossbow_equipped\",         \"third_person_crossbow_equipped\": \"animation.player.crossbow_equipped\",         \"third_person_bow_equipped\": \"animation.player.bow_equipped\",         \"crossbow_hold\": \"animation.player.crossbow_hold\",         \"crossbow_controller\": \"controller.animation.player.crossbow\",         \"shield_block_main_hand\": \"animation.player.shield_block_main_hand\",         \"shield_block_off_hand\": \"animation.player.shield_block_off_hand\",         \"blink\": \"controller.animation.persona.blink\"       },       \"render_controllers\": [         { \"controller.render.player.first_person\": \"variable.is_first_person\" },         { \"controller.render.player.third_person\": \"!variable.is_first_person &amp;&amp; !variable.map_face_icon\" },         { \"controller.render.player.map\": \"variable.map_face_icon\" },         { \"controller.render.player.hitbox\": \"!variable.is_first_person &amp;&amp; !query.is_in_ui\" },         { \"controller.render.player.ray\": \"!variable.is_first_person &amp;&amp; !query.is_in_ui\" }       ],       \"enable_attachables\": true     }   } }<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0431\u0435\u0437 \u0445\u043e\u0442\u044f \u0431\u044b \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 json. \u0422\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0440\u0435\u043d\u0434\u0435\u0440 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0446\u0435\u043b\u044b\u0445 118 \u0441\u0442\u0440\u043e\u043a. rotation&#8217;\u044b \u0438 \u0432\u0441\u0451 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435. \u041c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0438\u0441\u0441\u0443\u0448\u0438\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0432\u043e\u043b\u043a\u0430. \u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u043d\u0430\u0434\u043e, \u0430 \u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u0445 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0431\u0443\u0434\u0435\u0442 \u043b\u0430\u0433\u0430\u0442\u044c. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b &#8212; \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432 default \u043f\u0430\u043f\u043a\u0443 materials. \u0412 \u043d\u0435\u0439 entity.material (\u0431\u0435\u0437 json), \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 material.<\/p>\n<pre><code>{   \"materials\": {     \"version\": \"1.0.0\", \"entity_emissive_alpha_hitbox:entity_nocull\": {       \"+defines\": [         \"ALPHA_TEST\",         \"USE_EMISSIVE\"       ],       \"depthFunc\": \"Always\"     }   } }<\/code><\/pre>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0437\u0434\u0435\u0441\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0434\u043e. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430. \u0414\u0430\u043b\u044c\u0448\u0435 \u0435\u0449\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 &#8212; \u0432 default \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 models, \u0432 \u043d\u0435\u0439 entity. \u0410 \u0432 entity 3 \u0444\u0430\u0439\u043b\u0430 &#8212; \u043f\u0435\u0440\u0432\u044b\u0439 hitbox.json<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.10.0\", \"geometry.hitbox\": { \"texturewidth\": 64, \"textureheight\": 64, \"visible_bounds_width\": 3, \"visible_bounds_height\": 3, \"visible_bounds_offset\": [0, 1.5, 0], \"bones\": [ { \"name\": \"hitbox\", \"pivot\": [0, 0, 0], \"cubes\": [ { \"origin\": [-5, 0.2, -5], \"size\": [10, 30, 10], \"uv\": [0, 0], \"inflate\": 0.3 }, { \"origin\": [-4.5, 0.5, -4.5], \"size\": [9, 9, 9], \"uv\": [0, 42] } ] } ] } }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430 \u0438 \u0441\u0430\u043c\u0438 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u044b. \u0412\u0442\u043e\u0440\u043e\u0439 \u0444\u0430\u0439\u043b &#8212; ray.json<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.12.0\", \"minecraft:geometry\": [ { \"description\": { \"identifier\": \"geometry.ray\", \"texture_width\": 16, \"texture_height\": 16, \"visible_bounds_width\": 2, \"visible_bounds_height\": 2, \"visible_bounds_offset\": [0, 2, 0] }, \"bones\": [ { \"name\": \"ray\", \"pivot\": [0, 27, 0], \"cubes\": [ {\"origin\": [-0.5, 26.5, -0.5], \"size\": [1, 1, -16], \"inflate\": -0.41, \"uv\": [0, 0]} ] } ] } ] }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0442\u043e\u0436\u0435, \u0434\u0443\u043c\u0430\u044e, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0434\u043e &#8212; \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0440\u044d\u0439. \u0418 \u0442\u0440\u0435\u0442\u0438\u0439 \u0444\u0430\u0439\u043b &#8212; hitboxhitbox_swimming.json<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.10.0\", \"geometry.hitbox.swimming\": { \"texturewidth\": 64, \"textureheight\": 64, \"visible_bounds_width\": 3, \"visible_bounds_height\": 3, \"visible_bounds_offset\": [0, 1.5, 0], \"bones\": [ { \"name\": \"hitbox\", \"pivot\": [0, 0, 0], \"cubes\": [ { \"origin\": [-5, 0.2, -5], \"size\": [10, 9, 10], \"uv\": [0, 0], \"inflate\": 0.3 }, { \"origin\": [-4.5, 0.5, -4.5], \"size\": [9, 9, 9], \"uv\": [0, 42] } ] } ] } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u043e\u0432 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043b\u0430\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043a\u0430\u043a \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043f\u0440\u0438 \u043f\u043b\u0430\u0432\u0430\u043d\u0438\u0438 \u0443 \u0438\u0433\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0445\u0438\u0442\u0431\u043e\u043a\u0441, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043e\u043d \u0441\u0442\u043e\u044f \u0445\u043e\u0434\u0438\u0442. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 default. \u0412 \u043d\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 render_controllers &#8212; \u0432 \u043d\u0435\u0439 \u0442\u043e\u0436\u0435 hitbox.json \u0438 ray.json. \u0412\u043e\u0442 hitbox.json<\/p>\n<pre><code class=\"json\">{   \"format_version\": \"1.8.0\",   \"render_controllers\": {     \"controller.render.player.hitbox\": {       \"geometry\": \"Array.geo[query.is_swimming]\",       \"materials\": [ { \"*\": \"Material.emissive\" } ],       \"textures\": [ \"Texture.hitbox\" ],       \"arrays\": {         \"geometries\": { \"Array.geo\": [ \"geometry.hitbox\", \"geometry.hitbox.swimming\"] }       },       \"is_hurt_color\":{},       \"on_fire_color\":{}     }   } }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043f\u043b\u0430\u0432\u0430\u043d\u0438\u0435. \u0422\u0435\u043f\u0435\u0440\u044c ray.json<\/p>\n<pre><code>{   \"format_version\": \"1.8.0\",   \"render_controllers\": {     \"controller.render.player.ray\": {       \"geometry\": \"Geometry.ray\",       \"materials\": [ { \"*\": \"Material.emissive\" } ],       \"textures\": [ \"Texture.ray\" ],       \"is_hurt_color\":{},       \"on_fire_color\":{},       \"part_visibility\": [         { \"*\": \"!query.is_swimming\" }       ]     }   } }<\/code><\/pre>\n<p>\u0414\u0430 \u0434\u0430, \u043e\u043f\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043b\u0438 swimming. \u042d\u0442\u043e \u0440\u0435\u043d\u0434\u0435\u0440 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b. \u0418 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 \u043f\u0430\u043f\u043a\u0435 default &#8212; textures. \u041a\u0430\u043a \u0436\u0435 \u0431\u0435\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430? \u0417\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430 models\/hitboxoverlay.png,ray.png<\/p>\n<p>\u0412\u043e\u0442 \u0432\u0430\u043c hitboxoverlay<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/526\/cf3\/5fe\/526cf35fe393a3a4dfcef4f96121f120.png\" alt=\"hitboxoverlay.png\" title=\"hitboxoverlay.png\" width=\"256\" height=\"256\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/526\/cf3\/5fe\/526cf35fe393a3a4dfcef4f96121f120.png\"\/><figcaption>hitboxoverlay.png<\/figcaption><\/figure>\n<p>\u0418 \u0432\u043e\u0442 ray.png<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a0\/ea5\/2ce\/9a0ea52ce2103d10c757cccfd9d45322.png\" alt=\"ray.png\" title=\"ray.png\" width=\"32\" height=\"32\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a0\/ea5\/2ce\/9a0ea52ce2103d10c757cccfd9d45322.png\"\/><figcaption>ray.png<\/figcaption><\/figure>\n<p>\u0414\u0430, \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 models. \u0412\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u0443\u0442 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u043e\u043d\u0438 \u0435\u0441\u0442\u044c. \u041d\u0430 \u044d\u0442\u043e\u043c \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 default \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438<\/p>\n<p>\u041d\u0443 \u0447\u0442\u043e, \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 default \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438. \u0412 \u043d\u0435\u0439 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b, \u043f\u043b\u0430\u0432\u0430\u043d\u044c\u0435 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u043e\u0432, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 subpacks, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f default. \u0412 subpacks \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0430\u043f\u043a\u0443 no_ray. \u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043b\u0433\u043e. \u0412 no_ray \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043f\u043e\u043a &#8212; animations, entity, materials, models, render_controllers, textures. <\/p>\n<p>\u0412 \u043f\u0430\u043f\u043a\u0435 animations \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b hitboxrot.json<\/p>\n<pre><code class=\"json\">{ \"format_version\" : \"1.8.0\", \"animations\" : { \"animation.player.hitboxrot\" : { \"loop\" : true, \"bones\" : { \"hitbox\" : { \"rotation\" : [ 0.0, \"-query.body_y_rotation\", 0.0 ] } } }, \"animation.player.axis\" : { \"loop\" : true, \"bones\" : { \"axis\" : { \"rotation\" : [ 0.0, \"-query.body_y_rotation\", 0.0 ] } } } } }<\/code><\/pre>\n<p>hitboxrot &#8212; hitboxrotation. \u042d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435, \u043d\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e hitboxrot.json.  \u0422\u0443\u0442 \u0435\u0441\u0442\u044c body_rotation \u0438 \u0432\u0441\u0451 \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u0434\u0435, \u0442\u043e\u0435\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 ray, \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043f\u0430\u043f\u043a\u0430 no_ray. \u0414\u0430\u043b\u0435\u0435 \u0432 no_ray \u0432 materials \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 entity.material, \u0442\u043e\u0435\u0441\u0442\u044c \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c material.<\/p>\n<pre><code>{   \"materials\": {     \"version\": \"1.0.0\", \"entity_emissive_alpha_hitbox:entity_nocull\": {       \"+defines\": [         \"ALPHA_TEST\",         \"USE_EMISSIVE\"       ],       \"depthFunc\": \"Always\"     }   } }<\/code><\/pre>\n<p>\u041e\u043f\u044f\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445. \u041b\u0430\u0434\u043d\u043e, \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 models \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0430\u043f\u043a\u0443 entity, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 hitbox_swimming.json \u0438 hitbox.json. \u0412\u043e\u0442 hitbox.json<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.10.0\", \"geometry.hitbox\": { \"texturewidth\": 64, \"textureheight\": 64, \"visible_bounds_width\": 3, \"visible_bounds_height\": 3, \"visible_bounds_offset\": [0, 1.5, 0], \"bones\": [ { \"name\": \"hitbox\", \"pivot\": [0, 0, 0], \"cubes\": [ { \"origin\": [-5, 0.2, -5], \"size\": [10, 30, 10], \"uv\": [0, 0], \"inflate\": 0.3 }, { \"origin\": [-4.5, 0.5, -4.5], \"size\": [9, 9, 9], \"uv\": [0, 42] } ] } ] } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430 \u0432 json. \u0414\u0430\u043b\u044c\u0448\u0435 hitbox_swimming.json &#8212; \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0439 \u0445\u0438\u0442\u0431\u043e\u043a\u0441<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.10.0\", \"geometry.hitbox.swimming\": { \"texturewidth\": 64, \"textureheight\": 64, \"visible_bounds_width\": 3, \"visible_bounds_height\": 3, \"visible_bounds_offset\": [0, 1.5, 0], \"bones\": [ { \"name\": \"hitbox\", \"pivot\": [0, 0, 0], \"cubes\": [ { \"origin\": [-5, 0.2, -5], \"size\": [10, 9, 10], \"uv\": [0, 0], \"inflate\": 0.3 }, { \"origin\": [-4.5, 0.5, -4.5], \"size\": [9, 9, 9], \"uv\": [0, 42] } ] } ] } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0445\u0438\u0442\u0431\u043e\u043a\u0441 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043b\u0430\u0432\u0430\u043d\u0438\u044f. \u041a\u043e\u0433\u043e \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442 \u0441\u0442\u043e\u044f\u0447\u0438\u0439 \u0445\u0438\u0442\u0431\u043e\u043a\u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430? \u041b\u0430\u0434\u043d\u043e, \u0432\u043e\u0442 hitbox.json \u0432 render_controllers<\/p>\n<pre><code class=\"json\">{   \"format_version\": \"1.8.0\",   \"render_controllers\": {     \"controller.render.player.hitbox\": {       \"geometry\": \"Array.geo[query.is_swimming]\",       \"materials\": [ { \"*\": \"Material.emissive\" } ],       \"textures\": [ \"Texture.hitbox\" ],       \"arrays\": {         \"geometries\": { \"Array.geo\": [ \"geometry.hitbox\", \"geometry.hitbox.swimming\"] }       },       \"is_hurt_color\":{},       \"on_fire_color\":{}     }   } }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 no_ray\/textures\/models \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c hitboxoverlay.png, \u043a\u0430\u043a \u0436\u0435 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/288\/6df\/2a8\/2886df2a866c6f8cb46fbe8479ea4607.png\" alt=\"hitboxoverlay.png\" title=\"hitboxoverlay.png\" width=\"256\" height=\"256\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/288\/6df\/2a8\/2886df2a866c6f8cb46fbe8479ea4607.png\"\/><figcaption>hitboxoverlay.png<\/figcaption><\/figure>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0441 no_ray \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438. \u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451 &#8212; \u0432 \u0441\u0443\u0431\u043f\u0430\u043a\u0430\u0445 \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 opaque_model_collision. \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a \u0441 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0441 \u0441\u0443\u0431\u043f\u0430\u043a\u0430\u043c\u0438 \u0438 json. \u0422\u0435\u043f\u0435\u0440\u044c, \u0432 opaque_model_collision \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0430\u043f\u043a\u0438 animations, entity, models, render_controllers, textures. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c -\u0441\u043d\u0430\u0447\u0430\u043ba \u043f\u0430\u043f\u043a\u0430 animations. \u0412 \u043d\u0435\u0439 hitboxrot.json. \u0412\u043e\u0442 hitboxrot.json<\/p>\n<pre><code class=\"json\">{ \"format_version\" : \"1.8.0\", \"animations\" : { \"animation.player.hitboxrot\" : { \"loop\" : true, \"bones\" : { \"hitbox\" : { \"rotation\" : [ 0.0, \"-query.body_y_rotation\", 0.0 ] } } }, \"animation.player.rayrot\" : { \"loop\" : true, \"bones\" : { \"ray\" : { \"rotation\" : [ \"query.is_sneaking ? query.target_x_rotation - 1.5 : query.target_x_rotation\", \"query.target_y_rotation\", 0.0 ], \"position\" : [ 0.0, \"query.is_sneaking ? -4.25 : 0.0\", 0.0 ] } } }, \"animation.player.axis\" : { \"loop\" : true, \"bones\" : { \"axis\" : { \"rotation\" : [ 0.0, \"-query.body_y_rotation\", 0.0 ] } } } } }<\/code><\/pre>\n<p>\u041c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043b\u0443\u043f \u0438 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u044b. \u0414\u0430\u043b\u0435\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 &#8212; entity\/player.entity.json<\/p>\n<pre><code class=\"json\">{   \"format_version\": \"1.10.0\",   \"minecraft:client_entity\": {     \"description\": {       \"identifier\": \"minecraft:player\",       \"materials\": {         \"default\": \"entity_alphatest\",         \"cape\": \"entity_alphatest\",         \"animated\": \"player_animated\",         \"emissive\": \"entity_emissive_alpha\"       },       \"textures\": {         \"default\": \"textures\/entity\/steve\",         \"cape\": \"textures\/entity\/cape_invisible\",         \"hitbox\": \"textures\/models\/hitboxoverlay\",         \"ray\": \"textures\/models\/ray\"       },       \"geometry\": {         \"default\": \"geometry.humanoid.custom\",         \"cape\": \"geometry.cape\",         \"hitbox\": \"geometry.hitbox\",         \"hitbox.swimming\": \"geometry.hitbox.swimming\",         \"ray\": \"geometry.ray\"       },       \"scripts\": {         \"scale\": \"0.9375\",         \"initialize\": [           \"variable.is_holding_right = 0.0;\",           \"variable.is_blinking = 0.0;\",           \"variable.last_blink_time = 0.0;\",           \"variable.hand_bob = 0.0;\"         ],         \"pre_animation\": [           \"variable.helmet_layer_visible = 1.0;\",           \"variable.leg_layer_visible = 1.0;\",           \"variable.boot_layer_visible = 1.0;\",           \"variable.chest_layer_visible = 1.0;\",           \"variable.attack_body_rot_y = Math.sin(360*Math.sqrt(variable.attack_time)) * 5.0;\",           \"variable.tcos0 = (math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed \/ variable.gliding_speed_value) * 57.3;\",           \"variable.first_person_rotation_factor = math.sin((1 - variable.attack_time) * 180.0);\",           \"variable.hand_bob = query.life_time &lt; 0.01 ? 0.0 : variable.hand_bob + ((query.is_on_ground &amp;&amp; query.is_alive ? math.clamp(math.sqrt(math.pow(query.position_delta(0), 2.0) + math.pow(query.position_delta(2), 2.0)), 0.0, 0.1) : 0.0) - variable.hand_bob) * 0.02;\",            \"variable.map_angle = math.clamp(1 - variable.player_x_rotation \/ 45.1, 0.0, 1.0);\",           \"variable.item_use_normalized = query.main_hand_item_use_duration \/ query.main_hand_item_max_duration;\"         ],         \"animate\": [           \"root\",           \"hitbox_rot\",           \"ray_rot\",           \"axis\"         ]       },       \"animations\": {       \"hitbox_rot\": \"animation.player.hitboxrot\",       \"ray_rot\": \"animation.player.rayrot\",       \"axis\": \"animation.player.axis\",         \"root\": \"controller.animation.player.root\",         \"base_controller\": \"controller.animation.player.base\",         \"hudplayer\":  \"controller.animation.player.hudplayer\",         \"humanoid_base_pose\": \"animation.humanoid.base_pose\",         \"look_at_target\": \"controller.animation.humanoid.look_at_target\",         \"look_at_target_ui\": \"animation.player.look_at_target.ui\",         \"look_at_target_default\": \"animation.humanoid.look_at_target.default\",         \"look_at_target_gliding\": \"animation.humanoid.look_at_target.gliding\",         \"look_at_target_swimming\": \"animation.humanoid.look_at_target.swimming\",         \"look_at_target_inverted\": \"animation.player.look_at_target.inverted\",         \"cape\": \"animation.player.cape\",         \"move.arms\": \"animation.player.move.arms\",         \"move.legs\": \"animation.player.move.legs\",         \"swimming\": \"animation.player.swim\",         \"swimming.legs\": \"animation.player.swim.legs\",         \"riding.arms\": \"animation.player.riding.arms\",         \"riding.legs\": \"animation.player.riding.legs\",         \"holding\": \"animation.player.holding\",         \"brandish_spear\": \"animation.humanoid.brandish_spear\",         \"charging\": \"animation.humanoid.charging\",         \"attack.positions\": \"animation.player.attack.positions\",         \"attack.rotations\": \"animation.player.attack.rotations\",         \"sneaking\": \"animation.player.sneaking\",         \"bob\": \"animation.player.bob\",         \"damage_nearby_mobs\": \"animation.humanoid.damage_nearby_mobs\",         \"bow_and_arrow\": \"animation.humanoid.bow_and_arrow\",         \"fishing_rod\": \"animation.humanoid.fishing_rod\",         \"use_item_progress\": \"animation.humanoid.use_item_progress\",         \"skeleton_attack\": \"animation.skeleton.attack\",         \"sleeping\": \"animation.player.sleeping\",         \"first_person_base_pose\": \"animation.player.first_person.base_pose\",         \"first_person_empty_hand\": \"animation.player.first_person.empty_hand\",         \"first_person_swap_item\": \"animation.player.first_person.swap_item\",         \"first_person_attack_controller\": \"controller.animation.player.first_person_attack\",         \"first_person_attack_rotation\": \"animation.player.first_person.attack_rotation\",         \"first_person_vr_attack_rotation\": \"animation.player.first_person.vr_attack_rotation\",         \"first_person_walk\": \"animation.player.first_person.walk\",         \"first_person_map_controller\": \"controller.animation.player.first_person_map\",         \"first_person_map_hold\": \"animation.player.first_person.map_hold\",         \"first_person_map_hold_attack\": \"animation.player.first_person.map_hold_attack\",         \"first_person_map_hold_off_hand\": \"animation.player.first_person.map_hold_off_hand\",         \"first_person_map_hold_main_hand\": \"animation.player.first_person.map_hold_main_hand\",         \"first_person_crossbow_equipped\": \"animation.player.first_person.crossbow_equipped\",         \"third_person_crossbow_equipped\": \"animation.player.crossbow_equipped\",         \"third_person_bow_equipped\": \"animation.player.bow_equipped\",         \"crossbow_hold\": \"animation.player.crossbow_hold\",         \"crossbow_controller\": \"controller.animation.player.crossbow\",         \"shield_block_main_hand\": \"animation.player.shield_block_main_hand\",         \"shield_block_off_hand\": \"animation.player.shield_block_off_hand\",         \"blink\": \"controller.animation.persona.blink\"       },       \"render_controllers\": [         { \"controller.render.player.first_person\": \"variable.is_first_person\" },         { \"controller.render.player.third_person\": \"!variable.is_first_person &amp;&amp; !variable.map_face_icon\" },         { \"controller.render.player.map\": \"variable.map_face_icon\" },         { \"controller.render.player.hitbox\": \"!variable.is_first_person &amp;&amp; !query.is_in_ui\" },         { \"controller.render.player.ray\": \"!variable.is_first_person &amp;&amp; !query.is_in_ui\" }       ],       \"enable_attachables\": true     }   } }<\/code><\/pre>\n<p>\u0423\u0443\u0443, \u0442\u043e\u0436\u0435 118 \u0441\u0442\u0440\u043e\u043a. \u041e\u0434\u043d\u0438 \u0432\u0430\u0440\u0438\u0430\u0431\u043b\u044b \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b. \u041d\u0443 \u043b\u0430\u0434\u043d\u043e, \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 models \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 entity. \u0412 \u043d\u0435\u0439 hitbox.json, hitbox_swimming.json, ray.json, \u0432\u043e\u0442 hitbox<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.10.0\", \"geometry.hitbox\": { \"texturewidth\": 64, \"textureheight\": 64, \"visible_bounds_width\": 3, \"visible_bounds_height\": 3, \"visible_bounds_offset\": [0, 1.5, 0], \"bones\": [ { \"name\": \"hitbox\", \"pivot\": [0, 0, 0], \"cubes\": [ { \"origin\": [-5, 0.2, -5], \"size\": [10, 30, 10], \"uv\": [0, 0], \"inflate\": 0.3 }, { \"origin\": [-4.5, 0.5, -4.5], \"size\": [9, 9, 9], \"uv\": [0, 42] } ] } ] } }<\/code><\/pre>\n<p>\u0423\u043a\u0430\u0437\u0430\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440. \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u043f\u043b\u0430\u0432\u0430\u043d\u044c\u044e \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430 &#8212; hitbox_swimming.json<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.10.0\", \"geometry.hitbox.swimming\": { \"texturewidth\": 64, \"textureheight\": 64, \"visible_bounds_width\": 3, \"visible_bounds_height\": 3, \"visible_bounds_offset\": [0, 1.5, 0], \"bones\": [ { \"name\": \"hitbox\", \"pivot\": [0, 0, 0], \"cubes\": [ { \"origin\": [-5, 0.2, -5], \"size\": [10, 9, 10], \"uv\": [0, 0], \"inflate\": 0.3 }, { \"origin\": [-4.5, 0.5, -4.5], \"size\": [9, 9, 9], \"uv\": [0, 42] } ] } ] } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c\u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f geometry.hitbox.swimming, \u043e\u0441\u0442\u0430\u043b\u0441\u044f ray.json<\/p>\n<pre><code class=\"json\">{ \"format_version\": \"1.12.0\", \"minecraft:geometry\": [ { \"description\": { \"identifier\": \"geometry.ray\", \"texture_width\": 16, \"texture_height\": 16, \"visible_bounds_width\": 2, \"visible_bounds_height\": 2, \"visible_bounds_offset\": [0, 2, 0] }, \"bones\": [ { \"name\": \"ray\", \"pivot\": [0, 27, 0], \"cubes\": [ {\"origin\": [-0.5, 26.5, -0.5], \"size\": [1, 1, -16], \"inflate\": -0.41, \"uv\": [0, 0]} ] } ] } ] }<\/code><\/pre>\n<p>\u0410 \u0437\u0434\u0435\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f minecraft:geometry. \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0442\u0430\u043a. \u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 render_controllers, \u0442\u0430\u043c 2 \u0444\u0430\u0439\u043b\u0430 &#8212; hitbox.json \u0438 ray.json. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c hitbox.json<\/p>\n<pre><code class=\"json\">{   \"format_version\": \"1.8.0\",   \"render_controllers\": {     \"controller.render.player.hitbox\": {       \"geometry\": \"Array.geo[query.is_swimming]\",       \"materials\": [ { \"*\": \"Material.emissive\" } ],       \"textures\": [ \"Texture.hitbox\" ],       \"arrays\": {         \"geometries\": { \"Array.geo\": [ \"geometry.hitbox\", \"geometry.hitbox.swimming\"] }       },       \"is_hurt_color\":{},       \"on_fire_color\":{}     }   } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f render_controllers. \u0414\u0430\u043b\u044c\u0448\u0435 ray.json<\/p>\n<pre><code class=\"json\">{   \"format_version\": \"1.8.0\",   \"render_controllers\": {     \"controller.render.player.ray\": {       \"geometry\": \"Geometry.ray\",       \"materials\": [ { \"*\": \"Material.emissive\" } ],       \"textures\": [ \"Texture.ray\" ],       \"is_hurt_color\":{},       \"on_fire_color\":{},       \"part_visibility\": [         { \"*\": \"!query.is_swimming\" }       ]     }   } }<\/code><\/pre>\n<p>\u0418 \u043e\u043f\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f render_controllers. \u041b\u0430\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, textures, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c models. \u0412 models \u043e\u043f\u044f\u0442\u044c 2 \u0444\u0430\u0439\u043b\u0430 &#8212; hitboxoverlay.png, ray.png. \u0412\u043e\u0442 hitboxoverlay.png<\/p>\n<pre><code>\ufffdPNG      IHDR         \\r\ufffdf   \ufffdzTXtRaw profile type exif  x\ufffd\ufffdZ[r\ufffd:\ufffd\ufffd*f$@\ufffdr\ufffd\ufffd\ufffd\ufffd\ufffdA\ufffdv\ufffd\u0109\ufffds\ufffd\u07c9+\ufffdMI|t7\ufffde\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\/&amp;N\ufffd\ufffdTRr\ufffd%\ufffd\ufffd\ufffd\ufffd\ufffdW\ufffd\ufffdwa\ufffd_\ufffd\ufffd\ufffd~WO\u05cf\ufffdRP\ufffdq@\ufffdyUE}\ufffd]p\ufffd\u00f7\ufffdz\ufffd\ufffd\ufffdgC\ufffd\ufffd\ufffd(\ufffdz\ufffd\ufffd\ufffd\ufffd Q\ufffdG\ufffdgCeR\ufffd\ufffdq\ufffd\ufffdl\ufffd\ufffd'\ue85c\ufffd!\ufffdMr\ufffd\ufffd J#\ufffd#a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdn\ufffd` \ufffd\ufffd9\ufffd#,\ufffdl\ufffd\ufffdM\ufffd\ufffdG\ufffd\ufffd\ufffd>\ufffd\ufffd|\ufffdg\ufffd|\ufffd2]XK\ufffd\ufffd\ufffdS\ufffd\\\ufffd\ufffd\ufffduD|\ufffd\ufffd_A^k\ufffd\ufffd1\ufffdM\ufffd\ufffd\ufffd:\ufffd\ufffd\ufffd\ufffd\ufffde_\ufffd\ufffdR\ufffdG|\ufffd\ufffd*xeW]GW\ufffdu\ufffd\ufffd\ufffdx\ufffd\ufffd|\ufffd\ufffdW\ufffd\ufffd\ufffde\ufffdC&lt;YQ2w\ufffd]\ufffdE\ufffdpK\ufffd\ufffd\ufffd`\ufffd\ufffd\ufffd$T\ufffdu,~\ufffd[v\ufffdg\ufffd&lt;&lt;Ne\ufffd\ufffd&lt;.y\ufffd\ufffd\ufffd\ufffd?A\ufffd]\ufffdb\ufffdq\ufffd\ufffd\ufffd0\ufffd\ufffdg\ufffd\ufffdN\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd@\ufffd\ufffd\ufffd\ufffda\u0398`u\ufffdh\ufffdE\u04d6l\ufffd\ufffdE\ufffd\u01det\ufffd  \"\ufffd1\/`\ufffd%\/\ufffd'\ufffdY\ufffd\ufffdU\ufffd\ufffd%p>F$\ufffd\u0124\ufffd\ufffd\ufffd\ufffd5\ufffd\ufffd\ufffd9\ufffdU#7\ufffd\ufffd(I\ufffd\ufffd +\ufffd\ufffdh\ufffd\ufffdP\ufffdC\ufffd1E\ufffd\ufffdb\ufffd5I )\ufffd\ufffd4Y\ufffd\ufffd*4jR\u056cEk\ufffdr\ufffd)k\u03b9\ufffdZ\ufffdr`,\ufffdh\u0265\ufffdZ\ufffd*:\ufffdh\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdMZh\ufffd\ufffd\ufffd-\ufffd\ufffdj\ufffd|z\u8c67\ufffd=\ufffd\ufffd\ufffd\ufffd!ib\ufffd\ufffd#\ufffd2\ufffd\ufffd4\ufffd)f\ufffdq\ufffd\ufffd3\ufffd2\ufffd\u0596\ufffd\ufffd\ufffdJKW^e\ufffd+k'\ufffd_^\/\ufffd\ufffdO\ufffdx3e\ufffd\ufffd5\u0512\ufffdo\ufffd$g`\ufffd\ufffd\ufffdj@\ufffdl\ufffd\ufffd\ufffdC`c\ufffd8s\ufffd\ufffd1\ufffdh\ufffd\ufffd\ufffd\ufffd(\ufffds\\\ufffd\ufffd\u074d\ufffd\ufffdx\ufffd\ufffd\ufffd\ufffdc\ufffd\ufffd\ufffd\ufffd9u_y\ufffd\ufffd\ufffda>\ufffd7cG\ufffdN}8>s%\ufffd\ufffdL\ufffdek}\ufffd\ufffdyH\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffdEc\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd&amp;\ufffd\ufffd\ufffdv\ufffd?,\ufffd\ufffd}b\ufffdC\ufffd\ufffd\ufffdg\ufffd =6W\ufffdP\ufffd:\ufffd\ufffd\u031a'\ufffd\ufffd\ufffdJ\ufffd\ufffd\ufffdS\";ur\ufffdV\ufffd0WO\ufffd\ufffd\ufffd\ufffd\ufffdZY|i\ufffdH\ufffd6o44\ufffd\ufffdMQJgSM\ufffd{\ufffd\ufffdzh\ufffd\ufffd\ufffd H\ufffd3\ufffds\u01b4B[\ufffd\ufffd{\ufffdH\ufffd%x?K\ufffd\ufffd=\ufffd\u0663\ufffd\ufffd\ufffdS[\ufffd3h\ufffdn \ufffd\ufffd\ufffd\ufffdS9{\ufffd\ufffdz \ufffd@\ufffd\ue252\ufffd\ufffd\ufffdjF\ufffdh\ufffd \u05fe]\ufffd\ufffd\ufffdz\ufffdwV\ufffd\ufffd\ufffd\ufffd}]\ufffd\ufffd'$\ufffd>p\ufffdp\ufffdF\ufffd\ufffd\ufffd5d\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd!\ufffd;@\ufffd\ufffdrV&lt;Y\ufffd\ufffdYh4Y\ufffd\ufffd\ufffdeQ*\ufffd5 ]\ufffd3\ufffd\ufffd`\ufffd\u00b2\ufffd\ufffdD\ufffd\ufffd\ufffd?\ufffd\u0085S\ufffd\ufffd)|\ufffd\ufffd#\ufffd'\ufffd\ufffd\ufffd-\ufffd?+\ufffd\"\ufffdkqtHC\ufffd\ufffdc\ufffd\ufffdu \ufffd\u01c2\ufffd\ufffdb\ufffd\ufffd\ufffd8\ufffd\ufffdu\ufffdK\ufffd}\ufffd\ufffd\ufffd0\ufffd:T\ufffd7R\ufffd{\ufffd\ufffd\ufffd\ufffd&amp;\ufffd\ufffd\ufffd\ufffd\ufffdhc\u2110Z\ufffd\ufffd07\ufffd\ufffd\ufffd[n-\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdM\u0415s\ufffd\/\ufffd{\ufffd\ufffd2\ufffdO\ufffd\ufffd=\ufffd\ufffdCO+\ufffdO\"\ufffdF\ufffdI$o8]+w\ufffd \ufffd\ufffd\ufffd>\ufffdcp\ufffd\ufffd\ufffd-^\ufffdh\ufffdu F\ufffd&lt;\u05d4\ufffd]\ufffd:\ufffdK\ufffd:\ufffdGRV\ufffd\ufffdV\\\ufffdgU\ufffd\ufffd{\ufffd##p\ufffd\ufffd\ufffd\ufffdW[d\ufffd\ufffd\ufffd\ufffd\ufffdB\ufffd`y\"V\u0086\ufffd1\ufffdB\ufffd\ufffdi\ufffda\u06ad\u0531.\ufffd\ufffd\ufffdkPo\ufffd\ufffd c\ufffd%\ufffd\ufffdy\ufffdl\ufffd\ufffd*\ufffdY\ufffd\u02d1E\ufffd\ufffd\ufffdEyZ k\ufffdTK\ufffd\u0151`H;\ufffd\ufffd0s\ufffd-\ufffd\ufffd\ufffd\ufffdC \ufffd+\ufffd\ufffdc\ufffdCGz\ufffdEW\ufffd 3 \ufffd\ufffdM1I\ufffd\ufffd\ufffd*\ufffdS1um[0*w\ufffd\ufffd\ufffdi\ufffd \ufffd_m\ufffd\ufffdB\ufffd\ufffdf\ufffd\ufffdy\ufffd7u4\ufffd\ufffd\ufffdv\ufffdcy\ufffd\ufffdc\ufffd'\u07b1\ufffd&amp;x])\ufffd\ufffd{lk\ufffd\ufffdpA\ufffdB\ufffd\ufffd1\ufffduv\ufffd\ufffdL\ufffd_\u019bYM\ufffdp\u05b98l\ufffdX\ufffd\ufffd\ufffdI\ufffd`\ufffdn5\ufffd\ufffd5\ufffd\ufffd\ufffd|25h \ufffd\ufffd\ufffdz;o`\ufffd\ufffd\ufffd \ufffd\ufffd\ufffdG?\u0204\ufffd\ufffd\u024f2\ufffdw\ufffd\u0674\ufffds1O\ufffdE\ufffdl\ufffd\ufffd\ufffdQ&amp;H\ufffd]\ufffd\ufffd\ufffd\ufffdj\ufffdmR\ufffd\ufffd.=i\ufffds\ufffdO\ufffd\ufffdu\ufffd)>\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd=X\ufffd\ufffdRb0~\ufffd\ufffd\ufffdg\ufffd=\ufffd\ufffd'\ufffd\ufffd\ufffda\ufffdH\ufffd\ufffdk\u049f=?ZcX\u07d1\ufffd\ufffd[c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdm\ufffd\ufffdW\ufffd\ufffd [v\ufffd\ufffd]m\ufffd\u0585\ufffd\ufffd\ufffd9\ufffdY\ufffd'c\ufffd\ufffdXj.\ufffdvZ\ufffd\ufffd\ufffd\ufffd\/6I\ufffdOn\ufffd\ufffd?\ufffd\ufffd\ufffd(\ufffdHOX\ufffdc\ufffd?\ufffd~\ufffd=\ufffd\ufffdQ\ufffd\ufffd\ufffdG\ufffdz\ufffd{P\ufffd}T\ufffd\ub44e\ufffdO\u82de\ufffd\ufffdw$\ufffd9(G\ufffd\ufffd\ufffd\ufffdw$\ufffd!\ufffd\/\ufffd\ufffdG\ufffdz\ufffd{P\ufffd}T\ufffdA\ufffdG{U_\ufffdg\ufffdzC\ufffd\ufffd,To\ufffd?\ufffd[K\ufffdr\ufffd>\ufffd\ufffd\ufffd\ufffd=(\ufffd>*\ufffd\ufffd\ufffd\ufffd\ufffd\u0703B\ufffd&amp;\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd_\ufffd\ufffdk\ufffd \ufffdA\ufffd\ufffd9\ufffd\ufffd\ufffd\ufffd-~N\ufffdx\ufffd|n\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdM\ufffdr\ufffd\ufffdm\ufffd%\ufffd{|)\ufffd\ufffd\u01ee\ufffdh\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdG.8\ufffd\ufffd?o\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdvG\ufffd{\ufffd\ufffd\ufffd\ufffd\u05f77\ufffd]\ufffdV\ufffd=\ufffd\ufffdm\u028f!\ufffdM\ufffdS\ufffd~\u073b\ufffd#\ufffd\ufffd\ufffd\ufffdQl[H\ufffdco7\ufffd4\ufffdf\ufffd)\ufffd.\ufffd\ufffd\ufffd\ufffdJ8\ufffdJ\ufffd\ufffdfG\ufffd\u03bdR\ufffd\u013dW*\ufffd\ufffd+\ufffd\ufffd\ufffd^\ufffd\ufffdc\ufffd\ufffdk\ufffd{\ufffd:zMv\ufffdU\ufffdZi\ufffdUG\ufffd\ufffd\ufffd\ufffd\ufffd5\ufffd=V\ufffd&amp;\ufffd\u01ea\ufffd\ufffdd\ufffdXu\ufffd\ufffd\uc9bb\ufffd\ufffdJ\ufffd\ufffdE*N\ufffd\ufffdz\ufffd\ufffd\ufffdc\ufffd%\ufffd\ufffd\u02c2&lt;%\u0467\ufffd\ufffd&amp;\ufffdZ\ufffdbr\u00f5\ufffd\ufffdmW\ufffde\ufffd(c\ufffd0^m\ufffdWB\u0177F\ufffd>B[\ufffd\u01e4\ufffd\ufffd\ufffd`\ufffd\ufffd k\ufffdfY\ufffdFt\ufffd\ufffdn\ufffdt\u0176:\ufffdo\ufffd[\ufffdyl}\ufffd`Jk\ufffd\ufffd=\ufffd1U\ufffd\ufffd>\ufffd\ufffd\ufffd\u021a\ufffd\ufffd\ufffd56\ufffd\ufffd\ufffd\ufffd\u02dc\ufffd\ufffd\ufffd;T0rK\ufffd\ufffdz)C\ufffd%B\ufffdc\ufffd^EdK \ufffd !@\ufffd\ufffdYi\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdP({z]{(\ufffd\ufffd\ufffd\ufffd\ufffdw\ufffd\ufffd\ufffd\ufffd\ufffd|b\\%\ufffd8B\ufffd\ufffd\ufffd!\ufffd=d\ufffd)\ufffd\ufffd%}\ufffd\ufffde\ufffd4\ufffd6\ufffd\ufffd5d\ufffd\ufffd\ufffd4+\ufffd85\ufffdK\ufffd4\u06f5\ufffd\ufffdp\ufffd\ufffd\ufffd'H\ufffd\ufffdC\ufffd)~\ufffd`\ufffd\ufffd\u04fc\ufffd\ufffd~\ufffd0rG\ufffd0\ufffdE\ufffd\ufffd\ufffd\ufffd\u02f7Xn\u0304\ufffd i\ufffd\ufffd\ufffdS\ufffd\ufffd\ufffdl\ufffdp#\ufffd`\ufffdHD\ufffdr)HJ+\ufffd9Fn\ufffdl\ufffd\ufffdPC\ufffd\ufffd#\ufffd\ufffd\ufffdx\ufffd\ufffd\ufffdO}[\ufffd\ufffd\ufffd\ufffd\\, -(\ufffd>e\u05d1\ufffd>|\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdq\ufffd\ufffd\ufffd\u046f\ufffd\ufffd\ufffd(DrI8\ufffdO5\ufffd=\ufffds\ufffd\u01aa\ufffd\ufffd\u0157vV\ufffdX\ufffd\ufffdjM|\ufffd \ufffdy\ufffd\ufffd\ufffdy\u051e\ufffd\ufffdxL\u021b\ufffd_\ufffddYQ\ufffdQ\ufffd\ufffd\ufffdeP\ufffd\ufffd\ufffd~\u00c9\ufffd\ufffd\ufffd\ufffdR>\ufffd\ufffd3\ufffd't\ufffd\ufffd\ufffd`O\ufffdH7\ufffd\ufffdHD\ufffd\ufffdepn\u0441\u0219;!\ufffd\"\ufffdOp934\ufffd0\ufffdP\"\ufffd\u00dd\ufffd\u04a5\ufffd\u0437\u01e9s,\ufffd\ufffd\/{\ufffd\ufffd\ufffdR\ufffd!S\ufffd\ufffdN%$\ufffdC\ufffdf\ufffd\ufffdi\\:CS\ufffd&amp;~\ufffd\ufffd\/\ufffd.n\ufffd\ufffd- ?\ufffd\ufffd\ufffd\ufffdZ\ufffd\ufffd\ufffd%\ufffd!\ufffd\ufffd\ufffdJt\ufffd\ufffd4\ufffd>5\ufffd\ufffd\ufffdK\ufffdeq\ufffd\ufffd.\ufffd-\ufffdf\ufffdy\ufffd\ufffd!&lt;\ufffd\ufffd6\ufffd s\ufffd\ufffdp\ufffdI\ufffd\ufffd\ufffd\ufffd\/ \ufffde\ufffd\ufffd(\ufffdk:\ufffd'\ufffd\ufffd\u00ca\ufffd\ufffd\ufffd\ufffd3\ufffd\ufffd\u04b2\ufffd\ufffdv3NK^s\ufffd\ufffd]\\ \ufffdG\ufffd\ufffdgd\ufffd$L\ufffd\ufffd\ufffd+C\ufffd\ufffd2)\ufffd\"\ufffd,GW\u04a1\ufffd?\ufffd?P=|Q\ufffd9\ufffd\ufffdm\ufffd1 \ufffdr6\ufffdBO\ufffd\ufffdF  \ufffdiCCPICC profile  x\ufffd}\ufffd=H\ufffd@\ufffd_S\ufffdR*\ufffdP\ufffd!Cu\ufffd *\ufffd(U,\ufffd\ufffd\ufffdVh\ufffd\ufffd\ufffd\ufffd\/h\u0490\ufffd\ufffd8 \ufffd?\ufffd.\u03ba:\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\"\u0183\ufffd~\ufffd\ufffd\ufffd\ufffd{\ufffdS\u037e@\ufffd,#\ufffdL\ufffd\ufffd\u00aaxE\u0088\"*1SOes\ufffd_\ufffd\ufffd\ufffd\ufffd.\u03b3\ufffd\ufffd\ufffd9\ufffd\ufffd\ufffd \ufffdH&lt;\ufffdt\ufffd\"\ufffd \ufffd\u0674t\ufffd\ufffd\ufffdV\ufffd\ufffds\ufffdq\ufffd.H\ufffd\ufffdu\ufffd\ufffd7\ufffde\ufffd\ufffd1r\ufffdy\ufffd\ufffdX\ufffda\ufffd\ufffdY\ufffdP\ufffd\ufffd\ufffdc\ufffd\ufffdQ\ufffd\ufffdwY\ufffd\ufffdY\ufffd5X\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd:\ufffd$\ufffd\ufffd\ufffd!\ufffd\ufffd*j\ufffd\ufffdU#\ufffdD\ufffd\ufffd\ufffda\u01df&amp;\ufffdL\ufffd*9P\ufffd \ufffd\ufffd\ufffd\ufffd\ufffdn\ufffd\ufffd\u0524\ufffdJ \ufffd\/\ufffd\ufffd1 v\ufffdv\u04f6\ufffd\ufffdm\ufffd}\ufffd\ufffd\ufffd+\ufffd\ubbf7\ufffd\ufffdO\u049b]-v\ufffd\ufffd\ufffd\ufffd\ufffd&amp;\ufffd\ufffd;@\ufffdI\ufffd\u0251\ufffd4\ufffdRx?\ufffdo* C\ufffd@p\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd G]-\ufffd \ufffd\ufffdX\ufffd\ufffd\ufffd=\ufffd=\ufffd\ufffd\u06ffg:\ufffd\ufffd E\ufffdr\ufffd\ufffdA   bKGD \ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd   pHYs     \ufffd\ufffd   tIME\ufffd ()\ufffdR\ufffd  \ufffdIDATx\ufffd\ufffd\ufffd;\ufffd0EQb\ufffd\ufffd\u06bc\ufffdG\ufffd\ufffd\ufffd$\ufffd!\ufffd\ufffd\u040e\ufffd\ufffdB\ufffdFsI\ufffd\ufffdmU\ufffdl\ufffd\ufffd\ufffd9 If\ufffd\ufffd\ufffd ^9Y   \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd   \ufffd\ufffd\ufffd\ufffdd:\ufffd \\\ufffdl\ufffd\ufffd\ufffd\ufffd\ufffd@\ufffd\ufffd\ufffdH2\ufffdw\ufffd\ufffd&lt;\ufffd~   @     @     @     @      @     @     @     @     @     @     @     @     @    \ufffd @     @     @     @     @     @     @     @     @      @     @     @     @     @     @     `w\ufffddZ_\ufffd\ufffdU\ufffd        \ufffd\ufffdve\ufffdQcu\ufffd'\ufffd\ufffd\ufffd\ufffd8,\ufffd7%9,\ufffd    @     @     @     @     @     @     @     @   \u02d8\ufffd\ufffd\ufffd\ufffd   \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd      \ufffd\ufffd\ufffd\ufffd\ufffd\ufffdk\ufffdZ\ufffd\ufffd^\ufffdhuN\ufffdH                vw\ufffd\ufffdB?R\ufffd\ufffd    IEND\ufffdB`\ufffd<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e9\/a90\/e01\/1e9a90e019d79cbfca56f560607d6d84.png\" alt=\"hitboxoverlay.png\" title=\"hitboxoverlay.png\" width=\"256\" height=\"256\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1e9\/a90\/e01\/1e9a90e019d79cbfca56f560607d6d84.png\"\/><figcaption>hitboxoverlay.png<\/figcaption><\/figure>\n<p>\u0410 \u0432\u043e\u0442 \u0438 ray.png<\/p>\n<pre><code>\ufffdPNG      IHDR           szz\ufffd  \ufffdzTXtRaw profile type exif  x\ufffd\ufffdQ\ufffd\ufffd&amp;E\ufffdYE\ufffd\ufffd$\ufffd\ufffdr0\ufffdsfY~\ufffdrWu\ufffd$3\ufffd|\ufffdL\ufffd`\ufffd%\ufffd]\ufffd\ufffd\ufffd\ufffdF\ufffd\ufffd\ufffdBR\ufffd\\r\ufffd8RI\ufffd+\ufffd\ufffd\ufffd+\u0174\ufffd\ufffd\ufffd=\ufffd\ufffd{\ufffd'&amp;A\/\u05ed\u057d\ufffd\u00ae&lt;b\ufffd\ufffdj\ufffdg\u0637#\ufffd\/\ufffdeF\ufffd\ufffd\ufffd\ufffd$\ufffd|\ufffd)mG\ufffd\ufffd\ufffd=\ufffdzlGm\/\\\ufffd\ufffd3\ufffdi]\u077c\/\ufffdJ]H\ufffdO!\ufffd\ufffd\ufffd\ufffd\ufffd:\ufffd\ufffd:\ufffd\ufffd\ufffd1N\ufffdaue;\ufffd \/\ufffd\ufffd\ufffdc|\ufffdE\ufffd\ufffd(|V\ufffd}\ufffd\ufffd\ufffd'-\ufffd\ufffd\ufffd\ufffdN\ufffd~\ufffd\ufffd\ufffd\ufffd\u02dd\ufffdN\ufffd>\\}y\ufffd\ufffdc\ufffd\ufffd\ufffd\u0554\ufffdh\ufffd\ufffd\u0126\ufffd,&lt; \ufffd\ufffd\ufffd2\ufffd\ufffdT\ufffdm\ufffd\ufffd\ufffd\ufffd\ufffd=\ufffdx\ufffd5*\ufffdPJ\u0529\u04a0s\ufffd\ufffdRL|\ufffd\ufffdgn,\ufffd\ufffdb\\\ufffd\ufffd 6)\ufffdA\ufffd\ufffd\ufffdD&amp;\ufffd;Zq\u02ca\ufffd\ufffd\ufffd\ufffd2\ufffd\ufffd\ufffd\ufffdw\ufffd\ufffd\ufffd\ufffdmJD\ufffdo\ufffd\ufffd\u03faF\ufffd\u073cb\ufffd\ufffd\ufffd\ufffdt\ufffdh|\ufffd\ufffdY\ufffd)\ufffd\ufffd\ufffd5\ufffd\ufffdC\u98f6dq\ufffdS\ufffd\ufffd'D\ufffd\ufffdv \ufffd[\ufffd\ufffdL\ufffd\ufffd)\ufffdAG\ufffd\ufffd\ufffdY @\ufffd\u0711$'\ufffd\ufffd\ufffd\ufffdy\ufffd\ufffd3Fk-+g\ufffdf\ufffdM \ufffd\ufffd\ufffd\ufffd\ufffdH\ufffd\ufffd\ufffdc\ufffdQCUE\ufffd\ufffdf5\ufffd\ufffdEk\ufffd\ufffd\ufffd\ufffd-\ufffdM\ufffd\ufffdX2\ufffdlfn\u016a\ufffd'W\ufffdn\ufffd^\ufffd.\ufffd=PK.V\ufffd\ufffdR+\ufffd\ufffd@\ufffd*\ufffdWX>\ufffdH\ufffd\ufffd\ufffd\u00cfr\u0506\ufffdi\ufffdi\ufffd\u035a\ufffd\ufffdj\ufffd.\ufffdD\ufffd\u077a\ufffd\ufffd\ufffdI\ufffd\ufffdNq\ufffdS\ufffd|\ufffd\ufffdg9\ufffd@\ufffd i\ufffd\ufffd\u00c6\ufffd2\ufffdMmS\ufffd\ufffd~\ufffdmj\ufffdH\ufffduvS\ufffd5\ufffd=\\\ufffd\ufffdNt21N\ufffd6\ufffd\ufffdy2\ufffdN)\ufffd$7\ufffd\ufffd\ufffd\ufffd(\ufffd\ufffd\ufffdN6\ufffd\ufffd$\ufffd\ufffd$\ufffdA7\ufffdr?\ufffd-\ufffd\ufffd7\ufffd'ra\ufffd\ufffd\/\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd=\ufffd\ufffd\ufffd+\ufffd\ufffdF\ufffd\ufffd7\ufffdU\ufffdP\ufffdF\ufffdZ\ufffd~\ufffdo\ufffd!\ufffdKoGoGoGoGoGoGoG\ufffdG\ufffd? \ufffd\ufffda\ufffd9\ufffd\ufffd\ufffd\ufffd\ufffdm  \ufffdiCCPICC profile  x\ufffd}\ufffd=H\ufffd@\ufffd_S\ufffdR*\ufffdP\ufffd!Cu\ufffd *\ufffd(U,\ufffd\ufffd\ufffdVh\ufffd\ufffd\ufffd\ufffd\/h\u0490\ufffd\ufffd8 \ufffd?\ufffd.\u03ba:\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\"\u0183\ufffd~\ufffd\ufffd\ufffd\ufffd{\ufffdS\u037e@\ufffd,#\ufffdL\ufffd\ufffd\u00aaxE\u0088\"*1SOes\ufffd_\ufffd\ufffd\ufffd\ufffd.\u03b3\ufffd\ufffd\ufffd9\ufffd\ufffd\ufffd \ufffdH&lt;\ufffdt\ufffd\"\ufffd \ufffd\u0674t\ufffd\ufffd\ufffdV\ufffd\ufffds\ufffdq\ufffd.H\ufffd\ufffdu\ufffd\ufffd7\ufffde\ufffd\ufffd1r\ufffdy\ufffd\ufffdX\ufffda\ufffd\ufffdY\ufffdP\ufffd\ufffd\ufffdc\ufffd\ufffdQ\ufffd\ufffdwY\ufffd\ufffdY\ufffd5X\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd:\ufffd$\ufffd\ufffd\ufffd!\ufffd\ufffd*j\ufffd\ufffdU#\ufffdD\ufffd\ufffd\ufffda\u01df&amp;\ufffdL\ufffd*9P\ufffd \ufffd\ufffd\ufffd\ufffd\ufffdn\ufffd\ufffd\u0524\ufffdJ \ufffd\/\ufffd\ufffd1 v\ufffdv\u04f6\ufffd\ufffdm\ufffd}\ufffd\ufffd\ufffd+\ufffd\ubbf7\ufffd\ufffdO\u049b]-v\ufffd\ufffd\ufffd\ufffd\ufffd&amp;\ufffd\ufffd;@\ufffdI\ufffd\u0251\ufffd4\ufffdRx?\ufffdo* C\ufffd@p\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd G]-\ufffd \ufffd\ufffdX\ufffd\ufffd\ufffd=\ufffd=\ufffd\ufffd\u06ffg:\ufffd\ufffd E\ufffdr\ufffd\ufffdA   bKGD \ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd   pHYs     \ufffd\ufffd   tIME\ufffd *5\ufffd&lt;l(   -IDATX\ufffd\ufffd\ufffdA  \ufffd#\ufffd\ufffd=\ufffd\ufffd%X%;y\ufffdy&amp;              p\ufffd\ufffdY4>\ufffd\ufffd    IEND\ufffdB`\ufffd<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 ray.png.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0430\u0434\u0434\u043e\u043d \u0438 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c &#8212; \u0443 \u0432\u0441\u0435\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0435\u0441\u0442\u044c \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u044b. <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434. \u0427\u0442\u043e\u0431\u044b \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0446\u0443 stick, \u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c\u0443 \u043f\u0430\u043b\u043a\u0430-\u043a\u043e\u043f\u0430\u043b\u043a\u0430, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0430 \u043f\u0430\u043f\u043a\u0443 texts, \u0432 \u043d\u0435\u0439 ru_RU.lang. \u0414\u0430\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u043a\u0430<\/p>\n<pre><code>item.\u043f\u0440\u0435\u0434\u043c\u0435\u0442.name=\u00a7l\u00a7a\u041f\u0430\u043b\u043a\u0430 \u043a\u043e\u043f\u0430\u043b\u043a\u0430<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0438 \u0438 \u0441\u0443\u0431\u043f\u0430\u043a\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\u0445, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438 \u0430\u043d\u0442\u0438-\u0441\u043f\u0430\u043c \u0441 \u0440\u0430\u043d\u0433\u0430\u043c\u0438 \u0447\u0430\u0442\u0430. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439. <\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/701226\/\"> https:\/\/habr.com\/ru\/post\/701226\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044c \u0442\u0435\u043c\u0443 \u0430\u0434\u0434\u043e\u043d\u043e\u0432. \u041c\u043d\u043e\u0433\u0438\u043c \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432 \u0438\u0433\u0440\u0435, \u0438 \u043e\u043d\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u0430\u0434\u0434\u043e\u043d\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0434\u043e\u043d \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0437\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439, \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435 \u0435\u0433\u043e. \u042f, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0434\u0434\u043e\u043d \u0432 minecraft bedrock. \u0415\u0441\u043b\u0438 \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u0430\u0434\u0434\u043e\u043d, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0440\u044b\u043d\u043e\u043a. \u0417\u0430\u043c\u0430\u043d\u0447\u0438\u0432\u043e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0432\u043e\u0451. \u041f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 json \u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 javascript. <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 myaddon \u043f\u043e \u043f\u0443\u0442\u0438 <code>android\/data\/com.mojang...\/files\/\/games\/com.mojang\/behaivor_packs<\/code>                                                \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>games\/com.mojang...\/...<\/code>                      \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438, \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0430. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 manifest.json, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u0430\u043f\u043a\u0435. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0438\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<\/p>\n<pre><code class=\"json\">{     \"format_version\": 1,     \"header\": {         \"description\": \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0434\u0434\u043e\u043d\u0430\"         \"name\": \"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0434\u0434\u043e\u043d\u0430\",         \"uuid\": \"\u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u044e\u0434\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",         \"version\": [ 1, 0, 5 ],         \"min_engine_version\": [ 1, 17, 10 ]     },     \"modules\": [         {             \"description\": \"\",             \"type\": \"data\",             \"uuid\": \"\u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u044e\u0434\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",             \"version\": [1, 0, 0]         }     ] }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, uuid \u044d\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0430\u0434\u0434\u043e\u043d\u0430. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0439\u0434\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 uuidgener*tor.net, \u044f \u043d\u0435 \u0445\u043e\u0447\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e &#171;\u0430&#187; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b &#171;*&#187;. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0443 \u043d\u0430\u0448\u0435\u043c\u0443 \u0430\u0434\u0434\u043e\u043d\u0443, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0430\u0434\u0434\u043e\u043d\u0430 \u0444\u0430\u0439\u043b pack_icon.jpg \u0438\u043b\u0438 pack_icon.png. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b, \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043c &#8212; \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0438\u0440\u0430 \u0432 &#171;\u043d\u0430\u0431\u043e\u0440\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432&#187; \u0435\u0441\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0430\u0434\u0434\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0451 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439. <\/p>\n<p>Function &#8212; \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0430\u0434\u0434\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u0447\u0430\u0442 \u0432\u0432\u0435\u0434\u0451\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \/function myfunction, \u0432\u0430\u043c \u0434\u0430\u0434\u0443\u0442 \u0438 \u044f\u0431\u043b\u043e\u043a\u043e, \u0438 \u0434\u0435\u0440\u0435\u0432\u043e. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 function \u0434\u0430\u0436\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u043d\u0442\u0438\u0447\u0438\u0442\u044b, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 minecraft bedrock. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0430\u0434\u0434\u043e\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0430\u0434\u0434\u043e\u043d\u0430 \u043f\u0430\u043f\u043a\u0443 functions. \u0412 \u043d\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u0442\u0435 myfunction.mcfunction, \u0432\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f myfunction. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u0434.<\/p>\n<pre><code>#\u0432\u044b\u0434\u0430\u0442\u044c \u0432\u0441\u0451\u043c \u044f\u0431\u043b\u043e\u043a\u043e give @a apple  #\u0432\u044b\u0434\u0430\u0442\u044c \u0432\u0441\u0435\u043c \u0434\u0435\u0440\u0435\u0432\u043e give @a log  #\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u0431\u043e\u0440\u0434 scoreboard objectives add my score dummy<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \/function ****. \u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0432\u0435\u0434\u0451\u0442\u0435 \/function myfunction, \u0432\u0441\u0435\u043c \u0438\u0433\u0440\u043e\u043a\u0430\u043c \u0432 \u043c\u0438\u0440\u0435 \u0434\u0430\u0434\u0443\u0442 \u044f\u0431\u043b\u043e\u043a\u043e \u0438 \u0434\u0435\u0440\u0435\u0432\u043e, \u0430 \u0435\u0449\u0451 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0441\u043a\u043e\u0440\u0431\u043e\u0440\u0434. \u0427\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043a \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u043d\u0435 \u0432\u0432\u043e\u0434\u044f \u0435\u0451 \u0432 \u0447\u0430\u0442 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0435 function \u0444\u0430\u0439\u043b tick.json. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043a. \u0412\u0432\u0435\u0434\u0451\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 json \u043a\u043e\u0434<\/p>\n<pre><code class=\"json\">{   \"values\": [     \"myfunction\"   ] }<\/code><\/pre>\n<p>\u0442\u0435\u043f\u0435\u0440\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f myfunction \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043a. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u043e\u0434\u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u044d\u0442\u043e 20 \u0442\u0438\u043a\u043e\u0432. <\/p>\n<p>\u0418\u0434\u0451\u043c \u0432\u0441\u0451 \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u0447\u0430\u0442. \u0412\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0434\u0430\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0442, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u043d\u0433\u0438, \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c. \u0422\u0443\u0442 \u0432\u0441\u0451 \u0432 \u043e\u0434\u043d\u043e\u043c \u0430\u0434\u0434\u043e\u043d\u0430 &#8212; \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c, \u0440\u0430\u043d\u0433\u0438 \u0432 \u0447\u0430\u0442\u0435 \u0438 \u0442\u0434. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c manifest.json, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 javascript. <\/p>\n<pre><code class=\"json\">{    \"format_version\": 2,    \"header\": {      \"name\": \"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0430\",      \"description\": \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0430\",      \"uuid\": \"\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",      \"version\": [ 1, 0, 3 ],      \"min_engine_version\": [ 1, 14, 0 ]    },    \"modules\": [      {        \"description\": \"made by habr @DinoZavr2\",        \"type\": \"data\",        \"uuid\": \"\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",        \"version\": [ 1, 0, 0 ]      },      {        \"description\": \"\",        \"language\": \"javascript\",        \"type\": \"script\",        \"uuid\": \"\u0422\u0440\u0435\u0442\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",        \"version\": [0, 0, 1],        \"entry\": \"scripts\/main\/index.js\"      }    ],    \"dependencies\": [      {        \"uuid\": \"\u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",        \"version\": [ 0, 1, 0 ]      },      {        \"uuid\": \"\u041f\u044f\u0442\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 id\",              \"version\": [ 0, 1, 0 ]      }    ]  }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0431\u0440\u0430\u0442\u044c. \u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f 5 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0439\u0434\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0443\u0442\u044c \u043a \u0438\u043d\u0434\u0435\u043a\u0441\u0443. \u0412\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. <\/p>\n<p>\u0412 \u043f\u0430\u043f\u043a\u0435 \u0430\u0434\u0434\u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 scripts, \u0432 \u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u044b (\u0442\u043e\u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e). \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0435 scripts \u043f\u0430\u043f\u043a\u0443 main. \u0412 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b index.js, \u044f\u0437\u044b\u043a\u0430 javascript. \u042d\u0442\u043e \u043d\u0430\u0448 \u0438\u043d\u0434\u0435\u043a\u0441. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0443\u0434\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n<pre><code class=\"javascript\">import { chatrank } from '.\/misc\/chat.js' import { world } from 'mojang-minecraft' import { timer } from '.\/misc\/second.js' let tick = 0, worldLoaded = false, loadTime = 0;  world.events.beforeChat.subscribe((data) => {     chatrank(data) }) world.events.tick.subscribe((ticks) => {     tick++     if (!world.getDimension(\"overworld\").runCommand('testfor @a').error &amp;&amp; !worldLoaded) {         loadTime = tick         worldLoaded = true;         world.getDimension(\"overworld\").runCommand(`execute @r ~~~ say \u00a7l\u00a7a\u041c\u0438\u0440 \u0431\u044b\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432 ${ticks} \u0442\u0438\u043a\u0430\u0445. \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! `)         world.getDimension(\"overworld\").runCommand(`scoreboard objectives add chatsSent dummy`)     }     if(tick >= 20){         tick = 0         timer()     } })<\/code><\/pre>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043a\u0430\u0445 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u043c\u0438\u0440. \u041d\u0443, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 js \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0443\u0442 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 main \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 misc, \u0430 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b chat.js, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0441\u043f\u0430\u043c \u0438 \u0440\u0430\u043d\u0433\u0438. <\/p>\n<pre><code class=\"javascript\">import { world } from \"mojang-minecraft\"  let messages = new Map()  function chatrank(data){     const tags = data.sender.getTags()     data.sender.runCommand(`scoreboard players add @s chatsSent 0`)     let score = parseInt(data.sender.runCommand(`scoreboard players test @s chatsSent *`).statusMessage.match(\/-?\\d+\/)[0])     let ranks = [];     for(const tag of tags){         if(tag.startsWith('rank:')){             ranks.push(tag.replace('rank:', ''))         }     }     if(ranks.length == 0)ranks = [\"\u00a7l\u00a7aPlayer\"]          if(data.message.startsWith(\"!*\")){         data.cancel = true         return     }     if(score >= 3){         data.cancel = true         return world.getDimension(\"overworld\").runCommand(`ability \"${data.sender.nameTag}\" mute true`)     }     if(!messages.get(data.sender.name)){         messages.set(data.sender.name, data.message)     }else {         const oldMsg = messages.get(data.sender.name)         if(oldMsg == data.message){             data.cancel = true             return world.getDimension(\"overworld\").runCommand(`tellraw \"${data.sender.nameTag}\" {\"rawtext\":[{\"text\":\"\u00a7l\u00a7c\u041d\u0435 \u043f\u0438\u0448\u0438\u0442\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\"}]}`)         }     }     let text = `\u00a7f[${ranks}\u00a7r\u00a7f] \u00a77${data.sender.nameTag}: \u00a7f${data.message}`     world.getDimension('overworld').runCommand(`tellraw @a {\"rawtext\":[{\"translate\":\"\u00a7l\u00a7eM\u00a7r - ${JSON.stringify(text)}}]}`)     messages.set(data.sender.name, data.message)     data.sender.runCommand(`scoreboard players add @s chatsSent 1`)     data.cancel = true } export { chatrank }<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0440\u0430\u043d\u0433, \u043d\u0443\u0436\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c tag @s add rank:\u0412\u0410\u0428_\u0420\u0410\u041d\u0413. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, rank:\u00a7l\u00a7cADMIN, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0430\u0441\u043d\u044b\u043c ADMIN, \u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u043d\u0433 \u0437\u0435\u043b\u0451\u043d\u044b\u043c Player. \u041d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0440\u0430\u043d\u0433\u0438 \u0438 \u0430\u043d\u0442\u0438-\u0441\u043f\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u0432 misc \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b second.js, \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. <\/p>\n<pre><code class=\"javascript\">import { world } from 'mojang-minecraft' let seconds = 0  export function timer(){     seconds++     if(seconds >= 4){         world.getDimension(\"overworld\").runCommand(`scoreboard players reset * chatsSent`)         world.getDimension(\"overworld\").runCommand(`scoreboard players set \"dummy\" chatsSent 1`)         seconds = 0         return seconds     } }<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 js \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442, \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0438\u0440 \u0441 \u044d\u0442\u0438\u043c \u0430\u0434\u0434\u043e\u043d\u043e\u043c, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u0438\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c gametest \u0438 education edition. \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0440\u0430\u043d\u0433\u043e\u0432 \u0438 \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c\u0430 &#8212; 1.19.11 \u0438 \u0432\u044b\u0448\u0435. \u041d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445, \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0430\u0433 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 tellraw.<\/p>\n<figure class=\"full-width\">> \u0431\u0443\u0434\u0435\u0442 &quot;:&quot;. \u041f\u0435\u0440\u0435\u0434 >> \u043d\u0438\u043a, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439&#187; title=&#187;\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043d\u0438\u043a, \u0442\u0430\u043c \u0432\u043c\u0435\u0441\u0442\u043e >> \u0431\u0443\u0434\u0435\u0442 &quot;:&quot;. \u041f\u0435\u0440\u0435\u0434 >> \u043d\u0438\u043a, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439&#187; width=&#187;2340&#8243; height=&#187;1080&#8243; data-src=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/260\/073\/103\/26007310354b975331f5e9bd2d2f4f68.jpg&#187; data-blurred=&#187;true&#187;\/><figcaption>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043d\u0438\u043a, \u0442\u0430\u043c \u0432\u043c\u0435\u0441\u0442\u043e >> \u0431\u0443\u0434\u0435\u0442 &#171;:&#187;. \u041f\u0435\u0440\u0435\u0434 >> \u043d\u0438\u043a, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0441\u0442\u043e\u0439<\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 &#8212; \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0447\u0430\u0442\u0435. \u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u0447\u0430\u0442 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0432\u0435\u043b\u0438     .mycommand, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432\u0441\u0435\u043c \u0438\u0433\u0440\u043e\u043a\u0430\u043c. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 scripts \u0444\u0430\u0439\u043b commands.js<\/p>\n<pre><code class=\"javascript\">import { world } from \"mojang-minecraft\";  world.events.beforeChat.subscribe((eventData) => {     var player_name = eventData.sender.name     var player = eventData.sender     var args = eventData.message.split(\" \")     if (args[0].charAt(0) == \".\") {         eventData.cancel = true         if (args[0] == \".mycommand\") {             player.runCommand(\"\u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\")             player.runCommand(\"\u0437\u0434\u0435\u0441\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\")         } else {             player.runCommand(\"tellraw @s {\\\"rawtext\\\":[{\\\"text\\\":\\\"\u00a7c\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\\\"}]}\");         }     } });<\/code><\/pre>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 player.runCommand(&#171;\u043a\u043e\u043c\u0430\u043d\u0434\u0430&#187;). \u0414\u0430\u043b\u0435\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b main.js<\/p>\n<pre><code class=\"javascript\">import 'scripts\/commands.js'<\/code><\/pre>\n<p>\u0412\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u043a\u0440\u0438\u043f\u0442. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442\u0435 \u0432\u0432\u0435\u0434\u0451\u043c \u0432 \u0447\u0430\u0442 .mycommand, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. <\/p>\n<p>\u041a\u0430\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0430\u0434\u0434\u043e\u043d? \u041b\u0435\u0433\u043a\u043e. \u0415\u0441\u043b\u0438 \u0430\u0434\u0434\u043e\u043d \u043d\u0435 \u0431\u044b\u043b \u0441\u043a\u0430\u0447\u0430\u043d, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0444\u0430\u0439\u043b LICENSE.md \u0438\u043b\u0438 LICENSE.txt, \u0432 \u043d\u0438\u0445 \u0432\u0441\u0451 \u0443\u043a\u0430\u0437\u0430\u0442\u044c. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<pre><code>this addon by @DinoZavr2 AntiSpam and chat rangs  \u00a92022<\/code><\/pre>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u043d\u043d\u0430\u044f, \u0432\u0441\u0451 \u043d\u0430 \u0432\u0430\u0448 \u0432\u043a\u0443\u0441. <\/p>\n<h2>\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b<\/h2>\n<p>\u041c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0430\u0434\u0434\u043e\u043d\u0430\u0445. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430\u0445. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 mytextures \u043f\u043e \u043f\u0443\u0442\u0438 android\/data\/com.mojang&#8230;\/files\/games\/com.mojang\/resource_packs, \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0430. \u0412 \u043f\u0430\u043f\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0430\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0430\u0448 manifest.json. \u0412\u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u043a\u043e\u0434<\/p>\n<pre><code class=\"json\">{   \"format_version\": 1,   \"header\": {     \"description\": \"\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043f\u0430\u043a\u0430\",     \"name\": \"\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-341631","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/341631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=341631"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/341631\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=341631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=341631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=341631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}