Skip to content

Commit c4a8bee

Browse files
Fix ParallelChat bug, improve formatting, and bump version
This was unreasonably difficult to fix the formatting...
1 parent da43c11 commit c4a8bee

File tree

4 files changed

+60
-10
lines changed

4 files changed

+60
-10
lines changed

pom.xml

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

77
<groupId>parallelmc</groupId>
88
<artifactId>parallelutils</artifactId>
9-
<version>1.4.0</version>
9+
<version>1.4.1</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Parallelutils</name>
@@ -46,6 +46,10 @@
4646
<name>m2-dv8tion</name>
4747
<url>https://m2.dv8tion.net/releases</url>
4848
</repository>
49+
<repository>
50+
<id>placeholderapi</id>
51+
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
52+
</repository>
4953
</repositories>
5054
<pluginRepositories>
5155
<pluginRepository>
@@ -128,6 +132,13 @@
128132
<scope>compile</scope>
129133
</dependency>
130134

135+
<dependency>
136+
<groupId>me.clip</groupId>
137+
<artifactId>placeholderapi</artifactId>
138+
<version>2.10.10</version>
139+
<scope>provided</scope>
140+
</dependency>
141+
131142
<dependency>
132143
<groupId>com.eclipsekingdom</groupId>
133144
<artifactId>FractalForest</artifactId>

src/main/java/parallelmc/parallelutils/Constants.java

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

33
public class Constants {
44

5-
public static final Version VERSION = new Version(1, 4, 0);
5+
public static final Version VERSION = new Version(1, 4, 1);
66
public static final String PLUGIN_NAME = "ParallelUtils";
77
public static final String DEFAULT_WORLD = "world";
88
}

src/main/java/parallelmc/parallelutils/modules/parallelchat/events/OnChatMessage.java

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,42 @@
22

33
import io.papermc.paper.chat.ChatRenderer;
44
import io.papermc.paper.event.player.AsyncChatEvent;
5+
import io.papermc.paper.text.PaperComponents;
6+
import me.clip.placeholderapi.PlaceholderAPI;
7+
import net.kyori.adventure.audience.Audience;
58
import net.kyori.adventure.text.Component;
69
import net.kyori.adventure.text.TextComponent;;
710
import net.kyori.adventure.text.format.NamedTextColor;
811
import net.kyori.adventure.text.format.TextDecoration;
12+
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
913
import org.bukkit.Material;
1014
import org.bukkit.entity.Player;
1115
import org.bukkit.event.EventHandler;
1216
import org.bukkit.event.EventPriority;
1317
import org.bukkit.event.Listener;
18+
import org.bukkit.event.player.AsyncPlayerChatEvent;
1419
import org.bukkit.inventory.ItemStack;
1520
import parallelmc.parallelutils.Parallelutils;
1621

22+
import java.util.HashMap;
1723
import java.util.logging.Level;
1824

25+
import static io.papermc.paper.chat.ChatRenderer.viewerUnaware;
26+
1927
public class OnChatMessage implements Listener {
28+
29+
30+
private final HashMap<String, String> nameformats = new HashMap<>();
31+
2032
/**
2133
* This event handler allows players to link their held item in chat if they type [item]
2234
*/
23-
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
35+
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
2436
public void onChatMessage(AsyncChatEvent event) {
2537
Player player = event.getPlayer();
2638
ItemStack item = player.getInventory().getItemInMainHand();
2739

2840
Component name = item.displayName().hoverEvent(item.asHoverEvent());
29-
Parallelutils.log(Level.INFO, item.asHoverEvent().toString());
3041

3142
TextComponent component = Component.text()
3243
.append(name)
@@ -35,22 +46,50 @@ public void onChatMessage(AsyncChatEvent event) {
3546

3647
Component incomingMessage = event.message();
3748

49+
String format = nameformats.get(player.getName());
50+
51+
if (format == null) {
52+
format = player.getName() + " > ";
53+
Parallelutils.log(Level.INFO, format);
54+
} else {
55+
nameformats.remove(player.getName());
56+
}
57+
58+
String formatted = PlaceholderAPI.setBracketPlaceholders(player, String.format(format, player.getName(), "")
59+
.replace("&r", "").replace("§r", "")); // Clear the reset characters
60+
3861
Component outgoingMessage = incomingMessage.replaceText(x -> x.once().match("\\[item\\]").replacement(component));
3962

63+
if (incomingMessage.contains(outgoingMessage)) {
64+
// [item] was not found. No need to stop the message
65+
return;
66+
}
67+
4068
// can't put nothing in chat
4169
if (item.getType() == Material.AIR) {
42-
if (incomingMessage.contains(outgoingMessage)) {
43-
// [item] was not found. No need to stop the message
44-
return;
45-
}
4670
player.sendMessage(Component.text("[", NamedTextColor.DARK_AQUA)
4771
.append(Component.text("P", NamedTextColor.WHITE, TextDecoration.BOLD))
4872
.append(Component.text("]", NamedTextColor.DARK_AQUA))
4973
.append(Component.text(" Cannot link Air into chat!", NamedTextColor.WHITE)));
5074
event.setCancelled(true);
5175
} else {
52-
event.renderer(ChatRenderer.defaultRenderer());
76+
event.renderer(viewerUnaware((source, sourceDisplayName, message) ->
77+
LegacyComponentSerializer.legacyAmpersand().deserialize(formatted).append(message)));
78+
5379
event.message(outgoingMessage);
5480
}
5581
}
82+
83+
/**
84+
* This event is purely to capture the format
85+
*/
86+
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
87+
public void onDeprecatedChatMessage(AsyncPlayerChatEvent event) {
88+
String format = event.getFormat();
89+
String playerName = event.getPlayer().getName();
90+
91+
Parallelutils.log(Level.INFO, format);
92+
93+
nameformats.put(playerName, format);
94+
}
5695
}

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main: parallelmc.parallelutils.Parallelutils
44
api-version: 1.17
55
authors: [Jake, Evelyn]
66
description: A plugin containing miscellaneous features and changes for play.parallel.ga
7-
depend: []
7+
depend: [PlaceholderAPI]
88
softdepend: [Multiverse-Core, FractalForest, WorldGuard, VoteParty, FrozenJoin]
99
commands:
1010
parallelutils:

0 commit comments

Comments
 (0)