Use a surrogate character instead of a section sign (#11)

Surrogate characters cannot be encoded into UTF-8 (which IIRC is used in the protocol), meaning that it cannot be used in chat messages. As far as I am aware, surrogate characters are not illegal chat characters. meaning they should still work in `Player#chat`.
This commit is contained in:
Chipmunk 2022-12-27 17:51:36 +00:00 committed by GitHub
parent b80b443de3
commit b9a61fac2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 3 deletions

View File

@ -102,13 +102,15 @@ class Tick extends BukkitRunnable {
}
class ControlPlayer implements Listener {
private static String CHAT_PREFIX = "\ud800iControlUChat\ud800";
@EventHandler
private void onAsyncPlayerChat(final AsyncPlayerChatEvent event) {
final Player player = event.getPlayer();
if (PlayerList.getController(player.getUniqueId()) != null) {
if (event.getMessage().startsWith("§iControlUChat§")) {
final int prefixLength = "§iControlUChat§".length();
if (event.getMessage().startsWith(CHAT_PREFIX)) {
final int prefixLength = CHAT_PREFIX.length();
event.setMessage(
event.getMessage().substring(prefixLength)
@ -124,7 +126,7 @@ class ControlPlayer implements Listener {
@Override
public void run() {
// Add prefix to prevent messages from being cancelled
target.chat("§iControlUChat§" + event.getMessage());
target.chat(CHAT_PREFIX + event.getMessage());
}
}.runTask(JavaPlugin.getPlugin(Main.class));