Java – die besten Beiträge

Multithreading mit Bukkit?

Hallo liebe Community,

Ich habe ein Plugin geschrieben, womit 2 Methoden gleichzeitig laufen sollen. Beim Laden des Plugins auf meinen Test-Server kommt nach dem Enabeln eine Fehlermeldung:

[11:00:34 WARN]: Exception in thread "Thread-8"
[11:00:34 WARN]: java.lang.IllegalStateException: Asynchronous scoreboard creation!
[11:00:34 WARN]:    at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14)
[11:00:34 WARN]:    at org.bukkit.craftbukkit.v1_8_R1.scoreboard.CraftScoreboardManager.getNewScoreboard(CraftScoreboardManager.java:45)
[11:00:34 WARN]:    at org.bukkit.craftbukkit.v1_8_R1.scoreboard.CraftScoreboardManager.getNewScoreboard(CraftScoreboardManager.java:1)
[11:00:34 WARN]:    at de.nurteam.varo.ScoreboardThread.setScore(ScoreboardThread.java:25)
[11:00:34 WARN]:    at de.nurteam.varo.ScoreboardThread.run(ScoreboardThread.java:44)

Kurze Beschreibung des Plugins:

Ich programmiere an einem Varo-Plugin, indem es einen Scoreboard geben soll, wo steht, wie lange man noch Spielen darf. Dieser Scoreboard soll in einer Schleife laufen, um die Spielzeit zu aktualisieren. Gleichzeitig soll noch eine Methode laufen, die reguliert, wie lange man noch spielen darf und wie groß die Border ist usw.

Nun müssen beide Methoden gleichzeitig laufen, da sie voneinander abhängig sind und das Plugin nicht läuft, wenn eine Methode versagt. Hoffentlich habe ich mich verständlich ausgedrückt:).

Hier sind Teile meines Plugins als Code einsehbar:

//Klasse die Scoreboard und Multithreading managed:
import org.bukkit.Bukkit;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;

public class ScoreboardThread extends Thread{

String name;

ScoreboardThread(String s){
    
    this.name = s;


}

public static void setScore() {


    Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
    Objective objective = ((org.bukkit.scoreboard.Scoreboard) board).registerNewObjective("abc", "abc");
    objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    objective.setDisplayName("§6§lWillkommen bei Ravo!");
    objective.getScore("§e ").setScore(8);
    objective.getScore("§5 ").setScore(6);
    objective.getScore("§bDu gehörst zum Team: #").setScore(5);
    objective.getScore("§4 ").setScore(4);
    objective.getScore("§cUnser TS3-Server: PlusTube.eu ").setScore(3);
    objective.getScore("§3 ").setScore(2);
    objective.getScore("§2Viel Spaß! ").setScore(1);

}

public void run() {
    if(this.name == "t1") {
        
        setScore();
    }
    if(this.name == "t2") {
        Varo.getPlugin().startChecking();
    }
}

}

Server, programmieren, Java, Minecraft, Plug-in, Bukkit, multithreading, scoreboard, Spigot

Java / GLOOP: Kollision bei dem Billardtisch?

Hallo.

Ich habe ein Problem mit dem Billardtisch, den ich erstellen will. Ich habe es so weit geschafft, einen Tisch mit ein paar Bällen zu erstellen, aber ich weiß nicht, was man machen muss, damit der Ball stehen bleibt, wenn er den Rand vom Tisch berührt (oder die Bälle weiter rollen, wenn einer den anderen trifft).

Der ganze Quelltext:

import GLOOP.*;

public class Billiard {
  GLEntwicklerkamera meineKamera;
  GLLicht meinLicht;
  GLTastatur meineTastatur;
  GLQuader seite1, seite2, seite3, seite4, Tisch;
  GLKugel weiss, schwarz, blau, lila, gelb, grün, orange;

  public Billiard() {
    meineKamera = new GLEntwicklerkamera();
    meinLicht = new GLLicht();
    Tisch = new GLQuader(0, 0, -30, 670, 400, 4);
    seite1 = new GLQuader(350, 0, -20, 20, 450, 20);
    seite2 = new GLQuader(-350, 0, -20, 20, 450, 20);
    seite3 = new GLQuader(0, 212, -20, 700, 20, 20);
    seite4 = new GLQuader(0, -212, -20, 700, 20, 20);

    Tisch.setzeTextur("gfx/Grün.png");
    seite1.setzeTextur("gfx/HOLZ.png");
    seite2.setzeTextur("gfx/HOLZ.png");
    seite3.setzeTextur("gfx/HOLZ.png");
    seite4.setzeTextur("gfx/HOLZ.png");

    weiss = new GLKugel(0, 0, 0, 20);
    weiss.setzeTextur("gfx/weiss.png");
    schwarz = new GLKugel(175, -10, 0, 20);
    schwarz.setzeTextur("gfx/schwarz.png");
    blau = new GLKugel(250, -11, 0, 20);
    blau.setzeTextur("gfx/blau.png");
    lila = new GLKugel(250, -49, 0, 20);
    lila.setzeTextur("gfx/lila.png");
    gelb = new GLKugel(250, 26, 0, 20);
    gelb.setzeTextur("gfx/gelb.png");
    grün = new GLKugel(211, 7, 0, 20);
    grün.setzeTextur("gfx/grun.png");
    orange = new GLKugel(211, -30, 0, 20);
    orange.setzeTextur("gfx/orange.png");
    meineTastatur = new GLTastatur();
  }

  public void fuehreAus() {
    while (!meineTastatur.istGedrueckt(' ')) {
      if (meineTastatur.links()) {
        weiss.verschiebe(-2, 0, 0);
        Sys.warte(5);
      }

      if (meineTastatur.rechts()) {
        weiss.verschiebe(2, 0, 0);
        Sys.warte(5);
      }

      if (meineTastatur.oben()) {
        weiss.verschiebe(0, 2, 0);
        Sys.warte(5);
      }

      if (meineTastatur.unten()) {
        weiss.verschiebe(0, -2, 0);
        Sys.warte(5);
      }
    }
  }
}

Bild zum Beitrag
Ball, Java, Informatik, Kollision, GLOOP

Meistgelesene Beiträge zum Thema Java