Jump to content

BazZziliuS

Administrators
  • Posts

    78
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by BazZziliuS

  1. До сих пор мы узнали о том, как добавлять или удалять простые рецепты. Но что, если входные и выходные данные также включают значения повреждений или метки NBT? Метка NBT в выводе В качестве выходных данных можно определить как повреждение, так и метку NBT. Давайте возьмем кирку в качестве нашей игрушки для этого урока: val stick = <minecraft:stick>; val pick = <minecraft:stone_pickaxe>; val damagedPick = pick.withDamage(10); val stickedPick = pick.withTag({display: {Name: "Палочки выбирают", Lore: ["Этот выбор", "Был приклеен"]}}); recipes.addShaped(damagedPick, [[pick, stick]]); recipes.addShaped(stickedPick, [[pick, stick], [stick, stick]]); Приготовив кирку из 1 или 3 палочек, как в рецепте, вы получите предмет с соответствующим уроном и названием / знаниями соответственно. Входные условия Вы также можете потребовать, чтобы входные данные содержали определенные теги NBT. Допустим, вы готовите рецепт, для приготовления которого требуется наш маринад. Давайте изменим наш файл: val stick = <minecraft:stick>; val pick = <minecraft:stone_pickaxe>; val damagedPick = pick.withDamage(10); val stickedPick = pick.withTag({display: {Name: "Sticked pick", Lore: ["This pick", "Has been sticked"]}}); recipes.addShaped(damagedPick, [[pick, stick]]); recipes.addShaped(stickedPick, [[pick, stick], [stick, stick]]); val stonedPick = pick.withTag({display: {Name: "Stoned pick", Lore: ["This pick", "Has been experimenting too much"]}}); val onlyStickedPick = pick.onlyWithTag({display: {Name: "Sticked pick"}}); val cobble = <minecraft:cobblestone>; recipes.addShaped(stonedPick, [[onlyStickedPick, cobble], [cobble, cobble]]); А как насчет части знаний в нашей подборке? Поскольку ваше условие содержит только имя, часть знаний игнорируется - при установке условия для тега данных MineTweaker заботится только о указанном вами содержимом и игнорирует все остальное. Обратите внимание на разницу между with Tag и onlyWithTag. withTag предназначен для вывода и является точным тегом, который будет выводиться. onlyWithTag предназначен для ввода и задает условие. Применение withTag к входным данным никак не влияет на рецепт. Существуют и другие условия: myItem.onlyDamaged(); // принимаются только поврежденные товары myItem.onlyDamageAtLeast(15); // принимаются только предметы с повреждением не менее 15 myItem.onlyDamageAtMost(100); // принимаются только предметы с повреждением не более 100 myItem.onlyDamageBetween(15, 100); // принимаются только предметы с повреждением от 15 до 100 К одному ингредиенту также можно добавить несколько условий: myItem.onlyDamaged().onlyWithTag({display: {Name: "Sticked pick"}}); Повторное использование выходных данных и преобразования Начиная с MineTweaker 3.0.2, теперь можно повторно использовать предметы, возвращать пустые ведра в сетку для крафта (или любой другой предмет, который вы хотите) или повреждать предметы при крафте. Мы могли бы, например, составить рецепт получения большего количества палочек из дерева с помощью топора: recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>, <ore:woodPlanks>]); Милый. Но каменный топор расходуется, и это немного раздражает. Мы можем исправить это с помощью модификатора повторного использования: recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.reuse(), <ore:plankWood>]); Отлично! Мы можем использовать топор повторно. А что, если бы мы также хотели, чтобы топор был поврежден, когда вы им пользуетесь? recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.transformDamage(), <ore:plankWood>]); Мы также можем нанести более 1 урона при крафте: recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.transformDamage(4), <ore:plankWood>]); Представьте, что мы хотели бы приготовить рецепт превращения грязи в траву, объединив грязь, ведро с водой и пшеницу. Мы могли бы приготовить этот рецепт: recipes.addShapeless(<minecraft:grass>, [<minecraft:dirt>, <minecraft:water_bucket>, <minecraft:wheat>]); Однако на его создание уйдет целое ведро. Мы можем сказать MineTweaker, чтобы он вернул пустое ведро позже: recipes.addShaped(<minecraft:grass>, [[ <minecraft:dirt>, <minecraft:water_bucket>.transformReplace(<minecraft:bucket>), <minecraft:wheat> ]]); Теперь создание травяного блока вернет пустое ведро для крафта в сетку для крафта. Иногда моды определяют свое собственное поведение, когда вы используете их предметы во время крафта. Аналогично, Minecraft вернет вам пустое ведро, когда вы используете его в рецепте крафта. Если вы этого не хотите, вы можете сказать элементу, чтобы он вообще ничего не возвращал: recipes.addShaped(<minecraft:grass>, [[ <minecraft:dirt>, <minecraft:water_bucket>.noReturn(), <minecraft:wheat> ]]); Если вы хотите вернуть что-то, но этого нет в инвентаре для крафта, вы также можете использовать "Вернуть". Возврат может быть использован без аргументов, и в этом случае он вернет исходный предмет, или он может быть использован с предметом, и в этом случае этот предмет будет возвращен обратно в инвентарь игрока: recipes.addShaped(<minecraft:grass>, [[ <minecraft:dirt>, <minecraft:water_bucket>.giveBack(<minecraft:iron_ore> * 3), <minecraft:wheat> ]]); Возврат обычно также имеет побочный эффект подавления поведения возврата модного элемента. Таким образом, в этих случаях это может быть удобной альтернативой модификатору transformReplace. Функциональные рецепты При добавлении рецепта вы также можете указать дополнительный аргумент, который является пользовательской функцией. Эта функция может программно определять выходные данные вашего рецепта. Чтобы продемонстрировать, как это работает, давайте приготовим рецепт, который восстанавливает каменную кирку, когда вы делаете ее из булыжника. Результат нашего рецепта зависит от предоставленной кирки (ее повреждения), поэтому обычный рецепт в данном случае не сработает. Давайте начнем с добавления к нему функции: recipes.addShapeless(<minecraft:stone_pickaxe>, [<minecraft:stone_pickaxe>, <minecraft:cobblestone>], function(output, inputs, crafting) { // подлежащий реализации } Теперь нам нужно посмотреть на стоимость кирки. Чтобы получить фактические значения входных данных, нам нужно пометить их именем, и MineTweaker сохранит его в списке входных данных: recipes.addShapeless(<minecraft:stone_pickaxe>, [<minecraft:stone_pickaxe>.marked("pick"), <minecraft:cobblestone>], function(output, inputs, crafting) { // подлежащий реализации. inputs.pick теперь содержит кирку, используемую в качестве входных данных } Тогда это просто вопрос написания кода для починки кирки: recipes.addShapeless(<minecraft:stone_pickaxe>, [<minecraft:stone_pickaxe>.anyDamage().marked("pick"), <minecraft:cobblestone>], function(output, inputs, crafting) { // максимум здесь для того, чтобы убедиться, что урон не станет отрицательным // исправляет 25 повреждений за булыжник return inputs.pick.withDamage(max(0, inputs.pick.damage - 25)); });
  2. MineTweaker также позволяет изменять рецептуры печей и виды топлива для печей с помощью нескольких простых команд. Считаете ли вы, что плавить руду в печи слишком просто? Вы можете исправить это как таковое: furnace.remove(<minecraft:gold_ingot>); // в качестве альтернативы вы можете указать элемент ввода furnace.remove(<*>, <minecraft:iron_ore>); Вам показалось грустным, что вы не можете превратить древесный уголь в настоящий? Простое исправление: furnace.addRecipe(<minecraft:coal:0>, <minecraft:coal:1>); // или, если вы хотите сгенерировать 0,5 XP, сделав это furnace.addRecipe(<minecraft:coal:0>, <minecraft:coal:1>, 0.5); Хотите сделать предметы пригодными для сжигания? Установите их расход топлива с помощью функции setFuel: furnace.setFuel(<minecraft:rotten_flesh>, 100); Тот же метод можно использовать для установки существующего топлива - ЗА исключением ванильного топлива, поскольку оно, к сожалению, жестко запрограммировано. Дополнительно (за исключением ванильного топлива) вы можете удалить топливо, установив его значение топлива равным 0.
  3. Рудный словарь Теперь, когда мы промочили ноги (вы ведь следовали предыдущим инструкциям, верно?), давайте попробуем этот рецепт: (требуется IC2) val copper = <IC2:itemIngotCopper>; val tin = <IC2:itemIngotTin>; val iron = <minecraft:iron_ingot>; // на самом деле IC2 использует бронзу, а не медь. но это не имеет значения, так как это просто для демонстрации recipes.addShaped(<IC2:itemPartAlloy>, [[iron, iron, iron], [copper, copper, copper], [tin, tin, tin]]); Если вы попробуете рецепт, он сработает ... но не в том случае, если вы используете медные слитки, скажем, от Thermal Expansion или Tinkers Construct! Предметы разные! К счастью, эта проблема существует уже довольно давно и была решена с помощью словаря руды. По сути, словарь руды группирует предметы по их значению и позволяет модам добавлять свои собственные предметы в словарь руды. Например, словарь медной руды называется <руда:слиток меди>. Эти статьи из словаря руды можно легко использовать в рецептах: val copper = <ore:ingotCopper>; val tin = <ore:ingotTin>; val iron = <ore:ingotIron>; // на самом деле IC2 использует бронзу, а не медь. но это не имеет значения, так как это просто для демонстрации recipes.addShaped(<IC2:itemPartAlloy>, [[iron, iron, iron], [copper, copper, copper], [tin, tin, tin]]); ... и это должно все исправить! Попробуйте установить несколько модов, добавляющих медную руду, и все их слитки теперь должны быть совместимы. Рудный словарь используется не только для обозначения руд и слитков. Многие ингредиенты имеют свою собственную статью в словаре руды, что позволяет использовать несколько замен для конкретного ингредиента. Изменение словаря руды Не удовлетворены содержанием, которое моды помещают в словарь руды? Какой-то мод забыл добавить элемент в соответствующую запись? Или вы считаете, что заменитель определенного ингредиента делает рецепты слишком дешевыми? MineTweaker позволяет изменять содержимое словаря руды. Как только вы извлекаете статью из словаря руд, вы можете изменить ее, добавив или удалив руды. Давайте немного изменим наш сценарий: val copper = <ore:ingotCopper>; val tin = <ore:ingotTin>; val iron = <ore:ingotIron>; iron.add(<minecraft:coal>); // на самом деле IC2 использует бронзу, а не медь. но это не имеет значения, так как это просто для демонстрации recipes.addShaped(<IC2:itemPartAlloy>, [[iron, iron, iron], [copper, copper, copper], [tin, tin, tin]]); Если вы перезагрузите скрипты и проверите рецепт, вы заметите, что железо теперь можно заменить углем. Аналогичным образом, вы могли бы даже удалить железо из его входа: val copper = <ore:ingotCopper>; val tin = <ore:ingotTin>; val iron = <ore:ingotIron>; iron.add(<minecraft:coal>); iron.remove(<minecraft:iron_ingot>); // на самом деле IC2 использует бронзу, а не медь. но это не имеет значения, так как это просто для демонстрации recipes.addShaped(<IC2:itemPartAlloy>, [[iron, iron, iron], [copper, copper, copper], [tin, tin, tin]]); Теперь эта модификация словаря руды может быть не очень полезной, но она иллюстрирует, как словарь руды может быть легко изменен. Если вы когда-нибудь наткнетесь на статью в словаре модов, в которой, по вашему мнению, они оба должны быть одинаковыми, теперь можно зеркально отобразить все словарные статьи: <ore:ingotIron>.mirror(<ore:ingotTin>); Теперь, сделав это, вы свяжете железо так же, как в. Затем Iron будет по существу переопределен tin, и любые изменения, внесенные в tin, автоматически отразятся в iron. Добавление новых статей словаря руды Когда вы используете статью из словаря ore, не имеет значения, существует она уже или нет. Если вы используете тот, который не существует, он просто вернет пустой. Таким образом, все, что вам нужно, это сослаться на словарь руды, который вы хотите создать, как если бы он уже существовал, и добавить в него элементы: val myEntry = <ore:myOwnEntry>; myEntry.add(<minecraft:coal>); myEntry.add(<minecraft:iron_ingot>); Слияние и унификация двух статей словаря рудных Играя со многими модами, вы обнаружите, что они повторно используют похожие руды, похожие предметы и все же регистрируют их в разных словарях руд. Теперь вы можете в определенной степени унифицировать словарные статьи руды. Допустим, несколько модов добавляют в игру соляные руды и решили зарегистрировать их под разными именами. Теперь вы убедитесь, что два словаря содержат одни и те же элементы, выполнив эти две команды. <ore:dustSalt>.addAll(<ore:foodSalt>); <ore:foodSalt>.mirror(<ore:dustSalt>); Теперь каждый мод может использовать чужие предметы в своих собственных рецептах. Это облегчает взаимодействие между модами в рецептах (больше нет накопления предметов) и обеспечивает плавный игровой процесс в целом. Использование записей о руде при удалении рецепта Статьи словаря руды также можно использовать для удаления рецептов, содержащих записи о руде, или в качестве подстановочного знака, означающего "вы можете сопоставить любой элемент в записи о руде". Обратите внимание, что статья в словаре руды с одним элементом считается эквивалентной этому элементу. (это в отличие от MineTweaker 2) Перебор значений в записи oredict Иногда возникает необходимость выполнить определенное действие для каждого элемента в словаре руды. Это возможно с помощью простого цикла for: for item in <ore:ingotCopper>.items { doSomething(); }
  4. Использование обозначения рецепта Самые основные изменения, которые вы можете выполнить в MineTweaker, - это добавление и удаление рецепта. Визуального редактора нет, только язык сценариев, поэтому вы должны понимать, как записывать свои рецепты в виде текста. Чтобы определить его функциональность, вы должны вызвать функции. Примером функции является print, которую вы видели ранее и которая принимает один аргумент: print("My text"); Это было легко. Более полезной функцией, например, является функция добавления рецепта в форме: recipes.addShaped(recipe output, recipe contents) Эта строка, по сути, означает "вызовите функцию addShaped для объекта recipes". Объект recipes - это специальный объект, доступный из любого места вашего кода и содержащий все функции, связанные с добавлением и удалением рецептов приготовления. Обратите внимание, что объект recipes управляет только рецептами для крафта - например, рецептами печи управляет объект furnace (о котором вы узнаете в следующем руководстве), а у машин с модами есть еще разные методы управления рецептами. Теперь, как нам вызвать функцию добавления формы с соответствующими аргументами? Нам нужно сообщить ему, каким должен быть результат и каким должен быть рецепт. Давайте возьмем, к примеру, рецепт железных леггинсов, который заключается в следующем: Для этого рецепта используется следующее обозначение минитвейкера: [[<minecraft:iron_ingot>, <minecraft:iron_ingot>, <minecraft:iron_ingot>], [<minecraft:iron_ingot>, null, <minecraft:iron_ingot>], [<minecraft:iron_ingot>, null, <minecraft:iron_ingot>]] Это может показаться загадочным, если вы раньше не занимались программированием, но принцип довольно прост. Вы можете визуализировать рецепт следующим образом: Каждый элемент в minetweaker имеет свое собственное имя, заключенное в угловые скобки, чтобы сообщить ему "найдите мне элемент с этим именем". Это обозначение в угловых скобках будет использоваться во многих местах - от извлечения элементов до словарных статей о руде и названий жидкостей. Название предмета для железного слитка - <minecraft:iron_ingot>, а железные леггинсы - <minecraft:iron_leggings>. А как насчет пустых мест? Вы не можете просто пропустить записи - вы должны поместить что-то, чтобы указать "это пусто". У MineTweaker есть специальное слово для таких объектов, и это "null". Таким образом, мы можем определить рецепт леггинсов с помощью следующего кода: recipes.addShaped(<minecraft:iron_leggings>,[ [<minecraft:iron_ingot>, <minecraft:iron_ingot>, <minecraft:iron_ingot>], [<minecraft:iron_ingot>, null, <minecraft:iron_ingot>], [<minecraft:iron_ingot>, null, <minecraft:iron_ingot>]]); Или вы можете разделить строку по-другому для удобства чтения, поскольку MineTweaker не заботится о том, как вы разделяете свой код на строки. Вы также можете один раз извлечь железный слиток, присвоить его переменной, а затем повторно использовать, как будет описано в конце этого руководства. Основные рецепты Визуального редактора нет, поэтому вы должны понимать, как записывать свои рецепты в виде текста. В качестве небольшого введения давайте рассмотрим рецепт приготовления палочек. В ванильном майнкрафте требуется 2 деревянные доски, чтобы сделать 4 палочки, и они должны располагаться друг над другом. Но что, если мы захотим это изменить? Что, если, скажем, мы сочтем более логичным вместо этого поместить два деревянных бруска по диагонали? (эта палка диагональная, верно?) Изменить рецепт палочек удивительно просто. Создайте скрипт со следующим содержимым: recipes.remove(<minecraft:stick>); recipes.addShaped(<minecraft:stick> * 4, [[<minecraft:planks>, null], [null, <minecraft:planks>]]); Откройте новую игру (или перезагрузите скрипты, если вы уже находитесь в игре). Теперь возьмите 2 дубовые доски и протестируйте свой рецепт. Это работает? Отлично! Но теперь вы, возможно, заметили недостаток в рецепте: если вы положите березовые или еловые дрова, это не сработает! Почему это не работает? Элемент "доски" имеет подпункты, которые отличаются не только названием элемента, но и его мета-значением. По умолчанию, если вы извлекаете элемент с синтаксисом скобок, MineTweaker предполагает, что вам нужен элемент с мета-значением 0. И вот что он вернул - предмет "дубовые доски". Но нам нужен ингредиент, который по сути означает "любой сорт дерева". К счастью, это легко исправить. При использовании синтаксиса скобок, помимо имени, мы также можем определить мета-значение. Например, <minecraft:planks:1> относится к еловому дереву. Мы также можем использовать подстановочный знак (*), чтобы получить элемент, означающий "любое мета-значение хорошо": <minecraft:planks:*>. Таким образом, измените свой рецепт и перезагрузите: recipes.remove(<minecraft:stick>); recipes.addShaped(<minecraft:stick> * 4, [[<minecraft:planks:*>, null], [null, <minecraft:planks:*>]]); Исправлено! Конечно, вы должны использовать статью в словаре руды для досок, что было бы еще лучше, поскольку она была бы совместима с досками, добавленными модом Если вам нужно полное название предмета, вы можете подержать его в руке и использовать команду /minetweaker hand. Он напечатает имя и скопирует его в буфер обмена, так что вы можете просто вставить его непосредственно в свой скрипт Другие виды рецептов Форменные рецепты - это рецепты, в которых ингредиенты должны быть расположены в правильной форме, чтобы они сработали. Не все рецепты Minecraft имеют форму - некоторые не заботятся о форме. MineTweaker поддерживает те, у кого есть функция addShapeless: recipes.addShapeless(<minecraft:stick> * 4, [<ore:plankWood>, <ore:plankWood>]); Теперь не имеет значения, как вы размещаете свои доски - вы всегда можете изготовить палочки. Обратите внимание, что в этом примере, однако, вы больше не можете изготовить деревянную прижимную пластину. Начиная с версии 3.0.7, также возможно регистрировать зеркальные рецепты. Продолжаем с нашими палочками (не забудьте сначала удалить предыдущие рецепты): recipes.addShapedMirrored(<minecraft:stick> * 4, [[<minecraft:planks:*>, null], [null, <minecraft:planks:*>]]); Теперь не имеет значения, повторяете ли вы рецепт - он все равно работает! Удаление конкретного рецепта Пока что мы решили, что удалим все рецепты для стика. В ванильном майнкрафте тоже есть только один, так что это не проблема. Но что, если мы захотим быть более конкретными? Часто существует несколько рецептов для одного и того же продукта, и мы можем захотеть удалить один, но сохранить остальные. В этом случае можно быть более конкретным: recipes.removeShaped(<minecraft:stick>, [[<minecraft:planks:*>], [<minecraft:planks:*>]]); Это удалит только один рецепт - даже если есть другие рецепты. Также можно удалить все рецепты, которые имеют форму, или все рецепты, которые не имеют формы, просто вызвав: recipes.removeShaped(<minecraft:stick>); recipes.removeShapeless(<minecraft:stick>); Кроме того, шаблоны подстановочных знаков можно использовать для указания того, что любой элемент будет соответствовать определенной позиции, если он не пустой: recipes.removeShaped(<minecraft:stick>, [[<*>], [<*>]]); Аналогично, при удалении бесформенных рецептов можно указать только один или несколько ингредиентов бесформенного рецепта, а затем сообщить minetweaker, что оставшаяся часть рецепта может содержать что угодно: recipes.removeShapeless(<minecraft:wool:*>, [<minecraft:wool>]); // удаляет все рецепты окрашивания шерсти Подпункты и значения ущерба Довольно часто элементы имеют несколько подпунктов. Очень хорошо известным примером являются уголь и древесный уголь. Оба имеют одинаковый идентификатор (minecraft:coal), но имеют разное мета-значение. При загрузке элемента вы можете указать мета-значение для подпункта: var coal = <minecraft:coal:0>; // такой же, как <minecraft:coal> var charcoal = <minecraft:coal:1>; Если подпункт не указан, для подпункта заполняется :0. Если вы хотите, чтобы рецепт соответствовал какому-либо подпункту, вы можете использовать синтаксис подстановочных знаков: var anyCoal = <minecraft:coal:*>; Многие виды предметов также могут быть повреждены. При использовании такого продукта в качестве ингредиента для рецепта, по умолчанию, повреждение не допускается. Например: var pick = <minecraft:stone_pickaxe>; var iron = <minecraft:iron_ingot>; recipes.addRecipe(<minecraft:iron_pickaxe>, [[iron, iron, iron], [null, pick, null]]); В приведенном выше рецепте поврежденная кирка не будет принята. Это можно легко изменить с помощью модификатора .anyDamage(): var pick = <minecraft:stone_pickaxe>.anyDamage(); var iron = <minecraft:iron_ingot>; // upgrade pick recipe :) recipes.addShaped(<minecraft:iron_pickaxe>, [[iron, iron, iron], [null, pick, null]]); Перезагрузка и рецепты Когда вы перезагружали скрипты, вы, возможно, заметили, что при перезагрузке скрипта рецепт не дублируется. Аналогично, если дополнение к рецепту удалено из сценария и сценарий перезагружен, рецепт фактически удаляется из игры, даже если может не быть заявления, явно запрашивающего такое удаление. MineTweaker запоминает такие действия, как добавление и удаление рецепта. Когда скрипт перезагружается (или загружается путем подключения к другому серверу), MineTweaker сначала отменит все записанные изменения, которые были внесены, прежде чем он выполнит новый скрипт. Однако многие мод-машины не поддерживают такое удаление рецепта. В этом случае рецепт будет "застрять" в игре до тех пор, пока не будет перезагружена вся игра. Для сервера это означает, что рецепт останется в списке до перезапуска сервера; для клиента это означает, что рецепт будет показан и с ним будут действовать так, как если бы он существовал, хотя при попытке создания фактическое создание завершится неудачей. Такое поведение невозможно исправить; авторы соответствующих модов должны предоставить достаточный API, чтобы гарантировать возможность удаления рецепта. Использование переменных Вы обнаруживаете, что просматриваете один и тот же элемент снова и снова, используя синтаксис скобок? Может быть удобно запомнить значение на потом; что можно сделать с помощью операторов val и var: val stick = <minecraft:stick>; val planks = <minecraft:planks:*>; recipes.remove(stick); recipes.addShaped(stick * 4, [[planks, null], [null, planks]]); В этом примере var может быть использован для: var stick = <minecraft:stick>; var planks = <minecraft:planks:*>; recipes.remove(stick); recipes.addShaped(stick * 4, [[planks, null], [null, planks]]); Разница между var и val заключается в том, что значение val не может быть изменено после его объявления: val stick = <minecraft:stick>; stick = <minecraft:bread>; // ошибка
  5. Вступление Вы когда-нибудь занимались созданием модпака, а потом обнаруживали, что простое добавление кучи модов не дает вам интегрированного опыта? Поскольку моды разрабатываются относительно независимо друг от друга, один может чувствовать себя подавленным по сравнению с другим. Или вы можете поверить, что для некоторых блюд был бы лучший рецепт. Или, возможно, вы захотите удалить какой-то предмет из игры, не удаляя весь мод целиком. Или вы можете обнаружить, что в некоторых статьях словаря руды слишком много или слишком мало элементов. Теперь вы можете сделать все это - каждый с помощью всего лишь одной инструкции для MineTweaker. В дополнение к основной функциональности, предоставляемой для поддержки Vanilla minecraft, вместе с модом предоставляются библиотеки интеграции модов, позволяющие вам изменять не только рецепты vanilla, но и рецепты mod machine и поведение мода. Скрипты Чтобы сделать функциональность доступной в ясной и сжатой форме, предоставляется пользовательский язык сценариев. Язык прост в освоении - и для выполнения основных операций вы можете просто следовать руководствам. Для многопользовательских игр скрипты всегда хранятся на стороне сервера. Это означает, что вам никогда не придется беспокоиться о том, чтобы поддерживать скрипты в актуальном состоянии со своими друзьями! Это делает MineTweaker отличным модпаком и инструментом администрирования сервера - он позволяет обернуть модпак определенным набором модов и заставить разные серверы использовать MineTweaker для изменения деталей в соответствии с предпочтениями владельцев серверов. Аналогично, скрипты могут поставляться в комплекте с мирами, что позволяет делать модификации доступными только для определенных миров - удобно, если вы хотите провести некоторое игровое тестирование в определенном мире. Также удобно для картографов, желающих запрограммировать определенное поведение на своей карте. MineTweaker имеет два каталога скриптов: Общий каталог скриптов: каталог скриптов, непосредственно внутри вашего каталога minecraft. Скрипты, хранящиеся в этом каталоге, будут применяться ко всем мирам, размещенным этим экземпляром minecraft, включая однопользовательские игры. Они не будут применяться, когда вы присоединитесь к другому серверу, так как скрипты всегда загружаются с сервера. Каталог скриптов для конкретного мира: этот каталог также называется scripts, но хранится в каталоге savegame (world/scripts, если вы настраиваете выделенный сервер). Внутри этих каталогов любой файл с расширением .zs считается скриптом MineTweaker и будет запускаться автоматически при запуске игры. В этих каталогах может храниться любое количество файлов сценариев - все они будут выполняться в произвольном порядке. Написание первого сценария Чтобы привыкнуть к системе сценариев в MineTweaker, мы можем создать очень простой файл. Создайте файл hello.zs в вашем каталоге .minecraft/scripts (создайте его, если он еще не существует) со следующей строкой: print("Привет, мир!"); Теперь откройте Minecraft и начните новую игру (или откройте существующую). Сценарий должен был запуститься уже сейчас. Итак, где MineTweaker напечатал свой текст? Журнал Minetweaker Когда вы помещаете инструкцию печати в MineTweaker, она будет выводиться в minetweaker.log в вашем каталоге minecraft. Откройте этот журнал, и вы должны увидеть выходные данные: INFO: Привет, мир! Круто, да? Хотя вывод тестовой строки в журнал сам по себе не так интересен, полезно знать, что любые ошибки и предупреждения будут выводиться в этот файл. Кроме того, многие внутриигровые команды выводятся в этот файл, поскольку внутриигровая консоль просто не может вместить много данных. У вас все еще открыта игра? Попробуйте выполнить следующую команду в игровой консоли: /minetweaker names Эта команда сбрасывает список всех без исключения предметов в игре в журнал minetweaker. Если у вас установлено много модов, ожидайте огромный список. Но поскольку он выводится в журнал, вы можете открыть файл с помощью вашего любимого редактора и выполнить поиск по определенному названию элемента. (все еще застрял с блокнотом? Попробуйте notepad++!) Перезагрузка Во время разработки нет необходимости перезапускать minecraft для каждого вносимого вами изменения. Вы можете перезагрузить скрипты в игре. Измените свой печатный текст на что-то другое, например: print("Привет, ребята!"); Теперь, в игре, введите команду /minetweaker reload. Это добавит следующую строку в журнал MineTweaker: INFO: Привет, ребята! MineTweaker перезагрузил ваши скрипты с диска и выполнил их снова. Удобно! Перезагрузка скрипта - это еще не все, так как при этом будет перезагружен не только скрипт, но и все рецепты, которые были изменены. Подробнее об этом в следующем уроке. Комментарии Для документирования ваших сценариев MineTweaker поддерживает 3 стиля комментариев: // это однострочный комментарий # это однострочный комментарий /* это многострочный комментарий */ Используйте их, чтобы сделать ваши скрипты более понятными!
  6. Перед тем, как писать заявку, обратите свое внимание, что данная должность несет за собой обязанности. Плюсы быть тестером: За каждую найденную недоработку оплата игровыми монетами; Всегда в курсе о новых обновлениях Работа тестером прежде всего ответственность, именно поэтому есть небольшие критерии для того, чтобы стать тестером: Бесконфликтность. Стрессоустойчивость. Адекватность. Знание большинства игровых моментов. Высокая степень ответственности. Объективность и умение решать любые вопросы. Хорошее владение русским языком. Умение работать в команде,соблюдение субординации. Возраст 16+. Если вы уверены, что соответствуете данным пунктам, напишите заявку по следующей форме: Ваше имя. Возраст. Контактные данные Discord. Часовой пояс. Сколько времени Вы можете отыгрывать в неделю? Какой опыт в данной сфере у Вас имеется (укажите сервера, проекты. При прохождении собеседования могут потребоваться доказательства). Оцените свои знания модов от 1 до 10 (пример: Thaumcraft - 7/10) Перечислите плагины с которыми вы знакомы (пример: WorldEdit - 5/10) Почему Вы хотите стать частью команды проекта? Как Вы считаете каким должен быть тестер? Расскажите о себе. Заявки оставлять в следующем разделе: Вакансия | Тестера [Открыта]
  7. Дорогие игроки! В этот день нашему проекту исполняется 11 лет. За последний год проект полностью преобразился, было проделано большое количество работы, но для вас у нас приготовлено ещё много сюрпризов на ближайшее время и предстоит ещё немало работы. Поэтому хотелось-бы сказать спасибо всем кто движет проект вперед - от игроков и до администрации проекта. К празднованию дня рождения проекта добавили скидки на донат группы и тематический конкурс. Описание конкурса: Нужно сделать постройку в виде подарка который вы бы хотели подарить проекту Призы: 1. Донат группа - Legend 2. Донат группа - Deluxe 3. Донат группа - Premium 4. Донат группа - VIP 5. 50.000 монет А все участники не забравшие призовые места получать по 5.000 монет Окончание конкурса 04.08.2022, а скрины своих построек отправляйте в данной теме вместе с координатами и сервером где они расположены. Спасибо, что вы остаётесь с нами Команда CenturyMine
  8. Это не первый Ваш аккаунт. Отказано в разблокировке.
  9. Отказано в жалобе. (Нет нарушений)
  10. Вас перемутили. Если вопросов больше нет я закрываю жалобу.
  11. Классная идея! Я кстати нашел этот мод https://www.curseforge.com/minecraft/mc-mods/ic2-rpg/screenshots
  12. Всем привет! Сейчас я расскажу, как сделать из скина Стива скин Алекса. 1. Начнем с того, что смотрим размер скина. Если он 64х32, тогда загружаем скин на этот сайт https://godly.github.io/minetest-skin-converter/ и скачиваем новый скин уже размером 64х64. 2. Берем наш скин 64х64 и загружаем на следующий сайт https://util.gflash.eu/mcskinconverter/ и нам нужно выбрать кого в кого мы меняем в моем случает Стива на Алекса, ищем строчку "Steve to Alex" и выбираем режим в моем случае "Cut" Видим, что скин Алекса стал нормальным. Теперь просто берем и скачиваем справа файл со скином и ставим в игру! P.S. Если вы заметили в игре поломанный скин, то выполните 1 пункт.
  13. Попробуйте скачать лаунчер заново если не поможет обратитесь в тех.поддержку https://vk.com/im?sel=-34089818
  14. В данный момент обновляем систему показа скинов по этому скины и плащи могут показываться не корректно
  15. На сколько я знаю он очень дисбалансный
  16. Доброе утро. Скорее всего ваш друг ANNiHiLATOR забрал панель и положил ее Энергетический объединить.
  17. Игрок был наказан! Тема закрыта.
×
×
  • Create New...