yLR111 Postado Outubro 19, 2018 Denunciar Compartilhar Postado Outubro 19, 2018 Olá, estou criando uma scoreboard e quero que o dinheiro dela atualize: Codigo: https://pastebin.com/Dd2tUzus Citar Link para o comentário Compartilhar em outros sites More sharing options...
Fexzzz Postado Outubro 20, 2018 Denunciar Compartilhar Postado Outubro 20, 2018 (editado) É só você colocar ela pra atualizar automaticamente. Assim que faz: @EventHandler public void onJoinScore(PlayerJoinEvent e){ final Player p = e.getPlayer(); Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, new Runnable() { public void run() { Scoreboard(p); } }, 0L, 500L); } O 500L é o tempo em que a score atualiza. Editado Outubro 20, 2018 por Fexzzz Link para o comentário Compartilhar em outros sites More sharing options...
SlayerFear Postado Dezembro 5, 2018 Denunciar Compartilhar Postado Dezembro 5, 2018 Coloca no evento onEnable pois assim não ira causar tanto lag que nem adicionar no método PlayerJoinEvent Link para o comentário Compartilhar em outros sites More sharing options...
mabazi Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 Exatamente oque o fexzzz falou, mas voce pode nao colocar o L e o numero é em ticks, 1segundo = 20 ticks Eu faço normalmente (20 * seg) Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 15 horas atrás, Kress disse: Coloca no evento onEnable pois assim não ira causar tanto lag que nem adicionar no método PlayerJoinEvent Fazendo o evento no onEnable, como faço para puxar o player? fica assim: Link para o comentário Compartilhar em outros sites More sharing options...
Breniim Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 6 minutos atrás, zToodi disse: Fazendo o evento no onEnable, como faço para puxar o player? fica assim: Coloca em cima deste ScoreBoardManager, Player p (Player ) sender; e me avisa se funfa Link para o comentário Compartilhar em outros sites More sharing options...
SlayerFear Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 não vai funfar no onEnable não há como pegar o player,o unico jeito mesmo é colocando no onJoin Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 5 minutos atrás, Kress disse: não vai funfar no onEnable não há como pegar o player,o unico jeito mesmo é colocando no onJoin Exatamente... disse que era melhor por no onEnable para ficar menos lag... porém não tem como.... Link para o comentário Compartilhar em outros sites More sharing options...
SlayerFear Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 Dependendo do método que você fizer a score, você pode coloca-la no onEnable Link para o comentário Compartilhar em outros sites More sharing options...
zToodi Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 50 minutos atrás, Kress disse: Dependendo do método que você fizer a score, você pode coloca-la no onEnable Botar para atualizar a scoreboard no evento de entrar gera muito lag, não consigo nem usar o kangaroo de tanto lag Link para o comentário Compartilhar em outros sites More sharing options...
SlayerFear Postado Dezembro 6, 2018 Denunciar Compartilhar Postado Dezembro 6, 2018 Cria uma classe chamada SimpleScoreboard e coloca este código la package Apis; import java.util.AbstractMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; 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; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.Lists; import com.google.common.collect.Maps; public class SimpleScoreboard { private Scoreboard scoreboard; private String title; private Map<String, Integer> scores; private List<Team> teams; public SimpleScoreboard(String title) { this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); this.title = title; this.scores = Maps.newLinkedHashMap(); this.teams = Lists.newArrayList(); } public void blankLine() { add(" "); } public void add(String text) { add(text, null); } public void add(String text, Integer score) { Preconditions.checkArgument(text.length() < 48, "text cannot be over 48 characters in length"); text = fixDuplicates(text); scores.put(text, score); } private String fixDuplicates(String text) { while (scores.containsKey(text)) text += "§r"; if (text.length() > 48) text = text.substring(0, 47); return text; } private Map.Entry<Team, String> createTeam(String text) { String result = ""; if (text.length() <= 16) return new AbstractMap.SimpleEntry<>(null, text); Team team = scoreboard.registerNewTeam("text-" + scoreboard.getTeams().size()); Iterator<String> iterator = Splitter.fixedLength(16).split(text).iterator(); team.setPrefix(iterator.next()); result = iterator.next(); if (text.length() > 32) team.setSuffix(iterator.next()); teams.add(team); return new AbstractMap.SimpleEntry<>(team, result); } @SuppressWarnings("deprecation") public void build() { Objective obj = scoreboard.registerNewObjective((title.length() > 16 ? title.substring(0, 15) : title), "dummy"); obj.setDisplayName(title); obj.setDisplaySlot(DisplaySlot.SIDEBAR); int index = scores.size(); for (Map.Entry<String, Integer> text : scores.entrySet()) { Map.Entry<Team, String> team = createTeam(text.getKey()); Integer score = text.getValue() != null ? text.getValue() : index; OfflinePlayer player = Bukkit.getOfflinePlayer(team.getValue()); if (team.getKey() != null) team.getKey().addPlayer(player); obj.getScore(player).setScore(score); index -= 1; } } public void reset() { title = null; scores.clear(); for (Team t : teams) t.unregister(); teams.clear(); } public Scoreboard getScoreboard() { return scoreboard; } public void send(Player... players) { for (Player p : players) p.setScoreboard(scoreboard); } } e depois cria uma classe chamada Score package Apis; import org.bukkit.Bukkit; import org.bukkit.Statistic; import org.bukkit.entity.Player; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.ScoreboardManager; import Principal.Main; public class Score { public static Scoreboard getScoreBoard() { ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard board = manager.getNewScoreboard(); return board; } public static void setScoreBoard(Player p) { SimpleScoreboard board = new SimpleScoreboard("§6Titulo da score"); board.add("§f"); board.add("§eEstatisticas"); board.add("§fKills:§7 " + p.getStatistic(Statistic.PLAYER_KILLS)); board.add("§fDeaths:§7 " + p.getStatistic(Statistic.DEATHS)); board.add("§fDinheiro: §7" + ConvertMoney.convertInt(Main.pl.getConfig().getInt(p.getName()))); board.add("§f"); board.add("§fKit: §7Nenhum"); board.add("§fRank: §7" + Rank(p)); board.add("§8/score"); board.build(); board.send(p); } public static String Rank(Player p) { double a = + p.getStatistic(Statistic.PLAYER_KILLS); if (a <= 0.0D) { return "Silver I"; } if (a <= 50.0D) { return "Silver II"; } if (a <= 100.0D) { return "Silver III"; } if (a <= 150.0D) { return "Gold"; } if (a <= 200.0D) { return "Gold I"; } if (a <= 250.0D) { return "Gold II"; } if (a <= 300.0D) { return "Gold III"; } if (a <= 450.0D) { return "Diamond I"; } if (a <= 500.0D) { return "Diamond II"; } if (a <= 550.0D) { return "Diamond III"; } if (a <= 600.0D) { return "Esmerald I"; } if (a <= 650.0D) { return "Esmerald II"; } if (a <= 700.0D) { return "Esmerald III"; } if (a <= 750.0D) { return "Esmerald IIII"; } if (a <= 800.0D) { return "Ruby I"; } if (a <= 850.0D) { return "Legendary Eagle I"; } if (a <= 900.0D) { return "Legendary Eagle II"; } if (a <= 950.0D) { return "Legendary Eagle III"; } if (a <= 1000.0D) { return "Legendary Eagle IIII"; } if (a <= 1050.0D) { return "Lion"; } if (a <= 1100.0D) { return "Supreme I"; } if (a <= 1150.0D) { return "Supreme II"; } if (a <= 1200.0D) { return "Supreme III"; } if (a <= 1250.0D) { return "Supreme IIII"; } if (a <= 1300.0D) { return "The Global Elite"; } return "The Global Elite"; } public static void clearScoreboard(Player p) { getScoreBoard().clearSlot(DisplaySlot.SIDEBAR); p.setScoreboard(getScoreBoard()); } } e depois na main crie uma arraylist public static ArrayList<String> score = new ArrayList<>(); e depois coloque isto no onEnable new BukkitRunnable() { @Override public void run() { for(Player p:Bukkit.getOnlinePlayers()) { if(!score.contains(p.getName())) { Score.setScoreBoard(p); } else { Score.clearScoreboard(p); } } } }.runTaskTimer(this, 0, 20); Link para o comentário Compartilhar em outros sites More sharing options...
SlayerFear Postado Dezembro 28, 2018 Denunciar Compartilhar Postado Dezembro 28, 2018 Seu tópico está sendo avisado de Inatividade. Caso não haja respostas em 7 dias, ele será fechado. Link para o comentário Compartilhar em outros sites More sharing options...
Gero Postado Fevereiro 1, 2019 Denunciar Compartilhar Postado Fevereiro 1, 2019 Seu tópico foi marcado como Inativo. Para reverter está ação, entre em contato com a equipe de Moderação. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados