В Minecraft 1.13 мы полностью переделываем систему команд, чтобы ими было проще пользоваться, чтобы они быстрее работали, и чтобы они поддерживали более крутые штуки, везде где только можно. Сегодняшний снапшот представляет собой вроде бы работающий вариант командной системы.

 

Изменения в Майнкрафт 1.13

  • Новая модель лошади! Урра!
  • Множество исправленных ошибок! В первую очередь, зависания на macOS.
  • Новая бибилотека команд! Подробности ниже.
  • Добавлены новые параметры для масштабирования интерфейса! Пользователи разрешения 4k радуйтесь, вы увидите чуть больше пикселей ;)

 

Исправлены ошибки

  • MC-121281 — Скроллбары (индикаторы прокрутки) в творческом инвентаре и меню сервера не были доступны для мыши
  • MC-121282 — Иконки серверов удалялись при загрузки меню сетевой игры
  • MC-121283 — Подводный и «подлавовый» оверлей не отображался
  • MC-121284 — Кнопка ресурспаков и папки миров не работала
  • MC-121288 — Кинематографическая камера не работала как надо
  • MC-121302 — Кнопка «Прямое соединение» включалась/выключалась неверным образом
  • MC-121314 —  Текст бегуна «FS Resolution» не помещался в отведённом поле
  • MC-121328 — Интерфейс масштабировался неверно
  • MC-121329 — Нажатие кнопки «чат» не выбирало поиск в меню творческого инвентаря или книге рецептов
  • MC-121334 — Нажатие [1-9] в творческом режиме, отправляло дополнительное нажатие в поле поиска
  • MC-121396 — Кнопки WASD перечислены в странной последовательности
  • MC-121418 — Сбой при попытке вставить что-то не являющееся строкой из буфера обмена
  • MC-121419 — Ошибка при отображение всплывающих подсказок
  • MC-121421 — Нажатие кнопки Enter в названии или поле ключа генератора, при создании мира не вызывало создание мира.
  • MC-121433 — Буквы (названия клавиш) на не английском языке выводилось в нижнем регистре.
  • MC-121456 — Чанки пропадали после переключения в полноэкранный режим
  • MC-121468 — Статистика не упорядочивалась по клику на иконку
  • MC-121517 — Кнопка переключения в полноэкранный режим не переключала игру в полноэкранный режим
  • Множество ошибок, связанных с командами, поскольку мы полностью переписали систему команд ¯\(ツ)

 

Команды

Предупреждение

  • Команды ещё не работают в сетевой игре. Вы можете писать их как обычно, но они не поддерживают подсказки по кнопке TAB и т.п.
  • Автозаполнение по кнопке TAB всё ещё в работе, поэтому подсказки будут работать только для основных вещей.
  • Многое не завершено или может работать не так как должно. Пожалуйста сообщайте об этом на баг-трекере, чтобы мы могли ими заняться!
  • Если мы почувствуем, что система команд слишком сырая или неработоспособная (а это вполне возможно), то мы откатим изменения, до тех пор пока не доработаем. Это предварительная версия, до финала ещё далеко.
  • Некоторые изменения не будут заметны до выпуска более поздних снапшотов. Например значения data всё ещё технически существуют, но будут удалены очень скоро.
  • Новые команды не переведены. Они созданы с учетом возможности перевода, проще чем это сделано сейчас, но пока этого ещё нет.
  • Интерфейс набора команды ещё слишком сырой. Но скоро он будет супер-классным!

 

Общая информация

  • Большинство команд стали чувствительнее к регистру, чем раньше. Везде где возможно, используется нижний регистр.
  • Например, такое больше не разрешено: /scoreboard ObJeCtIvEs ...
  • Команды будут работать быстрее и эффективнее. Особенно функции. Да!
  • Функции будут полностью анализироваться и кэшироваться при загрузке. Это значит, что если какая-то команда указана в них неправильно, то это будет известно сразу в момент загрузки.
  • Это значит, что для проверки работы карты в версии 1.17.x, нужно будет просто открыть карту в этой версии. Все ошибки будут фиксироваться в журнальном файле. Если ошибок нет, то вероятно всё будет работать отлично!
  • Вот перечень всех возможных вариантов команд: https://gist.github.com/Dinnerbone/943fbcd763c19be188ed6b72a12d7e65
    • Он такой подробный, потому каждая строка — это отдельный вариант написания команды, с учетом всех возможных параметров и условий.
    • ... — означаете, что тут необходимо указать другую команду
    • -> foo — означает, что это алиас для foo
  • Новая библиотека команд называется «Brigadier» (Бригадир). Тут нет никаких отсылок, мне просто понравилось название.

Отдельные команды

Если команды нет в этом списке, то это значит что с ней не произошло заметных изменений и она должна работать как прежде.

/advancement

  • Удалена команда /advancement test поскольку теперь она станет частью селектора сущностей

/clear

  • Изменился синтаксис команды  /clear
    • /clear [<target>] [<item>] [<data>] [<count>] [<nbt>] -> /clear [<target>] [<item>] [<count>]
  • Изменение связано с изменением синтаксиса параметра item (предмет)

/clone

  • Изменился синтаксис команды /clone
    • /clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> filtered [force|move|normal] [<block>] [<data>] -> /clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> filtered [<block>] [force|move|normal]
    • /clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> [replace|masked] [force|move|normal] [<block>] [<data>]-> /clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> [replace|masked] [force|move|normal]
  • Изменение связано с изменением синтаксиса параметра block (блок)

/defaultgamemode, /gamemode

  • Теперь поддерживаются только текстовое название режима. Цифры и сокращения использовать нельзя
    • /gamemode 2 -> /gamemode adventure
    • /defaultgamemode sp -> /defaultgamemode spectator

/difficulty

  • /difficulty <value> — поддерживает только строчное представление названия сложности. Сокращения и цифры больше не поддерживаются.
    • /difficulty 2 -> /difficulty normal
    • /difficulty p -> /difficulty peaceful
  • Можно уточнить текущую сложность, написав команду без указания аргументов —  /difficulty

/effect

  • Синтаксис команды /effect изменился, чтобы предотвратить возможную путаницу
    • /effect <entity> <effect> -> /effect give <entity> <effect>
    • /effect <entity> clear -> /effect clear <entity> [<effect>]
  • Выдача эффекта будет считаться неуспешной, если команда не произвела никаких результатов
    • Некоторые мобы имеют иммунитет к эффектам (например, эндер-дракон)
    • Наличие более мощного эффекта, при попытке наложить такой же но меньшего уровня

/enchant

  • Команда удалена, в связи с добавление команды /modifyitem

/execute

  • Команда /execute была полностью переработана
  • Поддерживаются модификаторы, определяющие как команда будет запущена:
    • /execute as <entity> <chained command> — выполняет команду используя указанную сущность (но не меняя координаты)
    • /execute at <entity> <chained command>— выполняет команду, используя координаты указанной сущности (не не меняя саму сущность)
    • /execute offset <x y z> <chained command> — выполняет команду, используя координаты <x y z>
    • /execute align <axes> <chained command> — выполняет команду, скорректировав координаты по сетке (где axes — это любая комбинация x y и z)
  • Условные модификаторы, позволяющие предотвратить запуск команды:
    • /execute (if|unless) block <x y z> <block> <chained command> — — проверяет условие совпадение блока в точке  <x y z> с <block>  и выполняет команду при положительном (if) или отрицательном (unless) результате проверки условия./execute (if|unless) blocks <begin> <end> <destination> (all|masked) <chained command> — проверяет условие совпадение точки <destination> региону между  <start> и <end>  и выполняет команду при положительном (if) или отрицательном (unless) результате проверки условия.
    • /execute (if|unless) entity <entity> <chained command> — проверяет существование сущности <entity>  (т.е. их должно быть 1 или больше) и выполняет команду при положительном (if) или отрицательном (unless) результате проверки условия.
    • /execute (if|unless) score <target> <targetObjective> (<|<=|=|>=|>) <source> <sourceObjective> <chained command>— проверяет соответствие счёта <target> счёту <source> и выполняет команду при положительном (if) или отрицательном (unless) результате проверки условия.
  • В качестве замены команды /stats, новая подкоманда store позволит сохранять результат выполнения команды в любое время:
    • /execute store (result|success) <name> <objective> <chained command>
    • result — это результат выполнения команды, которые заменит старые:  AffectedBlocksAffectedEntitiesAffectedItemsQueryResult
    • success  — счётчик сколько раз команда была выполнена успешно. Обычно это 0 или 1. Но если команды была разделена (например с помощью модификатора as @a) то оно может быть и больше 1. Этот счётчик заменяет SuccessCount
    • Значение сохраняется в Scoreboard, под используя название <name> и задачу <objective>
    • Задача должна существовать, но в отличии от команды /stats не нужно задавать ей начальное значение для <name>
    • Значение будет сохранено когда будет завершено выполнение всей команды
    • Если команда не была выполнена (success равно 0), то result будет также равен 0
  • Вы можете использовать все под команды вместе
    • После каждой под команды нужно писать следующую
    • После того перечислены все подкоманды, саму команду напишите после параметра run
    • /execute as somebody at somebody run say hi
  • Примеры того как изменится команды (было → стало):
    • /execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say Stone! -> /execute as @e at @s if block ~ ~ ~ stone run say Stone!
    • /execute @e ~ ~ ~ detect ~ ~ ~ grass summon pig -> /execute at @e if block ~ ~ ~ grass run summon pig
    • /execute @e ~ ~ ~ say Hello! -> /execute as @e run say Hello!

/experience

  • /xp — это теперь алиас для  /experience
  • Команда разделена на три подподкоманды
  • /experience add <players> <amount> [points|levels]
    • Добавляет <amount> очки опыта или уровни указанным игрокам <players> (по умолчанию, очки опыта)
    • Добавленные очки опыта будут, как обычно, вызывать повышение уровня
    • Отрицательные значения поддерживаются — чтобы отнимать опыт
    • Отняв очки опыта, можно также понизить и уровень игрока
  • /experience set <players> <amount> [points|levels]
    • Задаёт <amount> значение очков опыта или уровня указанных игроков <players> (по умолчанию, очки опыта)
    • Нельзя задать большее значение очков опыта, чем позволяет текущий уровень
    • При изменении уровня, очки меняются пропорционально (т.е. сколько их было в процентах, на предыдущем уровне)
  • /experience query <player> (points|levels)
    • Возвращается значение очков опыта или уровня игрока  <player>

/fill

  • Синтаксис команды /fill изменился
    • /fill <x y z> <xt yt zt> <block> <data> replace [<replaceBlock>] [<replaceData>] -> /fill <x y z> <xt yt zt> <block> replace [<filter>]
    • /fill <x y z> <xt yt zt> <block> [<data>] [destroy|hollow|keep|outline|replace] [<nbt>] -> /fill <x y z> <xt yt zt> <block> [destroy|hollow|keep|outline|replace]
  • Изменение связано с изменением синтаксиса параметра block (блок)

/function

  • Больше не поддерживается параметры (if|unless) <entity>
    • Они перенесены в команды /execute
    • /function foo if @e[tag=bar] -> /execute if entity @e[tag=bar] run function foo

/gamerule

  • Команда /gamerule больше не принимает неизвестных (т.е. «пользовательских») игровых правил
    • Это вызывало множество проблем из-за того, что опечатки воспринимались как игровые правла
    • Используйте вместо своих правил функции или таблицу рекордов
    • Созданные ранее игровые правила не будут доступны, будут поддерживаться только встроенные в игру.
  • Значения для команды /gamerule теперь будут проверяться на соответствие типов данных (чтобы не указывать текст вместо чисел), что позволит избежать очевидных ошибок

/give

  • Синтаксис команды/give изменился
    • /give <players> <item> [<count>] [<data>] [<nbt>] -> /give <players> <item> [<count>]
  • Изменение связано с изменением синтаксиса параметра item (предмет)

/modifyitem

  • Это новая команда, которая заменит  /enchant
  • Пока нет информации о том как она будет работать.

/replaceitem

  • Синтаксис команды /replaceitem изменился
    • /replaceitem block <pos> <slot> <item> [<count>] [<data>] [<nbt>] -> /replaceitem block <pos> <slot> <item> [<count>]
    • /replaceitem entity <target> <slot> <item> [<count>] [<data>] [<nbt>] -> /replaceitem entity <target> <slot> <item> [<count>]
  • Изменение связано с изменением синтаксиса параметра item (предмет)

/scoreboard

  • У команды был /scoreboard удалён параметр [<dataTag>]
    • Изменение связано, с изменением селектора сущностей
  • /scoreboard tag преобразовано в команду /tag
  • /scoreboard team преобразовано в команду/team
  • /scoreboard players test удалена

/setblock

  • Синтаксис команды /setblock изменился
    • /setblock <pos> <block> [<data>] [<mode>] [<nbt>] -> /setblock <pos> <block> [<mode>]
  • Изменение связано с изменением синтаксиса параметра block (блок)

/stats

  • Удалена, теперь является частью команды /execute

/stopsound

  • Моно использовать * для указания всех звуков с подобным именем из любых источников

/testfor, /testforblock, /testforblocks

  • Удалены. Теперь это часть команды  /execute

/toggledownfall

  • Удалена. Она всегда использовалась для остановки дождя, а потом через минуту снова начинался дождь.
  • Пользуйтесь командой /weather

/tp, /teleport

  • /tp будет алиасом для команды  /teleport
  • Кординаты теперь указывают относительно к исполнителю, также как во всех других командах

/trigger

  • /trigger <objective> — это сокращение для команды /trigger <objective> add 1

/weather

  • Если время не указано, то будет установлено 5 минут (раньше устанавливалось случайным образом)

Командные блоки

На выходе командного блока раньше был «счётчик успешных выполнений», а сейчас — «результат».

 

Типы параметров команд

Селектор сущностей (@E[..])

  • Улучшенный анализатор ошибок призван помочь предотвратить возможные ошибки. Вещи вроде limit=0level=-10gamemode=purple не будуту разрешены, поскольку не имеют смысла.
  • Больше нет отдельных минимального и максимального значениям, вместо этого мы используем интервалы
  • level=10 — это level 10
  • level=10..12 — это level 10, 11 or 12
  • level=5.. это всё от  level 5 и выше
  • level=..15 это всё от level 15 и ниже
  • x & z больше не отцентрированы по центру (т.е. x=0 не соответствует x=0.5). Координаты поддерживают десятичные дроби, поэтому если нужно можно их использовать x=0.5.
  • gamemode (ранее m)  больше не поддерживает цифровых идентификаторов или сокращений, которые устарели уже очень давно.
  • Таинственные сокращения были переименованы
  • m -> gamemode
  • l или lm -> level
  • r или rm -> distance
  • rx или rxm -> x_rotation
  • ry или rym -> y_rotation
  • c -> limit
  • limit (было c) — больше не поддерживает отрицательных значений, вместо этого используется  sort=furthest
  • xyzdistance (было r), x_rotation (было rx) and y_rotation(было ry) — теперь поддерживают дробные значения 12.34
  • Пробелы разрешены! @e[name="Hello World"]
  • Поддержка NBT! @e[nbt={Cool:1b},nbt=!{Uncool:1b}]
  • Где можно, поддерживаются повторяющиеся аргументы
  • tag=foo,tag=bar,tag=!baz — соответствует чему с foobar но без baz
  • type=!cow,type=!chicken — соответствует чему, что не является ни курицей ни коровой
  • type=cow,type=chicken — не допустимо, поскольку тип не может одновременно указывать на корову и на курицу.
  • Можно определять вид сортировки
  • sort=nearest — сортировка по расстоянию (действует по умолчанию для @p)
  • sort=furthest — обратный порядок предыдущего варианта (раньше для этого использовалось что-то вроде c=-5)
  • sort=random — случайная сортировка (действует по умолчанию для @r)
  • sort=arbitrary — произвольная сортировка; это новая опция, необходимая чтобы не производить сортировку результата (действует по умолчанию для@e@a)
  • Определение счёта теперь выглядит так scores={foo=1,bar=1..5}
  • Можно осуществлять проверку достижений, используя advancements={foo=true,bar=false,custom:something={criterion=true}}
  • true — для тех кто «выполнил достижение» , false — для тех кто «не выполнил достижения»
  • Поочередно указываются блоки критериев для проверки.

 

Блоки

  • Везде, где раньше требовались отдельные параметры block, data и nbt, теперь осталься только аргумент block, который выглядит так:
  • stone
  • minecraft:redstone_wire[power=15,north=up,south=side]
  • minecraft:jukebox{RecordItem:{...}}
  • minecraft:furnace[facing=north]{BurnTime:200}
  • Идентификатор необходим, но как и раньше если пространство имён не определено, то будет использовано значение по умолчанию —  minecraft:
  • Состояния внутри [] разделяются запятыми и должны указывать свойства и значения, поддерживаемые блоком. Они не обязательны.
  • minecraft:stone[doesntexist=purpleberry] — это ошибка, поскольку у блока stone нет свойстваdoesntexist
  • minecraft:redstone_wire[power=tuesday]— это ошибка, потому что у блока redstone_wire  свойство power должно принимать числовые значения от 0 до 15
  • Теги NBT указываются внутри {} и работают так как вы и ожидали.
  • В контексте проверки состояний блока, будут проверяться только указанные состояния.
  • Если вы проверяете redstone_wire[power=15], то проверяется только значение свойства power , но при этом игнорируется другое состояние, например north.
  • В случае установки блока, то все пропущенные значения будут принимать значения по умолчанию, соответствующие данному блоку.
  • Если установить блок redstone_wire[power=15],  то мощность сигнала будет равна 15, но вот значение north будет соответствовать значению по умолчанию (в данном случае —  none)
  • Больше нет такого понятия как значение data блока. Всё это разные блоки или их состояния.

 

Предметы

  • Везде где раньше требовались параметры item и nbt теперь используется единые параметр «item», который выглядит так:
  • stone
  • minecraft:stick{display:{Name:"Stick of Untruths"}}
  • Идентификатор необходим, но как и раньше если пространство имён не определено, то будет использовано значение по умолчанию —  minecraft:
  • Теги NBT указываются внутри {}, и работают так как вы и ожидали.
  • Больше нет такого понятия как значение data блока или значение повреждения (damage) предмета.
  • Значение повреждения предмета перенесено в nbt-теги.
  • Любая другая характеристика предмета теперь является либо отдельным предметом или свойством в виде nbt-тега.

 

Установка снапшота

Пожалуйста сообщайте о любых найденных в Майнкрафте ошибках на bugs.mojang.com. Если нам никто о них не расскажет, то мы их и исправить не сможем!

Чтобы получить обновленную версию, открой лаунчер и нажмите кнопку «New Profile». Назовите новый профиль «snapshots», поставьте галочку в поле «Enable experimental development snapshots» и сохраните. Чтобы переключиться в нормальную версию, Вы можете выбрать её в выпадающем списке в нижнем левом углу лаунчера. Создавайте резервные копии, перед запуском снапшота или запускайте игру в другой директории (см. опции в окне «new profile»).
Снапшоты могут сломать Ваш мир и сделать Вам больно! Создавайте резервные копии и/или запускайте игру в директории отличной от Вашего основного мира.

Скачать Minecraft сервер 17w45a

На ошибки жаловаться сюда:

 

A Minecraft Java Edition snapshot for 1.13

Minecraft.net