Custom Stuff
Эта статья предлагается к удалению. Обсуждение Пояснение причин вы можете найти на соответствующей странице обсуждения.
|
Автор |
CubeX2 |
Последняя версия |
2 (0.9.7d Beta) |
Дата выпуска |
? |
Совместимо с |
1.4.7 |
Ссылки |
Custom Stuff - это мод для Minecraft, с которым абсолютно любой человек, не знающий язык Java, может добавить в игру различные блоки, предметы, инструменты, броню, пищу, рецепты и другое (см. ниже).
Содержание
Установка модификации
- Поместите архив custom stuff.zip в директорию .minecraft/mods (Внимание! Нужен ModLoader ИЛИ Minecraft Forge)
- Запустите игру, в директории .minecraft/config должны появиться папки customX, где X - категория (customBlocks, customItems и т.д.).
Категория:Блоки
- Чтобы добавить свой блок в игру, нужно создать в категории 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 and any blockid. Use multiple values by devide them with a ",". |
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. (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");
Эта строка позволит удалить рецепт TNT
- Для удаления бесформенного рецепта:
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);
- Все готово. Теперь сохраняем и тестим.
- Кому нужна иконка для Телепортатора, вот: Файл:Teleportator for customstuff.png
Электро-Винтовка
(Материал с 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)
- Винтовка готова.
- Кому нужна иконка, вот: Файл:Lightingwpn for customstuff.png
Баги (CS1)
- Если созданной киркой ударить по земле, траве, гравию, песку и многим другим блокам, игра крашнется и выдаст ошибку.
- В мультиплеере нельзя открыть двери с атрибутом "redstoneonly".
- В мультиплеере двери зачастую открываются только со стороны клиента. Из-за этого иногда невозможно пройти через них.
- Атрибут брони "noburning" и тому подобные не работают в сетевой игре.
- До выхода CustomStuff 2 предметы в руке отображались большими в два раза и перевёрнутыми, подобно инструментам и кости.