다른 플러그인을 사용하기 전에 먼저 특정 Bukkit 플러그인을 활성화하고 싶은 흥미로운 문제가 있습니다. 이것은 어려운 작업임이 입증되었습니다. 어떤 특정 서버에 어떤 플러그인이 설치되어 있는지 알고 있다고 가정하기 때문에 나는 plugin.yml
의존 옵션을 사용할 수 없습니다. 먼저로드하지 않으면 상관 없지만 먼저 활성화해야합니다.먼저 bukkit 플러그인을 활성화 하시겠습니까?
나는 이러한 목표를 달성하기 위해 여러 가지 방법을 시도하지만 운 :
시도 1 :
static{
try {
Bukkit.getPluginManager().loadPlugin(plug);
Bukkit.getPluginManager().enablePlugin(plugin);
} catch (UnknownDependencyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidPluginException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidDescriptionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
은 내가 설명을 허용합니다. 정적은 플러그인로드 업을 포함하여 대부분의 것보다 먼저 실행되는 것 같습니다. 이것은로드 할 때도 정의해야 함을 의미합니다. 이것은 파일 경로에 대해 getDataFolder()
과 같은 비 정적 API를 제외하고는 일반적으로 문제가되지 않습니다.
public static File plug = new File("/plugins/Debugger");
내 경로를 잘못 지정하지 않으면 예외가 throw되는 이유를 찾을 수 없습니다.
참고 : 예, "plugins/Debugger"
또는 "Debugger.jar"및 ECT와 같은 여러 경로를 시도했습니다.
방법 2 :
public void onLoad(){
Bukkit.getPluginManager().enablePlugin(plugin);
console.info("[Debugger] loaded first!");
}
이 사실 너무 좋은 듯이 방법은 실제로 더 가까이 내 문제를 해결하는 저를 얻을 것 같았다. 이 메소드는 플러그인이로드 될 때마다 호출되므로 onLoad
메소드 내에서 플러그인을 사용하도록 설정하면 실제로 플러그인이 먼저 활성화됩니다. 이상한 null initializing Debugger
(디버거가 테스트 플러그인 이름)에도 불구하고 어떻게 든
[00:15:08] [Server thread/ERROR]: null initializing Debugger v1.0.0 (Is it up to date?)
java.lang.NullPointerException
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:396) ~[craftbukkit.jar:git-Bukkit-0ebb9c7]
at me.doublehelix457.Debugger.Debugger.onLoad(Debugger.java:20) ~[?:?]
at org.bukkit.craftbukkit.v1_10_R1.CraftServer.loadPlugins(CraftServer.java:299) [craftbukkit.jar:git-Bukkit-0ebb9c7]
at org.bukkit.craftbukkit.v1_10_R1.CraftServer.reload(CraftServer.java:723) [craftbukkit.jar:git-Bukkit-0ebb9c7]
at org.bukkit.Bukkit.reload(Bukkit.java:548) [craftbukkit.jar:git-Bukkit-0ebb9c7]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [craftbukkit.jar:git-Bukkit-0ebb9c7]
플러그인이 여전히 첫째 있도록 관리 : 로딩이 때 문제가 있었다?
그래서 그것을 참조하는 줄은Bukkit.getPluginManager().enablePlugin(plugin);
그 방법 내에서 작동하지 않는 getServer()
같은 온라인 내가 어떤 API를 발견 몇 가지 조사를하고 나는 어쩌면이 Bukkit
또는 PluginManager
아직 존재하지 않을 수도 있다는 것을 의미 있다고 생각합니다.
그럴 경우 해결 방법이 있습니까?
그렇긴해도, 나는 현재의 시도를 개선하거나 새로운 것을 시도해보고 싶습니다. "왜 플러그인을 먼저 활성화해야합니까?"라고 묻지 마십시오. 나는이 버킷 버전이 1.10에 있다는 것을 언급해야한다.
많은 도움을 주시면 감사하겠습니다.