• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Bungeecord [Verschoben] getInstance() returns null and Plugin can't be cast to Mainclass

Status
Für weitere Antworten geschlossen.

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Hey,

ich möchte in dem einem Plugin meine API aus dem zweiten Plugin laden.
Die API, welche ich laden möchte, kann soweit ich es noch richtig weiß, aus der Hauptklasse über getInstance().getAPI() oder aus dem cast vom getPluginManager().getPlugin("PluginName") und getAPI() bekommen.

Ich habe beides in dem zweiten Plugin (Plugin über seine Hauptklasse) versucht, aber bekomme nicht die gewünschte API...

Vielen dank für eure Antworten schon mal im Voraus.


Mit freundlichen Grüßen

xXSchrandXx
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Moin,
ich würde mal sagen, dass du die Variabel "instance" nicht deklarierst.
Weil du hast zwar die Methode onLoad, die wird aber nicht aufgerufen, da normalerweise alles über die onEnable Methode läuft.
Kurz um, die Methode onLoad, in der OnEnable aufrufen. Dann müsste diese auch kein "null" zurückliefern.
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Ich hatte schon instance = this in onEnable() und habe es zum testen nocheinmal in onLoad() gepackt ohne es zurück zu packen.

Dazu kommt, dass es nur für das zweite Plugin null zurückgibt. Im eigentlichen Plugin funktioniert alles.
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Plugin welches die API gibt:
...
  public void onEnable() {
    instance = this;
    api = new BungeeCordAuthenticatorBungeeAPI(instance);
...

bungee.yml vom Plugin welches die API nutzen soll:
...
softDepends:
...
    - BungeeCordAuthenticatorBungee
...

Plugin welches die API gibt:
...
  public void onEnable() {
    instance = this;
    api = new BungeeCordAuthenticatorBungeeAPI(instance);
...

bungee.yml vom Plugin welches die API nutzen soll:
...
softDepends:
...
    - BungeeCordAuthenticatorBungee
...
Das Plugin, welches die API gibt, wird auch vor dem Plugin, welches die API nutzt geladen.

Wird die API denn vor dem Plugin geladen?

Meinst du, dass instance = this an das ende der onEnalbe() Methode müsste?

In den Klassen vom Plugin, welches die API gibt, wird diese so benutzt / gesetzt:
PluginMessageListener:
public class PluginMessageListener implements Listener {

  private BungeeCordAuthenticatorBungeeAPI api;

  public PluginMessageListener() {
    api = BungeeCordAuthenticatorBungee.getInstance().getAPI();
  }

  @EventHandler
  public void onPluginMessageRecieve(PluginMessageEvent e) {
    if (!e.getTag().equals("bca:sync")) {
        return;
    }
    if (api.getConfigHandler().isDebugging)
      api.getLogger().info("DEBUG | Got sync question");

    ByteArrayDataInput in = ByteStreams.newDataInput( e.getData() );
    UUID uuid = UUID.fromString(in.readUTF());
    ProxiedPlayer p = (ProxiedPlayer) ProxyServer.getInstance().getPlayer(uuid);
    api.sync(p);
  }

}

Hier bekomme ich nicht null.
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Plugin welches die API gibt:
...
  public void onEnable() {
    instance = this;
    api = new BungeeCordAuthenticatorBungeeAPI(instance);
...

bungee.yml vom Plugin welches die API nutzen soll:
...
softDepends:
...
    - BungeeCordAuthenticatorBungee
...

softdepend ist gegeben und in den Logs ist auch die API zuerst geladen wird.
 
Status
Für weitere Antworten geschlossen.
Oben