Java / Minecraft-Plugin: Wie kann ich ein Entity public machen?

3 Antworten

Dafür musst du einfach nur die Deklarierung und die Initialisierung aufteilen.

Schreib das in deine Klasse:

public static Horse horse;

Und das in die Command-Methode:

horse = loc.getWorld().spawn(loc, Horse.class);

Dann kannst du von anderen Klassen aus drauf zugreifen per

DeineKlasse.horse
Woher ich das weiß:eigene Erfahrung – Minecraft-Experte. Aktiver Spieler seit 2011.

Angenommen du hast die beiden Beispielklassen Spawning und Usage. In der Klasse Spawning befindet sich die Methode spawnHorse. Diese kannst du zu einem beliebigen Zeitpunkt in deinem Plugin aufrufen. Das Pferd wird dann in die statische Variable horse gespeichert, welche vorher deklariert wurde. Wenn du eine Variable erstellen musst, musst du dieser nämlich nicht direkt einen Wert zuweisen.

package com.lezurex.marcus496.plugin;

// import ...

public class Spawning {

  public static Horse horse;

  public static void spawnHorse() {
    Location loc = new Location(...);
    horse = loc.getWorld().spawn(loc, Horse.class);
  }

}

In einer anderen Klasse, wo du dann auf dein Pferd zugreifen willst, kannst du dies wie folgt. Erst wird das Pferd gespawnt und nachher kann ich über die Klasse Spawning auf das Pferd zugreifen und darauf Methoden aufrufen.

package com.lezurex.marcus496.plugin;

// import ...

public class Usage {

  public Usage() {
    Spawning.spawnHorse();
    Spawning.horse.wasAuchImmer();
  }
}

Allerdings ist es immer kritisch, statische Klassenvariablen zu benutzen. Ein besserer Weg wäre zum Beispiel, das Pferd beim Aufruf der Methode zurückzugeben, dies schränkt dann aber auch die Möglichkeiten ein.

Deshalb kannst du auch eine Instanz von deiner Spawning Klasse (oder wie sie bei dir heisst) irgendwo in deinem Plugin in eine Variable speichern und dann mit einem Getter darauf zugreifen.

Woher ich das weiß:eigene Erfahrung

Du musst innerhalb einer If-Verzweigung deine public method instanzieren. Dann geht das.

Zb (pseudocode-mäßig):

If space = pressed

Spawn horse

Endif.