Привет, хабр! Однажды, играя в Minecraft bedrock, я задумался: можно ли попробовать себя в роли разработчика? Ответ был очевиден - да. Режим "творческий" позволяет сделать любой декор для карты - от куска дома до огромной игровой карты с сюжетом и прекрасным декором. Права оператора, которые автоматически выдаются когда вы создаёте мир Minecraft, позволяют добавить некоторые дополнения - скорборд, рекорды, бесконечные эффекты, партиклы, NPC и многое другое.
Если вам чего-то не хватает, или вы не можете сделать что-то с командными блоками, вы всегда можете создать аддон, в котором вы напишете код JSON, JavaScript или просто function от майнкрафт.
Работа с командами и механизмами
Сначала попробуем выполнить свою первую команду. Чтобы сообщение в чате считалось командой, вы должны добавить в начале косую палку, тоесть знак "/". Попробуем выдать себе 2 яблока
/give @s apple 2
Нажимаем enter и готово. Вам выданы 2 яблока. Может, попробуем куда-нибудь телепортироваться? Команда /tp, как телепортироваться к другому игроку - там есть подсказки. А как запомнить место и телепортироваться к нему? В настройках мира включите функцию "показать координаты". Координаты в майнкрафт - это набор цифр, тоесть номер блока, на котором вы находитесь. Координаты могут быть 3х видов - координаты по X, Y, Z. X - право, либо лево, в зависимости от направления вашего экрана. Y - высота. Z - тоже самое, что и X, только в противоположную сторону. Вот так выглядит команда:
/tp @s 0 68 76
Если вы хотите телепортироваться в одну ту кординату, на которой вы стоите, надо использовать знак "~". Например, вы хотите остаться на месте, но и телепортироваться вверх на определённую координату Y.
/tp @s ~ 89 ~
Также существуют отрицательные координаты. Когда вы спускаетесь всё ниже, и доходите до нуля координат Y - вы всё можете идти дальше, но ограничено. Максимальная высота внизу, которую вы можете достигнуть (с версии 1.19), это -60. На некоторых версиях -64. Но не только по Y бывают отрицательные координаты. Логично, что они есть с каждой стороны.
Скорборд - это окно с очками, которые пополняются при определённом действии, заданным в командном блоке. Чтобы получить командный блок, пропишите /give @s command_block 1. Чтобы задать новый скорборд, и включить его отображение, пропишите эти команды:
/scoreboard objectives add money dummy §l§aMONEY
/scoreboard objectives setdisplay sidebar money
Далее поставьте командный блок(цикл, работает всегда), и пропишите в нём это:
/scoreboard players add @a money 0
Вы наверное поняли, что scoreboard имеет 2 модуля - objectives и players. Objectives задаёт скорборды, тоесть цели, а players управляет скорбордами игроков. Теперь в правой части экрана будет отображатся окно с очками, заголовком MONEY (зелёным жирным цветом, т.к. мы написали §l§a). Правда есть одна проблема - если игрок выйдет из игры, вместо его никнейма будет написано "Игрок вне сети". Иногда это очень раздражает - "Игрок вне сети" выше всех в очках. Давайте попробуем это исправить
Чтобы исправить "Игрок вне сети", поставьте командный блок, в котором напишите это:
execute @a ~~~ scoreboard players operation @s money = @s Test
execute - это команда, исполняющая другие команды от лица определённого игрока. Мы указали игрока @a, что означает все игроки. @s означает вы, тоесть игрок, от лица которого выполняется команда. Этот командный блок, который мы добавили, изменим на "цикл", и в его параметрах укажем "работает всегда". Далее, поставим ещё один командный блок, смотрящий наверх
scoreboard objectives remove Test
На него ещё командный блок, тоже смотрящий наверх, только не цикл, а "цепь", " работает всегда"
scoreboard objectives add Test dummy §l§aMONEY
на него ещё цепь
scoreboard objectives setdisplay sidebar Test
и ещё один
scoreboard players add @a Test 0
Наша цель изменилась на Test. Теперь, вам не прибавятся очки, если вы напишете money, но зато прибавятся, когда напишете Test. К тому же, мы это сделали для того, чтобы не появлялась "Игрок вне сети".
Селекторы - это способ указать определённого игрока. @a - все игроки, @s - вы, @r - случайный игрок, @p - ближайший игрок. Вы можете изменить значение селектора, с помощью квадратных скобок [ ]. Давайте попробуем забанить всех игроков с ником Steve:
/kick @a[name="Steve"]
Чтобы забанить всех, кроме значения, используйте "!". Забаним всех игроков, кроме стивов:
/kick @a[name=!"Steve"]
А теперь телепортируем всех с кординат 0,0,0 к вам:
/tp @a[x=0,y=0,z=0,r=2] ~~~
r - это регион, например у меня в двух блоках. Его значение не может быть 0, иначе работать не будет, но регион так же не может отсутствовать, если вы указали x, y или z.
Впринципе, с командами мы разобрались.
Основы аддоно-создания
Без аддонов не может обойтись почти каждый кбшер. Давайте создадим своё дополнение.
Для начала, по пути Android/data/com.mojang.../files/games/com.mojang/behaivor_packs/ создаём папку своего аддона с любым названием, кроме примитивных символов. У некоторых этот путь может быть games/com.mojang.../..., но суть не в этом. Перенесите файл jpg или png в папку с вашим аддоном под названием pack_icon.jpg (png), это будет как иконка аддона. Название и описание указываются в манифесте - создайте файл manifest.json. Запишем и отредактируем этот json код:
{
"format_version": 1,
"header": {
"description": "описание"
"name": "название",
"uuid": "Уникальный id",
"version": [ 1, 0, 5 ],
"min_engine_version": [ 1, 17, 10 ]
},
"modules": [
{
"description": "",
"type": "data",
"uuid": "Второй уникальный id",
"version": [1, 0, 0]
}
]
}
Уникальный id можно сгенерировать на любом первом сайте, введя в браузер "uuid generator". Обратите внимание, что все уникальные id в коде должны быть разные, у меня например 2.
Теперь перезайдите в майнкрафт. При создании мира, во вкладке "наборы параметров" появился наш аддон. Он пока-что пустой, и весит 0.1 мб. Это мы будем исправлять.
Функции - это много команд в одной команде (/function). Давайте попробуем создать свою функцию. В папке нашего аддона создайте папку functions, а в ней файл myfunc.mcfunction. Попробуем дать 2 яблока и 3 командных блока
give @a apple 2
give @a command_block 3
Теперь зайдем в майнкрафт и пропишем /function myfunc. Нам выдадут 3 командных блока и 2 яблока. Таким образом, благодаря функциям, создавались некоторые популярные античиты для Minecraft Bedrock.
Чтобы функция выполнялась автоматически, а не по команде, создайте в папке functions файл tick.json. Вот код:
{
"value": [
"myfunc.mcfunction"
]
}
Чтобы добавить скрипт на JavaScript, создайте папку scripts, в ней файл с названием функции, например, chat.js, index.js, main.js, папка main, папка misc в main и тд. Вот пример:
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
}
}
Это second.js из моего одного аддона.
На этом я закончу статью. Надеюсь, чем-то помог тебе попробовать себя в роли разработчика. В статье было слишком мало команд, так как я написал только про основы. Если вы попросите, могу сделать статью с многими командами.
Комментарии (6)
voopr
29.11.2022 00:30+1Предлагаю дополнить заголовок статьи словом bedrock, т.к. под просто Minecraft чаще имеется в виду java edition, а в плане аддоностроения Minecraft это совсем не то же самое что Minecraft bedrock.
DinoZavr2 Автор
29.11.2022 09:18Здравствуйте. В первых словах написано bedrock. Если нужно, могу дополнить заголовок.
HardlinePeak936
29.11.2022 14:58Ну во первых, мало информации, новичёк может не знать какие есть команды, что за командный блок и как он работает, какие возможности и ограничения у аддонов, для чего manifest и т.д. Во вторых, вы где-то потеряли две запятые в manifest-е (после описания и uuid). И в третьих, для чего написанна эта статья?
DinoZavr2 Автор
29.11.2022 15:00+1Здравствуйте! Спасибо за комментарий. Была потеряна 1 запятая, вторая не нужна, щас всё исправлю. Я в начале пояснил, зачем эта статья, для того чтобы попробовать себя в роли разработчика и сделать первый аддон
DinoZavr4
Ты, мне кажется, Где-то совершил ошибку. Часть про аддоны слишком маленькая, и подробных объяснений нет. Пожалуйста, дополните эту часть аддоносоздания, буду благодарен.
DinoZavr2 Автор
Спасибо за комментарий. Постараюсь подробно объяснить.