Skocz do zawartości
  • 0

Scoreboard - sidebar


Pytanie

Wie ktoś co robie źle?

Brak errorów w konsoli, ale sb się nie pokazuje.

package pl.krejzolekpro.minecastsb;

import net.dzikoysk.funnyguilds.basic.User;
import net.dzikoysk.funnyguilds.basic.util.RankManager;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;

public class Main extends JavaPlugin implements Listener{
	
	private Objective ob;
	
	public void onEnable(){
		getServer().getPluginManager().registerEvents(this, this);
	}
	public void onJoin(PlayerJoinEvent e){
		refresh(e.getPlayer());	
	}
	
	private void refresh(final Player p){
		Bukkit.getScheduler().runTaskTimer (this, new Runnable(){
			public void run(){
				if(p.getPlayer().isOnline()){
					User user = User.get((p));
					ob.setDisplayName("§eMINECAST.PL");
					ob.setDisplaySlot(DisplaySlot.SIDEBAR);
					Score s1 = ob.getScore(Bukkit.getOfflinePlayer(""));
					s1.setScore(10);
					Score s2 = ob.getScore(Bukkit.getOfflinePlayer("§7Nick: §e" + user.getName()));
					s2.setScore(9);
					if(user.getGuild() != null){
						Score s3 = ob.getScore(Bukkit.getOfflinePlayer("§7Gildia: §e" + user.getGuild()));
						s3.setScore(8);
					}else{
						Score s3 = ob.getScore(Bukkit.getOfflinePlayer("§7Gildia: §eBrak gildii"));
						s3.setScore(8);
					}
					Score s4 = ob.getScore(Bukkit.getOfflinePlayer("§7Punkty: §e" + user.getRank().getPoints()));
					s4.setScore(7);
					Score s5 = ob.getScore(Bukkit.getOfflinePlayer("§7Zabojstwa: §e" + user.getRank().getKills()));
					s5.setScore(6);
					Score s6 = ob.getScore(Bukkit.getOfflinePlayer("§7Zgony: §e" + user.getRank().getDeaths()));
					s6.setScore(5);
					Score s7 = ob.getScore(Bukkit.getOfflinePlayer("§7Pozycja: §e" + RankManager.getInstance().getPosition(user)));
					s7.setScore(4);
				}
			}
		}, 0, 40);
	}
}

 

Odnośnik do komentarza
https://skript.pl/temat/20182-scoreboard-sidebar/
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

scoreboard sie nie pojawia, bo nie tworzysz dla gracza scoreboarda i go nie ustawiasz, a jedynie edytujesz objective, który też nie jest przypisany do żadnego scoreboarda.

ps:

if(p.getPlayer().isOnline()){

jeżeli robisz to w listenerze eventu PlayerJoinEvent, to ten warunek jest zbędny

new Runnable(){

java 8 wprowadza lambdy, używaj ich : <

Bukkit.getOfflinePlayer("")

musisz pobierać jeszcze jego nazwe, bo tak to zwróci Ci referencje do tego obiektu, a nie jego nazwe.

if(user.getGuild() != null){
						Score s3 = ob.getScore(Bukkit.getOfflinePlayer("§7Gildia: §e" + user.getGuild()));
						s3.setScore(8);
					}else{
						Score s3 = ob.getScore(Bukkit.getOfflinePlayer("§7Gildia: §eBrak gildii"));
						s3.setScore(8);
					}

użyj ternary operatora.

no i tworzenie taska jest zbędne, bo nie masz tutaj żadnego timera, scoreboard odświeżaj tylko przy aktualizacji informacji, nie obciążaj serwera zbędnymi taskami.

Odnośnik do komentarza
https://skript.pl/temat/20182-scoreboard-sidebar/#findComment-136849
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...