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

Commit

Permalink
Chat: add full markdown support
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFaser committed Sep 1, 2023
1 parent 62d4431 commit 1c03087
Show file tree
Hide file tree
Showing 9 changed files with 338 additions and 86 deletions.
259 changes: 190 additions & 69 deletions src/main/java/net/flectone/messages/MessageBuilder.java

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions src/main/java/net/flectone/messages/TextParameters.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package net.flectone.messages;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;

public class TextParameters {

private final String text;

private final List<String> parameters = new ArrayList<>();

public TextParameters(@NotNull String text) {
this.text = text;
}

public void add(String parameter) {
parameters.add(parameter);
}

public void add(List<String> parameters) {
if (parameters == null || parameters.isEmpty()) return;
this.parameters.addAll(parameters);
}

public List<String> getParameters() {
return parameters;
}

public String getText() {
return text;
}

public void remove(String parameter) {
parameters.remove(parameter);
}

public void clear() {
parameters.clear();
}

public boolean contains(String parameter) {
return parameters.contains(parameter);
}
}
35 changes: 35 additions & 0 deletions src/main/java/net/flectone/messages/WordParams.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package net.flectone.messages;

import org.bukkit.ChatColor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;

public class WordParams {

private boolean isPlayerPing = false;
Expand Down Expand Up @@ -101,6 +105,23 @@ public String getText() {
return text;
}

public String getFormatting() {
return getChatColor("**") + getChatColor("__") + getChatColor("##") + getChatColor("~~") + getChatColor("??");
}

public String getChatColor(String param) {
if (!parameters.contains(param)) return "";

return switch (param) {
case "**" -> String.valueOf(ChatColor.BOLD);
case "__" -> String.valueOf(ChatColor.UNDERLINE);
case "##" -> String.valueOf(ChatColor.ITALIC);
case "~~" -> String.valueOf(ChatColor.STRIKETHROUGH);
case "??" -> String.valueOf(ChatColor.MAGIC);
default -> "";
};
}

public void setText(@NotNull String text) {
this.text = text;
}
Expand All @@ -116,4 +137,18 @@ public void setFormatted(boolean formatted) {
public boolean isEdited() {
return isPlayerPing() || isHide() || isUrl() || isClickable() || isItem() || isFormatted() || isCords() || isStats();
}

private final List<String> parameters = new ArrayList<>();

public void addParameters(List<String> parameters) {
this.parameters.addAll(parameters);
}

public boolean contains(String parameter) {
return parameters.contains(parameter);
}

public List<String> getParameters() {
return parameters;
}
}
3 changes: 2 additions & 1 deletion src/main/java/net/flectone/misc/commands/FCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.flectone.messages.MessageBuilder;
import net.flectone.misc.entity.FPlayer;
import net.flectone.utils.ObjectUtil;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.Bukkit;
import org.bukkit.command.BlockCommandSender;
Expand Down Expand Up @@ -209,7 +210,7 @@ public void sendGlobalMessage(@NotNull Collection<Player> recipientsSet, @NotNul
recipient.spigot().sendMessage(messageBuilder.build(format, recipient, sender));
});

String bubbleMessage = messageBuilder.getMessage();
String bubbleMessage = ChatColor.stripColor(messageBuilder.getMessage(""));

if (command.contains("chat") && getFPlayer() != null) {
if (HookManager.enabledInteractiveChat) {
Expand Down
8 changes: 1 addition & 7 deletions src/main/java/net/flectone/utils/ObjectUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,7 @@ public static String buildFormattedMessage(@NotNull Player player, @NotNull Stri
if (text == null) return "";

MessageBuilder messageBuilder = new MessageBuilder(command, text, player, itemStack, false);
String message = messageBuilder.getMessage();

if (player.isOp() || player.hasPermission("flectonechat.formatting")) {
message = ObjectUtil.formatString(message, player);
}

return message;
return messageBuilder.getMessage(String.valueOf(ChatColor.RESET));
}

@NotNull
Expand Down
45 changes: 39 additions & 6 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# █▀ █ ██▀ ▄▀▀ ▀█▀ ▄▀▄ █▄ █ ██▀ ▄▀▀ █▄█ ▄▀▄ ▀█▀
# █▀ █▄▄ █▄▄ ▀▄▄ █ ▀▄▀ █ ▀█ █▄▄ ▀▄▄ █ █ █▀█ █
#
# Check our wiki
# https://chat.flectone.net

version: "3.10.0"

language: en
Expand Down Expand Up @@ -92,24 +96,53 @@ chat:
- ":happy: , \(^O^)/"

cords:
# permission: flectonechat.chat.cords
enable: true

stats:
# permission: flectonechat.chat.stats
enable: true
hide:
enable: true

url:
# permission: flectonechat.chat.url
enable: true

tooltip:
# permission: flectonechat.chat.tooltip
enable: true

ping:
# permission: flectonechat.chat.ping
enable: true

markdown-||:
# hide
# permission: flectonechat.chat.markdown-||
enable: true
bold:

markdown-**:
# bold
# permission: flectonechat.chat.markdown-**
enable: true
italic:

markdown-##:
# italic
# permission: flectonechat.chat.markdown-##
enable: true
underline:

markdown-__:
# underline
# permission: flectonechat.chat.markdown-__
enable: true
strikethrough:

markdown-??:
# obfuscate
# permission: flectonechat.chat.markdown-??
enable: true

markdown-~~:
# strikethrough
# permission: flectonechat.chat.markdown-~~
enable: true

death:
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/language/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ chat:

ping:
prefix: "@"
message: "&&1<prefix><player>&&2"
message: "&&1<prefix><player>"

local:
no-recipients: "#ff4e4e⁉ Nobody heard you"
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/language/ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ chat:

ping:
prefix: "@"
message: "&&1<prefix><player>&&2"
message: "&&1<prefix><player>"

local:
no-recipients: "#ff4e4e⁉ Тебя никто не услышал"
Expand Down
24 changes: 23 additions & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -228,4 +228,26 @@ permissions:
flectonechat.warn:
default: op
flectonechat.warnlist:
default: op
default: op
flectonechat.chat.cords:
default: true
flectonechat.chat.stats:
default: true
flectonechat.chat.ping:
default: true
flectonechat.chat.url:
default: true
flectonechat.chat.tooltip:
default: true
flectonechat.chat.markdown-||:
default: true
flectonechat.chat.markdown-**:
default: true
flectonechat.chat.markdown-__:
default: true
flectonechat.chat.markdown-##:
default: true
flectonechat.chat.markdown-??:
default: true
flectonechat.chat.markdown-~~:
default: true

0 comments on commit 1c03087

Please sign in to comment.