Skip to content

Commit 926c0ad

Browse files
committed
feat: works correctly
1 parent 586dca1 commit 926c0ad

File tree

11 files changed

+69
-25
lines changed

11 files changed

+69
-25
lines changed

build.gradle.kts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,22 @@ tasks {
8585
runServer {
8686
minecraftVersion("1.16.5")
8787
ignoreUnsupportedJvm()
88+
downloadPlugins {
89+
modrinth("decentholograms", libs.versions.decentHolograms.get())
90+
modrinth("placeholderapi", libs.versions.placeholderApi.get())
91+
github(
92+
"AzisabaNetwork",
93+
"PlayerSettings",
94+
"v1.1.0",
95+
"PlayerSettings.jar",
96+
)
97+
// github(
98+
// "AzisabaNetwork",
99+
// "KDStatusReloaded",
100+
// libs.versions.kdStatusReloaded.get(),
101+
// "KDStatusReloaded-${libs.versions.kdStatusReloaded.get()}-all.jar",
102+
// )
103+
}
88104
}
89105

90106
compileJava {

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ runPaper = "3.0.0"
77
spigotApi = "1.16.5-R0.1-SNAPSHOT"
88
configLib = "4.6.1"
99
caffeine = "3.2.2"
10-
kdStatusReloaded = "2.1.0"
10+
kdStatusReloaded = "2.1.1"
1111
playerSettings = "1.0.0"
1212
decentHolograms = "2.8.11"
1313
placeholderApi = "2.11.6"

src/main/java/net/azisaba/rankingdisplayer/RankingDisplayer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void run() {
9797

9898
@Override
9999
public void onDisable() {
100-
leaderboardCache.shutdown();
100+
if(leaderboardCache != null) leaderboardCache.shutdown();
101101
PlayerRankCache.shutdown();
102102
}
103103

src/main/java/net/azisaba/rankingdisplayer/config/RDConfig.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ public static class ChatConfig {
1616

1717
@Configuration
1818
public static class HoloConfig {
19-
public Location displayLocation = new Location(Bukkit.getWorld("world"), 0, 0, 0);
19+
public LocationData displayLocation = new LocationData("world", 0, 0, 0);
20+
}
21+
22+
public record LocationData(
23+
String worldName,
24+
int x,
25+
int y,
26+
int z
27+
) {
28+
public Location toLocation() {
29+
return new Location(Bukkit.getWorld(worldName), x, y, z);
30+
}
2031
}
2132
}

src/main/java/net/azisaba/rankingdisplayer/holo/decent/DHHoloManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static boolean addHolo(Location holoLocation) {
3434
}
3535

3636
public static boolean placeFromConfig() {
37-
return addHolo(RankingDisplayer.getRdConfig().holo.displayLocation);
37+
return addHolo(RankingDisplayer.getRdConfig().holo.displayLocation.toLocation());
3838
}
3939

4040
public static void getAllHolo() {

src/main/java/net/azisaba/rankingdisplayer/holo/decent/RankingHolo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ public class RankingHolo {
1515
public static final List<String> pageNames = Arrays.asList("Daily", "Monthly", "Total");
1616
private static final String STATUS_HEADER = ChatColor.AQUA + Strings.repeat("=", 8) + ChatColor.GOLD + " Kill Ranking " + ChatColor.AQUA + Strings.repeat("=", 8);
1717
private static final String STATUS_FOOTER = ChatColor.AQUA + Strings.repeat("=", 25);
18-
private static final String USER_STATUS = ChatColor.BLUE + "YOU " + ChatColor.RED + ">> " + ChatColor.YELLOW + "%rankingdisplayer_player_ranking_{timeunit}%位 " + ChatColor.GOLD + "{player}" + ChatColor.RED + ": " + ChatColor.AQUA + "%rankingdisplayer_player_kill_count_{timeunit}%" + " kill(s)";
19-
private static final String LAST_UPDATED = ChatColor.RED + "ランキング最終更新: " + ChatColor.GREEN + "%rankingdisplayer_last_update_{timeunit}%秒前";
18+
private static final String USER_STATUS = ChatColor.BLUE + "YOU " + ChatColor.RED + ">> " + ChatColor.YELLOW + "%rankingdisplayer_playerranking_{timeunit}%位 " + ChatColor.GOLD + "{player}" + ChatColor.RED + ": " + ChatColor.AQUA + "%rankingdisplayer_playerkillcount_{timeunit}%" + " kill(s)";
19+
private static final String LAST_UPDATED = ChatColor.RED + "ランキング最終更新: " + ChatColor.GREEN + "%rankingdisplayer_lastupdate_{timeunit}%秒前";
2020
private static final int RANKING_SIZE = 7;
2121

2222
/**
@@ -51,6 +51,6 @@ private static void setRankingLines(HologramPage targetPage, int maxSize, String
5151
}
5252
targetPage.addLine(new HologramLine(targetPage, targetPage.getNextLineLocation(), STATUS_FOOTER));
5353
targetPage.addLine(new HologramLine(targetPage, targetPage.getNextLineLocation(), USER_STATUS.replace("{timeunit}", timeUnitName)));
54-
targetPage.addLine(new HologramLine(targetPage, targetPage.getNextLineLocation(), LAST_UPDATED.replace("{timeunit}", timeUnitName)));
54+
// targetPage.addLine(new HologramLine(targetPage, targetPage.getNextLineLocation(), LAST_UPDATED.replace("{timeunit}", timeUnitName)));
5555
}
5656
}

src/main/java/net/azisaba/rankingdisplayer/holo/leaderboard/LeaderboardCache.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.azisaba.rankingdisplayer.holo.leaderboard;
22

3+
import net.azisaba.kdstatusreloaded.KDStatusReloaded;
34
import net.azisaba.kdstatusreloaded.api.KDSAPI;
45
import net.azisaba.kdstatusreloaded.playerkd.model.KDUserData;
56
import net.azisaba.rankingdisplayer.RankingDisplayer;
@@ -10,6 +11,7 @@
1011
import java.util.List;
1112
import java.util.UUID;
1213
import java.util.concurrent.ConcurrentHashMap;
14+
import java.util.logging.Logger;
1315

1416
public class LeaderboardCache {
1517
private static final int RANKING_SIZE = 7;
@@ -21,12 +23,13 @@ public LeaderboardCache(RankingDisplayer plugin) {
2123
updater = new BukkitRunnable() {
2224
@Override
2325
public void run() {
26+
KDStatusReloaded.getPlugin().getLogger().info("Updating...");
2427
doUpdate();
2528
}
2629
};
2730

2831
// Update leaderboard every 30 seconds
29-
updater.runTaskTimerAsynchronously(plugin, 1, 20 * 30);
32+
updater.runTaskTimerAsynchronously(plugin, 10, 20*30);
3033
}
3134

3235
public void shutdown() {
@@ -38,22 +41,29 @@ public List<LeaderboardLineData> getLines(RankingType type) {
3841
}
3942

4043
protected void doUpdate() {
44+
Logger logger = KDStatusReloaded.getPlugin().getLogger();
4145
for (RankingType type : RankingType.values()) {
4246
List<KDUserData> topList = KDSAPI.getTops(type.killCountType, RANKING_SIZE);
47+
logger.info("Processing for " + type.name() + " / size: " + topList.size());
4348

4449
List<LeaderboardLineData> rankingList = new ArrayList<>();
50+
logger.info("===== Result =====");
4551
for (int i = 0; i < RANKING_SIZE; i++) {
46-
if (rankingList.size() >= i) {
52+
if (topList.size() <= i) {
53+
logger.info(String.format("%d: %s", i+1, "なし"));
4754
// If not available
4855
rankingList.add(RankingEntryLine.getLine(
4956
EMPTY_UUID,
57+
"",
5058
i + 1,
5159
-1
5260
));
5361
} else {
5462
KDUserData kdUserData = topList.get(i);
63+
logger.info(String.format("%d: %s", i+1, kdUserData.name));
5564
rankingList.add(RankingEntryLine.getLine(
5665
kdUserData.uuid,
66+
kdUserData.name,
5767
i + 1,
5868
type.getKill(kdUserData)
5969
));

src/main/java/net/azisaba/rankingdisplayer/holo/leaderboard/LeaderboardLineData.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,27 @@
77

88
public record LeaderboardLineData(
99
UUID uuid,
10+
String dataPlayerName,
1011
boolean isNothing,
1112
String rankPrefix,
1213
String killSuffix
1314
) {
14-
public String getLine(UUID playerUuid, String playerName) {
15+
public String getLine(String playerName) {
1516
boolean isHiding = RankingHideManager.isHiding(uuid);
1617
if (isNothing) return rankPrefix;
1718

1819
StringBuilder builder = new StringBuilder(rankPrefix);
19-
if (uuid == playerUuid) {
20+
boolean isMe = dataPlayerName.equals(playerName);
21+
if (isMe) {
2022
// もし、自分自身なら先頭に"YOU"をついかする
2123
builder.insert(0, ChatColor.BLUE + "YOU" + ChatColor.RED + " » ");
2224
if (isHiding) builder.insert(0, ChatColor.DARK_RED + "(Hide) ");
2325
}
24-
if (isHiding && uuid != playerUuid) {
26+
if (isHiding && !isMe) {
2527
// 非公開 + 自分自身ではない 場合に"匿名プレイヤー"にする。
2628
builder.append(ChatColor.DARK_RED).append("{匿名プレイヤー}");
2729
} else {
28-
builder.append(playerName);
30+
builder.append(dataPlayerName);
2931
}
3032
builder.append(killSuffix);
3133
return builder.toString();

src/main/java/net/azisaba/rankingdisplayer/holo/leaderboard/RankingEntryLine.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
import java.util.UUID;
66

77
public class RankingEntryLine {
8-
public static LeaderboardLineData getLine(UUID uuid, int rank, int kill) {
8+
public static LeaderboardLineData getLine(UUID uuid, String name, int rank, int kill) {
99
boolean isNothing = kill <= 0;
10-
String rankPrefix = ChatColor.YELLOW + String.format("%d位", rank);
10+
String rankPrefix = ChatColor.YELLOW + String.format("%d位", rank) + " ";
1111
if (isNothing) {
1212
// If not available
13-
rankPrefix += ChatColor.GOLD + " なし";
13+
rankPrefix += ChatColor.GOLD + "なし";
1414
}
1515

1616
String killSuffix = ChatColor.RED + ": " + ChatColor.AQUA + kill + " kill(s)";
1717
return new LeaderboardLineData(
1818
uuid,
19+
name,
1920
isNothing,
2021
rankPrefix,
2122
killSuffix

src/main/java/net/azisaba/rankingdisplayer/holo/placeholder/RankingExpansion.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,31 @@ public boolean persist() {
3333
public @Nullable String onRequest(OfflinePlayer player, @NonNull String name) {
3434

3535
String[] args = name.split("_");
36-
if (args.length < 3) return null;
36+
// System.out.println("Got " + name);
37+
if (args.length < 2) return null;
3738

38-
String type = args[1];
39-
RankingType rankingType = RankingType.getType(args[2]);
39+
String type = args[0];
40+
RankingType rankingType = RankingType.getType(args[1]);
4041
if (rankingType == null) return null;
4142

4243
switch (type) {
4344
// %rankingdisplay_killranking_{timeUnitName}_{order}%
4445
case Names.KILL_RANKING -> {
45-
if (args.length != 4) return null;
46+
if (args.length != 3) return null;
4647
try {
47-
int order = Integer.parseInt(args[3]);
48-
return RankingDisplayer.getLeaderboardCache().getLines(rankingType).get(order).getLine(player.getUniqueId(), player.getName());
48+
int order = Integer.parseInt(args[2]);
49+
return RankingDisplayer.getLeaderboardCache().getLines(rankingType).get(order-1).getLine(player.getName());
4950
} catch (NumberFormatException e) {
5051
return null;
5152
}
5253
}
54+
5355
// %rankingdisplay_playerranking_{timeunit}%
5456
case Names.PLAYER_RANKING -> {
55-
return "" + KDSAPI.getPlayerRanking(rankingType.killCountType, player.getUniqueId());
57+
int rank = KDSAPI.getPlayerRanking(rankingType.killCountType, player.getUniqueId());
58+
return "" + (rank == -1 ? "?": rank);
5659
}
60+
5761
// %rankingdisplay_playerkillcount_{timeunit}%
5862
case Names.PLAYER_KILL_COUNT -> {
5963
return "" + rankingType.getKill(KDSAPI.getPlayerData(player.getUniqueId()));

0 commit comments

Comments
 (0)