Map<Pos, Color>
class Pos(val x, val y)

oder

List<PosColor>
class PosColor(val x, val y, val color)

void set(PosColor pc) {
  val index = list.first { it.x == pc.x && it.y == pc.y}
  if(index == -1) list.add(pc);
  else list.set(index, pc);
}

oder so ähnlich

...zur Antwort

JavaFX oder Swing?

...zur Antwort

Steht da auch, wieso das nicht geht?

Schau dir mal den Konstruktor von ScaledResolution an, was der für Parameter annimmt.

...zur Antwort

Einfach Werte einsetzen und vergleichen?

for(int x=0; x<=9; x++) {
  int y1 = 2*x - 2;
  int y2 = -(2.0/3.0)*x + 6
  if(y1 == y2) System.out.println("Schnittpunkt");
}
...zur Antwort

1.

boolean containsAt = string.contains("@");

2.

boolean containsDot = string.contains(".");

3.

boolean longEnough = string.length() > 6;
...zur Antwort

Warum updatet sich das Scoreboard nicht richtig (Spigot)?

Hey, ich habe ein Problem, undzwar sollte sich mein Scoreboard jede Sekunde updaten (Die Methode aufrufen etc. funktioniert) jedoch updatet sich der jeweilige Score nicht sondern es wird eine neue Zeile im SB erstellt und die alte bleibt bestehen (siehe Bild). Kann mir irgendjemand helfen? ^^'

Code:

private static Main plugin;
    public ScoreboardAPI(Main plugin) {
        ScoreboardAPI.plugin = plugin;
    }
    
    public static void sendScoreboard(Player p) {
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("aaa", "bbb");
        int kills = plugin.getConfig().getInt(p.getName() + ".kills");
        int min = (de.benni.Listener.JoinListener.online/60);
        
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("§b§lMiniVaro");
        obj.getScore("----------------").setScore(5);
        
        if(!p.hasPermission("minivaro.spectate")) {
        
        Score four = obj.getScore("§6Team: §agetTeam");
        Score three = obj.getScore("§6Spieler online: §7§a" + Bukkit.getOnlinePlayers().size());
        Score two = obj.getScore("§6Kills: §a" + kills);
        Score one = obj.getScore("§6Spielzeit: §a" + min + " Minuten");
        
        four.setScore(4);
        three.setScore(3);
        two.setScore(2);
        one.setScore(1);
        
        
        } else {
            obj.getScore("§7Spectator").setScore(4);
        }
        p.setScoreboard(board);
    }
    
    
    public static void updateScoreboard(Player p) {
        Scoreboard sb = p.getScoreboard();
        Objective obj = sb.getObjective("aaa");
        int kills = plugin.getConfig().getInt(p.getName() + ".kills");
        
        int min = (de.benni.Listener.JoinListener.online/60);
        
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("§b§lMiniVaro");
        obj.getScore("----------------").setScore(5);
        
        Score four = obj.getScore("§6Team: §agetTeam");
        Score three = obj.getScore("§6Spieler online: §7§a" + Bukkit.getOnlinePlayers().size());
        Score two = obj.getScore("§6Kills: §a" + kills);
        Score one = obj.getScore("§6Spielzeit: §a" + min + " Minuten");
        
        four.setScore(4);
        three.setScore(3);
        two.setScore(2);
        one.setScore(1);
    }
}

Bild:

Das zuerst 0 Minuten da steht und erst dann die 19 ist so geplant, nur sollte die 19 eigentlich die 0 ersetzen statt eine neue Zeile zu bilden.

...zur Frage

Ich würde das mit Teams machen und dann nur die Teamwerte updaten

...zur Antwort

Das SPacketTimeUpdate hat zwei Felder:

  1. Alter der Welt in Ticks
  2. Tageszeit in Ticks

Ich denke mal, das 1. wäre passender. Die Methode, um die TPS daraus abzuleiten, ist ganz einfach, habe ich aber nicht getestet.

private long lastTime;
private long lastAge = -1L;

@PacketReceive
public void onTimeUpdate(SPacketTimeUpdate packet) {
  long age = packet.worldAge;
  long time = System.currentTimeMillis();

  if (lastAge == -1L) {
    lastTime = time;
    lastAge = age;
    return;
  }

  long diffAge = age - lastAge;
  long diffTime = time - lastTime;

  lastAge = age;
  lastTime = time;

  long tps = diffAge / (diffTime / 1000.0);
  long tpsRounded = Math.round(tps * 100) / 100.0;

  System.out.println("TPS: " + tpsRounded);
}

Die Methode und Annotations habe ich mir selbst ausgedacht, die Implementierung ist ganz dir überlassen. Noch genauer könnte man das evtl. machen, wenn man den Ping mit einbezieht.

...zur Antwort
pfad.replaceAll("/{2,}", "/");
oder
pfad.replace("//", "/");
glaube ich, nicht getestet
...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.