Я тут решил заняться изучение программирования на java с нуля. Поискал сайты, посмотрел, где это можно этому научиться. Решил попробовать на JavaRush.ru.
Короче, посоветуйте платформы/сайты/статьи/учебники (желательно с ссылкой), где можно начать обучаться джаве С НУЛЯ.
Анимирую модели мобов https://vk.com/minejavamodels — моя группа по моделированию =) ——————— Это не панацея. Ограничение выделяемой памяти защитит от одной проблемы когда их десятки. Выполнять пользовательский java код на своем сервере это все равно что хранить полоний под кроватью. @RedEnergy
tox1cozZ
aka Agravaine
8,451 598 2,886
Смотрел его лекции: https://www.youtube.com/user/ytkach
XuPuPG
Я с самого начала моддинга джавы не знал,по разным сайтам и статьям смотрел что да как. И на джава раш не надо идти.Уроки в середине не понятные,и большинство заданий «выведи текст на экран».Все чему можно там научится это System.out.print/println .А после 15 лвл вообще платные уроки.(наверно с тем же заданием выведи текст на экран).
GloomyFolken
Лично я просто посмотрел несколько часов базовых видеоуроков по джаве и начал говнокодить плагины с модами. До этого был только небольшой опыт программирования на других языках. По всем вопросам — лез в гугл, преимущественно на stackoverflow. Спустя полгода-год код стал более-менее приемлемым.
Drovosek
GloomyFolken написал(а):
Лично я просто посмотрел несколько часов базовых видеоуроков по джаве и начал говнокодить плагины с модами. До этого был только небольшой опыт программирования на других языках. По всем вопросам — лез в гугл, преимущественно на stackoverflow. Спустя полгода-год код стал более-менее приемлемым.
А где смотрел ?
Анимирую модели мобов https://vk.com/minejavamodels — моя группа по моделированию =) ——————— Это не панацея. Ограничение выделяемой памяти защитит от одной проблемы когда их десятки. Выполнять пользовательский java код на своем сервере это все равно что хранить полоний под кроватью. @RedEnergy
GloomyFolken
cucugag
А я книжки читал.Герберт Шилтд — Java the full reference
Dragon2488
GloomyFolken написал(а):
Лично я просто посмотрел несколько часов базовых видеоуроков по джаве и начал говнокодить плагины с модами. До этого был только небольшой опыт программирования на других языках. По всем вопросам — лез в гугл, преимущественно на stackoverflow. Спустя полгода-год код стал более-менее приемлемым.
Глуми, плюсик. Так же делал.
TaoGunner
Изучил Java написав первый мод. Слишком изи + напоминает C# и Visual Basic.
А основная проблема новопришедших не в Java, а в Forge, имхо.
Самая крутая вещь в С++ — это не писать на нем, а показывать всем в онлайне, что Java говно. В некроверсиях ниже 1.10 не разбираюсь
Develance
TaoGunner написал(а):
А основная проблема новопришедших не в Java, а в Forge, имхо.
+, поддерживаю.
Хочу кофе аж работаю.
Crowbar
Может быть, но иногда им дают готовый метод с названием и скобками, а они его в другой метод пихают и удивляются, что не работает.
Develance
XDDD, ну ты сказанул!
P.S — Скиньте код.
Хочу кофе аж работаю.
Oldestkon
1,990 18 105
Drovosek написал(а):
JavaRush.ru.
У меня было так: 5 лет моддинга WC3 (визуальное программирование), появился интернет, пара месяцев паскаля, увидел кубач, полез делать моды, попутно разобрал сурсы простенькой игрушки, и за полгода вылез на полное понимание всего того, что я делаю вообще. Код стал более-менее приемлемым через год-два. Хотя я и сейчас смотрю на свой код, и хочется всё переписать к едрене фене. Книжек не читал (лень, хотя и понимаю, что книжки очень полезны).
Уууууууууу
Skarlet
Я уже вроде писала в другой теме
я пришла на форум первый раз без знаний джавы, зато знала немного C# и С++(который я успешно уже забыла :c), с самыми базовыми знаниями процедурного программирования, и непониманием ООП. И моддинг отлично подтянул мне не только синтаксис джавы, но и дал мне знания практического применения классов и т.д. Но в начале конечно сидела и сверяла каждую строчку с примером. Вот такие вот дела.
Сообщение в сраче оформлять так: тезис, ваше мнение, примеры из публицистики или литературы, вывод. Оцениваются знание простейших правил русского языка, логика текста, аргументация мнения, этика. P.S. А может просто не будем сраться?
Как написать майнкрафт на java
Основой любого сервера майнкрафт, безусловно, являются его плагины. От них на сервере зависит практически всё — их качество и функционал напрямую определяют привлекательность сервера. Чтобы быть более конкурентными среди других майнкрафт серверов — стоит использовать собственные уникальные плагины реализующие Ваши задумки. И если у Вас нет средств для того, чтобы нанимать разработчиков на стороне — самое время научиться писать плагины самому.
First things first
Для начала стоит определиться с основами. Думаю, ни для кого не секрет что оригинальный сервер майнкрафта написан и работает на Java. Java — это обьектно-ориентированный язык программирования. Для работы Вашего сервера, Java клиента майнкрафта и написания плагинов под этот сервер вам нужно установить Java. Начать можете отсюда, отсюда, или отсюда. Для того, чтобы начать что-то писать под этот сервер нам нужно воспользоваться API. Основные, наиболее распространенные и популярные API для оригинального сервера, вот неожиданность — тоже написаны и работают на Java (или на любом другом JVM совместимом языке). Из этого следует что все плагины для наиболее распространенных и популярных API к оригинальному серверу майнкрафта написаны на… (ну, надеюсь, Вы уже поняли). Что же это за такие “наиболее распространенные и популярные API к оригинальному серверу”, спросите Вы? А я приведу вам небольшой список таковых:
Bukkit
Spigot [документация]
Paper [документация]
Я не буду охватывать тут всю историю развития этих API, кто от кого форкнулся и так далее, ведь здесь важно другое — абсолютное большинство публичных плагинов что Вы найдете в сети, так или иначе работают с одним (или с несколькими / всеми) из этих API. Ещё для написания плагинов нам понадобится “среда разработки”. Если очень упрощённо, то это программа, позволяющая разрабатывать другие программы на определённом языке программирования на несколько порядков удобнее, чем если бы Вы писали код просто в блокноте. Дальше по статье я буду приводить примеры разработки с использованием Intelij IDEA от Jetbrains, но, в принципе, Вы можете использовать любую другую удобную вам IDE. Ну и последнее, но не по важности — сам сервер майнкрафта с нужным нам API на борту. Я для этого туториала взял Paper версии 1.19.2 отсюда и в дальнейшем, в статье, буду ссылаться на его API и документацию. Сейчас Вам достаточно скачать .jar файл сервера. Позже я обьясню как его запустить и как протестировать плагин на нём.
Стартуем
На данном этапе предполагается, что Вы уже установили Java и IDE (среду разработки) на Java и перед вами сейчас открыт приветственный экран Вашей IDE. Вот мой, например: Сперва нам нужно создать проект. Этим проектом и будет наш плагин. Кликаем на кнопку ‘New Project’ и перед нами открывается окно создания нового проекта. С названием, думаю, всё очевидно.
‘Location’ — место на диске, где будет лежать папка проекта.
‘Create git repository’ — создать ли Git репозиторий для проекта. Если у вас стоит галочка — уберите.
‘Language’ — Java, тут всё понятно.
‘Build System’ — а вот с этого момента поподробнее.
Build System — система, через которую будет собираться Ваш проект. Под сборкой имеется ввиду компиляция всего Вашего кода в исполняемый файл (jar, например) вместе с автоматическим внедрением в него всех зависимостей, библиотек и так далее. Есть много различных сборщиков — Maven, Gradle, Ant и т.д., но в этом туториале я остановлюсь на Maven — как на самом простом, по моему мнению, в освоении, для начинающих разработчиков.
‘JDK’ — или Java Development Kit та самая Java которую Вы должны были уже установить ранее. Если вам повезло — IDEA сама автоматически определит доступную вам версию JDK. Если нет — вам придётся указать её локацию на диске вручную.
‘Add sample code’ — просто сразу добавляет в проект готовый пакет с классом в нём.
‘Advanced settings’ — в нашем случае тут расположены настройки для сборщика Maven.
‘Artifact Id’ — название собранного сборщиком скомпилированного файла.
После того, как Вы всё настроили — жмём кнопку ‘Create’, и перед нами открывается окно с проектом. Немного отвлечёмся и поговорим о структуре плагинов, написанных под Paper API (и все его форки). Для того, чтобы сервер понимал, что перед ним именно плагин, а не странный файл с расширением .jar — в каждом из плагинов есть файл plugin.yml — в котором подробно описывается что перед сервером за плагин, кто его автор, где расположен главный его класс, какие команды есть у плагина и т.д. Мы начнём именно с создания и наполнения этого файла. Создаём в папке resources файл plugin.yml -> кликаем правой кнопкой мыши на resources -> New -> File -> вводим plugin.yml . Заполняем файл следующим образом: Подробное описание каждой записи в файле есть здесь. Из самого важного — нужно указать правильный путь до главного класса плагина ( main ), в моём случае это me.xezard.firstplugin.FirstPlugin . Если путь будет указан неверно — плагин не запустится. Теперь нам нужно создать соответствующие указанному ранее пути пакеты и главный класс плагина. Создаём нужные пакеты — кликаем правой кнопкой мыши на me.xezard (в Вашем случае это может быть Ваш собственный ранее созданный пакет) -> New -> Package -> вводим firstplugin . Важно: новый пакет в таком случае создаётся относительно уже существующего. Полный путь получится следующим — me.xezard.firstplugin . Давайте заодно удалим класс автоматически созданный нашей IDE — класс Main . Жмём правой кнопкой мыши по нему -> Delete -> Ок. Готово. Вот мы и добрались до создания первого класса плагина и по совместительству — главного его класса. Жмём правой кнопкой мыши на ранее созданный нами пакет -> New -> Java class -> вводим то имя класса, которое мы ранее указали последним в main секции файла plugin.yml — в моём случае это ‘FirstPlugin’. Итог всех приведённых выше манипуляций выглядит следующим образом: Вновь немного отвлечёмся на настройку сборки нашего плагина. В данный момент мы никак не сможем взаимодействовать с API сервера майнкрафт — среда разработки ничего не знает о нём и его структуре. Для того, чтобы это исправить, нам нужно добавить API в проект, в моём случае это будет Paper API (форк Spigot API), в файл pom.xml . pom.xml — это, по сути, подробное описание нашему сборщику как конкретно собирать проект. Я не буду останавливаться на этом и подробно обьяснять что означает каждая из строк в файле — на это вполне может уйти пара отдельных гайдов. Сейчас вам достаточно привести Ваш pom.xml к следующему виду:
Если очень кратко — то в файле мы указали под какую версию Java будет скомпилирован плагин, указали репозиторий, где находится Paper API и указали что наш плагин зависит от этого API в секции .
Код
Пришло время для самого интересного — написания кода. Cтоит начать с того, что любой плагин написанный под Paper API (и его форки) в своём главном классе обязательно должен наследовать класс JavaPlugin. Для наследования в Java используется ключевое слово extends. Изменим код класса на следующий:
Я постарался максимально понятно расписать за что отвечает каждая строка в классе. Сейчас, если скомпилировать плагин, добавить на сервер и запустить его — при включении или выключении плагина сервером он выведет в консоль соответствующие сообщения.
Компиляция плагина
Пришло время собрать наш код в jar файл! Если Вы, также как и я, используете IDEA для написания кода — просто откройте панель ‘Maven’ справа в верхнем углу, нажмите левой кнопкой мыши на название Вашего плагина и далее на зелёный значок Play. Если до этого момента Вы всё делали правильно — Вы увидите открывшуюся консоль и по прошествии некоторого времени надпись ‘BUILD SUCCESS’.
Тестируем плагин
Помните сервер, который Вы скачали в начале статьи? Его время пришло. Переместите .jar сервера, который Вы загрузили в отдельную папку. Если вы являетесь пользователем операционной системы Windows (как я), то создайте в этой же папке скрипт start.bat со следующим содержимым:
Важно: paper.jar что указан в этом файле — это название Вашего файла сервера в папке. Если название не будет совпадать — скрипт не запустит Ваш сервер. Параметры Xms и Xmx используются для выделения процессу сервера оперативной памяти. Я использовал 1 гигабайт, но Вы можете указать свои значения. Главное, чтобы выделенной оперативной памяти хватало для работы сервера. После того, как Вы закончили редактировать файл — запустите его двойным кликом мыши. При первом запуске сервера, как ни странно — он не запустится. Вместо этого он сначала предложит вам принять соглашение EULA. Cейчас Вам достаточно открыть файл eula.txt и поменять строчку eula=false на eula=true и сохранить файл. Теперь запустите сервер повторно и после надписи ‘Done! For help, type “help”’ напишите в консоли stop и нажмите Enter. Повторный запуск был необходим для того, чтобы сервер сгенерировал все свои файлы. Вернитесь в папку в которой лежат файлы Вашего плагина и перейдите в папку target — в ней лежит скомпилированный плагин, в моём случае это FirstPlugin.jar. Переместите его в папку сервера, в подпапку plugins, после этого запустите сервер. Если вы шли в точности по статье и всё делали правильно, то в консоли сервера вы сможете увидеть заветное сообщение:
За сим первая часть этой замечательной статьи подходит к концу. Во второй части мы рассмотрим создание команд, отслеживание событий сервера и работу с конфигурацией плагина.
Создание модификаций с помощью Forge
В этой статье описывается процесс создания модификаций для Minecraft с использованием API Forge и Eclipse. Для создания даже простых модификаций требуется знание основ Java. Если во время создания модификаций возникнут вопросы или проблемы, не описанные здесь, опишите их на странице обсуждения.
Таблица готовности
Урок
1.6+
1.7+
1.9+
1.10+
1.12+
1.14+
Блок
Готов
Готов
Готов
Готов
Готов
Не планируется
Предмет
Готов
Готов
Готов
Готов
Приостановлено
Не планируется
Крафт
Готов
Готов
Готов
Готов
Приостановлено
Не планируется
Компиляция
Готов
Готов
Готов
Готов
Приостановлено
Не планируется
Генерация
Возможно
Готов
Готов
Не планируется
Приостановлено
Не планируется
Прокси и инстанция
Не планируется
Готов
Не планируется
Не планируется
Приостановлено
Не планируется
Моб
Возможно
Готов
Не планируется
Не планируется
Не планируется
Не планируется
Блоки с моделью
Возможно
Возможно
Не планируется
Не планируется
Приостановлено
Не планируется
Доп. Уроки
Всего: 3
Всего: 12
Всего: 10
Всего: 0
Всего:0
Всего:0
Общие сведения [ ]
Для создания модификаций в любом случае нужны JDK и Eclipse. Первая — это комплект разработчика Java и отличается от обычной Java тем, что имеет средства для компиляции/декомпиляции, несколько дополнительных библиотек и документацию. С 2019-го года ввиду изменений в лицензировании для загрузки JDK потребуется учётная запись Oracle. Также важно то, что Minecraft 1.12 не поддерживает Java ниже 7-й и выше 9-й включительно, тогда как 1.14 поддерживает практически все версии Java выше 8-го выпуска. Eclipse — это среда разработки, которая имеет поддержку синтаксиса нужного языка программирования, а также в ней был написан сам Minecraft.
Руководства по версиям [ ]
См. также [ ]
Создание модов с помощью ModLoader
Установка модификаций с помощью Forge
Учебник по моддингу
Русскоязычный форум создателей модов
Руководства на англоязычной Wiki по Forge
Есть ли какие либо библиотеки/способы, чтобы программа, которую я хочу написать могла зайти на сервер в майнкрафт?
Я хочу написать бота для майнкрафта. Мне нужна какая то библиотека или гайд для того, чтобы моя программа могла задать себе ник (как в TLauncher), зайти на сервер майнкрафта (по айпи) и управлять персонажем на нем. Очень желательно чтобы все это было без открытия окна майнкрафта, мне нужен только персонаж. Язык программирования не критичен, но приветствуются Rust, C++ и Java. Буду благодарен даже если просто укажете направление в котором мне искать такое
Отслеживать
задан 16 дек 2020 в 11:48
USSURATONCAHI USSURATONCAHI
93 8 8 бронзовых знаков
а можно указать программе, куда ей тыкать чтобы открыть майнкрафт?
16 дек 2020 в 12:56
Нет, такой способ не подходит
16 дек 2020 в 14:15
То что вы хотите это по сути клиент для игры, просто клиент с отсутствующей графикой и более самостоятельный (с функцией бота). А так поищите спецификации по которым работает сервер и по ним писать или второй вариант реверс инженеринг. В любом случае все это долго и тяжко. С открытым окном то проблем меньше но перехват данных от клиента.
16 дек 2020 в 14:23
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Все правильно, как сказал @Kers в комментариях. Есть также более продвинутые боты, когда происходит верификация клиента и нужно использовать именно игровой клиент, а не самописный. Тут 2 варианта:
Читать память клиента и на основе этого делать ввод (это если бот простой нужен, например боты помощники вроде триггер-ботов, которые быстро выполняют действия при выполнении какого-то условия).
Если нужен серьезный самостоятельный бот, тогда нужно копать в сторону OpenCV (либа, которая поможет парить растр игрового клиента боту и видеть его как 3д пространство с элементами, а не как 2d картинку). И после на основе этого симулировать ввод с клавиатуры/мышки/чего угодно еще. Но это, конечно, довольно серьезная работа и обычно такие боты коммерциализируются и их делает не 1 человек.
Также хочу порекомендовать поиск фреймворков для написания ботов по майнкрафту. Сам с Minecraft знаком не супер сильно, но это популярная игра, поэтому наверняка будут готовые бот фреймворки, которые будут иметь базовый набор функций для упрощения передвижения, взаимодействия с миром и т.п., что может сделать написание бота более выполнимой задачей.