From 6b48eac8c0476c8652453353eaf5a242148590e4 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Fri, 2 Jan 2026 00:18:34 +0100 Subject: [PATCH] process nested components recursively --- .../AdventureLegacyColorPostProcessor.java | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureLegacyColorPostProcessor.java b/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureLegacyColorPostProcessor.java index d28f620..6f5836c 100644 --- a/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureLegacyColorPostProcessor.java +++ b/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureLegacyColorPostProcessor.java @@ -1,20 +1,35 @@ package com.eternalcode.commons.adventure; +import java.util.ArrayList; +import java.util.List; import java.util.function.UnaryOperator; -import java.util.regex.Pattern; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextReplacementConfig; +import net.kyori.adventure.text.TextComponent; public class AdventureLegacyColorPostProcessor implements UnaryOperator { - private static final TextReplacementConfig LEGACY_REPLACEMENT_CONFIG = TextReplacementConfig.builder() - .match(Pattern.compile(".*")) - .replacement((matchResult, build) -> AdventureUtil.component(matchResult.group())) - .build(); - @Override public Component apply(Component component) { - return component.replaceText(LEGACY_REPLACEMENT_CONFIG); + return this.processComponent(component); } + private Component processComponent(Component component) { + if (component instanceof TextComponent textComponent) { + String content = textComponent.content(); + if (!content.isEmpty()) { + Component processed = AdventureUtil.component(content); + List processedChildren = new ArrayList<>(component.children().size()); + for (Component child : component.children()) { + processedChildren.add(this.processComponent(child)); + } + return processed.children(processedChildren).style(component.style()); + } + } + + List processedChildren = new ArrayList<>(component.children().size()); + for (Component child : component.children()) { + processedChildren.add(this.processComponent(child)); + } + return component.children(processedChildren); + } }