1.) Bitte den gesamten Code posten (zumindest den Code des gesamten Events)
2.) Bitte die gesamte Fehlermeldung posten
3.) vollständig* (nicht folständig)

...zur Antwort

Soll der Suchbereich am Ende auch kugelförmig oder würfelförmigen sein?

...zur Antwort

1.14 wird das noch mager aussehen.

...zur Antwort

Weder noch.

...zur Antwort

Hier noch ein gutes Video ;)

https://youtu.be/Jz8jbpDRUIw

...zur Antwort

Du müsstest in der if-Abfrage statt dem = (Zuweisungsoperator) ein == (Vergleichsoperator) benutzen, bzw. eigentlich ein != , da es ja genau 6 Argumente sein sollen. würdest du == nehmen würde ein "ERROR" ausgegeben werden obowhl du (nach Programmlogik) die richtige Anzahl der Argumente hast.

...zur Antwort

In der 1.13 gibt es keine Zahlen-IDs mehr. Es gibt nur noch die String-"IDs" wie "(minecraft:)stone", "grass_block" oder "oak_wood".

...zur Antwort

Es geht weder über Player Player = "name"; , noch über new Player("name"). Das liegt daran, dass die Klasse Player ein interface ist. Wenn du den Namen bei dem Command als Parameter übergeben bekommst (z.B. /heal name) kannst du den Zielspieler über Bukkit.getPlayer(String name) bekommen. Sollte der Spieler mit dem gegebenen Namen nicht auf den Server sein, gibt diese Methode null zurück.

...zur Antwort
Bukkit Programmierung: Wieso explodiert der letzte Feuerball vor Aufkommen ohne einen Grund?

Hey Leute.

Ich habe ein Problem in meinem Plugin. Ich habe es so gecodet, sodass ein Feuerball geschossen und bei seinem Aufkommen eine Explosion erzeugt wird.

Es funktioniert auch, außer beim letzten Schuss.

Sprich, ich habe noch einen (in meinem Beispiel Apfel) übrig und schieße den. Dann wird die Explosion direkt vor mir erzeugt.

Wenn ich allerdings noch mehrere Äpfel auf dem Stack habe, wird die Explosion erst dann ausgeführt, wenn er auf dem Boden aufkommt (so wie geplant).

Hier einmal der wichtige Quelltext:

} else if (p.getInventory().getItemInOffHand() != null && p.getInventory().getItemInOffHand().getType().equals(Material.APPLE)) {
  p.sendMessage("achsuuuu");

  if (amount == 1) {
    p.getInventory().setItemInOffHand(null);
    p.launchProjectile(Fireball.class);
  }
  else 
    p.getInventory().getItemInOffHand().setAmount((amount-1));

  p.launchProjectile(Fireball.class);

Und dann wird die Explosion erzeugt:

@EventHandler
public void Hit(ProjectileHitEvent e) {
  if (e.getEntity() instanceof Fireball) {
    if (e.getEntity().getShooter() instanceof Player && ((HumanEntity)  e.getEntity().getShooter()).getInventory().getItemInMainHand().getType().equals(Material.STICK)) {
      double x = e.getEntity().getLocation().getX();
      double y = e.getEntity().getLocation().getY();
      double z = e.getEntity().getLocation().getZ();

      e.getEntity().getWorld().createExplosion(x, y, z, 35);
    }
  }
}

Ich würde mich sehr freuen, wenn mir jemand helfen könnte.

Danke schon mal im Voraus.

...zum Beitrag

Da du nach dem Else keinen neuen {}-Block öffnest, gehört nur die erste Anweisung zu dem Else. Das heißt egal ob amount == 1 oder nicht, die zweite und dritte Anweisung werden so oder so ausgeführt.

...zur Antwort