Sie sind nicht angemeldet.

  • Anmelden

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

1

Montag, 9. Juli 2018, 15:44

Scoreboard [Packets] sortieren?

Hallo, liebe Nitrado Community!
Ich habe vor kurzem ein Scoreboard für mein Lobbysystem gecodet, welches mit Packets läuft (Sonst hätte ich keine Tab - Prefix - möchte aber bei Packets bleiben). Nun habe ich das Problem, dass die Scores nicht sortiert angezeigt werden, sondern einfach hintereinander und mit dem Score 0 (Siehe Anhang).

Ich hoffe, dass mir jemand weiter helfen kann und freue mich auf zahlreiche (hilfreiche) Antworten. (PS: Auf Anfrage bekommt ihr auch den SourceCode vom Scoreboard)
LG
Choosen211 (aka DavincisSohn);
»Choosen211« hat folgende Datei angehängt:

MadeByProxxy

User / Kunde

  • »MadeByProxxy« ist männlich

Beiträge: 17

  • Nachricht senden

2

Mittwoch, 11. Juli 2018, 00:37

Ehh. Hast du den Scores einen Score zugewiesen? 0-15?
Und hast du diese Scores dann auch sortiert?
Wenn nicht, liegts daran

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

3

Mittwoch, 11. Juli 2018, 11:39

So schaut das, bzw der Code aus: https://hastebin.com/agewudejoy.cpp

LynxPlay

User / Kunde

Beiträge: 123

  • Nachricht senden

4

Mittwoch, 11. Juli 2018, 23:02

Java-Quelltext

1
s1.setScore(13);
sollte eventuell aufgerufen werden bevor du die Packet instancen erstellst und sendest:

Java-Quelltext

1
2
3
4
5
6
public PacketPlayOutScoreboardScore(ScoreboardScore var1) {
        this.a = var1.getPlayerName();
        this.b = var1.getObjective().getName();
        this.c = var1.getScore();
        this.d = PacketPlayOutScoreboardScore.EnumScoreboardAction.CHANGE;
    }


Der score wird beim constructor-call in ein eingenes Field kopiert und kann nicht mehr geändert werden nach diesem.
Never stop lerning or u will fall behind

PS: Electro Swing is just godlike (1931 - 1953)

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

5

Donnerstag, 12. Juli 2018, 21:32

Könntest du mir bitte genau im Code anzeichnen, bzw. zeigen, wo ich das hinmachen soll?


Ich kenne mich bei Packets überhaupt nicht aus, aber ohne die geht's nicht, wenn man ein Scoreboard und einen Tab-Prefix haben will.. :/
Ich verzweifle...

BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

6

Donnerstag, 12. Juli 2018, 23:33

Geht schon ohne Packets, man muss nur wissen wie.

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

7

Freitag, 13. Juli 2018, 10:40

Ich möchte das halt mit Packets.. Ich hab schon alles ohne Packets versucht, ohne Erfolg... :/

BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

8

Freitag, 13. Juli 2018, 22:38

Bei mir hat es früher immer funktioniert ;). Wenn du mit den Packets nicht zurechtkommst, wirst du eben Spigot nutzen müssen. Hinter diesen Methoden stecken auch nur NMS-Pakete. Ich hab da noch ne steinalte, verstaubte, Klasse rumliegen, mit der ich das früher gelöst habe. War Ingame wunderschön und hat eigentlich immer gut funktioniert. Die Performance ist halt davon abhängig, wie oft du updatest. Kann man sicher noch verbessern, ist eben noch von früher.

Spoiler Spoiler


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package scoreboards;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
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.Scoreboard;

import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class SidebarAndTab implements Listener {
	
	private JavaPlugin main;
	
	public SidebarAndTab( JavaPlugin main ) {
		this.main = main;
		Bukkit.getServer().getPluginManager().registerEvents( this, main );
	}

	public Map< String, List< String > > oldLines = new HashMap< String, List< String > >();
	public Map< String, String > prefix = new HashMap< String, String >();

	public void sendScoreboard( Player p ) {
		Bukkit.getScheduler().runTaskLater( main, new Runnable() {
			
			@Override
			public void run() {
				Scoreboard board = main.getServer().getScoreboardManager().getNewScoreboard();
				Objective sidebar = board.registerNewObjective( "abc", "xyz" );
				
				sidebar.setDisplaySlot( DisplaySlot.SIDEBAR );
				sidebar.setDisplayName( "ScoreboardName" );
				
				/* Sidebar-Scoreboard */
				List<String> fullBoard = new ArrayList<String>();
				fullBoard.add( "§8§m--------------");
				fullBoard.add( "§8» §7Geld: §e" + 0 );
				fullBoard.add( "§8» §7Tode: §e" + 0 );
				fullBoard.add( "§8» §7Kills: §e" + 0 );
				fullBoard.add( "§8» §7KillStreak: §e" + 0 );
				fullBoard.add( "§8» §7KD: §e" + 0 );
				fullBoard.add( "§8§m--------------§r " );
				
				List<String> old = new ArrayList<String>();
				
				int i = fullBoard.size() - 1;
				for( String s : fullBoard ) {
					sidebar.getScore( s ).setScore( i );
					old.add( s );
					i--;
				}
				
				oldLines.put( p.getName(), old );
				
				/* Tab-Ranks - Rank:Prefix */
				List< String > tabRanks = new ArrayList< String >();
				tabRanks.add( "Admin:§cA §8| §c" );
				tabRanks.add( "Mod:§9M §8| §9" );
				tabRanks.add( "Supp:§dS §8| §d" );
				tabRanks.add( "Retro:§6R §8| §6" );
				tabRanks.add( "User:§7U §8| §7" );
				
				int place = 1;
				for( String s : tabRanks ) {
					String[] split = s.split( ":" );
					board.registerNewTeam( place + split[ 0 ] );
					board.getTeam( place + split[ 0 ] ).setPrefix( split[ 1 ].replace( "&", "§" ) );
					prefix.put( split[ 0 ].toLowerCase(), place + split[ 0 ] );
					place++;
				}
				
				p.setScoreboard(board);
				for( Player player : Bukkit.getOnlinePlayers() ) {
					updatePrefixes( player );
				}
			}
		}, 5L );
	}

	public void updateScoreboard( Player p ) {
		try {
			Scoreboard board = p.getScoreboard();
			Objective obj = board.getObjective( "abc" );
			
			/* Sidebar-Scoreboard */
			List< String > fullBoard = new ArrayList< String >();
			fullBoard.add( "§8§m--------------");
			fullBoard.add( "§8» §7Geld: §e" + 0 );
			fullBoard.add( "§8» §7Tode: §e" + 0 );
			fullBoard.add( "§8» §7Kills: §e" + 0 );
			fullBoard.add( "§8» §7KillStreak: §e" + 0 );
			fullBoard.add( "§8» §7KD: §e" + 0 );
			fullBoard.add( "§8§m--------------§r " );
			
			List< String > old = new ArrayList< String >();
			
			int i = fullBoard.size() - 1;
			for( String s : fullBoard ) {
				if( !oldLines.get( p.getName() ).contains( s ) ) {
					obj.getScore( s ).setScore( i );
					old.add( s );
				} else {
					oldLines.get( p.getName() ).remove( s );
					old.add( s );
				}
				i--;
			}
			
			for( String s : oldLines.get( p.getName() ) ) {
				board.resetScores( s );
			}
			
			oldLines.remove( p.getName() );
			oldLines.put( p.getName(), old );
		} catch ( Exception ex ) {
			ex.printStackTrace();
		}
	}

	@SuppressWarnings( "deprecation" )
	public void updatePrefixes( Player p ) {
		try {
			for( Player t : Bukkit.getOnlinePlayers() ) {
				PermissionUser pu = PermissionsEx.getUser( t );
				String team = prefix.get( pu.getGroups()[ 0 ].getName().toLowerCase() );
				if( !p.getScoreboard().getTeam( team ).hasEntry( t.getName() ) ) 
					p.getScoreboard().getTeam( team ).addEntry( t.getName() );
			}
		} catch ( Exception ex ) {}
	}

	@EventHandler
	public void onJoin( PlayerJoinEvent event ) {
		sendScoreboard( event.getPlayer() );
	}
}


Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

9

Samstag, 14. Juli 2018, 12:04

Bei mir hat es früher immer funktioniert ;). Wenn du mit den Packets nicht zurechtkommst, wirst du eben Spigot nutzen müssen. Hinter diesen Methoden stecken auch nur NMS-Pakete. Ich hab da noch ne steinalte, verstaubte, Klasse rumliegen, mit der ich das früher gelöst habe. War Ingame wunderschön und hat eigentlich immer gut funktioniert. Die Performance ist halt davon abhängig, wie oft du updatest. Kann man sicher noch verbessern, ist eben noch von früher.

Spoiler Spoiler


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package scoreboards;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
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.Scoreboard;

import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class SidebarAndTab implements Listener {
	
	private JavaPlugin main;
	
	public SidebarAndTab( JavaPlugin main ) {
		this.main = main;
		Bukkit.getServer().getPluginManager().registerEvents( this, main );
	}

	public Map< String, List< String > > oldLines = new HashMap< String, List< String > >();
	public Map< String, String > prefix = new HashMap< String, String >();

	public void sendScoreboard( Player p ) {
		Bukkit.getScheduler().runTaskLater( main, new Runnable() {
			
			@Override
			public void run() {
				Scoreboard board = main.getServer().getScoreboardManager().getNewScoreboard();
				Objective sidebar = board.registerNewObjective( "abc", "xyz" );
				
				sidebar.setDisplaySlot( DisplaySlot.SIDEBAR );
				sidebar.setDisplayName( "ScoreboardName" );
				
				/* Sidebar-Scoreboard */
				List fullBoard = new ArrayList();
				fullBoard.add( "§8§m--------------");
				fullBoard.add( "§8» §7Geld: §e" + 0 );
				fullBoard.add( "§8» §7Tode: §e" + 0 );
				fullBoard.add( "§8» §7Kills: §e" + 0 );
				fullBoard.add( "§8» §7KillStreak: §e" + 0 );
				fullBoard.add( "§8» §7KD: §e" + 0 );
				fullBoard.add( "§8§m--------------§r " );
				
				List old = new ArrayList();
				
				int i = fullBoard.size() - 1;
				for( String s : fullBoard ) {
					sidebar.getScore( s ).setScore( i );
					old.add( s );
					i--;
				}
				
				oldLines.put( p.getName(), old );
				
				/* Tab-Ranks - Rank:Prefix */
				List< String > tabRanks = new ArrayList< String >();
				tabRanks.add( "Admin:§cA §8| §c" );
				tabRanks.add( "Mod:§9M §8| §9" );
				tabRanks.add( "Supp:§dS §8| §d" );
				tabRanks.add( "Retro:§6R §8| §6" );
				tabRanks.add( "User:§7U §8| §7" );
				
				int place = 1;
				for( String s : tabRanks ) {
					String[] split = s.split( ":" );
					board.registerNewTeam( place + split[ 0 ] );
					board.getTeam( place + split[ 0 ] ).setPrefix( split[ 1 ].replace( "&", "§" ) );
					prefix.put( split[ 0 ].toLowerCase(), place + split[ 0 ] );
					place++;
				}
				
				p.setScoreboard(board);
				for( Player player : Bukkit.getOnlinePlayers() ) {
					updatePrefixes( player );
				}
			}
		}, 5L );
	}

	public void updateScoreboard( Player p ) {
		try {
			Scoreboard board = p.getScoreboard();
			Objective obj = board.getObjective( "abc" );
			
			/* Sidebar-Scoreboard */
			List< String > fullBoard = new ArrayList< String >();
			fullBoard.add( "§8§m--------------");
			fullBoard.add( "§8» §7Geld: §e" + 0 );
			fullBoard.add( "§8» §7Tode: §e" + 0 );
			fullBoard.add( "§8» §7Kills: §e" + 0 );
			fullBoard.add( "§8» §7KillStreak: §e" + 0 );
			fullBoard.add( "§8» §7KD: §e" + 0 );
			fullBoard.add( "§8§m--------------§r " );
			
			List< String > old = new ArrayList< String >();
			
			int i = fullBoard.size() - 1;
			for( String s : fullBoard ) {
				if( !oldLines.get( p.getName() ).contains( s ) ) {
					obj.getScore( s ).setScore( i );
					old.add( s );
				} else {
					oldLines.get( p.getName() ).remove( s );
					old.add( s );
				}
				i--;
			}
			
			for( String s : oldLines.get( p.getName() ) ) {
				board.resetScores( s );
			}
			
			oldLines.remove( p.getName() );
			oldLines.put( p.getName(), old );
		} catch ( Exception ex ) {
			ex.printStackTrace();
		}
	}

	@SuppressWarnings( "deprecation" )
	public void updatePrefixes( Player p ) {
		try {
			for( Player t : Bukkit.getOnlinePlayers() ) {
				PermissionUser pu = PermissionsEx.getUser( t );
				String team = prefix.get( pu.getGroups()[ 0 ].getName().toLowerCase() );
				if( !p.getScoreboard().getTeam( team ).hasEntry( t.getName() ) ) 
					p.getScoreboard().getTeam( team ).addEntry( t.getName() );
			}
		} catch ( Exception ex ) {}
	}

	@EventHandler
	public void onJoin( PlayerJoinEvent event ) {
		sendScoreboard( event.getPlayer() );
	}
}

Ich danke dir für den Code, aber es werden keine Prefixe im Tab gesetzt... ?(

BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

10

Samstag, 14. Juli 2018, 18:06

Hast du im Bereich

Quellcode

1
/* Tab-Ranks - Rank:Prefix */
auch die richten PEX Rang-Namen verwendet?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlvckBytes« (14. Juli 2018, 18:15)


Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

11

Samstag, 14. Juli 2018, 21:06

Hast du im Bereich

Quellcode

1
/* Tab-Ranks - Rank:Prefix */
auch die richten PEX Rang-Namen verwendet?

Ich Danke dir so sehr!!!!!!!!!!!!!
Danke!!
Nach 3 Wochen ... Ist jemand so kompetent!!
Danke!!
Jetzt kann ich endlich wieder normal schlafen.. xD
Danke!!!!

OMG DANKE!!!! :) :modo: :D ;) ;) ;) ;) ;) ;) ;) ;) ;) ;)
//EDIT
Eine Frage hätte ich da noch:

Vorher wurden die Ränge beim Testen (mit nur der Hälfte an Rängen) noch im Tab sortiert, jetzt aber nicht mehr..

Hier der Code: https://hastebin.com/hatuxavexo.cs

Ich bitte um ein letztes Mal;

;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Choosen211« (14. Juli 2018, 21:35)


BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

12

Sonntag, 15. Juli 2018, 00:57

Haha, freut mich dass ich dir helfen konnte :D. Ich kenne das Gefühl wie es ist wenn man bei etwas einfach nicht weiter kommt nämlich zu gut...
Dein Problem habe ich eben gelöst, kurz ausgedrückt: Die Schleife zählt ja einen Integer hoch, welcher am Anfang steht, so wie: 1Owner, 2Admin, 3... usw. Aber da du mehr als 9 Ränge hast ging die Zahlenfolge dann so weiter: 1 2 .. 9 10 11. Und das Problem dabei ist, dass die "Leading Zeros" fehlen, denn nur dann geht die Ordnung ordnungsgemäß. Ich hab es jetzt mal auf 2 Stellen formatiert, 01 02 .. 09 10 11 usw. Also hast du nun 99 mögliche Ränge, das sollte ausreichen, hoffe ich :D.

Hier der Code, habe ihn dir auch nochmal etwas aufgeräumt. Das mit dem API-Call hab ich rausnehmen müssen, da ich es hier ja nicht laufen habe. Also bitte wieder hinzufügen. Hab da nur ne 0 reingemacht.

Spoiler Spoiler


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
package me.blvckbytes.sbtst.main;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;

import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class BoardTest implements Listener {

    public Map< String, List< String > > oldLines = new HashMap< String, List< String > >();
    public Map< String, String > prefix = new HashMap< String, String >();

    public BoardTest() {
        for( Player t : Bukkit.getOnlinePlayers() ) {
            onJoin( new PlayerJoinEvent( t, null ) );
        }

        enableUpdating();
    }

    public void sendScoreboard( Player p ) {
        Bukkit.getScheduler().runTaskLater( Main.getInstance(), new Runnable() {

            @Override
            public void run() {
                Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
                Objective sidebar = board.registerNewObjective( "abc", "xyz" );
                UUID UUID = p.getUniqueId();
                sidebar.setDisplaySlot( DisplaySlot.SIDEBAR );
                sidebar.setDisplayName( "  §7§l✘ §n§l§3XyXyXy.net §7§l✘" );

				/* Sidebar-Scoreboard */
                List<String> fullBoard = getBoardLines( p );
                List<String> old = new ArrayList<String>();

                int i = fullBoard.size() - 1;
                for( String s : fullBoard ) {
                    sidebar.getScore( s ).setScore( i );
                    old.add( s );
                    i--;
                }

                oldLines.put( p.getName(), old );

				/* Tab-Ranks - Rank:Prefix */
                List< String > tabRanks = new ArrayList< String >();
                tabRanks.add( "Owner:§4O §7» §4" );
                tabRanks.add( "Administrator:§4A §7» §4" );
                tabRanks.add( "Sr.Mod:§cSM §7» §c" );
                tabRanks.add( "Developer:§3D §7» §3" );
                tabRanks.add( "Moderator:§eM §7» §e" );
                tabRanks.add( "Supporter:§aS §7» §a" );
                tabRanks.add( "Builder:§2B §7» §2" );
                tabRanks.add( "YouTube:§5YT §7» §5" );
                tabRanks.add( "Premium+:§bP+ §7» §b" );
                tabRanks.add( "Premium:§6P §7» §6" );
                tabRanks.add( "Spieler:§7S §7» §7" );

                int place = 1;
                for( String s : tabRanks ) {
                    String[] split = s.split( ":" );
                    String number = String.format( "%02d", place );
                    board.registerNewTeam( number + split[ 0 ] );
                    board.getTeam( number + split[ 0 ] ).setPrefix( split[ 1 ].replace( "&", "§" ) );
                    prefix.put( split[ 0 ].toLowerCase(), number + split[ 0 ] );
                    place++;
                }

                p.setScoreboard(board);
                for( Player player : Bukkit.getOnlinePlayers() ) {
                    updatePrefixes( player );
                }
            }
        }, 5L );
    }

    public void updateScoreboard( Player p ) {
        try {
            Scoreboard board = p.getScoreboard();
            Objective obj = board.getObjective( "abc" );
            UUID UUID = p.getUniqueId();

			/* Sidebar-Scoreboard */
            List<String> fullBoard = getBoardLines( p );
            List< String > old = new ArrayList< String >();

            int i = fullBoard.size() - 1;
            for( String s : fullBoard ) {
                if( !oldLines.get( p.getName() ).contains( s ) ) {
                    obj.getScore( s ).setScore( i );
                    old.add( s );
                } else {
                    oldLines.get( p.getName() ).remove( s );
                    old.add( s );
                }
                i--;
            }

            for( String s : oldLines.get( p.getName() ) ) {
                board.resetScores( s );
            }

            oldLines.remove( p.getName() );
            oldLines.put( p.getName(), old );
        } catch ( Exception ex ) {
            ex.printStackTrace();
        }
    }

    // Gibt einfach die Liste mit den Zeilen zurück, sodass diese nur einmal im Code stehen muss
    private List< String > getBoardLines( Player p ) {
        List<String> fullBoard = new ArrayList<String>();
        fullBoard.add("");
        fullBoard.add("§7§l» §5Dein Rang");
        fullBoard.add( getSBRank( p ) );
        fullBoard.add(" ");
        fullBoard.add("§7§l» §6Coins");
        fullBoard.add("§7§l➥ §7" + 0);
        fullBoard.add("  ");
        fullBoard.add("§7§l» §aDeine Onlinezeit");
        fullBoard.add("§7§l➥ §7" + "§e102h");
        fullBoard.add("   ");
        fullBoard.add("§7§l» §eForum");
        fullBoard.add("§7§l➥ §7xyxyxy.net");
        fullBoard.add("    ");
        fullBoard.add("§7§l» §bTeamspeak");
        fullBoard.add("§7§l➥ §7xyxyxy.net ");
        return fullBoard;
    }

    // Holt den Rang-String je nach PEX-Rang und gibt ihn zurück
    private String getSBRank( Player p ) {
        if ((PermissionsEx.getUser(p).inGroup("Owner")))
            return "§7§l➥ §7 §4Owner";
        else if (PermissionsEx.getUser(p).inGroup("Administrator"))
            return "§7§l➥ §7 §4Admin";
        else if (PermissionsEx.getUser(p).inGroup("Sr.Mod"))
            return "§7§l➥ §7 §cSr.Mod";
        else if (PermissionsEx.getUser(p).inGroup("Moderator"))
            return "§7§l➥ §7 §eModerator";
        else if (PermissionsEx.getUser(p).inGroup("Supporter"))
            return "§7§l➥ §7 §aSupporter";
        else if (PermissionsEx.getUser(p).inGroup("Developer"))
            return "§7§l➥ §7 §3Developer";
        else if (PermissionsEx.getUser(p).inGroup("YouTube"))
            return "§7§l➥ §7 §5YouTube";
        else if (PermissionsEx.getUser(p).inGroup("Premium+"))
            return "§7§l➥ §7 §bPremium+";
        else if (PermissionsEx.getUser(p).inGroup("Builder"))
            return "§7§l➥ §7 §2Builder";
        else if (PermissionsEx.getUser(p).inGroup("Premium"))
            return "§7§l➥ §7 §6Premium";
        else
            return "§7§l➥ §7 §7Spieler";
    }

    @SuppressWarnings( "deprecation" )
    public void updatePrefixes( Player p ) {
        try {
            for( Player t : Bukkit.getOnlinePlayers() ) {
                PermissionUser pu = PermissionsEx.getUser( t );
                String team = prefix.get( pu.getGroups()[ 0 ].getName().toLowerCase() );
                if( !p.getScoreboard().getTeam( team ).hasEntry( t.getName() ) )
                    p.getScoreboard().getTeam( team ).addEntry( t.getName() );
            }
        } catch ( Exception ex ) {}
    }

    private void enableUpdating() {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {

            @Override
            public void run() {

                for( Player t : Bukkit.getOnlinePlayers() ) {
                    if( t.getScoreboard() == null )
                        continue;

                    //ScoreBoard.updateScoreboard(t);
                    updateScoreboard(t);
                    updatePrefixes(t);
                }

            }

        },40, 20);
    }

    @EventHandler
    public void onJoin( PlayerJoinEvent event ) {
        sendScoreboard( event.getPlayer() );
    }
}



Bin echt froh dass ich dir helfen konnte :). Bitte aber noch sagen, ob dass dein Problem gelöst hat! BTW: Neu joinen nach einem Reload ist nun unnötig :).

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

13

Sonntag, 15. Juli 2018, 09:17

Jetzt klappt es!!!

DANKE!!!

OMG!!!!! :))

ENDLICH!!

Hab so lange gesucht, probiert, aber jetzt geht es!!

Danke!!

∞ Danke!!!

LG

Choosen211

BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

14

Sonntag, 15. Juli 2018, 13:55

:)

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

15

Sonntag, 15. Juli 2018, 15:29

Hier noch eine Frage:

Nach längerer Zeit, bzw. wenn ich den Server reloade und dann joine, kommt eine NullPointerException:

[15:26:34 WARN]: java.lang.NullPointerException
[15:26:34 WARN]: at me.choosen.lobbysystem.utils.SidebarAndTab.updateScoreboard(SidebarAndTab.java:104)
[15:26:34 WARN]: at me.choosen.lobbysystem.utils.SidebarAndTab$2.run(SidebarAndTab.java:196)
[15:26:34 WARN]: at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71)
[15:26:34 WARN]: at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350)

BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

16

Sonntag, 15. Juli 2018, 15:43

Kannst du deine aktuelle Klasse mal reinstellen? Ich möchte nur zu 100% sicher gehen, dass die Zeilennummern passen.

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

17

Sonntag, 15. Juli 2018, 20:48


BlvckBytes

User / Kunde

  • »BlvckBytes« ist männlich

Beiträge: 798

Wohnort: (*blvckbytes).home

Beruf: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Nachricht senden

18

Montag, 16. Juli 2018, 01:21

Das müsste es gefixt haben: https://hastebin.com/cafiyaseqa.cs
Bei der neuen Zeile steht auch eine kleine Beschreibung dabei.

Choosen211

User / Kunde

  • »Choosen211« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

19

Montag, 16. Juli 2018, 10:49

Danke!!! ;)

Sehr nett!!!