From f95feeaaf1ab62d0f700aa234562dccc15b1660e Mon Sep 17 00:00:00 2001 From: Felix Cravic Date: Sat, 1 Aug 2020 01:00:53 +0200 Subject: [PATCH] Add support for insertion text in RichMessage --- src/main/java/fr/themode/demo/PlayerInit.java | 2 + .../net/minestom/server/chat/RichMessage.java | 37 ++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/themode/demo/PlayerInit.java b/src/main/java/fr/themode/demo/PlayerInit.java index cdf5f2ae6..37489ebef 100644 --- a/src/main/java/fr/themode/demo/PlayerInit.java +++ b/src/main/java/fr/themode/demo/PlayerInit.java @@ -295,6 +295,8 @@ public class PlayerInit { RichMessage richMessage = RichMessage.of(ColoredText.of(ChatColor.RED + "test item")); richMessage.setHoverEvent(ChatHoverEvent.showItem(new ItemStack(Material.DIAMOND, (byte) 1))); + richMessage.setInsertion("Test Insert"); + System.out.println(richMessage.toString()); player.sendMessage(richMessage); //EntityBoat entityBoat = new EntityBoat(player.getPosition()); diff --git a/src/main/java/net/minestom/server/chat/RichMessage.java b/src/main/java/net/minestom/server/chat/RichMessage.java index bca09b8c9..222ff29ac 100644 --- a/src/main/java/net/minestom/server/chat/RichMessage.java +++ b/src/main/java/net/minestom/server/chat/RichMessage.java @@ -63,6 +63,19 @@ public class RichMessage { return this; } + /** + * Set the insertion string of the current rich component + * + * @param insertion the string to insert in the chat box + * @return the rich message + */ + public RichMessage setInsertion(String insertion) { + Check.notNull(insertion, "the insertion cannot be null"); + + currentComponent.setInsertion(insertion); + return this; + } + /** * Add a new rich component to the message * @@ -142,14 +155,15 @@ public class RichMessage { * @return a list of processed components */ private List getComponentObject(RichComponent component) { - ColoredText coloredText = component.getText(); - List componentObjects = coloredText.getComponents(); + final ColoredText coloredText = component.getText(); + final List componentObjects = coloredText.getComponents(); - ChatClickEvent clickEvent = component.getClickEvent(); - ChatHoverEvent hoverEvent = component.getHoverEvent(); + final ChatClickEvent clickEvent = component.getClickEvent(); + final ChatHoverEvent hoverEvent = component.getHoverEvent(); + final String insertion = component.getInsertion(); // Nothing to process - if (clickEvent == null && hoverEvent == null) { + if (clickEvent == null && hoverEvent == null && insertion == null) { return componentObjects; } @@ -175,6 +189,10 @@ public class RichMessage { } componentObject.add("hoverEvent", hoverObject); } + // Add insertion if any + if (insertion != null) { + componentObject.addProperty("insertion", insertion); + } } return componentObjects; @@ -200,6 +218,7 @@ public class RichMessage { private FormatRetention formatRetention; private ChatClickEvent clickEvent; private ChatHoverEvent hoverEvent; + private String insertion; private RichComponent(ColoredText text, FormatRetention formatRetention) { this.text = text; @@ -229,6 +248,14 @@ public class RichMessage { public void setHoverEvent(ChatHoverEvent hoverEvent) { this.hoverEvent = hoverEvent; } + + public String getInsertion() { + return insertion; + } + + public void setInsertion(String insertion) { + this.insertion = insertion; + } } }