mirror of
https://github.com/Zrips/Jobs.git
synced 2025-01-02 14:29:07 +01:00
ScoreBoard move into CMILib
This commit is contained in:
parent
3765c336bd
commit
d13ae1b074
Binary file not shown.
@ -99,7 +99,6 @@ import com.gamingmesh.jobs.listeners.JobsPayment14Listener;
|
|||||||
import com.gamingmesh.jobs.listeners.JobsPaymentListener;
|
import com.gamingmesh.jobs.listeners.JobsPaymentListener;
|
||||||
import com.gamingmesh.jobs.listeners.PistonProtectionListener;
|
import com.gamingmesh.jobs.listeners.PistonProtectionListener;
|
||||||
import com.gamingmesh.jobs.selection.SelectionManager;
|
import com.gamingmesh.jobs.selection.SelectionManager;
|
||||||
import com.gamingmesh.jobs.stuff.CMIScoreboardManager;
|
|
||||||
import com.gamingmesh.jobs.stuff.Loging;
|
import com.gamingmesh.jobs.stuff.Loging;
|
||||||
import com.gamingmesh.jobs.stuff.TabComplete;
|
import com.gamingmesh.jobs.stuff.TabComplete;
|
||||||
import com.gamingmesh.jobs.stuff.ToggleBarHandling;
|
import com.gamingmesh.jobs.stuff.ToggleBarHandling;
|
||||||
@ -147,7 +146,6 @@ public class Jobs extends JavaPlugin {
|
|||||||
|
|
||||||
private boolean kyoriSupported = false;
|
private boolean kyoriSupported = false;
|
||||||
|
|
||||||
private CMIScoreboardManager cmiScoreboardManager;
|
|
||||||
private Complement complement;
|
private Complement complement;
|
||||||
private GuiManager guiManager;
|
private GuiManager guiManager;
|
||||||
|
|
||||||
@ -394,17 +392,6 @@ public class Jobs extends JavaPlugin {
|
|||||||
return exploreManager;
|
return exploreManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns scoreboard manager
|
|
||||||
* @return the scoreboard manager
|
|
||||||
*/
|
|
||||||
public CMIScoreboardManager getCMIScoreboardManager() {
|
|
||||||
if (cmiScoreboardManager == null)
|
|
||||||
cmiScoreboardManager = new CMIScoreboardManager();
|
|
||||||
|
|
||||||
return cmiScoreboardManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Get rid of this entirely from project
|
// TODO Get rid of this entirely from project
|
||||||
// There are better implementations than this
|
// There are better implementations than this
|
||||||
protected static Jobs instance;
|
protected static Jobs instance;
|
||||||
|
@ -12,6 +12,7 @@ import com.gamingmesh.jobs.commands.Cmd;
|
|||||||
import com.gamingmesh.jobs.container.TopList;
|
import com.gamingmesh.jobs.container.TopList;
|
||||||
|
|
||||||
import net.Zrips.CMILib.Container.PageInfo;
|
import net.Zrips.CMILib.Container.PageInfo;
|
||||||
|
import net.Zrips.CMILib.Scoreboards.CMIScoreboard;
|
||||||
|
|
||||||
public class gtop implements Cmd {
|
public class gtop implements Cmd {
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ public class gtop implements Cmd {
|
|||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
if (args[0].equalsIgnoreCase("clear")) {
|
if (args[0].equalsIgnoreCase("clear")) {
|
||||||
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||||
plugin.getCMIScoreboardManager().removeScoreBoard(player);
|
CMIScoreboard.removeScoreBoard(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,8 +85,7 @@ public class gtop implements Cmd {
|
|||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.getCMIScoreboardManager().setScoreBoard(player, Jobs.getLanguage().getMessage("scoreboard.gtopline"), ls);
|
CMIScoreboard.show(player, Jobs.getLanguage().getMessage("scoreboard.gtopline"), ls, Jobs.getGCManager().ToplistInScoreboardInterval);
|
||||||
plugin.getCMIScoreboardManager().addNew(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.showPagination(sender, pi, "jobs gtop");
|
plugin.showPagination(sender, pi, "jobs gtop");
|
||||||
|
@ -13,6 +13,7 @@ import com.gamingmesh.jobs.container.Job;
|
|||||||
import com.gamingmesh.jobs.container.TopList;
|
import com.gamingmesh.jobs.container.TopList;
|
||||||
|
|
||||||
import net.Zrips.CMILib.Container.PageInfo;
|
import net.Zrips.CMILib.Container.PageInfo;
|
||||||
|
import net.Zrips.CMILib.Scoreboards.CMIScoreboard;
|
||||||
|
|
||||||
public class top implements Cmd {
|
public class top implements Cmd {
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ public class top implements Cmd {
|
|||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
if (args[0].equalsIgnoreCase("clear")) {
|
if (args[0].equalsIgnoreCase("clear")) {
|
||||||
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||||
plugin.getCMIScoreboardManager().removeScoreBoard(player);
|
CMIScoreboard.removeScoreBoard(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,8 +91,7 @@ public class top implements Cmd {
|
|||||||
place++;
|
place++;
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.getCMIScoreboardManager().setScoreBoard(player, Jobs.getLanguage().getMessage("scoreboard.topline", "%jobname%", job.getName()), ls);
|
CMIScoreboard.show(player, Jobs.getLanguage().getMessage("scoreboard.topline", "%jobname%", job.getName()), ls, Jobs.getGCManager().ToplistInScoreboardInterval);
|
||||||
plugin.getCMIScoreboardManager().addNew(player);
|
|
||||||
|
|
||||||
plugin.showPagination(sender, pi, "jobs top " + job.getName());
|
plugin.showPagination(sender, pi, "jobs top " + job.getName());
|
||||||
}
|
}
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
package com.gamingmesh.jobs.container;
|
|
||||||
|
|
||||||
import org.bukkit.scoreboard.DisplaySlot;
|
|
||||||
import org.bukkit.scoreboard.Objective;
|
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
|
||||||
|
|
||||||
public class ScoreboardInfo {
|
|
||||||
|
|
||||||
private Scoreboard scoreBoard;
|
|
||||||
private Objective obj;
|
|
||||||
private Long time;
|
|
||||||
|
|
||||||
public ScoreboardInfo(Scoreboard scoreBoard, DisplaySlot slot) {
|
|
||||||
this.scoreBoard = scoreBoard;
|
|
||||||
|
|
||||||
for (Objective one : this.scoreBoard.getObjectives()) {
|
|
||||||
if (one.getDisplaySlot() == slot)
|
|
||||||
obj = one;
|
|
||||||
}
|
|
||||||
|
|
||||||
time = System.currentTimeMillis();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Scoreboard getScoreBoard() {
|
|
||||||
return scoreBoard;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScoreBoard(Scoreboard scoreBoard) {
|
|
||||||
this.scoreBoard = scoreBoard;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getTime() {
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTime(Long time) {
|
|
||||||
this.time = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Objective getObj() {
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setObj(Objective obj) {
|
|
||||||
this.obj = obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,166 +0,0 @@
|
|||||||
package com.gamingmesh.jobs.stuff;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.scoreboard.DisplaySlot;
|
|
||||||
import org.bukkit.scoreboard.Objective;
|
|
||||||
|
|
||||||
import com.gamingmesh.jobs.Jobs;
|
|
||||||
import com.gamingmesh.jobs.container.ScoreboardInfo;
|
|
||||||
|
|
||||||
import net.Zrips.CMILib.CMILib;
|
|
||||||
import net.Zrips.CMILib.Colors.CMIChatColor;
|
|
||||||
import net.Zrips.CMILib.Version.Version;
|
|
||||||
|
|
||||||
public class CMIScoreboardManager {
|
|
||||||
|
|
||||||
private java.util.concurrent.ConcurrentMap<UUID, ScoreboardInfo> timerMap = new ConcurrentHashMap<>();
|
|
||||||
|
|
||||||
private void runScheduler() {
|
|
||||||
Iterator<Entry<UUID, ScoreboardInfo>> meinMapIter = timerMap.entrySet().iterator();
|
|
||||||
while (meinMapIter.hasNext()) {
|
|
||||||
Entry<UUID, ScoreboardInfo> map = meinMapIter.next();
|
|
||||||
|
|
||||||
if (System.currentTimeMillis() > map.getValue().getTime() + (Jobs.getGCManager().ToplistInScoreboardInterval * 1000)) {
|
|
||||||
Player player = Bukkit.getPlayer(map.getKey());
|
|
||||||
if (player != null) {
|
|
||||||
removeScoreBoard(player);
|
|
||||||
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
|
||||||
|
|
||||||
if (map.getValue().getObj() != null) {
|
|
||||||
try {
|
|
||||||
Objective obj = player.getScoreboard().getObjective(map.getValue().getObj().getName());
|
|
||||||
if (obj != null)
|
|
||||||
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
|
|
||||||
} catch (IllegalStateException e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
timerMap.remove(map.getKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (timerMap.size() > 0)
|
|
||||||
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(org.bukkit.plugin.java.JavaPlugin.getPlugin(Jobs.class),
|
|
||||||
this::runScheduler, 20L);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addNew(Player player) {
|
|
||||||
timerMap.put(player.getUniqueId(), new ScoreboardInfo(player.getScoreboard(), DisplaySlot.SIDEBAR));
|
|
||||||
runScheduler();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final String objName = "CMIScoreboard";
|
|
||||||
|
|
||||||
public void removeScoreBoard(Player player) {
|
|
||||||
try {
|
|
||||||
if (Version.isCurrentEqualOrHigher(Version.v1_13_R1)) {
|
|
||||||
Object pp1 = getNMSClass("PacketPlayOutScoreboardObjective").getConstructor().newInstance();
|
|
||||||
setField(pp1, "a", player.getName());
|
|
||||||
setField(pp1, "d", 1);
|
|
||||||
sendPacket(player, pp1);
|
|
||||||
} else {
|
|
||||||
Object boards = getNMSClass("Scoreboard").getConstructor().newInstance();
|
|
||||||
|
|
||||||
Object obj = boards.getClass().getMethod("registerObjective", String.class,
|
|
||||||
getNMSClass("IScoreboardCriteria")).invoke(boards, objName,
|
|
||||||
getNMSClass("ScoreboardBaseCriteria").getConstructor(String.class).newInstance("JobsDummy"));
|
|
||||||
sendPacket(player, getNMSClass("PacketPlayOutScoreboardObjective").getConstructor(obj.getClass(), int.class).newInstance(obj, 1));
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScoreBoard(Player player, String displayName, List<String> lines) {
|
|
||||||
removeScoreBoard(player);
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (Version.isCurrentEqualOrHigher(Version.v1_13_R1)) {
|
|
||||||
Object pp1 = getNMSClass("PacketPlayOutScoreboardObjective").getConstructor().newInstance();
|
|
||||||
setField(pp1, "a", player.getName());
|
|
||||||
setField(pp1, "d", 0);
|
|
||||||
setField(pp1, "b", getNMSClass("ChatComponentText").getConstructor(String.class).newInstance(CMIChatColor.translate(displayName)));
|
|
||||||
setField(pp1, "c", getNMSClass("IScoreboardCriteria$EnumScoreboardHealthDisplay").getEnumConstants()[1]);
|
|
||||||
sendPacket(player, pp1);
|
|
||||||
|
|
||||||
Object d0 = getNMSClass("PacketPlayOutScoreboardDisplayObjective").getConstructor().newInstance();
|
|
||||||
setField(d0, "a", 1);
|
|
||||||
setField(d0, "b", player.getName());
|
|
||||||
sendPacket(player, d0);
|
|
||||||
|
|
||||||
for (int i = 0; i < 15; i++) {
|
|
||||||
if (i >= lines.size())
|
|
||||||
break;
|
|
||||||
Object PacketPlayOutScoreboardScore = getNMSClass("PacketPlayOutScoreboardScore").getConstructor().newInstance();
|
|
||||||
|
|
||||||
setField(PacketPlayOutScoreboardScore, "a", CMIChatColor.translate(lines.get(i)));
|
|
||||||
setField(PacketPlayOutScoreboardScore, "b", player.getName());
|
|
||||||
setField(PacketPlayOutScoreboardScore, "c", 15 - i);
|
|
||||||
setField(PacketPlayOutScoreboardScore, "d", getNMSClass("ScoreboardServer$Action").getEnumConstants()[0]);
|
|
||||||
sendPacket(player, PacketPlayOutScoreboardScore);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Object boards = getNMSClass("Scoreboard").getConstructor().newInstance();
|
|
||||||
Object obj = boards.getClass().getMethod("registerObjective", String.class, getNMSClass("IScoreboardCriteria"))
|
|
||||||
.invoke(boards, objName, getNMSClass("ScoreboardBaseCriteria").getConstructor(String.class).newInstance("JobsDummy"));
|
|
||||||
|
|
||||||
obj.getClass().getMethod("setDisplayName", String.class).invoke(obj, CMIChatColor.translate(displayName));
|
|
||||||
|
|
||||||
sendPacket(player, getNMSClass("PacketPlayOutScoreboardObjective").getConstructor(obj.getClass(), int.class).newInstance(obj, 1));
|
|
||||||
sendPacket(player, getNMSClass("PacketPlayOutScoreboardObjective").getConstructor(obj.getClass(), int.class).newInstance(obj, 0));
|
|
||||||
|
|
||||||
sendPacket(player, getNMSClass("PacketPlayOutScoreboardDisplayObjective").getConstructor(int.class,
|
|
||||||
getNMSClass("ScoreboardObjective")).newInstance(1, obj));
|
|
||||||
|
|
||||||
for (int i = 0; i < 15; i++) {
|
|
||||||
if (i >= lines.size())
|
|
||||||
break;
|
|
||||||
|
|
||||||
Object packet2 = getNMSClass("ScoreboardScore").getConstructor(getNMSClass("Scoreboard"),
|
|
||||||
getNMSClass("ScoreboardObjective"), String.class).newInstance(boards, obj, CMIChatColor.translate(lines.get(i)));
|
|
||||||
packet2.getClass().getMethod("setScore", int.class).invoke(packet2, 15 - i);
|
|
||||||
|
|
||||||
sendPacket(player, getNMSClass("PacketPlayOutScoreboardScore").getConstructor(getNMSClass("ScoreboardScore")).newInstance(packet2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void setField(Object edit, String fieldName, Object value) {
|
|
||||||
try {
|
|
||||||
Field field = edit.getClass().getDeclaredField(fieldName);
|
|
||||||
field.setAccessible(true);
|
|
||||||
field.set(edit, value);
|
|
||||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void sendPacket(Player player, Object packet) {
|
|
||||||
try {
|
|
||||||
getNMSClass("PlayerConnection").getMethod("sendPacket", getNMSClass("Packet")).invoke(getConnection(player), packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Class<?> getNMSClass(String nmsClassString) throws ClassNotFoundException {
|
|
||||||
return CMILib.getInstance().getReflectionManager().getMinecraftClass(nmsClassString);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Object getConnection(Player player) throws Exception {
|
|
||||||
Object nmsPlayer = player.getClass().getMethod("getHandle").invoke(player);
|
|
||||||
return nmsPlayer.getClass().getField("playerConnection").get(nmsPlayer);
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,76 +8,80 @@ import com.gamingmesh.jobs.Jobs;
|
|||||||
import com.gamingmesh.jobs.container.JobsPlayer;
|
import com.gamingmesh.jobs.container.JobsPlayer;
|
||||||
import com.gamingmesh.jobs.stuff.Util;
|
import com.gamingmesh.jobs.stuff.Util;
|
||||||
|
|
||||||
import io.papermc.paper.chat.ChatComposer;
|
import io.papermc.paper.chat.ChatRenderer;
|
||||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
|
|
||||||
public final class KyoriChatEvent extends Complement2 implements Listener {
|
public final class KyoriChatEvent extends Complement2 implements Listener {
|
||||||
|
|
||||||
private Jobs plugin;
|
private Jobs plugin;
|
||||||
|
|
||||||
public KyoriChatEvent(Jobs plugin) {
|
public KyoriChatEvent(Jobs plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
|
public void asyncChatEvent(final AsyncChatEvent event) {
|
||||||
|
if (event.isCancelled() || Util.getJobsEditorMap().isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
final String msg = Util.getJobsEditorMap().remove(event.getPlayer().getUniqueId());
|
||||||
|
if (msg != null) {
|
||||||
|
plugin.getServer().getScheduler().runTask(plugin,
|
||||||
|
() -> event.getPlayer().performCommand(msg + serialize(event.message())));
|
||||||
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL)
|
// Adding to chat prefix job name
|
||||||
public void asyncChatEvent(final AsyncChatEvent event) {
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
if (event.isCancelled() || Util.getJobsEditorMap().isEmpty())
|
public void onPlayerChat(AsyncChatEvent event) {
|
||||||
return;
|
if (!Jobs.getGCManager().getModifyChat())
|
||||||
|
return;
|
||||||
|
|
||||||
final String msg = Util.getJobsEditorMap().remove(event.getPlayer().getUniqueId());
|
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(event.getPlayer());
|
||||||
if (msg != null) {
|
String honorific = jPlayer != null ? jPlayer.getDisplayHonorific() : "";
|
||||||
plugin.getServer().getScheduler().runTask(plugin,
|
if (honorific.equals(" "))
|
||||||
() -> event.getPlayer().performCommand(msg + serialize(event.message())));
|
honorific = "";
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adding to chat prefix job name
|
// TODO displayName returns the player display name not the chat component from
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
// chat plugins, like Essentials
|
||||||
public void onPlayerChat(AsyncChatEvent event) {
|
// Now there is a parameter "player", so literally we need to add 800+ chat plugins
|
||||||
if (!Jobs.getGCManager().getModifyChat())
|
// to this plugin as dependency?
|
||||||
return;
|
// 3rd attempt: now we tried to use text replacement config builder to match the variable
|
||||||
|
// result: instead of replacing the variable, now the chat message never been sent
|
||||||
|
//event.composer((player, displayName, msg) -> msg
|
||||||
|
//.replaceText(TextReplacementConfig.builder().match("{jobs}").once().replacement(h).build()));
|
||||||
|
|
||||||
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(event.getPlayer());
|
event.message(ChatRenderer.defaultRenderer().render(event.getPlayer(), event.getPlayer().displayName(), event.message(), event.getPlayer()).replaceText(TextReplacementConfig.builder().match(
|
||||||
String honorific = jPlayer != null ? jPlayer.getDisplayHonorific() : "";
|
"\\{jobs\\}").replacement(honorific).build()));
|
||||||
if (honorific.equals(" "))
|
// 4th attempt: composeChat -> doing nothing
|
||||||
honorific = "";
|
// event.message(ChatComposer.DEFAULT.composeChat(event.getPlayer(), event.getPlayer().displayName(), event.message())
|
||||||
|
// .replaceText(TextReplacementConfig.builder().match("\\{jobs\\}").replacement(honorific).build()));
|
||||||
|
}
|
||||||
|
|
||||||
// TODO displayName returns the player display name not the chat component from
|
// Changing chat prefix variable to job name
|
||||||
// chat plugins, like Essentials
|
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||||
// Now there is a parameter "player", so literally we need to add 800+ chat plugins
|
public void onPlayerChatLow(AsyncChatEvent event) {
|
||||||
// to this plugin as dependency?
|
onPlayerChatHigh(event);
|
||||||
// 3rd attempt: now we tried to use text replacement config builder to match the variable
|
}
|
||||||
// result: instead of replacing the variable, now the chat message never been sent
|
|
||||||
//event.composer((player, displayName, msg) -> msg
|
|
||||||
//.replaceText(TextReplacementConfig.builder().match("{jobs}").once().replacement(h).build()));
|
|
||||||
|
|
||||||
// 4th attempt: composeChat -> doing nothing
|
// Changing chat prefix variable to job name
|
||||||
event.message(ChatComposer.DEFAULT
|
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||||
.composeChat(event.getPlayer(), event.getPlayer().displayName(), event.message())
|
public void onPlayerChatHigh(AsyncChatEvent event) {
|
||||||
.replaceText(TextReplacementConfig.builder().match("\\{jobs\\}").replacement(honorific).build()));
|
if (Jobs.getGCManager().getModifyChat())
|
||||||
}
|
return;
|
||||||
|
|
||||||
// Changing chat prefix variable to job name
|
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(event.getPlayer());
|
||||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
String honorific = jPlayer != null ? jPlayer.getDisplayHonorific() : "";
|
||||||
public void onPlayerChatLow(AsyncChatEvent event) {
|
if (honorific.equals(" "))
|
||||||
onPlayerChatHigh(event);
|
honorific = "";
|
||||||
}
|
|
||||||
|
|
||||||
// Changing chat prefix variable to job name
|
event.message(ChatRenderer.defaultRenderer().render(event.getPlayer(), event.getPlayer().displayName(), event.message(), event.getPlayer()).replaceText(TextReplacementConfig.builder().match(
|
||||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
"\\{jobs\\}").replacement(honorific).build()));
|
||||||
public void onPlayerChatHigh(AsyncChatEvent event) {
|
|
||||||
if (Jobs.getGCManager().getModifyChat())
|
|
||||||
return;
|
|
||||||
|
|
||||||
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(event.getPlayer());
|
// event.message(ChatComposer.DEFAULT
|
||||||
String honorific = jPlayer != null ? jPlayer.getDisplayHonorific() : "";
|
// .composeChat(event.getPlayer(), event.getPlayer().displayName(), event.message())
|
||||||
if (honorific.equals(" "))
|
// .replaceText(TextReplacementConfig.builder().match("\\{jobs\\}").replacement(honorific).build()));
|
||||||
honorific = "";
|
}
|
||||||
|
|
||||||
event.message(ChatComposer.DEFAULT
|
|
||||||
.composeChat(event.getPlayer(), event.getPlayer().displayName(), event.message())
|
|
||||||
.replaceText(TextReplacementConfig.builder().match("\\{jobs\\}").replacement(honorific).build()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user