From 2cb0af0ca4fa0fea38283612fcf4df9fb9f8b4db Mon Sep 17 00:00:00 2001 From: pop4959 Date: Mon, 11 Mar 2024 01:14:58 -0700 Subject: [PATCH 1/4] Strict parsing for legacy converted placeholders (#5740) This fixes issues where arguments converted implicitly from MiniMessage are prone to bleeding into the rest of the output. The fix mostly works since `MINI_MESSAGE_NO_TAGS` is only used for legacy conversion, while `miniMessageInstance` is used in all other cases normally. If that were not the case, we would not want strict parsing everywhere since we don't enforce this in translations anyway. Fixes #5729 Fixes #5730 Fixes #5732 Fixes #5735 Fixes #5720 Closes #5728 --- .../main/java/com/earth2me/essentials/utils/AdventureUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java b/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java index e3d361803..e32d4d218 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java +++ b/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java @@ -50,7 +50,7 @@ public final class AdventureUtil { } LEGACY_SERIALIZER = builder.build(); - MINI_MESSAGE_NO_TAGS = MiniMessage.miniMessage(); + MINI_MESSAGE_NO_TAGS = MiniMessage.builder().strict(true).build(); miniMessageInstance = createMiniMessageInstance(); } From 8cfe680abc79a67af4e3917810c78946740c1937 Mon Sep 17 00:00:00 2001 From: pop4959 Date: Mon, 25 Mar 2024 12:09:13 -0700 Subject: [PATCH 2/4] Fix empty translations being sent to Console (#5737) --- .../src/main/java/com/earth2me/essentials/CommandSource.java | 4 +++- Essentials/src/main/java/com/earth2me/essentials/Console.java | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java b/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java index 59a88a21b..ed8d5bdb6 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java +++ b/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java @@ -36,7 +36,9 @@ public class CommandSource { } final String translation = tlLiteral(tlKey, args); - sendComponent(AdventureUtil.miniMessage().deserialize(translation)); + if (!translation.isEmpty()) { + sendComponent(AdventureUtil.miniMessage().deserialize(translation)); + } } public String tl(final String tlKey, final Object... args) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/Console.java b/Essentials/src/main/java/com/earth2me/essentials/Console.java index 9dacde649..6414f3cef 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Console.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Console.java @@ -69,6 +69,9 @@ public final class Console implements IMessageRecipient { @Override public void sendTl(String tlKey, Object... args) { final String translation = tlLiteral(tlKey, args); + if (translation.isEmpty()) { + return; + } final Audience consoleAudience = ((Essentials) ess).getBukkitAudience().sender(getCommandSender()); final Component component = AdventureUtil.miniMessage() From 76a513a05c1693648a4328fcdefcc00134989207 Mon Sep 17 00:00:00 2001 From: pop4959 Date: Mon, 25 Mar 2024 12:11:18 -0700 Subject: [PATCH 3/4] Don't run keyword replacer by default in translated broadcasts (#5739) Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com> --- .../src/main/java/com/earth2me/essentials/Essentials.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java index 81a4ab8f3..a095ba8aa 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java @@ -1200,7 +1200,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { @Override public void broadcastTl(final String tlKey, final Object... args) { - broadcastTl(null, null, true, tlKey, args); + broadcastTl(null, null, false, tlKey, args); } @Override From 71ca7ffbf6c36c9fd18cf61056295dca4a733f62 Mon Sep 17 00:00:00 2001 From: DarkLaw <44745161+ImDarkLaw@users.noreply.github.com> Date: Mon, 1 Apr 2024 01:53:53 +0300 Subject: [PATCH 4/4] Fix heal signs not healing up to the player's max health (#5752) --- .../src/main/java/com/earth2me/essentials/signs/SignHeal.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/SignHeal.java b/Essentials/src/main/java/com/earth2me/essentials/signs/SignHeal.java index f5eadaf2a..4f2856dad 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/SignHeal.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/SignHeal.java @@ -21,9 +21,10 @@ public class SignHeal extends EssentialsSign { if (player.getBase().getHealth() == 0) { throw new SignException("healDead"); } + final double amount = player.getBase().getMaxHealth(); final Trade charge = getTrade(sign, 1, ess); charge.isAffordableFor(player); - player.getBase().setHealth(20); + player.getBase().setHealth(amount); player.getBase().setFoodLevel(20); player.getBase().setFireTicks(0); player.sendTl("youAreHealed");