Как сделать скрипт для minecraft

Обновлено: 07.07.2024

Pocky

Куратор Проекта

*гайд не является полным и может содержать ошибки! (тема будет дополняться)

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

Для начала разберёмся какими программами пользоваться для добавления крафтов, блоков, предметов и тд. Советую использовать 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 - включить расширенные подсказки, можно увидеть айди крафта и айди предмета под самим предметом.

Открываем файл и пишем такую структуру:​

Внутри этой структуры пишутся и удаляются крафты. Для удобства, ниже я не буду писать эту структуру, но она обязательно нужна!​

Это далеко не все способы удаления, но этого более чем достаточно.

Чтобы добавить крафт, воспользуемся такой структурой:


Добавление бесформенного крафта (не важно как вы выложите предметы), вот так будет выглядеть крафт ванильного верстака, 4 доски = 4 верстака?

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

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

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

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

Структура, внутри которой пишутся скрипты добавления блоков выглядит так:​

Скрипт добавление блока выглядит очень просто, вот так: ​

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

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

Ввиду того, что в модификации версии 1.9.0 (beta) Noppes создал Скриптовый блок и Скриптовую дверь, а грамотно работающий Сценарист существует с версии 1.7.10, нельзя упускать тот факт, что модификация становится всесторонней. Через скрипты можно заставить любого NPC быть кем угодно и заставить делать что угодно, а также при использовании мировых и серверных скриптов и команд, можно осуществить жанр любой известной вам игры, или создать собственный. Прошу всех кто, хоть немного разбирается в этом — выкладывать в эту статью рабочие примеры использования любых скриптов с необходимыми скриншотами и обязательно заливать карту с этим примером и указанием версии модификации для этой карты. А также указывать язык программирования на котором написан ваш скрипт.

Для начала, вот вам файлы для, того чтобы использовать программирование скриптов в модификации. Просто закидывайте к себе в папку Mods тот файл, на котором вы писать умеете:

А также держите учебники на JavaScript изучение:

Простой пример скрипта на приветствие игрока

  • Версия MineCraft = 1.10.2
  • Язык программирования = ECMAScript

Решение: Берём сценарист в руки, подходим к нужному NPC. Жмём на него ПКМ . Откроется основное окно. Проверьте, что у вас стоит язык ECMAScript и то, что он Включён:

Далее нажимает на Вкладку "+" . Появится вкладка "1" . Теперь вводим следующий текст:

Выглядеть должно всё примерно так:

И закрываем окно сценариев на Esc . Вот и всё наша задача будет выполнена и NPC заговорит!

API (с англ. программный интерфейс приложения) — нужный список различных методов для ваших скриптов.


CraftBukkit - глобальная серверная модификация, предоставляющая API для взаимодействия с игровым миром и созданная для упрощения создания плагинов к SMP-серверу.В августе 2014 года команду Bukkit покинули практически все разработчики, в том числе глава проекта EvilSeph .

Spigot - оптимизированная версия CraftBukkit со своими доработками и новыми возможностями и настройками, которая продолжила работу команды Bukkit .

Разработки, созданные для данного туториала, используют ядро Spigot.

Софт для начала работы :
Среда разработки :
1) IntelliJ IDEA [+]
2) Eclipse [+]
3) NetBeans [+]
Для нормального запуска этих программ у Вас должен быть установлен JDK (Java Development Kit) и JRE (Java Runtime Environment)!

Редактирование файлов (.yml, .json, etc. ) :
1) Notepad++ [+]

Проект, созданный для данного туториала, был разработан в СР Eclipse.

Основы :
Java - обьектно-ориентированный язык программирования (вся программа - связь разных обьектов. Это как организм, в котором каждый орган отвечает за свою функцию для нормального функционирования всего организма. Органы могут сотрудничать, обмениваться информацией и тп).
Его приемущества:
1) Инкапсуляция :
Теория : позволяет устанавливать доступ к обьекту и информации в нем с помощью модификаторов доступа.
Пример : у Вас есть 3 сейфа с информацией. Первый - приватный (пароль знаете только Вы), второй - обычный (пароль знают Ваши родственники и соседи), третий - публичный (пароля нет).

2) Наследование :
Теория : позволяет наследовать свойства, методы и поля родительского обьекта.
Пример : У Вас есть обьект Car (автомобиль), и обьект BMW , который наследует обьект Car.

3) Полиморфизм (углубленно о наследовании):
Теория : позволяет обьекту использовать методы производного класса, который не существует на момент создания базового.
Пример : Что может хранить класс Car ? Например, название марки автомобиля, кол-во сидений и тп. Допустим, кол-во сидений = 4. А что, если мы делаем 2-местный автомобиль? Мы наследуем класс Car и имеем возможность изменить для себя кол-во сидений для нашего авто.

Переменные - ячейки памяти, которые хранят в себе определенный обьект (тип данных).

Модификаторы доступа в Java:
private - приватный (как мы помним, пароль знаем только мы).
(модификатор не указывается) - обычный (как мы помним, пароль знают только наши родственники и соседи).
protected - защищенный (пароль знают только наши дети и мы сами).
public - публичный (пароля нет).

НАЧАЛО РАБОТЫ:
Создание проекта в среде разработки Eclipse :
1) Запускаем Eclipse .
2) Нажимаем на кнопку File (в левой верхней части экрана) -> New -> Java project

3) В появившемся окне указываем имя проекта (в этом случае " RuBukkitGuide ") и ставим такие настройки:

4) Нажимаем Finish .
Проект создан!

Создание пакетов :
1) В созданном обьекте нажимаем ПКМ по папке src.
2) Нажимаем New -> Package .

3) Создаем сами пакеты:

4) Нажимаем Finish.
Пакеты созданы.
Мы создали в папке src папку org , в ней папку rb и в ней папку guide.
Для чего нужны пакеты? Представьте, что у Вас есть один большой ящик (Ваша программа) и в нем 4 маленьких ящика. В первом - яблоки, во втором - персики, в третьем - гранаты, в четвертом - ананасы. Для чего нам нужны эти коробки? Правильно, чтобы все фрукты не находились в одной коробке.
Но в Java пакеты не только используются для сортировки. Они берут участие в инкапсуляции . Помните Обычный модификатор доступа? Вот вся информация с модификатором Обычный будет доступна всем обьектам в этом пакете. Тоесть, у яблок своя тусовка, и никакие персики и другие фрукты туда не полезут.

Создание класса:
Создадим теперь наш главный класс, который запустит весь наш плагин, назовем его Main .
1) Нажимаем ПКМ по пакету guide -> New -> Class .

2) Указываем название и нажимаем Finish.

Класс создан!

Добавление библиотеки Spigot в проект:
Для этого нажимаем ПКМ по проекту и нажимаем Properties -> Java build pass , заходим во вкладку Libraries и нажимаем на кнопку Add external JARs и указываем место хранения ядра Spigot (скачать их можно тут или тут ).

Начинаем кодить!
Созданный нами класс Main пока-что выглядит вот так:

Для того, чтобы наш проект считался плагином, нам нужно унаследовать класс JavaPlugin (этот класс находится в самом ядре Spigot ).
Для того, чтобы унаследовать этот класс, нам нужно в строку public class Main дописать extends JavaPlugin .
Хорошо. Или нехорошо? Что за красная лампочка. Eclipse нам говорит, что мы не импортировали класс JavaPlugin . Нажимаем на лампочку и импортируем.

Теперь мы имеем доступ к protected и public полям и методам. Чтобы Java знала наверняка, что мы используем метод из родительского класса (JavaPlugin), мы скажем это, используя аннотацию @Override. Какой метод мы возьмем из родительского класса? onEnable(), так как он запускает весь наш проект. Само ядро будет знать, что это плагин, и начнет получать всю нужную информацию. Если мы уберем extends JavaPlugin и метод onEnable(), то когда добавим плагин в папку plugins, он вообще не загрузится, и его вообще не будет в списке плагинов.

Что такое void? Это тип возвращаемых данных. Поскольку метод onEnable() ни чего не возвращает через return, то мы должны сообщить об этом системе. (Тип доступа может быть любым форматом возвращаемых данных, к примеру: int, boolean и даже String).

Как узнать все методы, к которым мы имеем доступ? Пишем this и ставим точку. Нам программа вывела все доступные методы и поля из класса JavaPlugin.

Что будем делать? Ну давайте выведем при запуске плагина, что он включился.
Для этого заходим в метод onEnable() < >и между < и >пишем нашу команду. Она выглядит так: this.getLogger().info("ПЛУГИН РАБОТАИТ!");
Что мы сделали, введя эту команду? Мы получили класс Logger, в которого есть метод info(. ), который и запустили.

Плагин написан. Теперь мы должны создать файл plugin.yml. Нажимаем ПКМ по проекту. В окне нажимаем New -> File и вводим plugin.yml.
В нем мы должны ввести такие значения:

Теперь мы можем скомпилировать плагин. Нажимаем ПКМ по проекту, в окне нажимаем Export . -> Java -> JAR file -> Next и вводим путь к папке, где хотим сохранить файл.

Доп. информация:
Кроме метода onEnable() в JavaPlugin есть еще 2 метода - onload() и onDisable().


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

Мы собрали для вас пошаговые видеоуроки по освоению программирования в Minecraft. Короткие видео уроки будут интересны начинающим ученикам, которые хотят постепенно перейти от простого к сложному.

Minecraft - программирование на Python для детей - Урок 0: Установка Minecraft и Python

Minecraft - программирование на Python для детей - Урок 1: Знакомство с Python

Minecraft - программирование на Python для детей - Урок 2: Вывод координат персонажа в чат и цикл

Minecraft - программирование на Python для детей - Урок 3: Переменная, условие, создание первой игры

Minecraft - программирование на Python для детей - Урок 4: Создание блоков кодом

Minecraft - программирование на Python для детей - Урок 5: Строительство улицы из домов

Minecraft - программирование на Python для детей – Урок 6: Создание 2D-фигур

Minecraft - программирование на Python для детей – Урок 7: Создание 3D фигур

Minecraft - программирование на Python для детей – Урок 8: Создание многоугольников

Minecraft - программирование на Python для детей – Урок 9: Искусственный интеллект

Minecraft - программирование на Python для детей – Урок 10: Применение случайных чисел в ИИ

Плейлист видеоуроков постоянно дополняется, подписывайтесь на канал и следите за обновлениями.

Нужен наставник? Записывайтесь на онлайн-уроки программирования для детей в школе "Пиксель": полный курс Minecraft

Читайте также: