[Guide][1.9] Как делать новые Item’ы
И так. Создание новых предметов базируется на их специальном зачаровании и эффектах, которые будут накладываться на того, кто их использует. Все такие предметы делятся на два типа: Броня и обычные предметы. Обычные предметы можно использовать как артефакты или для чего-то еще. А вот с броней интереснее. Как делать броню я буду показывать на примере моего мода, а в частности на Нагруднике Левитации. Приступим. Для начала разберем предметы! 
Создание предмета основывается на команде /testfor т.е. мы проверяем наличие предмета у игрока, а затем выполняем какие-либо команды. Давайте разберем селекторы и дата-тэги.
Затем добавляем сам предмет:
Все возможные селекторы и тэги я разобрал. Давайте напишем команду:
Команду не тестил, может не работать! Если это так, пишите в комментарии.
После того как мы прописали команду /testfor в первый командный блок можем прописать в следующие командные блоки все, что захотите. Например, мой Нагрудник Левитации основан на /particle и /effect. Вы можете сделать что-то свое.
Все. Как делать предметы я описал. Перейдем к броне. 
И так. Броня. Данный тип новых предметов похож на Items, но нам уже не понадобится SelectedItemSlot.
Пример:
/testfor @p
Что вышло: Эта команда проверяет, есть ли в первом слоте хотбара каменный меч. Если да, то передает сигнал.
Когда я делал свой Нагрудник Левитации, я использовал команды:
Если мы в воздухе (Проверяется командой /testforblock) то нам выдается эффект левитации на 1 секунду, и будет он выдаваться до тех пор, пока мы летаем. Чтобы опуститься я сделал систему с Shift’ом. Как это сделать:
/effect @p levetation 0
Т.е. убрал эффект левитации.
Примерно так-вот и делаются новые вещи. Если вам что-то интересно либо я что-то не дописал, пишите в комментарии, я исправлю. Новость получилась не очень большой, так-как про новые предметы говорить особо нечего. Еще могу добавить, что ID зачарований предмета лучше ставить больше 100, тогда их не будет видно, и их можно будет использовать при крафте новых предметов.
На этом я закончу свой гайд.
Буду рад плюсам в репу. Ведь их уже никто не ставит :,(.
Команды консоли/give
Выдаёт игроку предмет.
Не выполняется, если неверно указаны аргументы. Не выполняется, если игрок не найден. В случае успеха призывает предмет на местоположение указанной цели. Если в инвентаре цели есть место, или игрок находится в творческом режиме, предмет ru en будет создан с тегом PickupDelay со значением 32767 и тегом Age со значением 5999, который при создании с помощью команды /summon исчезает через 1 игровой такт и не позволяет поднять себя. Если в инвентаре игрока нет места, и этот игрок не в творческом режиме, предмет будет создан с тегом PickupDelay со значением 0 и тегом Owner со значением цели; это позволит предмету быть поднятым только целью. [1]
Выдача 30-ти блоков еловых досок игроку Steve с подписью «Доски»: give Steve minecraft:spruce_planks
[Guide][1.9] Как делать свои крафты
1. Расставляем командные блоки как на скриншоте:

2. Вписываем команды:
Эта команда отвечает за то, что мы получим в итоге
В итоге мы получим почти сломанный меч, зачарованный на шипы 5
Просто спавним зеленые частички возле предмета с двумя очками A (т.е. возле палочки)
Ну, тут думаю все понятно. Тем более, все тэги я объяснил выше.
/scoreboard players reset @e[score_A_min=1] A
Обнуляет задачу A для ее предметов.
Все. Теперь нам останется просто запитать нашу конструкцию и готово! 
И так. Приступим ко второму, более сложному способу создания своего крафта. Но! Его сложность себя окупает. Он занимает всего два командных блока.
Для начала нам понадобится сделать сам верстак. Он основан на раздатчике в котором стоит армор стенд.
Для его создания можно использовать и команды в чате, но я покажу пример на командных блоках. Также покажу, как сделать так, чтобы его смогли сделать игроки.
1. Расставляем командные блоки как на скриншоте: 
2. Заполняем блоки командами:
Устанавливаем верстаку критерий A на 1. Все тэги объяснял выше.
Тут мы проверяем, стоит-ли под верстаком раздатчик, если да, то заменяем его на «Верстак»
Чтобы создать стенд я использовал генератор.
Убиваем наш верстак
Все. создание верстака готово. Перейдем к самим крафтам.
Расставляем блоки и записываем в них команды:
Итого у нас вышло: Если мы положим в верхний центральный слот слезу гаста а в центральный слот порошок блейза, то командный блок выдаст сигнал.
Чтобы добавить предмет добавляете следующий код:
Если механизм не работает, попробуйте ре-активировать его. Если и это не поможет, пишите мне.
Все. Я закончил пояснение второго способа.
Плюсам в репу буду рад! 🙂
ИСПОЛЬЗОВАНИЕ ОБОЗНАЧЕНИЯ РЕЦЕПТА
Самые основные модификации, которые можно выполнять в MineTweaker являются рецепт добавление и удаление. Там нет визуальный редактор,
только скриптовый язык, так что вы должны понять, как писать свои рецепты в виде текста.
Для того чтобы определить ее функциональность, вы должны вызывать функции. Примером функция печати, которые вы видели раньше, и которая принимает один аргумент:
Это было легко.Более полезной функцией, например, является функция для добавления формы рецепта:
Запись MineTweaker для этого рецепта является следующий:
Там нет визуального редактора, так что вы должны понять, как писать свои рецепты в виде текста.
Как маленькие введения, давайте рассмотрим рецепт палками. В ванильном Minecraft,
Чтобы сделать 4 палочки нужно взять две доски, и они должны стоять в верстаке друг над другом.
Мы хотим изменить это? Что делать, если, скажем, мы считаем более логичным: Поставить две деревянных доски
по диагонали. Изменение рецепт палочки чудесно легко. Сделать скрипт со следующим содержанием:
УДЕЛЬНОЕ УДАЛЕНИЕ РЕЦЕПТА
Таким способом можно удалить один предмет:
Кроме того, модели с масками могут быть использованы, чтобы указать, что любой вид элемента на определенную должность:
Кроме того, при удалении бесформенных рецептов, можно указать только один или несколько ингредиентов бесформенных рецептов,
а затем сказать MineTweaker`у, что оставшаяся часть рецепта может содержать все что угодно:
ПОДПУНКТЫ И ЗНАЧЕНИЕ УЩЕРБА
Довольно часто, детали имеют несколько подпунктов. Очень хорошо известным примером являются уголь и уголь.
Оба имеют одинаковый ID (Minecraft:coal), но имеют различные значение.
При загрузке элемент, вы можете указать мета значение для подпункта:
Когда подпункт не указан,: 0 заполняется для подпункта.
Если вы хотите, чтобы рецепт соответствовал любому подпункту, вы можете использовать групповой синтаксис:
Многие виды элементов также могут быть повреждены.
При использовании такого пункта, как ингредиент для рецепта, по умолчанию, никаких повреждений не допускается. Например:
В приведенном выше рецепте, повреждена кирка,а нам этого не хочется. Это может быть легко изменено с anyDamage() модификатора:
ПЕРЕЗАГРУЗКА И РЕЦЕПТЫ
При перезагрузке сценария, вы могли заметить, что если вы перегрузили сценарий, рецепт не дублируется.
Аналогичным образом, если рецепт дополнительно удаляется из сценария и сценарий перезагружается, рецепт эффективно удаляется из игры.
MineTweaker помнит такие действия, как рецепты добавляются и удаляются.
Когда скрипт перезагружается (или загружается, присоединившись к другому серверу),
MineTweaker сначала отменит все записанные изменения, внесенные перед выполнением нового сценария.
Многие мод машины, однако, не поддерживают такое вытворение. Для сервера, это означает, что рецепт будет застревать в списке, пока сервер не будет перезагружен; для клиента,
это означает, что рецепт будет показывать и принять соответствующие меры, как если бы она существовала.
Там нет исправление к такому поведению; это до соответствующих мод авторов для обеспечения достаточного API для того, чтобы удалить
рецепт можно было. Так что если что-то не получится не вините Элиана.
В этом примере переменная может быть использована к:
Разница между var и val в том, что val не может быть изменен после того, как заявил:
Ну, а на этом все. Надеюсь оцените мой труд, переводил и писал все 3 часа.
Всем удачи и пока, ждите новых уроков!
Создание модификаций с помощью Forge/1.7+/Дополнительные уроки
Здесь представлены основные уроки по созданию модификаций с помощью Forge/1.7+. Остальную информацию по данной теме смотрите в соответствующей статье.
Содержание
Локализация названий в игре [ ]
Собственно у нас есть некоторые предметы, блоки, а возможно даже кнопки, существа и надписи из нашего мода, называющиеся в инвентаре примерно так: item.block.name Естественно это нас не устраивает, и это можно исправить, даже не внося изменений в код!
Итак, приступим. Слева, в src/main/resources создайте пакет assets.mybestmod.lang Понятно, что mybestmod — это краткое имя мода(или modid), указанное в @Mod. Теперь где угодно создайте файл(создайте текстовой, а затем измените расширение) en_US.lang (где будут написаны английские название блоков, предметов и т. д.) и пропишите в нём то, что вы видите вместо названия в инвентаре (в случае нашего первого блока — tile.bestblockever.name), затем равно, и прямо за ним — ваше локализированное название, например: «Best Block EvAR!». То есть должно получиться:
Теперь скопируйте файл, и назовите копию ru_RU.lang (собственно русский перевод). Внутри него измените название на русское, например
Теперь оба этих файла можете перетащить в заранее созданную assets.mybestmod.lang При переносе выберите Copy files.
Чтобы локализировать вкладки в режиме творчество добавьте такой код:
tabTutorial — Название вашей вкладки
Вот и всё! Локализация завершена, теперь в игре будут отображаться выбранные вами названия.
Подобных названий можно вписывать сколько угодно, главное в столбик.
Скорее всего в игре русское название будет выглядеть вопросами! Это всё из-за кодировки. Исправить это можно зайдя в eclipse вкладку window\preferences\general и просто нажмите на workspace и внизу найдите text file encoding и поставьте на other и там выберите UTF-8. Всё! теперь у нас нормальный русский язык!
Дроп определённого предмета при разрушении блока [ ]
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо return Items.diamond; напишите « return Item.getItemFromBlock(Blocks.); » (для блоков) или « return Items.; » (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.
Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
Тогда при разрушении выпадет 20 выбранных вами предметов или блоков. Всё очень легко и просто!
Разносторонняя текстура блока [ ]
Я буду использовать следующие текстуры: 





Для этого, добавьте такой код в тело класса:
И такой после конструктора класса:
Теперь в папку assets/ID мода/resources/textures/blocks/ добавьте файлы с таким именем: _
В игре блок будет выглядеть так:
Важно то, что текстура северной и восточной (2 и 5) части блока отображается зеркально. Если вы не поняли, то поставьте блок ТНТ и посмотрите на части, где написано TNT. С одной стороны написано «TNT», а с другой — «ТИТ».
Собственная вкладка в Творческом режиме [ ]
Для этого добавьте такой код в тело класса:
«ModID» заменяем на любое число. Рекомендую ID больше 11 (12 ID сразу на следующей странице творческого инвентаря).
Потом создайте класс TutorialTab. Если всё правильно, то ваш класс будет иметь extends CreativeTabs до первой фигурной скобки. Теперь добавьте этот метод в ново-созданный класс:
Для того что бы добавить что либо из вашего мода в собственную вкладку пишем:
Обновление Forge [ ]
Чтобы обновить версию Forge, на который вы создаёте моды, необязательно всё перекачивать.
Достаточно просто изменить build.gradle Так что если хотите обновить Forge откройте его любым редактором и найдите строчку
Там будет написана версия Forge, которая у вас сейчас, соответственно вам нужно всего лишь изменить значение на новое. Измените его на версию, до которой хотите обновить Forge (например на 1.7.2-10.12.0.1012) и сохраните файл. Далее запустите gradlew.bat с командой eclipse (то есть запустить bat-файл с кодом gradlew.bat eclipse ) и после завершения его работы ваша версия Forge обновлена!
Обновление ForgeGradle [ ]
Forge отделён от ForgeGradle, поэтому если вы попытаетесь обновиться на версию Forge, которая использует более новой ForgeGradle, вы получите ошибки. Вот таблица версия Forge, и какие версии ForgeGradle он использует.
| ForgeGradle | Forge | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| — | 959 Свой материал для инструмента [ ] Допустим вы хотите, чтобы ваш инструмент обладал свойствами не железной/алмазной кирок из майнкрафта, а собственными. Тогда где-нибудь(вы можете где угодно написать эту строку, главное, чтоб можно было вызвать.), например в главном классе вне каких либо методов (то есть можно перед последней фигурной скобкой) напишите: Не забудьте про импорт. Давайте разберемся: static означает, что переменная NEWMAT типа ToolMaterial доступна из других классов. Затем приравнивается значению, которое и даст вашей кирке определённые свойства. Теперь об аргументах, перечисленных через запятую: Теперь можно придать какому-нибудь инструменту эти свойства, для этого в инструменте (например в нашей кирке) измените super(ToolMaterial.EMERALD); на super(BaseMyBestMod.NEWMAT); В таком случае вы отправляете в супер-класс инструмента информацию о том, что свойства описаны переменной NEWMAT типа ToolMaterial, которая описана в классе BaseMyBestMod (или любой другой класс, где она написана). Вот и всё, свойства инструмента изменены. Создание брони [ ]Создание брони немного отличается от создания обычных предметов, точнее имеет свои особенности. Приступим. Мы не будем создавать для каждого предмета свой отдельный класс, а создадим один универсальный, который опишет сразу шлем, нагрудник, штаны и ботинки. Начнём с регистрации переменных. Шлем, нагрудник, штаны и ботинки соответственно. Теперь описываем эти переменные с помощью универсального класса. Естественно внутри метода preLoad() Здесь, вроде, всё знакомо, мы даём нелокализированное имя каждому из предметов, а также текстуру. Но здесь мы посылаем ещё и две цифры в метод BestArmor. Вторая цифра отвечает за тип брони (0 — шлем, 3 — ботинки), назначение первой неясно, но в данном случае она роли не играет. Далее тоже ничего нового, просто зарегистрируем эти предметы в Forge. Сделать это нужно после описания переменных. С главным классом работа окончена. Теперь щелкаем по одной из ошибок и создаём новый класс BestArmor. Теперь «продолжаем» класс ItemArmor, то есть пишем extends ItemArmor после названия класса. Теперь в тело класса вставляем следующее: Что ж, давайте разбираться. Первая переменная, просто обозначает начало пути к текстуре брони. Все нужные текстуры можно спокойно извлечь из майнкрафта и отредактировать по желанию. Вот мои отредактированные текстуры:
Текстуры предметов помещаются туда же, где и текстура кирки. А вот две текстуры самой брони нужно поместить в другую папку. Поэтому создайте её: нажмите ПКМ по src/main/resources и выберите New — Package и назовите его assets.mybestmod.textures.model.armor и уже туда перетащите две оставшиеся текстуры. Давайте дальше разбираться с кодом: следующим идёт метод BestArmor(), в который мы посылаем из главного класса параметры id и armorType. Напомню: от armorType зависит, какая это часть брони. В нём мы посылаем информацию о том, какой материал брони. Я написал, что броня будет аналогична алмазной, но можно создать свой материал для брони и вписать его. Далее мы настраиваем вкладку в креативе. Потом мы ограничиваем максимальное количество данного предмета в одной стопке до одного, чтобы броня не «стакалась». В конце концов мы вызываем созданный нами метод setTextureName() В этом нашем собственном методе происходит проверка, какая часть брони вызвала этот класс. И, если это был шлем, нагрудник или ботинки, то используется первая текстура, а если поножи, то вторая. Мы прибавляем к изначальному пути брони нужное окончание, чтобы в определённом случае грузилась одна текстура, а в другом — вторая. Последний же метод перезаписывает метод супер-класса и указывает Майнкрафту, что должна грузиться текстура по пути texturePath, который предварительно был отредактирован во втором методе. Теперь можно запускать игру и убивать мобов в новых блестящих доспехах! Свой материал для брони [ ]Почти не отличается от создания собственного материала для инструмента. В главном классе в любом месте, но вне каких-либо методов пишем: Затем импортируем ArmorMaterial. Теперь разберём: Вот и все. Теперь можно использовать этот материал для брони, например заменив ArmorMaterial.DIAMOND на BaseMyBestMod.BESTMAT Генерация предметов в контейнерах натуральных структур [ ]Итак, вы можете сделать так, чтобы ваш, или любой другой предмет/блок генерировался в сундуках сокровищницы. Для этого в методе preLoad() в главном классе вставьте следующее: Разберемся в параметрах: Атрибуты для моба [ ]Если вы уже проверили моба, то заметили, что он двигается очень медленно. Чтобы исправить это и изменить атрибуты для моба, добавьте в его класс следующий код:
Интеллект для моба [ ]Теперь моб будет просто двигаться, но ничего не делать. Для того, чтобы добавить ему интеллект создайте в класс моба следующий код: Теперь в конструктор класса добавьте следующий код: Первый аргумент метода «addTask» — приоритет назначения интеллекта, второй — сам интеллект. В примере используются следующие интеллекты: «Swimming», «AttackOnCollid», «Wander», «WatchClosest», «LookIdle», «HurtByTarget» и «NearestAttackableTarget». Разъяснение:
Свой скин при моддинге [ ]Внимание! Этот способ работает только на лицензионной версии Minecraft. Чтобы при создании мода вы видели свой скин, вместо стандартного скина Steve, нужно прописать 2 строчки в аргументы запуска. После этого, при заходе в игру вы будете видеть свой скин. |


.jpg)
