Forge mod и Bukkit

Версия Minecraft
1.11.2
Создаю свой небольшой мод и столкнулся с одной неприятно проблемой. Сам мод работает, но когда использую импорт org.bukkit или своего плагина, то получаю ошибку компиляции. Как библиотеку использую spigot-1.11.2.jar ну и сам плагин. (форум не хочет принимать лог, поэтому idea.log)
 
Решение
что значит "Юзай BuildTools"? Я это понять не могу. Я установил его, но это же набор исходников ?
java -jar BuildTools.jar
Please be aware that it is required that you have BuildTools #35 or later, older versions will not work
Или java -jar BuildTools.jar --rev 1.11
Со спиготом беда, вечно нужно что-то куда-то ставить, или что-то не работает и автообнов не дождёшься в твой workspace(там где ты плагины пишешь)
Самый тру вариант:
В общем возьми build.gradle -> в dependecies допиши compile 'libs'
Создать рядом с build.gradle папку libs засунь туда SpigotApi или Spigot из репы мавена выше.
Пересобрать фордж.
Готово.
Кстати ты скорее всего не сможешь просто так юзать фордж и баккит вместе, это же не Sponge, - по...
476
9
39
Подцепи либу к Gradle в build.gradle
Я где-то переводил текст в блоке dependencies, поискал 5 страниц своих сообщений и не нашёл. Думаю в целом если хоть мало мальски по английский читать можешь примерно разберешься более, того ты можно настроить так чтобы он актуальную версию подгружал.
Аля типа этого: compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'
 
Я что-то не так сделал? Как бы, компилиться то вроде стал, но тогда всё в ошибках как на втором скрине. Меняю "compile" на "provided" и уже не "net.minecraft" красные, а "GuiScreen" и "GuiButton"
 

Вложения

  • depend.jpg
    depend.jpg
    47.5 KB · Просмотры: 32
  • imports.jpg
    imports.jpg
    7.7 KB · Просмотры: 30
Последнее редактирование:
476
9
39
Нужно сначала в репозитории поискать или зайти на сайт spigot'a там по-любому свой репо есть.
Spigot | SpigotMC - High Performance Minecraft -> Spigot Maven Repository for Gradle -> и там build.gradle
Вот накидал простой build.gradle на этот случай там версии поменяешь. Плюс примеры есть как в build.gradle так и в самом build.gradle аля //compile "some.group:artifact:version"
собственно там в pom.xml все названия даны.
build.gradle
Gradle (Groovy):
buildscript {
    repositories {
        jcenter()
        maven { url = "http://files.minecraftforge.net/maven" }
  maven { url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
  /*
   As Spigot-API depends on the Bungeecord ChatComponent-API,
  we need to add the Sonatype OSS repository, as Gradle,
  in comparison to maven, doesn't want to understand the ~/.m2
  directory unless added using mavenLocal(). Maven usually just gets
  it from there, as most people have run the BuildTools at least once.
  This is therefore not needed if you're using the full Spigot/CraftBukkit,
  or if you're using the Bukkit API.
  */
  maven { url = 'https://oss.sonatype.org/content/repositories/snapshots' }
  mavenLocal() // This is needed for CraftBukkit and Spigot.
}
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
    }
}
dependencies {
    //compile "some.group:artifact:version:classifier"
    //compile "some.group:artifact:version"

    //only spigot api & NMS
    compileOnly 'org.spigotmc:spigot:1.12.2-R0.1-SNAPSHOT' // The full Spigot server with no shadowing. Requires mavenLocal.
}
Ну и чтоб всё работало тебе нужен BuildTools иначе он ничего не скачает из-за DMCA Bukkit'a
-> BuildTools | SpigotMC - High Performance Minecraft
А вообще юзай лучше Sponge он гораздо лучше в плане апи нежели чем Bukkit и подключается и собирается на раз два.
Без BuildTools будет выдавать
Could not resolve: org.spigotmc:spigot:1.12.2.-R0.1-SNAPSHOT
Приглядись к этому:
тут точка между 1.12.2 и -R0.1
 
476
9
39
Юзай BuildTools там гайд есть, хром переводить умеет на русский.
Ну и чтоб всё работало тебе нужен BuildTools иначе он ничего не скачает из-за DMCA Bukkit'a
-> BuildTools | SpigotMC - High Performance Minecraft

Юзай это для пересборки.
gradlew.bat setupDecompWorkspace idea genIntellijRuns --refresh-dependencies --stacktrace
Или
./gradlew setupDecompWorkspace idea genIntellijRuns --refresh-dependencies --stacktrace
Если линукс или Git Bash юзаешь, или просто линуксовый баш юзаешь.
 
476
9
39
что значит "Юзай BuildTools"? Я это понять не могу. Я установил его, но это же набор исходников ?
java -jar BuildTools.jar
Please be aware that it is required that you have BuildTools #35 or later, older versions will not work
Или java -jar BuildTools.jar --rev 1.11
Со спиготом беда, вечно нужно что-то куда-то ставить, или что-то не работает и автообнов не дождёшься в твой workspace(там где ты плагины пишешь)
Самый тру вариант:
В общем возьми build.gradle -> в dependecies допиши compile 'libs'
Создать рядом с build.gradle папку libs засунь туда SpigotApi или Spigot из репы мавена выше.
Пересобрать фордж.
Готово.
Кстати ты скорее всего не сможешь просто так юзать фордж и баккит вместе, это же не Sponge, - по умолчанию у форджа и баккита свои загрузчики классов и друг друга они не видят.
Т.е ты можешь написать плагин, но отдельно от форджа и так же с модом отдельно от Spigot, но можешь запилить один канал между модом(если он клиентский) и плагином, обмениваясь информацией между плагином и модом.
Есть пара статей в учебнике на этот случай.

Плюс тут кто-то спрашивал о связывании плагина и мода без Reflection Api(т.е если мод серверный ты можешь связать его с плагином через Reflection Api оно медленное примерно в 20 тысяч раз медленнее чем без него.)
В клиенте же нет смысла юзать Spigot, только если ты какой-нибудь сингловый мод пишешь который может запустить спигот параллельно, т.е как сервер. А нет смысла потому что Spigot server only, и с классами гуишки(интерфейса) он несовместим потому что последние это классы client only.
P.S всё что есть в spigot'e в плане материалов и прочего есть и в обычном майне, и нет особой разницы как ты там это намутишь.
Чтобы спигот увидел новые материалы или блоки нужно мутить очень странную фигню, хотя с последним вроде не всё так плохо -> WorldGuard же защищает как-то новый блоки(хотя и тут не всё так однозначно)

Это самый простой вариант, хотя по идее самого Gradle самый простой и функциональный без гемороя вариант должен был быть выше, но что-то пошло не так с разрами :\
 
Последнее редактирование:
но можешь запилить один канал между модом(если он клиентский) и плагином, обмениваясь информацией между плагином и модом.
А мне только это и надо. А материал баккита импортировал только для проверки. Спасибо за помощь
 
476
9
39
Там в описании написано, что оно и так по умолчанию должно работать, но не у всех работает :\
 
Сверху