Строка 1: | Строка 1: | ||
− | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">ToolAPI - это API, позваляющий регистрировать инструменты и добываемые ими блоки. | + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">ToolAPI - это API, позваляющий регистрировать инструменты и добываемые ими блоки. |
− | == Добавление инструмента == | + | === Добавление инструмента === |
Для регистрации инструмента используется метод ToolAPI.registerTool(id, toolMaterial, blockMaterials, params)<br/> ''toolMaterial ''- название материала инструмента или объект его описания<br/> ''blockMaterials ''- массив с типами блоков, которые может добыть инструмент<br/> ''params ''- дополнительные параметры и функции инструмента | Для регистрации инструмента используется метод ToolAPI.registerTool(id, toolMaterial, blockMaterials, params)<br/> ''toolMaterial ''- название материала инструмента или объект его описания<br/> ''blockMaterials ''- массив с типами блоков, которые может добыть инструмент<br/> ''params ''- дополнительные параметры и функции инструмента | ||
<syntaxhighlight lang="JavaScript">ToolAPI.registerTool(ItemID.myPickaxe, "wood", ["stone"], { | <syntaxhighlight lang="JavaScript">ToolAPI.registerTool(ItemID.myPickaxe, "wood", ["stone"], { | ||
− | damage: 1 // базовый урон инструмента | + | damage: 1, // базовый урон инструмента, |
+ | brokenId: 0, // id предмета, который установится вместо инструмента при ломании | ||
+ | isWeapon: false, // является ли инструмент оружием (влияет на уменьшение прочности) | ||
+ | onAttack: function(item, victim, attacker) { // действие при атаке | ||
+ | return true; // возврат true предотвращает ломание иснутрумента | ||
+ | } | ||
+ | onDestroy: function(item, coords, block, player) { // действие при ломании блока | ||
+ | return true; | ||
+ | } | ||
+ | // расчёт времени ломания блока инструментом | ||
+ | calcDestroyTime: function(toolData, coords, block, params, destroyTime, enchantData) { | ||
+ | return 0; | ||
+ | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 17: | Строка 29: | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
− | == Регистрация блоков == | + | === Регистрация блоков === |
Для регистрации блока используется метод ToolAPI.registerBlockMaterial(BlockID, blockMaterial, level);<br/> ''blockMaterial ''- материал блока.<br/> ''level ''- уровень добычи | Для регистрации блока используется метод ToolAPI.registerBlockMaterial(BlockID, blockMaterial, level);<br/> ''blockMaterial ''- материал блока.<br/> ''level ''- уровень добычи | ||
Строка 29: | Строка 41: | ||
Для регистрации материала блока используется метод ToolAPI.addBlockMaterial(blockMaterial, breakingMultiplier);<br/> ''blockMaterial ''- название материала.<br/> ''breakingMultiplier ''- модификатор времени ломания блока при добыче без подходящего инструмента. | Для регистрации материала блока используется метод ToolAPI.addBlockMaterial(blockMaterial, breakingMultiplier);<br/> ''blockMaterial ''- название материала.<br/> ''breakingMultiplier ''- модификатор времени ломания блока при добыче без подходящего инструмента. | ||
<syntaxhighlight lang="JavaScript">ToolAPI.addBlockMaterial("test", 3);</syntaxhighlight> | <syntaxhighlight lang="JavaScript">ToolAPI.addBlockMaterial("test", 3);</syntaxhighlight> | ||
− | </div> </div> </div> </div> </div> </div> </div> </div> </div> | + | </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> |
Для регистрации инструмента используется метод ToolAPI.registerTool(id, toolMaterial, blockMaterials, params)
toolMaterial - название материала инструмента или объект его описания
blockMaterials - массив с типами блоков, которые может добыть инструмент
params - дополнительные параметры и функции инструмента
ToolAPI.registerTool(ItemID.myPickaxe, "wood", ["stone"], {
damage: 1, // базовый урон инструмента,
brokenId: 0, // id предмета, который установится вместо инструмента при ломании
isWeapon: false, // является ли инструмент оружием (влияет на уменьшение прочности)
onAttack: function(item, victim, attacker) { // действие при атаке
return true; // возврат true предотвращает ломание иснутрумента
}
onDestroy: function(item, coords, block, player) { // действие при ломании блока
return true;
}
// расчёт времени ломания блока инструментом
calcDestroyTime: function(toolData, coords, block, params, destroyTime, enchantData) {
return 0;
}
}
Для регистрации нового материала инструментов используется метод ToolAPI.addToolMaterial(toolMaterial, params)
ToolAPI.addToolMaterial("dirt", {
durability: 15, // Прочность (сколько блоков можно сломать)
level: 1, // Уровень инструмента - определяет, какие блоки инструмент может добыть.
efficiency: 10, // Эффективность - модификатор скорости ломания блока
damage: 1, // Урон от материала (складывается с базовым уроном)
enchantability: 14 // Зачаровываемость, чем выше, тем более хорошие чары будут при зачаровании
});
Для регистрации блока используется метод ToolAPI.registerBlockMaterial(BlockID, blockMaterial, level);
blockMaterial - материал блока.
level - уровень добычи
ToolAPI.registerBlockMaterial(BlockID.myBlock, "stone", 1);
Уровни добычи блоков из майнкрафта:
1 - камень
2 - железная руда
3 - алмазная руда
4 - обсидиан
По умолчанию доступны следующие материалы:
"stone" - каменный,
"wood" - деревянный,
"dirt" - земляной,
"plant" - растения,
"fibre" - паутина,
"unbreaking" - неломаемый
Для регистрации материала блока используется метод ToolAPI.addBlockMaterial(blockMaterial, breakingMultiplier);
blockMaterial - название материала.
breakingMultiplier - модификатор времени ломания блока при добыче без подходящего инструмента.
ToolAPI.addBlockMaterial("test", 3);