Tablist and Charakterlimit

This commit is contained in:
spaffel
2022-06-15 18:11:14 +02:00
parent 32a08dca0c
commit 7388eade52
11 changed files with 437 additions and 3 deletions

View File

@@ -12,6 +12,7 @@ import de.spaffel.clans.commands.joinclan;
import de.spaffel.clans.commands.setclancolor;
import de.spaffel.clans.commands.utils.jsonutil;
import de.spaffel.clans.commands.utils.apicheck;
import de.spaffel.clans.commands.utils.Tab;
import org.bukkit.entity.Player;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
@@ -23,6 +24,7 @@ import java.io.IOException;
import org.json.simple.JSONObject;
import java.io.File;
import org.bukkit.plugin.Plugin;
import java.util.Set;
import java.util.stream.Collectors;
import net.luckperms.api.LuckPermsProvider;
@@ -51,11 +53,37 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.util.StringUtil;
import java.util.concurrent.CopyOnWriteArrayList;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
public final class Clans extends JavaPlugin implements Listener {
public LuckPerms lp;
static Clans plugin;
public static Clans getPlugin() {
return plugin;
}
@Override
public void onEnable() {
if(apicheck.doGet() == true){
// Plugin startup logic
getServer().getPluginManager().registerEvents(this, this);
@@ -73,8 +101,55 @@ public final class Clans extends JavaPlugin implements Listener {
getCommand("leaveclan").setExecutor(new leaveclan());
getCommand("joinclan").setExecutor(new joinclan());
getCommand("setclancolor").setExecutor(new setclancolor());
plugin = this;
PluginManager pm = Bukkit.getPluginManager();
Tab.update();
super.onEnable();
}}
public static void update() {
}
public static String getFromID(int id){
String c = "";
CopyOnWriteArrayList<String> abc = new CopyOnWriteArrayList<>();
abc.add("A");
abc.add("C");
abc.add("D");
abc.add("E");
abc.add("F");
abc.add("G");
abc.add("H");
abc.add("I");
abc.add("J");
abc.add("K");
abc.add("L");
abc.add("M");
abc.add("N");
abc.add("O");
abc.add("P");
abc.add("Q");
abc.add("R");
abc.add("S");
abc.add("T");
abc.add("U");
abc.add("V");
abc.add("W");
abc.add("X");
abc.add("Y");
abc.add("Z");
CopyOnWriteArrayList<String> copy = new CopyOnWriteArrayList<>();
for (String lul : abc) {
for (String s : abc)
copy.add("A" + lul + s);
}
c = copy.get(id);
return c;
}
@Override
public void onDisable() {
// Plugin shutdown logic
@@ -82,10 +157,13 @@ public final class Clans extends JavaPlugin implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
if(apicheck.doGet() == true) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "say Helllooow!" + event.getPlayer().getName());
jsonutil.createPlayer(toString().valueOf(event.getPlayer().getUniqueId()));
jsonutil.createuuidentry(toString().valueOf(event.getPlayer().getUniqueId()), event.getPlayer().getName());
Tab.setPlayerteam(event.getPlayer(), toString().valueOf(event.getPlayer().getUniqueId()), event.getPlayer().getName() );
Clans.update();
}
}

View File

@@ -1,10 +1,13 @@
package de.spaffel.clans.commands;
import de.spaffel.clans.Clans;
import de.spaffel.clans.commands.utils.Tab;
import de.spaffel.clans.commands.utils.jsonutil;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class joinclan implements CommandExecutor {
@Override
@@ -21,6 +24,8 @@ public class joinclan implements CommandExecutor {
if (ans == "done"){
sender.sendMessage(ChatColor.GREEN + "You have joined the Clan " + name + "!");
Tab.setPlayerteam((Player) sender, String.valueOf(jsonutil.getUUID(playername)), sender.getName());
Clans.update();
}else{
sender.sendMessage(ChatColor.RED + "Wrong Password");

View File

@@ -1,10 +1,13 @@
package de.spaffel.clans.commands;
import de.spaffel.clans.Clans;
import de.spaffel.clans.commands.utils.Tab;
import de.spaffel.clans.commands.utils.jsonutil;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class leaveclan implements CommandExecutor {
@Override
@@ -14,6 +17,8 @@ public class leaveclan implements CommandExecutor {
String uuid = leaderuuid;
jsonutil.setClanId(uuid, "0");
sender.sendMessage(ChatColor.GREEN + "You have left the Clan!");
Tab.setPlayerteam((Player) sender, String.valueOf(jsonutil.getUUID(playername)), sender.getName());
Clans.update();
return false;
}
}

View File

@@ -2,6 +2,8 @@ package de.spaffel.clans.commands;
import java.io.IOException;
import java.net.URL;
import de.spaffel.clans.Clans;
import de.spaffel.clans.commands.utils.Tab;
import de.spaffel.clans.commands.utils.jsonutil;
import org.bukkit.ChatColor;
import org.bukkit.Bukkit;
@@ -10,14 +12,21 @@ import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class newclan implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(toString().valueOf(args[0]).length() > 12){
sender.sendMessage(ChatColor.RED + "Clanname cant be longer than 12 Charakters");
}else{
if (args.length == 2){
String name = toString().valueOf(args[0]);
String password = toString().valueOf(args[1]);
String playername = sender.getName();
String leaderuuid = String.valueOf(jsonutil.getUUID(playername));
@@ -25,6 +34,8 @@ public class newclan implements CommandExecutor {
if (ans == "done"){
sender.sendMessage(ChatColor.GREEN + "You have created the Clan " + name + "!");
Tab.setPlayerteam((Player) sender, String.valueOf(jsonutil.getUUID(playername)), sender.getName());
Clans.update();
return true;
}else{
@@ -36,7 +47,7 @@ public class newclan implements CommandExecutor {
}else {
sender.sendMessage(ChatColor.RED + "You need to write /newclan clanname password");
}
}}
return false;
}
}

View File

@@ -0,0 +1,31 @@
package de.spaffel.clans.commands.utils;
import org.bukkit.ChatColor;
public enum EntryName {
ENTRY_0(0, ChatColor.DARK_PURPLE.toString()),
ENTRY_1(1, ChatColor.DARK_GRAY.toString()),
ENTRY_2(2, ChatColor.BOLD.toString()),
ENTRY_3(3, ChatColor.DARK_RED.toString()),
ENTRY_4(4, ChatColor.GRAY.toString()),
ENTRY_5(5, ChatColor.DARK_GREEN.toString()),
ENTRY_6(6, ChatColor.LIGHT_PURPLE.toString()),
ENTRY_7(7, ChatColor.UNDERLINE.toString());
private final int entry;
private final String entryName;
EntryName(int entry, String entryName) {
this.entry = entry;
this.entryName = entryName;
}
public int getEntry() {
return entry;
}
public String getEntryName() {
return entryName;
}
}

View File

@@ -0,0 +1,42 @@
package de.spaffel.clans.commands.utils;
public class Lag
implements Runnable
{
public static int TICK_COUNT= 0;
public static long[] TICKS= new long[600];
public static long LAST_TICK= 0L;
public static double getTPS()
{
return getTPS(100);
}
public static double getTPS(int ticks)
{
if (TICK_COUNT< ticks) {
return 20.0D;
}
int target = (TICK_COUNT- 1 - ticks) % TICKS.length;
long elapsed = System.currentTimeMillis() - TICKS[target];
return ticks / (elapsed / 1000.0D);
}
public static long getElapsed(int tickID)
{
if (TICK_COUNT- tickID >= TICKS.length)
{
}
long time = TICKS[(tickID % TICKS.length)];
return System.currentTimeMillis() - time;
}
public void run()
{
TICKS[(TICK_COUNT% TICKS.length)] = System.currentTimeMillis();
TICK_COUNT+= 1;
}
}

View File

@@ -0,0 +1,114 @@
package de.spaffel.clans.commands.utils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
public abstract class ScoreboardBuilder {
protected final Scoreboard scoreboard;
protected final Objective objective;
protected final Player player;
public ScoreboardBuilder(Player player, String displayName) {
this.player = player;
if(player.getScoreboard().equals(Bukkit.getScoreboardManager().getMainScoreboard())) {
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
}
this.scoreboard = player.getScoreboard();
if(this.scoreboard.getObjective("display") != null) {
this.scoreboard.getObjective("display").unregister();
}
this.objective = this.scoreboard.registerNewObjective("display", "dummy", displayName);
this.objective.setDisplaySlot(DisplaySlot.SIDEBAR);
createScoreboard();
}
public abstract void createScoreboard();
public abstract void update();
public void setDisplayName(String displayName) {
this.objective.setDisplayName(displayName);
}
public void setScore(String content, int score) {
Team team = getTeamByScore(score);
if(team == null) {
return;
}
team.setPrefix(content);
showScore(score);
}
public void removeScore(int score) {
hideScore(score);
}
private EntryName getEntryNameByScore(int score) {
for(EntryName name : EntryName.values()) {
if(score == name.getEntry()) {
return name;
}
}
return null;
}
private Team getTeamByScore(int score) {
EntryName name = getEntryNameByScore(score);
if(name == null) {
return null;
}
Team team = scoreboard.getEntryTeam(name.getEntryName());
if(team != null) {
return team;
}
team = scoreboard.registerNewTeam(name.name());
team.addEntry(name.getEntryName());
return team;
}
private void showScore(int score) {
EntryName name = getEntryNameByScore(score);
if(name == null) {
return;
}
if(objective.getScore(name.getEntryName()).isScoreSet()) {
return;
}
objective.getScore(name.getEntryName()).setScore(score);
}
private void hideScore(int score) {
EntryName name = getEntryNameByScore(score);
if(name == null) {
return;
}
if(!objective.getScore(name.getEntryName()).isScoreSet()) {
return;
}
scoreboard.resetScores(name.getEntryName());
}
}

View File

@@ -0,0 +1,19 @@
package de.spaffel.clans.commands.utils;
import de.spaffel.clans.commands.utils.Lag;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.ChatColor;
public class TPSUtil {
public static String getTPS() {
StringBuilder sb = new StringBuilder((String) "");
sb.append(format((Lag.getTPS())));
return sb.substring(0, sb.length());
}
private static String format(double tps) {
return String.valueOf(String.valueOf((
(tps > 18.0D) ? ChatColor.GREEN : ((tps > 16.0D) ? ChatColor.YELLOW : ChatColor.RED)).toString())) + (
(tps > 20.0D) ? "*" : "") + Math.min(Math.round(tps * 100.0D) / 100.0D, 20.0D);
}
}

View File

@@ -0,0 +1,84 @@
package de.spaffel.clans.commands.utils;
import de.spaffel.clans.Clans;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;
public class Tab {
public static Thread t;
public static void setTab() {
Clans.update();
for (Player p : Bukkit.getOnlinePlayers())
setTab(p);
}
public static void update() {
t = new Thread(new Runnable() {
public void run() {
while (true) {
try {
while (true) {
Thread.sleep(10000L);
Tab.setTab();
}
} catch (InterruptedException interruptedException) {}
}
}
});
t.start();
}
public static void setTab(Player p) {
String line = "§7";
for (int i = 0; i != 12; i++)
line = String.valueOf(line) + "-";
String head = "\n §a<§7" + line + "[§dSpaffel-Smp§7]" + line + "§a>\n" + "§eOnline§7: §a"+ (
Bukkit.getOnlinePlayers().size() + "§7/§a" +
Bukkit.getMaxPlayers() + "\n" + "§eTPS§7: §a"+ TPSUtil.getTPS() + "\n");
String foot = "\n§e/vote §afür Belohnungen!\n§e/Discord §aUmauf den Discord zu gelangen!\n<§7" +
line + "[§dSpaffel-Smp§7]" + line + "§a>\n";
p.setPlayerListHeaderFooter(head, foot);
}
public static void setPlayerteam(Player player, String uuid, String Playername){
System.out.println("neue ranksetzen");
Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
for(Player p : Bukkit.getOnlinePlayers()) {
System.out.println("testoooo");
//String uuid = jsonutil.getUUID(Playername);
String Clanname = p.getDisplayName();
System.out.println("n:" + p.getDisplayName());
Team clan = scoreboard.getTeam(Clanname);
if(clan == null){
clan = scoreboard.registerNewTeam(Clanname);
clan.setPrefix(jsonutil.getPrefix(String.valueOf(p.getUniqueId())));
}
clan.setPrefix(jsonutil.getPrefix(String.valueOf(p.getUniqueId())));
scoreboard.getTeam(Clanname).addPlayer((OfflinePlayer)p.getPlayer());
}
for(Player p : Bukkit.getOnlinePlayers()) {
p.setScoreboard(scoreboard);
}
}
}

View File

@@ -0,0 +1,45 @@
package de.spaffel.clans.commands.utils;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class TestScoreboard extends ScoreboardBuilder {
private int socialId;
public TestScoreboard(Player player) {
super(player, ChatColor.DARK_PURPLE.toString() + ChatColor.BOLD + " twitch.tv/DerBanko ");
socialId = 0;
}
@Override
public void createScoreboard() {
setScore("test", 8);
setScore(ChatColor.DARK_GRAY.toString(), 7);
setScore(ChatColor.GRAY + "Dein Rang" + ChatColor.DARK_GRAY + ":", 6);
if(player.isOp()) {
setScore(ChatColor.RED + "Operator", 5);
} else {
setScore(ChatColor.GRAY + "Spieler", 5);
}
setScore(ChatColor.GRAY.toString(), 4);
setScore(ChatColor.AQUA + "twitter.com/DerBanko", 3);
setScore(ChatColor.RED.toString(), 2);
setScore(ChatColor.RED + player.getAddress().getHostName(), 1);
setScore(ChatColor.AQUA.toString(), 0);
}
@Override
public void update() {
}
}

View File

@@ -97,7 +97,7 @@ public class jsonutil extends JavaPlugin{
}else{
String Clanname = getClanName(Clanid);
String color = getClanColor(Clanid);
String prefix = color + "§l[" + Clanname + "] §f§r";
String prefix = color + "[" + Clanname + "] §f§r";
return prefix;
}