17w45a (Java Edition)

17w45a

Издание | |
---|---|

Тип |
Предварительная сборка |

Дата выпуска |
8 ноября 2017 г. |

Основная версия | |

Версия протокола |
343 |

Версия данных |
1447 |


**17w45a** — третий снимок для обновления 1.13.

## Нововведения

- Пользовательский интерфейс, открывающийся при вводе команд в поле чата.
- Разные компоненты команд будут указаны разными цветами.
- Ошибки будут отображаться красным текстом без необходимости выполнения команды.

- Аргумент
`nbt`

в селекторах цели. - Новая библиотека синтаксического разбора команд под названием Brigadier.

## Изменения

### Мобы

- Модель была изменена, чтобы соответствовать по стилю моделям других мобов.

### Команды

- Общее

- Команды и функции теперь намного быстрее и эффективнее исполняются.
- Большинство команд получили чувствительность к регистру. По возможность следует использовать нижний регистр.
- Например, такое использование вызовет ошибку:
`/scoreboard ObJeCtIvEs ...`

.

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

- Конкретные команды
`/advancement`


- Удалён аргумент
`/advancement test`

, вместо него следует использовать селекторы сущностей.

`/clear`


- Синтаксис команды
`/clear`

был изменён.`/clear [<цель>] [<предмет>] [<данные>] [<количество>] [<nbt>]`

станет`/clear [<цель>] [<предмет>] [<количество>]`

.- Подробности указаны в описании типа аргумента
`предмет`

. - Аргумент
`[<данные>]`

был удалён в целях подготовки к*сжатию*, у предметов больше не будет данных, а значения метаданных будут перемещены в NBT.


`/clone`


- Синтаксис команды
`/clone`

был изменён.`/clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> filtered [force|move|normal] [<блок>] [<данные>]`

станет`/clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> filtered [<блок>] [force|move|normal]`

.`/clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> [replace|masked] [force|move|normal] [<блок>] [<данные>]`

станет`/clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> [replace|masked] [force|move|normal]`

.


`/defaultgamemode`

и`/gamemode`


- Теперь принимают только полные строковые идентификаторы, сокращения и номера режимов больше не работают.

`/difficulty`


`/difficulty [<значение>]`

принимает только полные строковые идентификаторы, сокращения и номера режимов больше не работают.`/difficulty 2`

теперь`/difficulty normal`

.`/difficulty p`

теперь`/difficulty peaceful`

.

- Текущая сложность может быть запрошена вызовом
`/difficulty`

без аргументов.

`/effect`


- В целях предотвращения неоднозначности синтаксис команды
`/effect`

был разделён:`/effect <сущность> <эффект>`

теперь`/effect give <сущность> <эффект>`

.`/effect <сущность> clear`

теперь`/effect clear <сущность> [<эффект>]`

.

- Добавление эффекта теперь будет выдавать ошибку, если команда на самом деле ничего не сделала.
- Некоторые мобы имеют иммунитет (например дракон Края).
- Более сильные существующие эффекты не дадут добавить более слабую версию.


`/enchant`


- Удалена взамен
`/modifyitem`

.

`/execute`


- Синтаксис команды
`/execute`

был разделён.- Подкоманды-модификаторы изменяют принцип выполнения команды:
`/execute as <сущность> <цепная команда>`

исполняет команду`цепная команда`

, используя сущность`<сущность>`

(но не изменяет позицию).`/execute at <сущность> <цепная команда>`

исполняет команду`цепная команда`

, используя позицию сущности`<сущность>`

(но не изменяет сущность).`/execute offset <x y z> <цепная команда>`

исполняет команду, используя позицию`<x y z>`

.`/execute align <оси> <цепная команда>`

исполняет команду, выравнивая текущую позицию к сетке блоков (округляя вниз),`<оси>`

— любая комбинация из`x`

`y`

and`z`

(например:`x`

,`xz`

,`zyx`

или`yz`

).`x=-1.8,y=2.3,z=5.9`

с использованием`x`

станет`x=-2,y=2.3,z=5.9`

.`x=2.4,y=-1.1,z=3.8`

с использованием`yxz`

станет`x=2,y=-2,z=3`

.


- Условные подкоманды могут дать возможность предотвратить исполнение команды:
`/execute (if|unless) block <x y z> <блок> <цепная команда>`

исполняет команду`цепная команда`

, если`<x y z>`

соответствует (или не соответствует) блоку`<блоу>`

.`/execute (if|unless) blocks <начало> <конец> <цель> (all|masked) <цепная команда>`

исполняет команду`цепная команда`

, если область между блоками`<начало>`

и`<конец>`

соответствует (или не соответствует) области`<цель>`

.`/execute (if|unless) entity <сущность> <цепная команда>`

исполняет команду`цепная команда`

, если`<сущность>`

существует (или не существует; команда возвращает одну или более сущностей).`/execute (if|unless) score <цель> <задание цели> (<|<=|=|>=|>) <источник> <задание источника> <chained command>`

исполняет команду, если счёт`<цели>`

соотносится (или не соотносится) со счётом`<источника>`

по заданному критерию.

- В качестве замены команды
`/stats`

, добавлена новая подкоманда`store`

, позволяющая сохранить где-либо результат команды:`/execute store (result|success) <название> <цель> <цепная команда>`

.`result`

— результат команды, заменяющий следующие удалённые значения:`AffectedBlocks`

,`AffectedEntities`

,`AffectedItems`

,`QueryResult`

.`success`

— сколько раз команда была успешна. Это обычно`0`

или`1`

, но если команда разделилась, (например`as @a`

), то это значение может быть больше`1`

. Этот параметр заменяет`SuccessCount`

.- Значение хранится в таблице счёта игровых событий под значениями
`<название>`

и`<цель>`

. `Цель`

должна существовать, но в отличие от`/stats`

, начальное значение`<названия>`

может не быть задано.- Значение будет сохранено, когда команда целиком закончит выполняться.
- Если команда неуспешна (
`success`

равен`0`

),`result`

всегда будет равен`0`

. - Будет чётко указан ожидаемый результат каждой команды..

- Все подкоманды могут быть сцеплены вместе.
- После каждой подкоманды нужно указать другую подкоманду.
- Когда сцепление подкоманд завершено, для исполнения самой команды нужно ввести
`run`

.`/`

больше не разрешено использовать перед командой.

`/execute as somebody at somebody run say привет`

.

- Примеры старых команд:
`/execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say Камень!`

теперь`/execute as @e at @s if block ~ ~ ~ stone run say Камень!`

.`/execute @e ~ ~ ~ detect ~ ~ ~ grass 0 summon pig`

теперь`/execute at @e if block ~ ~ ~ grass run summon pig`

.`/execute @e ~ ~ ~ say Здравствуйте!`

теперь`/execute as @e run say Здравствуйте!`

.


- Подкоманды-модификаторы изменяют принцип выполнения команды:

`/xp`

теперь является альтернативных названием`/experience`

.- Команда разбита на три подкоманды:
`/experience add <игроки> <количество> [points|levels]`

.- Добавляет
`<количество>`

очков или уровней указанным`<игрокам>`

(по умолчанию добавляются очки). - Как обычно, добавление очков может повысить уровень игроков.
- Поддерживаются отрицательные числа для уменьшения опыта игроков.
- При вычитании очков уровень игрока может понизиться.

- Добавляет
`/experience set <игроки> <количество> [points|levels]`

.- Задаёт опыт игрока как
`<количество>`

очков или уровней`<players>`

(по умолчанию очков). - Очки не могут быть заданы сверх лимита текущего уровня игрока.
- При изменении уровня процент прогресса до следующего уровня сохранится.

- Задаёт опыт игрока как
`/experience query <игрок> (points|levels)`

.- Возвращает количество очков или уровней у игрока
`<игрок>`

.

- Возвращает количество очков или уровней у игрока


`/fill`


- Синтаксис команды
`/fill`

был изменён.`/fill <x y z> <xt yt zt> <блок> <данные> replace [<новый блок>] [<новые данные>]`

теперь`/fill <x y z> <xt yt zt> <блок> replace [<фильтр>]`

.`/fill <x y z> <xt yt zt> <блок> [<данные>] [destroy|hollow|keep|outline|replace] [<nbt>]`

теперь`/fill <x y z> <xt yt zt> <блок> [destroy|hollow|keep|outline|replace]`

.


`/function`


`/function`

больше не принимает аргументы`[if|unless] <сущность>`

.- Эта возможность была добавлена команде
`/execute`

. `/function foo if @e`

теперь`/execute if entity @e run function foo`

.

- Эта возможность была добавлена команде

`/gamerule`

больше не принимает неизвестные («пользовательские») игровые правила.- Для получения такого же функционала следует использовать функции или систему счёта игровых событий.
- Существующие пользовательские игровые правила окажутся недоступны.

- Переданные команде
`/gamerule`

значения проверяются на правильность типа (если нужно число, а получена строка, существование ошибки очевидно).

`/give`


- Синтаксис команды
`/give`

был изменён.`/give <игроки> <предмет> [<количество>] [<данные>] [<nbt>]`

теперь`/give <игроки> <предмет> [<количество>]`

.- Подробности указаны в описании типа аргумента
`предмет`

. - Аргумент
`[<данные>]`

был удалён в целях подготовки к*сжатию*, у предметов больше не будет данных, а значения метаданных будут перемещены в NBT.


`/kill`


- Указывать параметр
`цель`

теперь обязательно.

- Координата y теперь возвращается как
`64`

, а не`?`

. - Результат
`result`

команды, используемый командой`/execute store`

, будет абсолютным расстоянием до строения.

`/particle`


- Аргумент
`<params>`

был удалён, вместо этого параметры для частиц наподобие`blockcrack`

могут быть указаны сразу после агрумента`<название>`

, используя новый блок аргументов.`/particle blockcrack stone [variant=smooth_granite] ~ ~ ~ 0 0 0 0 1`

.

- Названия частиц были приведены к нижнему регистру и могут указываться с пространством имён.

- Синтаксис команды
`/replaceitem`

был изменён.`/replaceitem block <позиция> <ячейка> <предмет> [<количество>] [<данные>] [<nbt>]`

теперь`/replaceitem block <позиция> <ячейка> <предмет> [<количество>]`

.`/replaceitem entity <цель> <ячейка> <предмет> [<количество>] [<данные>] [<nbt>]`

теперь`/replaceitem entity <цель> <ячейка> <предмет> [<количество>]`

.- Подробности указаны в описании типа аргумента
`предмет`

. - Аргумент
`[<данные>]`

был удалён в целях подготовки к*сжатию*, у предметов больше не будет данных, а значения метаданных будут перемещены в NBT.

- Аргумент
`ячейка`

больше не требует`slot.`

.- Например,
`slot.hotbar.1`

теперь`hotbar.1`

.

- Например,

- У команд
`/scoreboard`

удалён`[<dataTag>]`

, взамен используются аргументы`nbt`

в селекторах сущностей. `/scoreboard players tag`

и`/scoreboard teams`

удалены. Заменены`/tag`

и`/team`

соответственно.`/scoreboard players test`

удалены в пользу`/execute (if|unless) score`

, селекторов сущностей и`/scoreboard players get <цель> <задание>`

.

- Синтаксис команды
`/setblock`

был изменён.

- Удалена. Объединена с командой
`/execute`

. - Новая команда
`/execute`

не является точной заменой, поведение было изменено:- Исполнение теперь в расчёте на каждую команду, а не на каждую сущность или каждый блок.
- Остались только
`result`

и`success`

, которые покрывают все удалённые типы значений.


`*`

может быть использовано вместо аргумента`источник`

, чтобы останавливать все звуки с определённым названием для всех источников.

`/tag`


- Заменяет
`/scoreboard players tag`

. - Синтаксис остался таким же.

`/team`


- Заменяет
`/scoreboard teams`

. - Синтаксис остался таким же.

`/testfor`

,`/testforblock`

и`/testforblocks`


- Удалены. Входят в состав
`/execute`

.

- Команда удалена в пользу
`/weather`

.

`/tp`

теперь является альтернативным названием`/teleport`

(как`/w`

,`/msg`

и`/tell`

).- Координаты теперь относительно исполнителя, что соответствует поведению других команд.
- Синтаксис
`/tp`

остался, но поведение как у`/teleport`

.

- Если время не указано, по умолчанию задаётся пять минут. Ранее время было случайным.

- Типы аргументов
- Селекторы цели

- Введено больше кода для обработки ошибок.
- Аргументы могут быть заключены в кавычки.
- Указания наподобие
`limit=0`

,`level=-10`

,`gamemode=purple`

теперь запрещены.

- Указания наподобие
- Отдельных значений «min» и «max» больше нет, вместо этого добавлена поддержка диапазонов.
`level=10`

— уровень 10.`level=10..12`

— уровни 10, 11 или 12.`level=5..`

— уровень 5 или выше.`level=..15`

— уровень 15 или ниже.

- Таинственные сокращённые названия параметров были удалены.
`m`

→`gamemode`

.`l`

или`lm`

→`level`

.`r`

или`rm`

→`distance`

.`rx`

или`rxm`

→`x_rotation`

.`ry`

или`rym`

→`y_rotation`

.`c`

→`limit`

.

`x`

,`y`

,`z`

,`distance`

,`x_rotation`

,`y_rotation`

теперь типа`double`

, и допустимы значения наподобие`12.34`

.`x`

и`z`

больше не корректируются к центру.- Это означает, что
`x=0`

больше не эквивалентно`x=0.5`

.

- Это означает, что

`gamemode`

(ранее`m`

) больше не позволяет указывать числовые или сокращённые идентификаторы.`limit`

(ранее`c`

) больше не позволяет указывать отрицательные значения.- Используйте вместо них
`sort=furthest`

.

- Используйте вместо них
- Аргумент
`название`

теперь поддерживает пробелы, если название заключено в кавычки. - В селекторах цели возможно указывать один и тот же аргумент повторно.
`tag=foo,tag=bar,tag=!baz`

находит сущности с`foo`

,`bar`

, но не`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`

— «достижение не выполнено».- Также может быть передан блок конкретных критериев, соответствие которым должно быть проверено. (смысл
`true`

/`false`

такой же).


- Аргументы
`<блок>`

,`[<данные>]`

и`[<nbt>]`

объединены в аргумент`<блок>`

, который выглядит так:`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]`

— ошибка синтаксиса, поскольку свойство`power`

блока`redstone_wire`

— число от 0 до 15.

- NBT-тег указывается в
`{}`

, и передаётся блоку напрямую. Тег может не быть указан. - В контексте «условий»/проверки наличия блоков будет делаться проверка на соответствие только указанных свойств.
- Если проверять на
`redstone_wire[power=15]`

, будет учитываться только выход энергии, а другие состояния наподобие`north`

будут игнорироваться.

- Если проверять на
- В контексте установки блоков, все указанные состояния будут переданы, а неуказанные — заменены на зависящие от блока умолчания.
- Если задать
`redstone_wire[power=15]`

, свойство блока`power`

будет 15, но свойство`north`

будет значением по умолчанию, в данном случае это`none`

.

- Если задать
- В 1.13 больше нет значений данных блоков. Блокам с разными значениями данных теперь соответствуют или блоки с разными состояниями, или разные блоки.

- Аргументы
`<предмет>`

,`[<данные>]`

и`[<nbt>]`

объединены в аргумент`<предмет>`

, который выглядит так:`stone`

.`minecraft:stick{display:{Name:"Палка неправды"}}`

.

- Идентификатор обязателен, но если пространство имён не указано, то по умолчанию всё ещё используется
`minecraft:`

. - NBT-тег указывается в
`{}`

, и передаётся блоку напрямую. Тег может не быть указан.- Любая другая информация теперь соответствует или другому предмету, или свойству в NBT.


## Исправления

- 19 ошибок исправлено
- Из выпущенных версий до 1.13

- MC-32972 – Команда
`/summon`

принимает аргументы, которые впоследствии игнорирует. - MC-101113 – Команда
`/playsound`

неправильно проверяет правильность аргументов. - MC-118308 – Набор текста в некоторых текстовых полях может активировать рассказчика.

- Из выпущенных предварительных версий 1.13

- MC-121281 – Полосы прокрутки в меню серверов и режима Творчество срабатывают только от колеса мыши.
- MC-121283 – Графический интерфейс отключается при погружении под воду или лаву.
- MC-121284 – Кнопки открытия папок карты и пакета ресурсов не работают.
- MC-121288 – Ошибки управления мыши в режиме обзора «Кинематографическая камера».
- MC-121302 – Неуместная активация и дезактивация кнопки «По адресу».
- MC-121314 – Текст слайдера разрешения в полноэкранном режиме не умещается в слайдере.
- MC-121328 – Неправильное масштабирование графического интерфейса.
- MC-121329 – Нажатие клавиши чата больше не выбирает поиск в инвентаре режима Творчество и книге рецептов.
- MC-121334 – Нажатие клавиш [1-9] во вкладке поиска режима Творчество посылает дополнительное событие нажатия клавиши строке поиска.
- MC-121396 – Клавиши WASD указаны в настройках в странном порядке.
- MC-121418 – Аварийное завершение игры при попытке вставить нестроковое содержимое буфера обмена в текстовое поле.
- MC-121419 – События мыши в чате обрабатываются со смещением.
- MC-121421 – Нажатие
`↵ Enter`в полях названия и зерна мира в меню создания карты больше не создают карту. - MC-121456 – Чанки исчезают, если в полноэкранном режиме переключить окно.
- MC-121468 – Кнопки упорядочения значений статистики больше не работают.

- Из предыдущей предварительной версии

- MC-121517 – Кнопка включения полноэкранного режима не работает на macOS.