• 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!

Beste Option für Scoreboard updaten?

Felix.

Redstoneengineer
Registriert
10 April 2020
Beiträge
40
Diamanten
253
Moin,
ich habe ein kleines Plugin programmiert, was den Abstand zwischen 2 Spielern anzeigt.
Wenn ich das Scoreboard setze werden die Blöcke ja angezeigt, nur leider weiß ich nicht, wie ich es am besten Updaten kann. Hab versucht, mir vom Scoreboard die nötigen Daten zu holen, ohne Erfolg.
Ich danke für eure Hilfe.
Die Klassen:
Spieler-Auswählen Inventar:
package de.devfelix.listeners;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.SkullType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;

public class PlayerInteractListener implements Listener {
    
    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        
        Player player = (Player)event.getPlayer();
        
        if(player.getItemInHand().getType() == Material.COMPASS) {
            
            
            
            ItemStack glass = new ItemStack(Material.ORANGE_STAINED_GLASS_PANE, 1);
            ItemMeta glassmeta = glass.getItemMeta();
            glassmeta.setDisplayName(" ");
            glass.setItemMeta(glassmeta);
            
            Inventory playerchoose = Bukkit.createInventory(null, 9*6, "§8» §bSpieler auswählen!");
            
            playerchoose.setItem(0, glass);
            playerchoose.setItem(1, glass);
            playerchoose.setItem(2, glass);
            playerchoose.setItem(3, glass);
            playerchoose.setItem(4, glass);
            playerchoose.setItem(5, glass);
            playerchoose.setItem(6, glass);
            playerchoose.setItem(7, glass);
            playerchoose.setItem(8, glass);
            playerchoose.setItem(9, glass);
            playerchoose.setItem(17, glass);
            playerchoose.setItem(18, glass);
            playerchoose.setItem(26, glass);
            playerchoose.setItem(27, glass);
            playerchoose.setItem(35, glass);
            playerchoose.setItem(36, glass);
            playerchoose.setItem(44, glass);
            playerchoose.setItem(45, glass);
            playerchoose.setItem(53, glass);
            
            for(Player invplayer : Bukkit.getOnlinePlayers()) {
                if(invplayer != player) {
                    ItemStack invplayeritem = new ItemStack(Material.LEGACY_SKULL_ITEM, 1, (short) SkullType.PLAYER.ordinal());
                    SkullMeta skullmeta = (SkullMeta) invplayeritem.getItemMeta();
                    skullmeta.setOwner(invplayer.getDisplayName());
                    skullmeta.setDisplayName("§8» §b" + invplayer.getDisplayName());
                    invplayeritem.setItemMeta(skullmeta);
                    
                    playerchoose.setItem(playerchoose.firstEmpty(), invplayeritem);
                }
            }
            
            for(int i = playerchoose.firstEmpty(); i < playerchoose.getSize(); i++) {
                playerchoose.setItem(i, glass);
            }
            
             player.openInventory(playerchoose);
            
        }
        
    }
    
}
Scoreboard setzen:
package de.devfelix.listeners;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;

public class InventoryClickListener implements Listener {
    
    @EventHandler
    public void onClick(InventoryClickEvent event) {
        
        Player player = (Player)event.getWhoClicked();
        
        if(event.getView().getTitle().equalsIgnoreCase("§8» §bSpieler auswählen!")) {

            if(event.getCurrentItem() != null) {
                
                List<String> playernames = new ArrayList<String>();
                for(Player players : Bukkit.getOnlinePlayers()) {
                    playernames.add(players.getDisplayName());
                }
                
                event.setCancelled(true);
                
                if(!event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(" ") && event.getCurrentItem().hasItemMeta()) {
                    
                    String targetname = ChatColor.stripColor(event.getCurrentItem().getItemMeta().getDisplayName()).replace(" ", "").replace("»", "");
                    Player target = Bukkit.getPlayer(targetname);
                    ScoreboardManager manager = Bukkit.getScoreboardManager();
                    Scoreboard board = manager.getNewScoreboard();
                    Team team = board.registerNewTeam("teamname");
                    Objective objective = board.registerNewObjective("test", "dummy");
                    objective.setDisplaySlot(DisplaySlot.SIDEBAR);
                    objective.setDisplayName("§bSpielersuche");
                    Score score = objective.getScore(" ");
                    score.setScore(-1);
                    Score score1 = objective.getScore(" §bAktueller Spieler: ");
                    score1.setScore(-2);
                    Score score2 = objective.getScore("§8» §r" + ChatColor.GOLD + " " + ChatColor.BOLD + targetname);
                    score2.setScore(-3);
                    Score score3 = objective.getScore("   ");
                    score3.setScore(-4);
                    Score score4 = objective.getScore(" §bSpielerdistanz: ");
                    score4.setScore(-5);
                    DecimalFormat formatter = new DecimalFormat("#");
                    Score score5 = objective.getScore("§8» §r" + ChatColor.GOLD + " " + ChatColor.BOLD + String.valueOf(formatter.format(player.getLocation().distance(target.getLocation()))) + "§b Blöcke");
                    score5.setScore(-6);
                    
                    
                    team.addPlayer(player);
                    player.setScoreboard(board);
                    
                    player.closeInventory();
                    player.sendMessage("§aSie verfolgen nun den Spieler §6" + targetname + "§a!");
                }
                
            }
            
        }
        
    }
    
}
 
Oben