Гайд для чайников. KubeJS.


Pocky

Главный Администратор
Команда проекта
Гл. Администратор
30 Мар 2019
456
34
63
*гайд не является полным и может содержать ошибки! (тема будет дополняться)

Скачать мод можно тут: *клик*
Зависимости к моду: *клик* и *клик*

Ссылка на официальный вики: *клик*

С чего начать?
Для начала разберёмся какими программами пользоваться для добавления крафтов, блоков, предметов и тд. Советую использовать visual studio code, но подойдёт и любой другой редактор текста (даже блокнот).
KubeJS работает на JavaScript, но чтобы работать с этим модом, достаточно будет и этого гайда, изучать язык не обязательно.
Что можно добавить с помощью KubeJS? - да практически всё, от простенького крафта, до кастомного меню.

Итак, структура: после установки мода, в корневой папке майнкрафта появится папка kubejs (C:\Users\*имя пользователя*\AppData\Roaming\.minecraft\kubejs), в ней мы и будем работать.
.minecraft\kubejs\assets\kubejs - используется для хранения текстур.
.minecraft\kubejs\client_scripts - здесь пишутся скрипты, которые относятся только к клиенту, с сервером они никак не взаимодействуют. (в основном визуал, например - меню)
.minecraft\kubejs\config - конфиги мода.
.minecraft\kubejs\exported\tags - теги.
.minecraft\kubejs\server_scripts - здесь пишутся скрипты, которые относятся к серверу, от крафтов, до таймера перезагрузки сервера.
.minecraft\kubejs\startup_scripts - здесь пишутся скрипты, для клиента и сервера, которые требуют обязательный перезапуск, от предмета и блока, до генерации структур в мире.
Со структурой, где что находится разобрались, давайте разберёмся с крафтами, как их добавлять и удалять.


Крафты

Крафты добавляются в папку .minecraft\kubejs\server_scripts, создаём в ней файл 'modname.js', советую каждому моду(где будут меняться крафты) делать отдельный файл, чтобы было удобно редактировать в дальнейшем, хотя вы можете создать файл с любым названием и писать все крафты там.

*чтобы узнать id предмета используйте команду /kubejs hand
*чтобы перезагрузить скрипты используйте команду /reload, перезаходить в игру чтобы увидеть крафт не обязательно.
*'//' - обозначение комментария, этот текст не учитывается компилятором.

*F3 + H - включить расширенные подсказки, можно увидеть айди крафта и айди предмета под самим предметом.


Открываем файл и пишем такую структуру:​
JavaScript:
onEvent('recipes', event => {
//скрипты
})


Внутри этой структуры пишутся и удаляются крафты. Для удобства, ниже я не буду писать эту структуру, но она обязательно нужна!​
JavaScript:
// Для начала разберём удаление крафтов
    event.remove({mod: 'minecraft'}) // удаляет все рецепты мода, в данном случае - все ванильные крафты
    event.remove({id: 'minecraft:golden_sword'}) // удаляет рецепт по айди РЕЦЕПТА
    event.remove({output: 'minecraft:stone_pickaxe'}) // удаляет все рецепты этого предмета, по его айди
Это далеко не все способы удаления, но этого более чем достаточно.

Чтобы добавить крафт, воспользуемся такой структурой:
JavaScript:
event.shaped('3x minecraft:stone', [ // где 3x - это количество, minecraft:stone - айди предмета, которому добавляем крафт
    'ASA', //
    'S S', // Сетка крафта 3х3, верстак
    'ASA'  // Пробел - пропуск слота, т.е пустой слот
], {
    S: 'minecraft:sponge', A: 'minecraft:coal' // Буква и чему она равна, можно использовать любую букву, например C: 'gpbackpacks:greenflamebackpack', перечисляются через запятую, в данном случае максимум - 9 букв.
})

Добавление бесформенного крафта (не важно как вы выложите предметы), вот так будет выглядеть крафт ванильного верстака, 4 доски = 4 верстака?
JavaScript:
event.shapeless('4x minecraft:crafting_table', ['#minecraft:planks', '#minecraft:planks', '#minecraft:planks', '#minecraft:planks'])
//к слову, вот такие айди '#minecraft:planks' - это айди, которые используют любой подобный предмет, в данном случае - любые доски

Добавление рецепта в печь:
JavaScript:
event.smelting('2x minecraft:carrot', 'minecraft:golden_apple') // при переплавке золотого яблока мы получим 2 морковки

Больше информации по крафтам тут: *клик*

А вот пример хорошо оформленного файла (очень рекомендую оформлять именно так)
Название файла minecraft.js
и вот что внутри:

JavaScript:
//Рецепты ванилы, автор: Popki
onEvent('recipes', event => {

    //Печь
    event.remove({output: 'minecraft:furnace'}) //Удаляем ванильный крафт
    event.shaped('minecraft:furnace', [
        'SSS',
        'S S', //Теперь можно скрафтить печь из любого камня
        'SSS'
    ], {
        S: '#forge:stone'
    })

    //Алмаз
    event.shapeless('64x minecraft:diamond', ['minecraft:iron_ingot']) // Теперь мы можем получить из слитка железа целых 64 алмаза! профит!

    //Кожа
    event.remove({output: 'minecraft:leather'}) //Удаляем ванильный крафт
    event.shaped('4x minecraft:leather', [
        ' A ',
        'SBS', //Теперь можно скрафтить 4 кожи из 2-х светокаменной пыли, 2-х любых блоков листвы и одного железа, не совсем логично, но нам и не нужна логика
        ' A '
    ], {
        S: '#forge:dusts/glowstone', A: '#minecraft:leaves', B: 'minecraft:iron_ingot'
    })
})


Добавление блоков
Чтобы добавить блок, перейдём в папку .minecraft\kubejs\startup_scripts - создаём файл по аналогии с крафтами, например lamps.js в который будем добавлять блоки ламп.

*Чтобы отобразить результат, проверить блок, нужно перезайти в игру, чтобы всё обновилось, команда /reload не поможет.

Структура, внутри которой пишутся скрипты добавления блоков выглядит так:​
JavaScript:
onEvent('block.registry', event => {
   //Вот тут скрипты
})


Скрипт добавление блока выглядит очень просто, вот так:
JavaScript:
event.create('lightstone_diamond') // Но такой блок не будет обладать никакими свойствами, давайте добавим их


event.create('lightstone_diamond').material('glass').hardness(0.3).displayName('Алмазный светокамень').lightLevel('15') // Вот так уже лучше
/*
Разберём то, что написано выше, по порядку... event.create('lightstone_diamond') - создаёт блок, с айдишником 'lightstone_diamond';
.material('glass') - присваивает блоку материал стекла, т.е все звуки связанные с блоком (ходьба, разбивание, ломание блока), полный список материалов тут;
.hardness(0.3) - твёрдость блока, или можно сказать его прочность, с какой скоростью вы будете его ломать, чем выше - тем дольше. 0 - мгновенная разбивание;
.displayName(' ') - отображаемое имя блока;
.lightLevel('15') - заставляет блок светится, 15 - уровень освещения, подробнее тут.




так же можно добавить и другие свойства:
.noDrops() - указывает что будет падать с блока, при его разрушении, в данном случае ничего
.speedFactor('4') - свойство, которое будет тебя ускорять, если ты наступишь на блок, аналогично бетону, цифра - коэффициент ускорения.
*/
Подробнее про свойства блоков тут.


Вот так выглядит хорошо оформленный файл:​

JavaScript:
//Фонари
onEvent('block.registry', event => {

    event.create('lightstone_diamond').material('glass').hardness(0.3).displayName('Алмазный светокамень').lightLevel('15')
    event.create('lightstone_ice').material('glass').hardness(0.3).displayName('Замёрзший светокамень').lightLevel('15')

})


Теперь перейдём к текстуре,
.minecraft\kubejs\assets\kubejs\textures\block - переходим по этому пути и загружаем текстуру блока в эту папку, расширение текстуры должно быть .png, а название текстуры должно совпадать с айди блока, в нашем случае будет так: lightstone_diamond.png.




 
Последнее редактирование:


YuliaArno

Младший Администратор
Команда проекта
Форумчанин
22 Мар 2019
184
25
63
Хороший гайд!!! Ты крутой!!!!
 
  • Нравится
Реакции: Pocky


NiKKinG

Старший Администратор
Команда проекта
Форумчанин
22 Янв 2021
190
31
28
Я чайник 1625685416923.png
 




Cloudy

Старший Администратор
Команда проекта
Форумчанин
17 Ноя 2020
116
10
18
Я жулик1625686735180.png