Custom Stuff
Для издания | |
---|---|

Автор |
CubeX2 |

Дата выпуска |
7 февраля 2015 г. |

Последняя версия |
0.7.10 / 0.11.10 / 0.10.23 |

Совместимо с |
1.7.10 / 1.10.2 / 1.11.2 |

Установка |
См. Установка |

Требования | |

Ссылки |


**Custom Stuff** — это модификация для *Minecraft*, с которым абсолютно любой человек, не знающий язык Java, может добавить в игру различные блоки, предметы, инструменты, броню, пищу, рецепты крафта и другое (см. ниже).

## Установка

- Установите Minecraft Forge.
- Скачайте
*Custom Stuff*. - Скопируйте файл в папку

.*<папка игры>*/mods

# Категория: Блоки

- Чтобы добавить свой блок в игру, нужно создать в категории
**customBlocks**файл с расширением .block и открыть с помощью блокнота.

У блоков должны быть в обязательном порядке 3 параметра:


Параметр | Примечание |
---|---|

name | Можно именовать на русском языке, если используется русификатор, но игроки, у которых английская раскладка, увидят лишь непонятные символы. |

id | У блоков есть ограничение: [97 ... 255]
|

texturefile | Путь к текстуре блока. Текстура должна быть разрешением 16×16 и помещена в архив .minecraft/mods/custom stuff.zip (пример текстуры справа)
|


## Дополнительные параметры блоков

Параметр | Базовое значение | Описание |
---|---|---|

type | normal | Определяет тип блока (normal, fence, fencegate, stairs, door, slab, crosstexture, torch, pressureplate, chest, pane, liquid, trapdoor). |

textureindex | не имеет значения. | Может быть использован для текстур-файлов. Порядок начинается от 0, слева направо и от верха. |

textureindex1 | не имеет значения. | textureindex1 to textureindex15. textureindex for damage values. Same with the other texture properties. |

texturefiletop | не имеет значения. | Верхняя текстура блока. |

texturefileeast | не имеет значения | Восточная боковая сторона блока. |

texturefilewest | не имеет значения | Западная боковая сторона блока. |

texturefilenorth | не имеет значения | Северная боковая сторона блока. |

texturefilesouth | не имеет значения | Южная боковая сторона блока. |

textureindextop | не имеет значения | Верхняя индексная сторона блока. То есть нужно указать номер текстуры из файла, где 0,0 — самая верхняя левая, 0,1 — чуть ниже, 1,0 — чуть правее и т. д.. |

textureindexeast | не имеет значения | Западная индексная боковая сторона блока. |

textureindexwest | не имеет значения | Восточная индексная боковая сторона блока. |

textureindexnorth | не имеет значения | Северная индексная боковая сторона блока. |

textureindexsouth | не имеет значения | Южная индексная боковая сторона блока. |

chesttexturefile1 | не имеет значения | chesttexturefile1 to chesttexturefile7. Текстуры для сундука. Смотрите chesttextures.png (такое изображение имеется в архиве), в котором пронумерованы числа для текстур. |

material | rock | Материал, из которого состоит блок(grass, ground, wood, rock, iron, cloth, sand, glass). |

damagevalues | 0 | Number of damage values the block has [1 ... 15] (По умолчанию 0). "Индексация" блока (пример: красители имеют номер 351 и 15 значений (по одному для каждого красителя)). Только для типа normal, fence и crosstexture. |

name1 | не имеет значения | Имя для индексированных блоков name1, name2... |

redstoneonly | False | Только для дверей. Если поставить true, то дверь можно открыть только с помощью красного камня. |

texturefilebottom | не имеет значения | Только для дверей. Путь к текстуре нижней части двери. |

doubleslabid | не имеет значения | Только для плит. ID блока, который устанавливается, когда вы размещаете одну плиту над другой. Если этого не установлено, то невозможно сделать двойную плиту. |

stepsound | stone | Звук ходьбы по блоку. Так же производиться звук размещения/уничтожения блока. Имеющиеся звуки (wood, gravel, grass, stone, metal, cloth, glass). |

hardness | 1 | Сложность добычи блока. (например: обсидиан 10; грязь 0,5; камень 1) |

resistance | 0 | Устойчивость ко взрыву. (например: обсидиан 2000; камень 10) |

light | 0 | Яркость освещения блока (например: светящийся камень 15; факел 14) |

opacity | 255 | Сколько света проходит через блок [0 ... 255]. (например: 255 = свет не проходит через блок, 0 = весь свет проходит через блок) |

iddropped | тот же самый блок | Блок, материал, который выпадает из блока. |

iddropped1 | iddropped | iddropped1 to iddropped15. iddropped for damage values. |

quantitydropped | 1 | Количество выпадаемых предметов/блоков. Можно поставить случайное количество (например: 3-6). |

damagedropped | 0 | Which damage value the block drops. |

damagedropped1 | Default is the damage the block has | damagedropped1 to damagedropped15. damagedropped for damage values. |

transparent | False | Поставьте true, если блок имеет прозрачную текстуру. |

speed | 0.6 | Как быстро можно передвигаться по блоку (стандартно: 0.6). |

gravity | False | Если поставить true, то гравитация будет влиять на блок (пример: песок и гравий). |

collision | true | Если поставить false, то через блок можно проходить. |

movebypiston | true | Если поставить false, то блок невозможно будет двигать с помощью поршня. |

pressureplatetrigger | all | Блок активируется нажимной пластиной. Возможные значения (all, player, monster, animal, creature, item, noplayer, nomonster, noanimal, nocreature and noitem). Нельзя использовать несколько значений. |

destroyed | не имеет значения | Функции, которые вызываются, когда игрок разрушил блок. |

destroyed1 | не имеет значения | destroyed1 to destroyed15. destroyed for damage values. Same with clicked, added etc. |

clicked | не имеет значения | Функции, которые вызываются при нажатии ЛКМ на блок. |

neighborchanged | не имеет значения | Функции, которые вызываются, когда рядом с блоком меняется соседний блок. |

added | не имеет значения | Функции, которые вызываются, когда блок был установлен. |

activated | не имеет значения | Функции, которые вызываются, когда подключен с красным камнем. |

deactivated | не имеет значения | Функции, которые вызываются, когда блок отключен от красного камня (не совсем верный перевод). |

rigthclicked | не имеет значения | Функции, которые вызываются, когда игрок щёлкнет правой кнопкой мыши на блок. |


## Пример создания блока (на примере фонаря) и блока, который вызывает молнию

- Как написано выше, нужно создать файл с расширением .block и открыть с помощью блокнота.
- Подготовить текстуру 16×16 для блока.
- Написать основные параметры (id, name и texturefile).

id=170; name="Фонарь"; texturefile="Lantern.png";

- Добавить вторичные параметры.

id=170; name="Фонарь"; texturefile="Lantern.png"; light=15; material="glass"; stepsound="glass";

- Кинуть текстуру Lantern.png (с учётом регистра) в архив
**.minecraft/mods/custom stuff.zip** - Блок создан.

## Блок «Призыватель молний»

- Нужно создать ещё один файл с расширением .block и открыть с помощью блокнота.
- Затем сделать текстуру 16×16 для «Призывателя».
- Помимо основных параметров, нужно написать ещё и вызов функции, который воздействует на блок красного камня.

id=195; name="Призыватель молний"; texturefile="имя_вашей_текстуры.png";

- Основные параметры готовы, осталось добавить вторичные и вызов функции.

id=195; name="Призыватель молний"; texturefile="имя_вашей_текстуры.png"; material="iron"; stepsound="metal"; activated = "world.createThunderbolt(origin);";

- Кидайте вашу_текстуру.png в архив
**.minecraft/mods/custom stuff.zip** - Тестируйте своё творение

.

## Список несложных функций

- Функция вызова молнии.

"world.createThunderbolt(origin);";

- Функция создания взрыва (последняя цифра «3» — это мощность взрыва, можно изменить значение на своё).

"world.createExplosion(origin, 3);";

- Функция включения/выключения дождя (включён — 1, выключен — 0)

"world.setWeather(1);";

- Функция установки времени (ставьте любое значение от 0 до 24, 0 — утро, 12 — полночь)

"world.setTime(0);";

- Функция спауна мобов (можете ставить имена других мобов, например 'Cow' или 'Creeper', но они обязательно должны быть заключены в одинарные кавычки.)

"world.spawnMob(origin, 'Pig');";

# Категория: Предметы

- Чтобы добавить в игру свой предмет, нужно создать файл с расширением .item в категории customItems и открыть с помощью блокнота.


У предметов в обязательном порядке должны быть три параметра:

Параметр | Примечание |
---|---|

name | Можно именовать на русском языке, если используется русификатор, но игроки, у которых английская раскладка, увидят лишь непонятные символы. |

id | У предметов есть ограничение (от 512 до 5000) |

iconfile | Путь к текстуре предмета. Текстура должна быть разрешением 16×16 и помещена в архив .minecraft/mods/custom stuff.zip (пример текстуры справа)
|


## Дополнительные параметры для предметов

Параметр | Базовое значение | Описание |
---|---|---|

type | normal | Определяет тип предмета (normal, food, helmet, body, legs, boots, grenade). |

iconindex | не имеет значения. | Может использовано для текстур-файлов (содержащих более одной текстуры). Нумерация начинается от 0, слева-направо и сверху. |

maxstack | 1 | Определяет максимальное значение в одном стаке. Максимально доступное значение: 64 |

healamount | 1 | Определяет количество утоления пунктов голода. Максимально доступное значение: 20 (1 — половинка пункта голода). |

saturation | 0.6 | Value for the saturation. |

efficiency | 4 | Эффективность инструментов (скорость добычи блоков. Например: деревянный: 2, алмазный: 8). |

damage | 1 | Наносимый инструментами/оружием урон. (Например: деревянный: 0, алмазный: 3) |

maxuses | броня: 16, еда: 1, все остальные: 64 | Количество использований инструмента или предмета. |

harvestblocks | all | Определяет силу кирки (какие блоки может разрушать кирка). Допустимые значения: all, pickaxewood, pickaxestone, pickaxeiron, pickaxediamond, default или любой ID блока. Ставьте несколько ID, разделяя их запятой. |

efficiencyblocks | не имеет значения | Определяет тип инструмента. Данные значения также должны быть в "harvestblocks". Допустимые значения: all, none, pickaxe, axe, shovel and any blockid. Можно использовать несколько значений,разделив их запятой ",". |

armorname | не имеет значения | Путь к текстуре брони. Внимание! В архиве .minecraft/mods/custom stuff.zip нужно создать папку "armor" и положить текстуру туда. Для брони требуется два изображения брони (см. архив minecraft/armor). |

infiniteair | False | Только для брони. Если поставить true, то игрок может бесконечно дышать под водой с этой бронёй. (Only Singleplayer) |

noburning | False | Только для брони. Если поставить true, то игрок никогда не загорится (не купайтесь в лаве — бесполезно(наносит урон)). (Only Singlepalyer) |

nofalldamage | False | Только для брони. Если поставить true, то игроку не будет наноситься урон от падения. (Only Singlepalyer) |

grenadetime | 50 | Время до взрыва гранаты. |

grenadethrowforce | 1 | Сила броска гранаты. |

rightclick | не имеет значения | Функции, вызываемые, когда игрок предметом нажимает правой кнопкой мыши по блоку. |

blockdestroyed | не имеет значения | Функции, вызываемые, когда игрок уничтожает блок. |

hitmob | не имеет значения | Функции, вызываемые, когда игрок бьёт моба или игрока этим предметом. |

explode | не имеет значения | Функции, вызываемые, когда взрывается граната. Если вы не поставите это значение, то гранаты будут просто пропадать без какого-либо эффекта. |

eaten | не имеет значения | для еды (food). Функции, вызываемые, когда съеден предмет. |


## Пример создания предмета

- Как написано выше, нужно создать файл с расширением .item и открыть с помощью блокнота.
- Подготовить текстуру 16×16 для предмета.
- Написать основные параметры (id, name и iconfile).

id=1503; name="Derky Pickaxe"; iconfile="Derky_Pickaxe.png";

- Добавить вторичные параметры (хотя в случае с инструментом эти параметры нельзя назвать вторичными).

name="Derky Pickaxe"; id=1503; iconfile="Derky_Pickaxe.png"; type="normal"; maxuses=2048; harvestblocks="pickaxediamond"; efficiencyblocks="pickaxe"; efficiency=16; damage=1; blockdestroyed="player.damageItem(player.getCurrentSlot(), 1);"; hitmob="player.damageItem(player.getCurrentSlot(), 512);";

Свойства данной кирки:

- Уничтожается с 4 ударов, если атаковать ей мобов. (hitmob)
- Эффективность в два раза выше, чем у алмазной кирки. (efficiency)
- Максимальное количество использований выше, чем у алмазной кирки на ~500. (maxuses, blockdestroyed)
- Может добывать обсидиан. (harvestblocks, efficiencyblocks)

## Создание функции на спаун предмета в инвентарь после применения другого

Вы не задумывались, почему же ваш игрок выпивает добавленную вами бутылку сока с бутылкой? Если задумывались, то этот раздел для вас:

- Создаем файл с расширением .item
- Делаем текстуру — 16×16, естественно.
- А теперь наш предмет — бутылка с соком.

id = 701; name = "Бутылка с соком"; iconfile = "ваша_текстура.png"; type = "food"; maxstack = 1; saturation = 1.3; healamount = 2; eaten = "player.addToInventory(374, 1, 0);";

- Первое число в функции — это id предмета, который будет спаунится в инвентарь после употребления вашего сока, в данном случае пустой пузырек. Второе число — количество предметов, которые заспаунятся в инвентарь. Третье — параметр damage предмета, не менять.
- eaten — вызывает функцию, после съедания предмета.
- Тестируете, всё ли нормально.

# Категория: Рецепты

- Чтобы создать рецепт, нужно создать файл с расширением .recipe в категории customRecipes и открыть его с помощью блокнота.
- Файл должен быть один (то есть для создания одного и более рецепта хватает одной строки в блокноте).

## Структура создания рецепта

- Для крафта в ячейке 2х2:

recipes.addRecipe("X amount 2 2 1 2 3 4", "vanilla");

- Для крафта в ячейке 3х3:

recipes.addRecipe("X amount 3 3 1 2 3 4 5 6 7 8 9", "vanilla");

- Для крафта в нестрогом порядке предметов (размер ячейки указывать не нужно):

recipes.addShapelessRecipe("X amount 1 2 3 4 5 6 7 8 9", "vanilla");

- Разбор крафта:

X — выходящий предмет.

amount — количество выходящих предметов.

2 2 (или 3 3) — сетка крафта.

1 2 3 4 — ингредиенты, поставленные по порядку (см. справа нумерацию крафта).


## Удаление рецепта

- Для удаления рецепта, написанного Mojang или другими модами, необходимо вписать следующие строки:

recipes.removeRecipe("X amount 3 3 1 2 3 4 5 6 7 8 9", "vanilla");

- Разбор крафта:

X — выходящий предмет

amount — количество выходящих предметов

2 2 (или 3 3) — сетка крафта

1 2 3 4 — ингредиенты, поставленные по порядку (см. справа нумерацию крафта).

- Пример:

recipes.removeRecipe("46 1 3 3 289 12 289 12 289 12 289 12 289 12", "vanilla");

Эта строка позволит удалить рецепт ТНТ

- Для удаления бесформенного рецепта:

recipes.removeShapelessRecipe("X amount 1 2 3 4 5 6 7 8 9", "vanilla");

# Категория: Топливо

- Эта категория добавляет свойство предмету использоваться в печи в качестве топлива. Чтобы создать топливо, нужно создать файл с расширением .fuel в категории customFuels.

Для переплавки одной вещи необходимо 200 энергии (10 секунд). К примеру, у угля энергетический запас составляет 1600 ед. энергии, а у досок/древесины — 300 единиц. В одном файле с расширением .fuel можно хранить плавку всех предметов, то есть для каждой строки будет определено по одному горючему материалу.

- Пример:

fuels.addFuel(«49 3200», «vanilla»); (Обсидиан может проплавить 16 предметов)

fuels.addFuel(«1 100», «vanilla»); (Камень может переплавить 0.5 предметов)

# Категория: Создания рецепта переплавки

- Эта категория добавляет свойство получать один предмет из другого путём переплавки в печи. Чтобы создать рецепт переплавки, нужно создать файл с расширением .srecipe в категории
**customSmeltingRecipes**.

В файле example.srecipe нужно написать в одну строку:

smeltingRecipes.addRecipe(«X 1 amount», «vanilla»);

X — какой предмет (или блок) надо переплавить

amount — количество вещей

1 — получившийся предмет.

# Категория: Создание генерации руды

- Чтобы создать генерацию руды (блока), нужно создать файл с расширением .oregen в категории
**customOreGeneration**.

Параметр | Базовое значение | Описание |
---|---|---|

id | не имеет значения. | id генерируемого блока. |

damage | не имеет значения. | Мета-идентификатор. Пример — разноцветная шерсть имеет один идентификатор, но разные мета-идентификаторы, для поврежденных кирок эти мета-идентификаторы также различны. |

type | normal | Тип генерируемого блока (normal, flower) |

size | не имеет значения. | Количество генерации блоков в одном месте. |

generationblocks | не имеет значения. | Определяет параметр, возле каких блоков генерируется блок. |

heightmin | не имеет значения. | Минимальная высота по альтитуде. |

heightmax | не имеет значения. | Максимальная высота по альтитуде. |

rate | не имеет значения. | Количество генерации залеж в одном чанке. |


Пример:

id=35; damage=10; type="normal"; size=10; rate=10; generationblocks=1; heightmin=0; heightmax=128;

# Блоки и предметы с различными функциями

## Гравитационная установка

- Гравитационная установка (блок имеет два режима: обычный (не подключен красный камень) и ультра (подключен красный камень), при первом высота подкидывания — 6-8 блоков, при втором — около 40).
- Создаем файл с расширением .block.
- В нём пишем:

id = 205; type = "normal"; name = "Гравитационная Установка (обычный режим)"; texturefile = "ваша_текстура.png"; damagevalues = 1; material = "iron"; stepsound = "metal"; hardness = 1; rightclicked = "player.addVelo(0, 1, 0);"; activated = "world.setBlockMetadata(origin, 1);player.sendMessage('Активирован ультра-режим.');"; name1 = "Гравитационная Установка (ультра-режим)"; iddropped1 = 205; damagedropped1 = 0; rightclicked1 = "player.addVelo(0, 3, 0);"; deactivated1 = "world.setBlockMetadata(origin, 0);player.sendMessage('Активирован обычный режим.');";

- Готово! Переключать режимы лучше всего рычагом, выключен — обычный режим, включён — ультра-режим. Чтобы установка вас подкинула, нажмите на неё ПКМ. Летайте на здоровье и не переломайте ноги!

## Направленный телепортатор

- Направленный телепортатор перемещает ГГ в место прицеливания, при нажатии ПКМ. И дабы избежать читерства, ограничим радиус действия телепортатора до 20 блоков.
- Итак, в папке CustomItems создаем файл с расширением .item, и пишем туда:

name="Направленный телепортатор"; id=793; type="normal"; iconfile="ваш_файл.png"; iconindex=1; maxstack=1; rightclickair = "customstuff.loadScript('portalgun.script')";

- Сам телепортатор готов. Теперь делаем скрипт для него.
- В папке customStuffFunctions создаем файл с расширением .script, в нём пишем:

var x = player.getLookX(20); // \ var y = player.getLookY(20); // > можно вставить свои значения. var z = player.getLookZ(20); // / player.setPosition(x, y+3, z);



## Электро-Винтовка

(Материал с minecraftmodcustomstuff.wikia.com)

- Винтовка вызывает электро-разряд с небес в место прицеливания, и для выстрела использует светящуюся пыль. Максимальный радиус 60 блоков.
- В папке CustomItems создаем файл с расширением .item, и пишем в нём:

name="Электро-Винтовка"; id=793; type="normal"; iconfile="ваш_файл.png"; iconindex=1; maxstack=1; rightclickair = "if(player.getItemCount(348, 0) >=1 ){customstuff.loadScript('lightingweapon.script')}"; //проверка, если в инвентаре есть светящаяся пыль то запускаем скрипт.

- Теперь делаем скрипт для винтовки.
- В папке customStuffFunctions создаем файл с расширением .script, туда пишем:

var x = player.getLookX(60); // \ var y = player.getLookY(60); // > можно выставить свои значения(в блоках) var z = player.getLookZ(60); // / world.createThunderbolt(x, y, z);//создаем молнию в этих координатах (направление взгляда ГГ) player.removeFromInventory(348, 1, 0); //забираем 1 светящуюся пыль из инвентаря (первое число id)

# Ошибки (CS1)

- Если созданной киркой ударить по земле, траве, гравию, песку и многим другим блокам, игра крашнется и выдаст ошибку.
- В многопользовательской игре нельзя открыть двери с атрибутом «redstoneonly».
- В многопользовательской игре двери зачастую открываются только со стороны клиента. Из-за этого иногда невозможно пройти через них.
- Атрибут брони «noburning» и тому подобные не работают в сетевой игре.
- До выхода CustomStuff 2 предметы в руке отображались большими в два раза и перевёрнутыми, подобно инструментам и кости.