Skip to content

Commit 954f18f

Browse files
committed
Refactoring updater and fix exceptions
1 parent 840618b commit 954f18f

5 files changed

Lines changed: 22 additions & 39 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>me.iwareq.scoreboard</groupId>
88
<artifactId>ScoreboardAPI</artifactId>
9-
<version>2.1</version>
9+
<version>2.1.1</version>
1010

1111
<properties>
1212
<maven.compiler.source>8</maven.compiler.source>

src/main/java/me/iwareq/scoreboard/Scoreboard.java

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import cn.nukkit.Player;
44
import cn.nukkit.Server;
55
import lombok.Getter;
6-
import lombok.ToString;
76
import me.iwareq.scoreboard.line.ScoreboardLine;
87
import me.iwareq.scoreboard.manager.ScoreboardManager;
98
import me.iwareq.scoreboard.packet.RemoveObjectivePacket;
@@ -20,31 +19,24 @@
2019
import java.util.Set;
2120
import java.util.function.BiConsumer;
2221

23-
@ToString
2422
public class Scoreboard {
2523

26-
@Getter
27-
private final Set<Player> viewers = new HashSet<>();
28-
2924
private final String displayName;
30-
31-
private final Map<Integer, ScoreboardLine> lines = new HashMap<>();
32-
3325
private final BiConsumer<Scoreboard, Player> callback;
34-
3526
private final ScoreboardManager manager;
27+
3628
@Getter
37-
private final int updateTime;
29+
private final Set<Player> viewers = new HashSet<>();
30+
private final Map<Integer, ScoreboardLine> lines = new HashMap<>();
3831

3932
private int lastIndex;
4033

4134
public Scoreboard(String displayName, BiConsumer<Scoreboard, Player> callback, int updateTime) {
4235
this.displayName = displayName;
4336
this.callback = callback;
44-
this.updateTime = updateTime;
4537
this.manager = ScoreboardAPI.getInstance().getScoreboardManager();
4638

47-
Server.getInstance().getScheduler().scheduleRepeatingTask(new ScoreboardUpdater(this), 20, true);
39+
Server.getInstance().getScheduler().scheduleRepeatingTask(new ScoreboardUpdater(this), updateTime, true);
4840
}
4941

5042
public void setLine(int index, String text) {
@@ -73,18 +65,18 @@ private void checkLineIndex(int index) {
7365
public void refresh() {
7466
this.lines.clear();
7567
this.lastIndex = 0;
76-
this.viewers.removeIf(p -> {
77-
boolean remove = !p.isConnected() || !p.isOnline();
68+
this.viewers.removeIf(viewer -> {
69+
boolean remove = !viewer.isConnected() || !viewer.isOnline();
7870
if (remove) {
79-
this.manager.removeScoreboard(p);
71+
this.manager.removeScoreboard(viewer);
8072
}
8173

8274
return remove;
8375
});
8476

85-
this.viewers.forEach(player -> {
86-
this.hide(player, false);
87-
this.show(player, false);
77+
this.viewers.forEach(viewer -> {
78+
this.hide(viewer, false);
79+
this.show(viewer, false);
8880
});
8981
}
9082

@@ -112,7 +104,7 @@ private void show(Player player, boolean add) {
112104
player.dataPacket(scorePacket);
113105

114106
if (add) {
115-
this.manager.addScoreboard(player, this);
107+
this.manager.setScoreboard(player, this);
116108
}
117109
}
118110
}

src/main/java/me/iwareq/scoreboard/ScoreboardAPI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class ScoreboardAPI extends PluginBase {
88

99
@Getter
1010
private static ScoreboardAPI instance;
11+
1112
@Getter
1213
private ScoreboardManager scoreboardManager;
1314

src/main/java/me/iwareq/scoreboard/manager/ScoreboardManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
import lombok.Getter;
55
import me.iwareq.scoreboard.Scoreboard;
66

7-
import java.util.HashMap;
87
import java.util.Map;
8+
import java.util.concurrent.ConcurrentHashMap;
99

1010
public class ScoreboardManager {
1111

1212
@Getter
13-
private final Map<String, Scoreboard> scoreboards = new HashMap<>();
13+
private final Map<String, Scoreboard> scoreboards = new ConcurrentHashMap<>();
1414

1515
public Scoreboard getScoreboard(Player player) {
1616
return this.scoreboards.get(player.getName());
1717
}
1818

19-
public void addScoreboard(Player player, Scoreboard scoreboard) {
19+
public void setScoreboard(Player player, Scoreboard scoreboard) {
2020
this.scoreboards.put(player.getName(), scoreboard);
2121
}
2222

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,16 @@
11
package me.iwareq.scoreboard.updater;
22

3-
import cn.nukkit.scheduler.AsyncTask;
3+
import cn.nukkit.scheduler.Task;
4+
import lombok.AllArgsConstructor;
45
import me.iwareq.scoreboard.Scoreboard;
56

6-
public class ScoreboardUpdater extends AsyncTask {
7+
@AllArgsConstructor
8+
public class ScoreboardUpdater extends Task {
79

810
private final Scoreboard scoreboard;
911

10-
private int time;
11-
12-
public ScoreboardUpdater(Scoreboard scoreboard) {
13-
this.scoreboard = scoreboard;
14-
this.time = scoreboard.getUpdateTime();
15-
}
16-
1712
@Override
18-
public void onRun() {
19-
this.time--;
20-
if (this.time <= 0) {
21-
scoreboard.refresh();
22-
23-
this.time = scoreboard.getUpdateTime();
24-
}
13+
public void onRun(int currentTick) {
14+
this.scoreboard.refresh();
2515
}
2616
}

0 commit comments

Comments
 (0)