Руководства / Команды и данные
Почему Minecraft говорит «Слишком дорого!» — и в каком порядке работать с наковальней, чтобы этого избежать
Штраф за предыдущую работу удваивается при каждом использовании наковальни. Вот правило, лежащее в его основе, и как выстроить порядок объединения, чтобы полный набор зачарований не упёрся в потолок в 40 уровней.
Каждое объединение на наковальне ставит на предмет скрытый счётчик — штраф за предыдущую работу (prior work penalty). Он начинается с 0, становится 1 после первого объединения, затем 3, 7, 15, 31 — удваивается и прибавляет единицу каждый раз. Этот штраф прибавляется к стоимости в уровнях целиком — вот почему меч, который в понедельник стоил 5 уровней, в пятницу стоит 35.
Vanilla Java отклоняет любое объединение дороже 39 уровней с Too Expensive!. Так что цель вовсе не «сделать каждый шаг дешёвым» — цель держать дерево неглубоким.
Правило, которое действительно важно
Объединение двух предметов начисляет оба их штрафа как уровни, а результат берёт больший из двух, удвоенный плюс один. Две свежие книги (штраф 0), слитые в одну книгу, дают книгу со штрафом 1. Слейте её со свежим мечом — и вы платите эту 1 сверх зачарований, а меч выходит со штрафом 3.
Так что самый дешёвый путь — сбалансированное двоичное дерево, а не цепочка:
bad sword + book1 + book2 + book3 + book4 (penalty 1, 3, 7, 15 …)
good (book1+book2) + (book3+book4) -> sword (penalty stays low on both sides)
Практическая последовательность для инструмента с полным набором зачарований
- Объедините книги в пары до того, как они вообще коснутся инструмента.
- Слейте пары в две «суперкниги».
- Слейте эти две в одну.
- Примените эту единственную книгу к свежему инструменту, никогда не бывавшему на наковальне.
Это те же четыре объединения, что и в цепочке, но штрафы остаются низкими с обеих сторон, а сам инструмент получает штраф лишь один раз.
Где порядок всё ещё кусается
- Починка тоже стоит объединения. Починка на инструменте заранее означает, что каждый ремонт бесплатен, но ремонты до Починки каждый раз повышают штраф.
- Переименование стоит один уровень. Переименование само по себе не повышает штраф и никогда не
Too Expensive!(оно ограничено 39), так что переименовывайте отдельным шагом, а не во время дорогого объединения. - Bedrock отличается. Bedrock иначе ограничивает отображение на
Too Expensive!и допускает некоторые объединения, которые Java отклоняет; арифметика выше — для Java Edition.
Вместо того чтобы считать это на бумаге, введите предмет и зачарования в Калькулятор зачарований — он перебирает порядки объединения и возвращает самый дешёвый, с точной стоимостью в уровнях на каждом шаге.