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:
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!");
}
}
}
}
}