Spigot – die besten Beiträge

[Spigot] InventoryClickEvent Fehler?

Hallo Community!

Ich programmiere gerade ein LobbySystem und bin gerade dabei einen Navigator zu programmieren. Mit Rechtsklick auf Item in der Hotbar öffnet sich ein Inventar sobald ich aber auf ein Item im Inventar klicke welches in einem Listener registriert ist passiert nichts.

Hier der Code:

Die Class in dem die Items angelegt werden:

public class NavigatorInventory {

public static void openNavigatorInventory(Player player) {

  Inventory NavigatorInv = Bukkit.createInventory(null, 9*1, "§6§lNavigator");
  
  ItemStack placeholder = new ItemAPI("§e", Material.STAINED_GLASS_PANE, (byte)15, 1).build();
  
  NavigatorInv.setItem(0, placeholder);
  NavigatorInv.setItem(1, placeholder);
  NavigatorInv.setItem(2, placeholder);
  NavigatorInv.setItem(3, placeholder);
  NavigatorInv.setItem(4, new ItemAPI("§aCityBuild", Material.STONE_AXE, (byte)0, 1, "§7Spiele CityBuild", "§7Klicke um zu connecten.").build());
  NavigatorInv.setItem(5, placeholder);
  NavigatorInv.setItem(6, new ItemAPI("§3Testitem", Material.ENDER_STONE, (byte)0, 1).build());
  NavigatorInv.setItem(7, placeholder);
  NavigatorInv.setItem(8, placeholder);
  
  player.openInventory(NavigatorInv);
  

}

}

public class NavigatorInventoryListener implements Listener {
private Main main;

public NavigatorInventoryListener(Main main) {
    this.main = main;
    Bukkit.getPluginManager().registerEvents(this, main);
}

@EventHandler
public void onClick(InventoryClickEvent e) {
    Player player = (Player) e.getWhoClicked();
    player.sendMessage("l");
    if(!main.canBuild.contains(player)) {
        e.setCancelled(true);
    }
    if(e.getInventory().getName().equals("§6§lNavigator")){
        if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§aCityBuild")) {
            player.sendMessage("§3CityBuildTest");
        }
       else if (e.getCurrentItem().getItemMeta().getDisplayName().equals("§3Testitem")) {
            player.sendMessage("§3TestItemTest");
        }



    }

}

}

Jetzt sollten eigentlich die Testnachrichten ausgegeben werden (später ein Inventory) Aber als Ausgabe bekomme ich keine Errors keine Nachricht etc

Alle Class Dateien sind in der Main registriert.

Kann mir jemand helfen?

Mit Freundlichen Grüßen

programmieren, Java, Minecraft, Spigot

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

Meistgelesene Beiträge zum Thema Spigot