From b36834d1dcd43d8724255bb54a685a01b4d40f30 Mon Sep 17 00:00:00 2001 From: Andrey Stepanov Date: Fri, 29 Nov 2024 09:58:25 +0500 Subject: [PATCH] translate items/nodes_items_crafting --- _ru/items/nodes_items_crafting.md | 301 +++++++++++++++--------------- 1 file changed, 148 insertions(+), 153 deletions(-) diff --git a/_ru/items/nodes_items_crafting.md b/_ru/items/nodes_items_crafting.md index 3702afe..e721417 100644 --- a/_ru/items/nodes_items_crafting.md +++ b/_ru/items/nodes_items_crafting.md @@ -1,51 +1,52 @@ --- -title: Nodes, Items, and Crafting +title: Блоки, предметы и крафт layout: default root: ../.. idx: 2.1 -description: Learn how to register node, items, and craft recipes using register_node, register_item, and register_craft. -redirect_from: /en/chapters/nodes_items_crafting.html +description: Вы узнаете как зарегистрировать новый блок, предмет или рецепт с помощью register_node, register_item и register_craft. +redirect_from: /ru/chapters/nodes_items_crafting.html --- -## Introduction +## Введение -Registering new nodes and craftitems, and creating craft recipes, are -basic requirements for many mods. +Регистрация новых блоков, ингредиентов и рецептов встречается практически +во всех модах. -- [What are Nodes and Items?](#what-are-nodes-and-items) -- [Registering Items](#registering-items) - - [Item Names](#item-names) - - [Item Aliases](#item-aliases) - - [Textures](#textures) -- [Registering a basic node](#registering-a-basic-node) -- [Crafting](#crafting) +- [Что такое Блоки и Предметы?](#what-are-nodes-and-items) +- [Регистрация предметов](#registering-items) + - [Названия предметов](#item-names) + - [Псевдонимы](#item-aliases) + - [Текстуры](#textures) +- [Регистрация простого блока](#registering-a-basic-node) +- [Рецепты](#crafting) - [Shaped](#shaped) - [Shapeless](#shapeless) - - [Cooking and Fuel](#cooking-and-fuel) -- [Groups](#groups) -- [Tools, Capabilities, and Dig Types](#tools-capabilities-and-dig-types) + - [Cooking и Fuel](#cooking-and-fuel) +- [Группы](#groups) +- [Инструменты, Возможности, and Способы ломания](#tools-capabilities-and-dig-types) -## What are Nodes and Items? +## Что такое Блоки и Предметы? -Nodes, craftitems, and tools are all Items. An item is something that could be -found in an inventory - even if it isn't possible through normal gameplay. +Все блоки и инструменты также являются Предметами. Предмет — это то, +что может лежать в инвентаре (даже если правила игры это запрещают). -A node is an item that can be placed or be found in the world. Every position -in the world must be occupied with one and only one node - seemingly blank -positions are usually air nodes. +Блок — это Предмет, который может быть поставлен или найден в мире. В каждом +вокселе мира всегда находится один и только один блок (пустое место — это, +обычно, блок воздуха). -A craftitem can't be placed and is only found in inventories or as a dropped item -in the world. +Обычные предметы (не блоки) не могут быть поставлены в мире, а могут только +находиться в инвентаре или выпадать в мир. -A tool is like a craftitem but has the ability to wear. As you use the tool, the -wear bar goes down until the tool breaks. Tools can also never be stacked. In -the future, it's likely that craftitems and tools will merge into one type of -item, as the distinction between them is rather artificial. +Инструмент похож на обычный предмет, но его можно использовать. Когда вы +используете инструмент, шкала его прочности уменьшается до тех пор, пока он +не сломается. Инструменты не могут быть сгруппированы в стак. В будущем, +возможно, Инструменты не будут выделяться в отдельный тип, поскольку различие +между ними и обычными предметами довольно условное. -## Registering Items +## Регистрация предметов -Item definitions consist of an *item name* and a *definition table*. -The definition table contains attributes that affect the behaviour of the item. +Объявление предмета состоит из *названия* и *аттрибутов*. +В аттрибутах записаны различные параметры, влияющие на поведение предмета. ```lua core.register_craftitem("modname:itemname", { @@ -54,63 +55,60 @@ core.register_craftitem("modname:itemname", { }) ``` -### Item Names +### Названия предметов -Every item has an item name used to refer to it, which should be in the -following format: +У каждого предмета есть название для обращения к нему, которое должно иметь +следующий формат: modname:itemname -The modname is the name of the mod in which the item is registered, and the item -name is the name of the item itself. The item name should be relevant to what -the item is and can't already be registered. +`modname` — это имя мода, в котором предмет зарегистрирован, а `itemname` — это +название самого предмета. Название предмета должно быть уникальным и должно +отражать его суть. -Both `modname` and `itemname` should only contain lowercase letters, numbers, -and underscores. +Для написания `modname` и `itemname` используются только строчные буквы +английского алфавита, цифры и подчёркивания. -### Item Aliases +### Псевдонимы -Items can also have *aliases* pointing to their name. An *alias* is a -pseudo-item name that results in the engine treating any occurrences of the -alias as if it were the item name. There are two main common uses of this: +У предметов могут быть *псевдонимы*. Игровой движок работает с псевдонимами +предметов как будто это сами предметы. Псевдонимы используются в двух случаях: -* Renaming removed items to something else. - There may be unknown nodes in the world and in inventories if an item is - removed from a mod without any corrective code. -* Adding a shortcut. `/giveme dirt` is easier than `/giveme default:dirt`. +* Чтобы переименовать удалённые предметы на что нибудь другое. На карте или + в инвентаре могут появится *неизвестные блоки* (unknown nodes), если + просто удалить предмет из мода без исправления кода. +* Для сокращения названий. Команда `/giveme dirt` получается короче, + чем `/giveme default:dirt`. -Registering an alias is pretty simple. A good way to remember the order of the -arguments is `from → to` where *from* is the alias and *to* is the target. +Зарегистрировать псевдоним очень просто. Нужно запомнить правильный порядок +аргументов `from → to`, гле *from* — это псевдоним, а *to* — это сам предмет. ```lua core.register_alias("dirt", "default:dirt") ``` -Mods need to make sure to resolve aliases before dealing directly with item names, -as the engine won't do this. -This is pretty simple though: +Моды должны всегд разименовывать псевдонимы перед тем как работать с именем +предмета, потому что движок сам этого не делает. Но это довольно просто: ```lua itemname = core.registered_aliases[itemname] or itemname ``` -### Textures +### Текстуры -Textures should be placed in the textures/ folder with names in the format -`modname_itemname.png`.\\ -JPEG textures are supported, but they do not support transparency and are generally -bad quality at low resolutions. -It is often better to use the PNG format. +Файлы текстур нужно класть в папку textures/ и давать имена в следующем +формате: `modname_itemname.png`.\\ +Можно использовать текстуры в формате JPEG, но они не поддерживают прозрачность +и, обычно, плохо выглядят при низком разрешении. Лучше использовать формат PNG. -Textures in Minetest are usually 16 by 16 pixels. They can be any resolution, -but it is recommended that they are in the order of 2, for example, 16, 32, 64, -or 128. This is because other resolutions may not be supported correctly on -older devices, especially phones, resulting in degraded performance. +Обычно, текстуры в Minetest имеют размер 16 на 16 пикселей. Вообще, разрешение +может быть любым, но рекомендуется использовать значения степени двойки, +например 16, 32, 64 или 128. В противном случае они могут вызвать проблемы +с производительностью на старых компьютерах и особенно телефонах. -## Registering a basic node +## Регистрация простого блока -Registering nodes is similar to registering items, just with a different -function: +Блоки регистрируются так же, как и предметы, только другой функцией: ```lua core.register_node("mymod:diamond", { @@ -121,18 +119,18 @@ core.register_node("mymod:diamond", { }) ``` -Node definitions can contain any property in an item definition, and also -contain additional properties specific to nodes. +При объявлении блока в список аттрибутов добавляются дополнительные свойства, +характерные для блоков. -The `tiles` property is a table of texture names the node will use. -When there is only one texture, this texture is used on every side. -To give a different texture per-side, supply the names of 6 textures in this order: +Свойство `tiles` — это таблица с именами текстур этого блока. +Если указана только одна текстура, она используется для всех сторон блока. +Если нужно указать разные текстуры для сторон, то они должны быть перечислены +в следующем порядке: - up (+Y), down (-Y), right (+X), left (-X), back (+Z), front (-Z). + сверху (+Y), снизу (-Y), справа (+X), слева (-X), сзади (+Z), спереди (-Z). (+Y, -Y, +X, -X, +Z, -Z) -Remember that +Y is upwards in Minetest, as is the convention with -most 3D computer games. +Запомните, что +Y это верх в Minetest, как и в большинстве других игр. ```lua core.register_node("mymod:diamond", { @@ -148,34 +146,33 @@ core.register_node("mymod:diamond", { is_ground_content = true, groups = {cracky = 3}, drop = "mymod:diamond_fragments" - -- ^ Rather than dropping diamond, drop mymod:diamond_fragments + -- ^ Выпадает не сам алмаз, а mymod:diamond_framgents }) ``` -The `is_ground_content` attribute allows caves to be generated over the stone. -This is essential for any node which may be placed during map generation underground. -Caves are cut out of the world after all the other nodes in an area have generated. +Свойство `is_ground_content` позволяет генерировать пещеры в каменной толще. +Это важно для всех блоков, которые должны появляться под землёй в процессе +генерации карты. Пещеры прорезаются после того, как будут сгенерированы все +остальные блоки в данной области. -## Crafting +## Рецепты -There are several types of crafting recipe available, indicated by the `type` -property. +Существует несколько типов рецептов, которые указываются через свойство `type`. -* shaped - Ingredients must be in the correct position. -* shapeless - It doesn't matter where the ingredients are, - just that there is the right amount. -* cooking - Recipes for the furnace to use. -* fuel - Defines items which can be burned in furnaces. -* tool_repair - Defines items which can be tool repaired. +* shaped — Ингредиенты должны быть сложены в правильном порядке. +* shapeless — Порядок ингредиентов не важен, важно лишь их наличие + и количество. +* cooking — Можно приготовить в печи. +* fuel — Может быть топливом для печи. +* tool_repair — Можно отремонтировать инструментом. -Craft recipes are not items, so they do not use Item Names to uniquely -identify themselves. +Рецепты крфта — это не предметы, и поэтому им не нужно указывать имя. ### Shaped -Shaped recipes are when the ingredients need to be in the right shape or -pattern to work. In the example below, the fragments need to be in a -chair-like pattern for the craft to work. +Для рецептов `shaped` важно расположение ингредиентов в сетке крафта. +В примере ниже фрагменты нужно расположить в форме стула, чтобы рецепт +сработал: ```lua core.register_craft({ @@ -189,11 +186,10 @@ core.register_craft({ }) ``` -One thing to note is the blank column on the right-hand side. -This means that there *must* be an empty column to the right of the shape, otherwise -this won't work. -If this empty column shouldn't be required, then the empty strings can be left -out like so: +Обратите внимание на пустую колонку в правой части. +Так обозначается, что *должна* быть пустая колонка справа, иначе рецепт +не будет работать. +Если пустая колонка не требуется, постые строки можно не указывать: ```lua core.register_craft({ @@ -206,13 +202,13 @@ core.register_craft({ }) ``` -The type field isn't actually needed for shaped crafts, as shaped is the -default craft type. +Свойство type можно не указывать, потому что все рецепты по умолчанию +считаются shaped. ### Shapeless -Shapeless recipes are a type of recipe which is used when it doesn't matter -where the ingredients are placed, just that they're there. +В рецептах `shapeless` не важно расположение ингредиентов, они просто должны +быть. ```lua core.register_craft({ @@ -226,10 +222,10 @@ core.register_craft({ }) ``` -### Cooking and Fuel +### Cooking и Fuel -Recipes with the type "cooking" are not made in the crafting grid, -but are cooked in furnaces, or other cooking tools that might be found in mods. +Рецепты типа `cooking` предназначены не для сетки крафта, а для приготовления +в различных типах печей. ```lua core.register_craft({ @@ -240,18 +236,17 @@ core.register_craft({ }) ``` -The only real difference in the code is that the recipe is just a single item, -compared to being in a table (between braces). -They also have an optional "cooktime" parameter which -defines how long the item takes to cook. -If this is not set, it defaults to 3. +Единственное отличие в коде такого рецепта заключается в том, что поле recipe — +это просто одно свойство, а не таблица. Кроме того, в таких рецептах можно +указывать свойство "cooktime", в котором задаётся время приготовления. +По умоланию, оно равно 3. -The recipe above works when the coal block is in the input slot, -with some form of fuel below it. -It creates diamond fragments after 10 seconds! +Указанный выше рецепт работает, когда во входной слот печи кладут блок угля, +а в слот топлива — какое-нибудь топливо. Через 10 секунд на выходе получается +кусочек алмаза. -This type is an accompaniment to the cooking type, as it defines -what can be burned in furnaces and other cooking tools from mods. +Рецепты типа `fuel` дополняют рецепты типа `cooking`. Они указывают, что +можно использовать в качестве топлива в печах. ```lua core.register_craft({ @@ -261,24 +256,25 @@ core.register_craft({ }) ``` -They don't have an output like other recipes, but they have a burn time -which defines how long they will last as fuel in seconds. -So, the diamond is good as fuel for 300 seconds! +У таких рецептов нет свойства output, но есть свойство burntime, определяющее +время горения предмета в печи (в секнудах). В данном примере алмаз получается +хорошим топливом, потому что он горит целых 300 секунд! -## Groups +## Группы -Items can be members of many groups and groups can have many members. -Groups are defined using the `groups` property in the definition table -and have an associated value. +Предметы можно объединять в группы, и в группах может быть множество предметов. +Принадлежность к группе указывается с помощью аттрибута `groups` в таблице +аттрибутов. ```lua groups = {cracky = 3, wood = 1} ``` -There are several reasons you use groups. -Firstly, groups are used to describe properties such as dig types and flammability. -Secondly, groups can be used in a craft recipe instead of an item name to allow -any item in the group to be used. +Есть несколько причин указывать группы. +Во первых, группы позволяют указать такие свойства, как способ ломания блока +и его горючесть. +Во вторых, в рецептах крафта в качестве ингредиентов можно указывать группы +вместо конкретных предметов. ```lua core.register_craft({ @@ -289,37 +285,36 @@ core.register_craft({ ``` -## Tools, Capabilities, and Dig Types +## Инструменты, Возможности, и Способы ломания -Dig types are groups which are used to define how strong a node is when dug -with different tools. -A dig type group with a higher associated value means the node is easier -and quicker to cut. -It's possible to combine multiple dig types to allow the more efficient use -of multiple types of tools. -A node with no dig types cannot be dug by any tools. +Способы ломания — это группы, которые обозначают, насколько блок устойчив +к разным типам инструментов. +Чем большее значение задано группе, тем проще сломать блок данным видом +инструмента. +Можно комбинировать несколько способов ломания, чтобы позволить игрокам +эффективнее использовать разные виды инструментов. +Если не указать никакой из способов ломания, блок нельзя будет сломать. -| Group | Best Tool | Description | -|--------|-----------|-------------| -| crumbly | spade | Dirt, sand | -| cracky | pickaxe | Tough (but brittle) stuff like stone | -| snappy | *any* | Can be cut using fine tools;
e.g. leaves, smallplants, wire, sheets of metal | -| choppy | axe | Can be cut using a sharp force; e.g. trees, wooden planks | -| fleshy | sword | Living things like animals and the player.
This could imply some blood effects when hitting. | -| explody | ? | Especially prone to explosions | -| oddly_breakable_by_hand | *any* | Torches and such - very quick to dig | +| Группа | Инструмент | Описание | +|-------------------------|------------|--------------------------------------------------------------------------------------| +| crumbly | лопата | Земля, песок | +| cracky | кирка | Твердый (но хрупкий) материал. Например, камень. | +| snappy | *любой* | Можно сломать чем угодно. Например, листья, неболшие растения, проволока. | +| choppy | топор | Можно разрубить. Например, деревья, доски. | +| fleshy | меч | Живые объекты, такие как животные или игроки.
Могут быть эффекты крови при ударе. | +| explody | ? | Может взрываться | +| oddly_breakable_by_hand | *любой* | Факелы и подобные быстро ломаемые вещи | -Every tool has a tool capability. -A capability includes a list of supported dig types, and associated properties -for each type such as dig times and the amount of wear. -Tools can also have a maximum supported hardness for each type, which makes -it possible to prevent weaker tools from digging harder nodes. -It's very common for tools to include all dig types in their capabilities, -with the less suitable ones having very inefficient properties. -If the item a player is currently wielding doesn't have an explicit tool -capability, then the capability of the current hand is used instead. +У каждого инструмента есть Возможности — это список типов ломания +с соответствующими свойствами, такими как время ломания и степень износа. +Кроме того, можно указывать максимально допустимую прочность блоков, которые +можно ломать данным инструментом. Таким образом можно запретить ломать твёрдые +блоки слишком простыми инструментами. Обычно, всем инструментам указывают все +возможные способы ломания, делая неподходящие способы сильно неэффективными. +Если игрок пытается сломать блок инструментом, не поддерживающим такой тип +блоков, то будет применяться свойство рук, а не инструмента. ```lua core.register_tool("mymod:tool", { @@ -340,6 +335,6 @@ core.register_tool("mymod:tool", { }) ``` -Groupcaps is the list of supported dig types for digging nodes. -Damage groups are for controlling how tools damage objects, which will be -discussed later in the Objects, Players, and Entities chapter. +`groupcaps` — это список поддерживаемых Способов ломания. +`damage_groups` позволяет указать, каким образом инструмент повреждает блок, +это будет описано позже в главе "Объекты, Игроки и Сущности".