Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

Commit

Permalink
Plugin: move tab.player-ping to a separate module
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFaser committed Nov 18, 2023
1 parent 977f560 commit 6d5e929
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,12 @@
import net.flectone.chat.module.FModule;
import net.flectone.chat.module.FTicker;
import net.flectone.chat.util.MessageUtil;
import net.flectone.chat.util.PlayerUtil;
import org.bukkit.Bukkit;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;
import org.jetbrains.annotations.NotNull;

public class BelowNameTicker extends FTicker {

Expand Down Expand Up @@ -51,28 +48,11 @@ public void run() {
objective.setDisplayName(MessageUtil.formatAll(player, message));

Score score = objective.getScore(player.getName());
score.setScore(getObjectiveScore(player));
String mode = config.getVaultString(player, getModule() + ".mode");
score.setScore(PlayerUtil.getObjectiveScore(player, mode));
});
}

public int getObjectiveScore(@NotNull Player player) {
return switch (config.getVaultString(player, getModule() + ".mode").toLowerCase()) {
case "health" -> (int) Math.round(player.getHealth() * 10.0)/10;
case "level" -> player.getLevel();
case "food" -> player.getFoodLevel();
case "ping" -> player.getPing();
case "armor" -> {
AttributeInstance armor = player.getAttribute(Attribute.GENERIC_ARMOR);
yield armor != null ? (int) Math.round(armor.getValue() * 10.0)/10 : 0;
}
case "attack" -> {
AttributeInstance damage = player.getAttribute(Attribute.GENERIC_ATTACK_DAMAGE);
yield damage != null ? (int) Math.round(damage.getValue() * 10.0)/10 : 0;
}
default -> 0;
};
}

@Override
public void cancel() {
unregisterObjective();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.flectone.chat.module.FModule;
import net.flectone.chat.module.player.name.NameModule;
import net.flectone.chat.module.server.tab.playerList.PlayerListModule;
import net.flectone.chat.util.MessageUtil;
import net.flectone.chat.util.PlayerUtil;
import org.bukkit.entity.Player;
Expand All @@ -28,15 +29,13 @@ public void init() {
if (!isEnabled()) return;
register();

new PlayerListModule(this, "player-list");

actionManager.add(new TabListener(this));

if (config.getBoolean("default." + this + ".update.enable")) {
actionManager.add(new TabTicker(this));
}

if (config.getBoolean("default." + this + ".player-ping.enable")) {
actionManager.add(new TabPlayerPingTicker(this));
}
}

public void setPlayerListName(@NotNull Player player, @NotNull String string) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package net.flectone.chat.module.server.tab.playerList;

import net.flectone.chat.module.FModule;

public class PlayerListModule extends FModule {
public PlayerListModule(FModule module, String name) {
super(module, name);
init();
}

@Override
public void init() {
if (!isEnabled()) return;

actionManager.add(new PlayerListTicker(this));
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package net.flectone.chat.module.server.tab;
package net.flectone.chat.module.server.tab.playerList;

import net.flectone.chat.FlectoneChat;
import net.flectone.chat.module.FModule;
import net.flectone.chat.module.FTicker;
import net.flectone.chat.util.PlayerUtil;
import org.bukkit.Bukkit;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;

public class TabPlayerPingTicker extends FTicker {
public class PlayerListTicker extends FTicker {

public TabPlayerPingTicker(FModule module) {
public PlayerListTicker(FModule module) {
super(module);
init();
}
Expand All @@ -23,27 +24,28 @@ public void init() {
runTaskTimer();
}

public static void registerPingObjective() {
public void registerPingObjective() {
Scoreboard scoreboard = FlectoneChat.getPlugin().getScoreBoard();
if (scoreboard.getObjective("ping") != null) return;
Objective objective = scoreboard.registerNewObjective("ping", "dummy", "ping");
if (scoreboard.getObjective("playerList") != null) return;
Objective objective = scoreboard.registerNewObjective("playerList", "dummy", "FlectoneChat");
objective.setDisplaySlot(DisplaySlot.PLAYER_LIST);
}

public static void unregisterPingObjective() {
Objective objective = FlectoneChat.getPlugin().getScoreBoard().getObjective("ping");
public void unregisterPingObjective() {
Objective objective = FlectoneChat.getPlugin().getScoreBoard().getObjective("playerList");
if (objective == null) return;
objective.unregister();
}

@Override
public void run() {
PlayerUtil.getPlayersWithFeature(getModule() + ".player-ping.enable").forEach(player -> {
Objective objective = FlectoneChat.getPlugin().getScoreBoard().getObjective("ping");
Bukkit.getOnlinePlayers().forEach(player -> {
Objective objective = FlectoneChat.getPlugin().getScoreBoard().getObjective("playerList");
if (objective == null) return;
Score score = objective.getScore(player.getName());

score.setScore(player.getPing());
String mode = config.getVaultString(player, getModule() + ".mode");
score.setScore(PlayerUtil.getObjectiveScore(player, mode));
});
}

Expand Down
20 changes: 20 additions & 0 deletions src/main/java/net/flectone/chat/util/PlayerUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import net.flectone.chat.model.file.FConfiguration;
import net.flectone.chat.module.integrations.IntegrationsModule;
import org.bukkit.Bukkit;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
Expand All @@ -25,6 +27,24 @@ public static String getIP(Player player) {
}
}

public static int getObjectiveScore(@NotNull Player player, @NotNull String mode) {
return switch (mode.toLowerCase()) {
case "health" -> (int) Math.round(player.getHealth() * 10.0)/10;
case "level" -> player.getLevel();
case "food" -> player.getFoodLevel();
case "ping" -> player.getPing();
case "armor" -> {
AttributeInstance armor = player.getAttribute(Attribute.GENERIC_ARMOR);
yield armor != null ? (int) Math.round(armor.getValue() * 10.0)/10 : 0;
}
case "attack" -> {
AttributeInstance damage = player.getAttribute(Attribute.GENERIC_ATTACK_DAMAGE);
yield damage != null ? (int) Math.round(damage.getValue() * 10.0)/10 : 0;
}
default -> 0;
};
}

@NotNull
public static String getPrefix(@NotNull Player player) {
String prefix = IntegrationsModule.getPrefix(player);
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ default:
player-list-name:
enable: true

player-ping:
enable: true
player-list:
mode: ping

status:
icon:
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/settings/modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ server:
tab:
enable: true

player-list:
enable: true

status:
enable: true

Expand Down

0 comments on commit 6d5e929

Please sign in to comment.