Custom Stuff — различия между версиями

Материал из Playzone Minecraft Wiki
Перейти к: навигация, поиск
(Новая страница: «{{К удалению}} {{Программа |автор=CubeX2 |minecraft версия=1.4.7 |послвер=2 (0.9.7d Beta) |форум=http://www.minecraftforu…»)
 
(нет различий)

Текущая версия на 19:07, 3 февраля 2013

Эта статья предлагается к удалению. Обсуждение
Пояснение причин вы можете найти на соответствующей странице обсуждения.
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);


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

(Материал с 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 предметы в руке отображались большими в два раза и перевёрнутыми, подобно инструментам и кости.