From 58abd0885c220838e9836a665d0e896debce77fe Mon Sep 17 00:00:00 2001 From: Cat Core Date: Thu, 22 Oct 2026 12:21:23 +0200 Subject: [PATCH 1/4] [text component] Add support for 1.6 Text in resolver --- .../build.gradle | 0 .../gradle.properties | 2 +- .../osl/text/impl/BaseTextResolver.java | 40 +++++++++++++++++++ .../osl/text/impl/TextResolversInit.java | 13 ++++++ .../src/main/resources/fabric.mod.json | 32 +++++++++++++++ .../osl.text-components.classtweaker | 5 +++ .../resources/osl.text-components.mixins.json | 0 .../build.gradle | 1 + .../gradle.properties | 6 +++ .../osl/text/impl/TextResolversInit.java | 0 .../src/main/resources/fabric.mod.json | 4 +- .../resources/osl.text-components.mixins.json | 15 +++++++ settings.gradle | 3 +- 13 files changed, 117 insertions(+), 4 deletions(-) rename libraries/text-components/{text-components-mca1.0.1_01-mc1.6.4 => text-components-mc13w21a-mc1.6.4}/build.gradle (100%) rename libraries/text-components/{text-components-mca1.0.1_01-mc1.6.4 => text-components-mc13w21a-mc1.6.4}/gradle.properties (78%) create mode 100644 libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java create mode 100644 libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java create mode 100644 libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json create mode 100644 libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker rename libraries/text-components/{text-components-mca1.0.1_01-mc1.6.4 => text-components-mc13w21a-mc1.6.4}/src/main/resources/osl.text-components.mixins.json (100%) create mode 100644 libraries/text-components/text-components-mca1.0.1_01-mc13w19a/build.gradle create mode 100644 libraries/text-components/text-components-mca1.0.1_01-mc13w19a/gradle.properties rename libraries/text-components/{text-components-mca1.0.1_01-mc1.6.4 => text-components-mca1.0.1_01-mc13w19a}/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java (100%) rename libraries/text-components/{text-components-mca1.0.1_01-mc1.6.4 => text-components-mca1.0.1_01-mc13w19a}/src/main/resources/fabric.mod.json (84%) create mode 100644 libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/build.gradle b/libraries/text-components/text-components-mc13w21a-mc1.6.4/build.gradle similarity index 100% rename from libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/build.gradle rename to libraries/text-components/text-components-mc13w21a-mc1.6.4/build.gradle diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/gradle.properties b/libraries/text-components/text-components-mc13w21a-mc1.6.4/gradle.properties similarity index 78% rename from libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/gradle.properties rename to libraries/text-components/text-components-mc13w21a-mc1.6.4/gradle.properties index 110174fd8..0e555d29f 100644 --- a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/gradle.properties +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/gradle.properties @@ -1,4 +1,4 @@ -min_mc_version = a1.0.1_01 +min_mc_version = 13w21a max_mc_version = 1.6.4 minecraft_version = 1.6.4 diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java new file mode 100644 index 000000000..0a3a353a9 --- /dev/null +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java @@ -0,0 +1,40 @@ +package net.ornithemc.osl.text.impl; + +import net.ornithemc.osl.text.api.Formatting; +import net.ornithemc.osl.text.api.Style; +import net.ornithemc.osl.text.api.TextComponent; +import net.minecraft.text.Text; +import net.ornithemc.osl.text.api.TextComponents; + +import java.util.List; +import java.util.stream.Collectors; + +public class BaseTextResolver implements TextResolver { + @Override + public TextComponent resolve(Text o) { + List siblings = o.getSiblings(); + + TextComponent component; + if (o.getTranslated() != null) { + if (siblings == null) { + component = TextComponents.translatable(o.getTranslated()); + } else { + List args = siblings.stream().map(this::resolve).collect(Collectors.toList()); + component = TextComponents.translatable(o.getTranslated(), args.toArray()); + } + } else if (o.getText() != null) { + component = TextComponents.literal(o.getText()); + } else if (siblings != null) { + component = TextComponents.composite(siblings.toArray()); + } else { + component = TextComponents.literal(""); + } + + return component.format(Style.EMPTY + .withColor(o.getColor() != null ? Formatting.byCode(o.getColor().getCode()) : null) + .withBold(o.isBold()) + .withItalic(o.isItalic()) + .withUnderlined(o.isUnderlined()) + .withObfuscated(o.isObfuscated())); + } +} diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java new file mode 100644 index 000000000..456a5a977 --- /dev/null +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java @@ -0,0 +1,13 @@ +package net.ornithemc.osl.text.impl; + +import net.minecraft.text.Text; + +import net.ornithemc.osl.entrypoints.api.ModInitializer; + +public class TextResolversInit implements ModInitializer { + + @Override + public void init() { + TextResolvers.register(Text.class, new BaseTextResolver()); + } +} diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json new file mode 100644 index 000000000..1d2da635c --- /dev/null +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "id": "osl-text-components", + "version": "0.1.0-alpha.6+mc13w21a-mc1.6.4", + "environment": "*", + "entrypoints": { + "init": [ + "net.ornithemc.osl.text.impl.TextResolversInit" + ] + }, + "mixins": [ + "osl.text-components.mixins.json" + ], + "accessWidener": "osl.text-components.classtweaker", + "depends": { + "fabricloader": "\u003e\u003d0.18.0", + "minecraft": "\u003e\u003d1.6-alpha.13.21.a \u003c\u003d1.6.4", + "osl-core": "\u003e\u003d0.7.0", + "osl-entrypoints": "\u003e\u003d0.5.0" + }, + "name": "OSL Text Components", + "description": "Versatile text components.", + "authors": [ + "OrnitheMC" + ], + "contact": { + "homepage": "https://ornithemc.net/", + "issues": "https://github.com/OrnitheMC/ornithe-standard-libraries/issues", + "sources": "https://github.com/OrnitheMC/ornithe-standard-libraries" + }, + "license": "Apache-2.0" +} \ No newline at end of file diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker new file mode 100644 index 000000000..749bad2cd --- /dev/null +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker @@ -0,0 +1,5 @@ +classTweaker v1 named + +accessible method net/minecraft/text/Text getTranslated ()Ljava/lang/String; +accessible method net/minecraft/text/Text getSiblings ()Ljava/util/List; +accessible method net/minecraft/text/Text getText ()Ljava/lang/String; diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/resources/osl.text-components.mixins.json b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.mixins.json similarity index 100% rename from libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/resources/osl.text-components.mixins.json rename to libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.mixins.json diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/build.gradle b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/build.gradle new file mode 100644 index 000000000..0a350fdb3 --- /dev/null +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/build.gradle @@ -0,0 +1 @@ +setUpModule(project) diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/gradle.properties b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/gradle.properties new file mode 100644 index 000000000..2db5590fe --- /dev/null +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/gradle.properties @@ -0,0 +1,6 @@ +min_mc_version = a1.0.1_01 +max_mc_version = 13w19a + +minecraft_version = 1.5.2 +raven_build = 1 +nests_build = 3 diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java similarity index 100% rename from libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java rename to libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json similarity index 84% rename from libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/resources/fabric.mod.json rename to libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json index e562a3b17..d5c91b3ef 100644 --- a/libraries/text-components/text-components-mca1.0.1_01-mc1.6.4/src/main/resources/fabric.mod.json +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "osl-text-components", - "version": "0.1.0-alpha.6+mca1.0.1_01-mc1.6.4", + "version": "0.1.0-alpha.6+mca1.0.1_01-mc13w19a", "environment": "*", "entrypoints": { "init": [ @@ -13,7 +13,7 @@ ], "depends": { "fabricloader": "\u003e\u003d0.18.0", - "minecraft": "\u003e\u003d1.0.0-alpha.0.1.1 \u003c\u003d1.6.4", + "minecraft": "\u003e\u003d1.0.0-alpha.0.1.1 \u003c\u003d1.6-alpha.13.19.a", "osl-core": "\u003e\u003d0.7.0", "osl-entrypoints": "\u003e\u003d0.5.0" }, diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json new file mode 100644 index 000000000..7f5c435c3 --- /dev/null +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json @@ -0,0 +1,15 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "net.ornithemc.osl.text.impl.mixin", + "compatibilityLevel": "JAVA_8", + "mixins": [ + ], + "client": [ + ], + "server": [ + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/settings.gradle b/settings.gradle index 33bc9646e..ee1af9a6c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -189,5 +189,6 @@ include ':libraries:resource-loader:resource-loader-mc17w43a-mc19w05a' include ':libraries:resource-loader:resource-loader-mc19w07a-mc1.14.4' include ':libraries:text-components' -include ':libraries:text-components:text-components-mca1.0.1_01-mc1.6.4' +include ':libraries:text-components:text-components-mca1.0.1_01-mc13w19a' +include ':libraries:text-components:text-components-mc13w21a-mc1.6.4' include ':libraries:text-components:text-components-mc13w36a-mc1.14.4' From f068fbadc7d876472811361b01c6cd5bd949ce78 Mon Sep 17 00:00:00 2001 From: Space Walker Date: Thu, 22 Oct 2026 14:42:07 +0200 Subject: [PATCH 2/4] [text components] switch to using Conditional Mixin --- .../text/impl/TextComponentsMixinPlugin.java | 49 ------------------- .../text/impl/mixin/common/StyleMixin.java | 12 +++++ .../text/impl/mixin/common/StyleMixinNew.java | 20 -------- .../resources/osl.text-components.mixins.json | 5 +- 4 files changed, 14 insertions(+), 72 deletions(-) delete mode 100644 libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextComponentsMixinPlugin.java delete mode 100644 libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixinNew.java diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextComponentsMixinPlugin.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextComponentsMixinPlugin.java deleted file mode 100644 index 948a797c0..000000000 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextComponentsMixinPlugin.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.ornithemc.osl.text.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class TextComponentsMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.text.impl.mixin.common.StyleMixinNew".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("14w02a") >= 0; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixin.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixin.java index 653b573f2..f81ed7359 100644 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixin.java +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixin.java @@ -8,6 +8,9 @@ import net.minecraft.text.HoverEvent; import net.minecraft.text.Style; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.text.impl.access.StyleAccess; @Mixin(Style.class) @@ -29,6 +32,9 @@ public abstract class StyleMixin implements StyleAccess { private ClickEvent clickEvent; @Shadow private HoverEvent hoverEvent; + @Conditional(minecraftVersion = @Version(">=14w02a")) + @Shadow + private String insertion; @Override public Formatting osl$text$color() { @@ -69,4 +75,10 @@ public abstract class StyleMixin implements StyleAccess { public HoverEvent osl$text$hoverEvent() { return this.hoverEvent; } + + @Conditional(minecraftVersion = @Version(">=14w02a")) + @Override + public String osl$text$insertion() { + return this.insertion; + } } diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixinNew.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixinNew.java deleted file mode 100644 index ea2eec479..000000000 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/StyleMixinNew.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.ornithemc.osl.text.impl.mixin.common; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.text.Style; - -import net.ornithemc.osl.text.impl.access.StyleAccess; - -@Mixin(Style.class) -public abstract class StyleMixinNew implements StyleAccess { - - @Shadow - private String insertion; - - @Override - public String osl$text$insertion() { - return this.insertion; - } -} diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json index 3020527f7..5ac3f49a8 100644 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json @@ -3,10 +3,9 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.text.impl.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "net.ornithemc.osl.text.impl.TextComponentsMixinPlugin", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ - "common.StyleMixin", - "common.StyleMixinNew" + "common.StyleMixin" ], "client": [ ], From e09ed4d08d59837494fa6f1445a5c6cc1dc602f1 Mon Sep 17 00:00:00 2001 From: Space Walker Date: Thu, 22 Oct 2026 19:28:49 +0200 Subject: [PATCH 3/4] [text components] implement basic TextConverter API --- libraries/text-components/gradle.properties | 2 +- .../osl/text/api/TextComponents.java | 5 ++ .../osl/text/impl/TextConverter.java | 9 +++ .../osl/text/impl/TextConverters.java | 38 ++++++++++ .../osl/text/impl/BaseTextConverter.java | 40 +++++++++++ .../osl/text/impl/BaseTextResolver.java | 1 + .../{TextResolversInit.java => TextInit.java} | 3 +- .../src/main/resources/fabric.mod.json | 2 +- .../osl/text/impl/BaseTextConverter.java | 31 ++++++++ .../osl/text/impl/StyleConverter.java | 70 +++++++++++++++++++ .../{TextResolversInit.java => TextInit.java} | 4 +- .../src/main/resources/fabric.mod.json | 2 +- .../{TextResolversInit.java => TextInit.java} | 2 +- .../src/main/resources/fabric.mod.json | 2 +- 14 files changed, 204 insertions(+), 7 deletions(-) create mode 100644 libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverter.java create mode 100644 libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverters.java create mode 100644 libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java rename libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/{TextResolversInit.java => TextInit.java} (66%) create mode 100644 libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java create mode 100644 libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/StyleConverter.java rename libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/{TextResolversInit.java => TextInit.java} (78%) rename libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/{TextResolversInit.java => TextInit.java} (71%) diff --git a/libraries/text-components/gradle.properties b/libraries/text-components/gradle.properties index 9f5e1f27a..f22b43330 100644 --- a/libraries/text-components/gradle.properties +++ b/libraries/text-components/gradle.properties @@ -3,5 +3,5 @@ library_name = Text Components library_description = Versatile text components. library_version = 0.1.0-alpha.6 -entrypoint_init = net.ornithemc.osl.text.impl.TextResolversInit +entrypoint_init = net.ornithemc.osl.text.impl.TextInit osl_dependencies = core:0.7.0,entrypoints:0.5.0 diff --git a/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponents.java b/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponents.java index 6c08208b7..8ad2e4043 100644 --- a/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponents.java +++ b/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponents.java @@ -8,6 +8,7 @@ import net.ornithemc.osl.text.api.TextComponent.Serializer.LowercaseEnumTypeAdapterFactory; import net.ornithemc.osl.text.impl.LiteralTextComponent; import net.ornithemc.osl.text.impl.TextComponentBuilder; +import net.ornithemc.osl.text.impl.TextConverters; import net.ornithemc.osl.text.impl.TextResolvers; import net.ornithemc.osl.text.impl.TranslatableTextComponent; @@ -69,4 +70,8 @@ public static String toJson(TextComponent t) { public static JsonElement toJsonTree(TextComponent t) { return GSON.toJsonTree(t); } + + public static T convert(TextComponent t, Class type) { + return TextConverters.convert(t, type); + } } diff --git a/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverter.java b/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverter.java new file mode 100644 index 000000000..0f7b4eaaf --- /dev/null +++ b/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverter.java @@ -0,0 +1,9 @@ +package net.ornithemc.osl.text.impl; + +import net.ornithemc.osl.text.api.TextComponent; + +public interface TextConverter { + + T convert(TextComponent text); + +} diff --git a/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverters.java b/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverters.java new file mode 100644 index 000000000..c78ea68f9 --- /dev/null +++ b/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/TextConverters.java @@ -0,0 +1,38 @@ +package net.ornithemc.osl.text.impl; + +import java.util.HashMap; +import java.util.Map; + +import net.ornithemc.osl.text.api.TextComponent; + +public class TextConverters { + + private static Map, TextConverter> converters = new HashMap<>(); + + static { + register(String.class, TextComponent::buildFormattedString); + } + + public static void register(Class type, TextConverter resolver) { + if (converters.containsKey(type)) { + throw new IllegalStateException("cannot register multiple text component converters for type " + type.getName()); + } else { + converters.put(type, resolver); + } + } + + public static T convert(TextComponent text, Class type) { + TextConverter converter = converters.get(type); + + if (converter == null) { + return null; + } + + return convert(converter, text); + } + + @SuppressWarnings("unchecked") + private static T convert(TextConverter converter, TextComponent text) { + return (T) converter.convert(text); + } +} diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java new file mode 100644 index 000000000..1458213c6 --- /dev/null +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java @@ -0,0 +1,40 @@ +package net.ornithemc.osl.text.impl; + +import net.ornithemc.osl.text.api.Style; +import net.ornithemc.osl.text.api.TextComponent; +import net.minecraft.text.Text; + +public class BaseTextConverter implements TextConverter { + + @Override + public Text convert(TextComponent component) { + Text text; + + if (component instanceof LiteralTextComponent) { + text = Text.literal(((LiteralTextComponent) component).getValue()); + } else if (component instanceof TranslatableTextComponent) { + text = Text.translatable(((TranslatableTextComponent) component).getKey(), ((TranslatableTextComponent) component).getArgs()); + } else { + text = Text.literal(""); + } + + Style style = component.getStyle(); + + if (style.getColor() != null && style.getColor().isFormatting()) + text.setColor(net.minecraft.text.Formatting.byName(style.getColor().serialize())); + if (style.withBold(style.isBold()) != style) + text.setBold(style.isBold()); + if (style.withItalic(style.isItalic()) != style) + text.setItalic(style.isItalic()); + if (style.withUnderlined(style.isUnderlined()) != style) + text.setUnderlined(style.isUnderlined()); + if (style.withObfuscated(style.isObfuscated()) != style) + text.setObfuscated(style.isObfuscated()); + + for (TextComponent sibling : component.getSiblings()) { + text.append(this.convert(sibling)); + } + + return text; + } +} diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java index 0a3a353a9..2f7dc5d7c 100644 --- a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java @@ -10,6 +10,7 @@ import java.util.stream.Collectors; public class BaseTextResolver implements TextResolver { + @Override public TextComponent resolve(Text o) { List siblings = o.getSiblings(); diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextInit.java similarity index 66% rename from libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java rename to libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextInit.java index 456a5a977..e0cb0a872 100644 --- a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/TextInit.java @@ -4,10 +4,11 @@ import net.ornithemc.osl.entrypoints.api.ModInitializer; -public class TextResolversInit implements ModInitializer { +public class TextInit implements ModInitializer { @Override public void init() { TextResolvers.register(Text.class, new BaseTextResolver()); + TextConverters.register(Text.class, new BaseTextConverter()); } } diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json index 1d2da635c..a627b890f 100644 --- a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/fabric.mod.json @@ -5,7 +5,7 @@ "environment": "*", "entrypoints": { "init": [ - "net.ornithemc.osl.text.impl.TextResolversInit" + "net.ornithemc.osl.text.impl.TextInit" ] }, "mixins": [ diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java new file mode 100644 index 000000000..65d188712 --- /dev/null +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextConverter.java @@ -0,0 +1,31 @@ +package net.ornithemc.osl.text.impl; + +import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; + +import net.ornithemc.osl.text.api.TextComponent; + +public class BaseTextConverter implements TextConverter { + + @Override + public Text convert(TextComponent component) { + Text text; + + if (component instanceof LiteralTextComponent) { + text = new LiteralText(((LiteralTextComponent) component).getValue()); + } else if (component instanceof TranslatableTextComponent) { + text = new TranslatableText(((TranslatableTextComponent) component).getKey(), ((TranslatableTextComponent) component).getArgs()); + } else { + text = new LiteralText(""); + } + + text.setStyle(StyleConverter.convert(component.getStyle())); + + for (TextComponent sibling : component.getSiblings()) { + text.append(this.convert(sibling)); + } + + return text; + } +} diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/StyleConverter.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/StyleConverter.java new file mode 100644 index 000000000..783aed481 --- /dev/null +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/StyleConverter.java @@ -0,0 +1,70 @@ +package net.ornithemc.osl.text.impl; + +import net.minecraft.text.Text; + +import net.ornithemc.osl.core.impl.util.MinecraftVersion; +import net.ornithemc.osl.text.api.ClickEvent; +import net.ornithemc.osl.text.api.HoverEvent; +import net.ornithemc.osl.text.api.Style; +import net.ornithemc.osl.text.api.TextColor; +import net.ornithemc.osl.text.api.TextComponents; + +public final class StyleConverter { + + public static final boolean INSERTION_EXISTS = MinecraftVersion.resolve().compareTo("14w02a") >= 0; + + public static net.minecraft.text.Style convert(Style style) { + net.minecraft.text.Style s = new net.minecraft.text.Style(); + + if (style.getColor() != null) + s.setColor(convertTextColor(style.getColor())); + if (style.withBold(style.isBold()) != style) + s.setBold(style.isBold()); + if (style.withItalic(style.isItalic()) != style) + s.setItalic(style.isItalic()); + if (style.withUnderlined(style.isUnderlined()) != style) + s.setUnderlined(style.isUnderlined()); + if (style.withStrikethrough(style.isStrikethrough()) != style) + s.setStrikethrough(style.isStrikethrough()); + if (style.withObfuscated(style.isObfuscated()) != style) + s.setObfuscated(style.isObfuscated()); + if (style.getClickEvent() != null) + s.setClickEvent(convertClickEvent(style.getClickEvent())); + if (style.getHoverEvent() != null) + s.setHoverEvent(convertHoverEvent(style.getHoverEvent())); + if (INSERTION_EXISTS && style.getInsertion() != null) + s.setInsertion(style.getInsertion()); + + return s; + } + + public static net.minecraft.text.Formatting convertTextColor(TextColor color) { + if (!color.isFormatting()) { + return null; + } + + return net.minecraft.text.Formatting.valueOf(color.getFormatting().name()); + } + + public static net.minecraft.text.ClickEvent convertClickEvent(ClickEvent event) { + switch (event.getAction()) { + case OPEN_URL: + return new net.minecraft.text.ClickEvent(net.minecraft.text.ClickEvent.Action.OPEN_URL, event.getValue()); + case RUN_COMMAND: + return new net.minecraft.text.ClickEvent(net.minecraft.text.ClickEvent.Action.RUN_COMMAND, event.getValue()); + case SUGGEST_COMMAND: + return new net.minecraft.text.ClickEvent(net.minecraft.text.ClickEvent.Action.SUGGEST_COMMAND, event.getValue()); + default: + return null; // TODO + } + } + + public static net.minecraft.text.HoverEvent convertHoverEvent(HoverEvent event) { + switch (event.getAction()) { + case SHOW_TEXT: + return new net.minecraft.text.HoverEvent(net.minecraft.text.HoverEvent.Action.SHOW_TEXT, TextComponents.convert(event.getValue(), Text.class)); + default: + return null; // TODO + } + } +} diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextInit.java similarity index 78% rename from libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java rename to libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextInit.java index 277b866fe..dfabb7406 100644 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/TextInit.java @@ -1,16 +1,18 @@ package net.ornithemc.osl.text.impl; import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.ornithemc.osl.entrypoints.api.ModInitializer; import net.ornithemc.osl.text.api.TextComponents; -public class TextResolversInit implements ModInitializer { +public class TextInit implements ModInitializer { @Override public void init() { TextResolvers.register(LiteralText.class, new BaseTextResolver<>(t -> TextComponents.literal(t.getRawString()))); TextResolvers.register(TranslatableText.class, new BaseTextResolver<>(t -> TextComponents.translatable(t.getKey(), t.getArgs()))); + TextConverters.register(Text.class, new BaseTextConverter()); } } diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json index b4b026cc7..21a8231ba 100644 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json @@ -5,7 +5,7 @@ "environment": "*", "entrypoints": { "init": [ - "net.ornithemc.osl.text.impl.TextResolversInit" + "net.ornithemc.osl.text.impl.TextInit" ] }, "mixins": [ diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextInit.java similarity index 71% rename from libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java rename to libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextInit.java index e5e7853c8..1ccde70a8 100644 --- a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextResolversInit.java +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/TextInit.java @@ -2,7 +2,7 @@ import net.ornithemc.osl.entrypoints.api.ModInitializer; -public class TextResolversInit implements ModInitializer { +public class TextInit implements ModInitializer { @Override public void init() { diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json index d5c91b3ef..43cb356c7 100644 --- a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json @@ -5,7 +5,7 @@ "environment": "*", "entrypoints": { "init": [ - "net.ornithemc.osl.text.impl.TextResolversInit" + "net.ornithemc.osl.text.impl.TextInit" ] }, "mixins": [ From afc1532e681213dd9a27198ce8c6708a1aab04ed Mon Sep 17 00:00:00 2001 From: Space Walker Date: Thu, 22 Oct 2026 16:12:52 +0200 Subject: [PATCH 4/4] [text components] add MessageConsumer itf and implement it in CommandSource --- .../osl/text/api/MessageConsumer.java | 16 ++++++++++ .../ornithemc/osl/text/api/TextComponent.java | 3 ++ .../osl/text/impl/MessageConsumerImpl.java | 12 ++++++++ .../osl/text/impl/BaseTextResolver.java | 1 + .../impl/mixin/common/CommandSourceMixin.java | 23 +++++++++++++++ .../osl.text-components.classtweaker | 2 ++ .../resources/osl.text-components.mixins.json | 1 + .../impl/mixin/common/CommandSourceMixin.java | 23 +++++++++++++++ .../src/main/resources/fabric.mod.json | 1 + .../osl.text-components.classtweaker | 3 ++ .../resources/osl.text-components.mixins.json | 1 + .../impl/mixin/common/CommandSourceMixin.java | 29 +++++++++++++++++++ .../src/main/resources/fabric.mod.json | 1 + .../osl.text-components.classtweaker | 3 ++ .../resources/osl.text-components.mixins.json | 2 ++ 15 files changed, 121 insertions(+) create mode 100644 libraries/text-components/src/main/java/net/ornithemc/osl/text/api/MessageConsumer.java create mode 100644 libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/MessageConsumerImpl.java create mode 100644 libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java create mode 100644 libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java create mode 100644 libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.classtweaker create mode 100644 libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java create mode 100644 libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.classtweaker diff --git a/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/MessageConsumer.java b/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/MessageConsumer.java new file mode 100644 index 000000000..cd2080fe5 --- /dev/null +++ b/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/MessageConsumer.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.text.api; + +/** + * Common interface for objects accepting {@linkplain TextComponent} messages. + * + * @see TextComponent + * @see TextComponents + */ +public interface MessageConsumer { + + /** + * Send a {@linkplain TextComponent} message. + */ + void sendMessage(TextComponent message); + +} diff --git a/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponent.java b/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponent.java index 790b247ad..38e2818a8 100644 --- a/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponent.java +++ b/libraries/text-components/src/main/java/net/ornithemc/osl/text/api/TextComponent.java @@ -29,6 +29,9 @@ import net.ornithemc.osl.text.impl.LiteralTextComponent; import net.ornithemc.osl.text.impl.TranslatableTextComponent; +/** + * @see TextComponents + */ public interface TextComponent { Style getStyle(); diff --git a/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/MessageConsumerImpl.java b/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/MessageConsumerImpl.java new file mode 100644 index 000000000..010958e13 --- /dev/null +++ b/libraries/text-components/src/main/java/net/ornithemc/osl/text/impl/MessageConsumerImpl.java @@ -0,0 +1,12 @@ +package net.ornithemc.osl.text.impl; + +import net.ornithemc.osl.text.api.MessageConsumer; +import net.ornithemc.osl.text.api.TextComponent; + +public interface MessageConsumerImpl extends MessageConsumer { + + @Override + default void sendMessage(TextComponent message) { + throw new AbstractMethodError(); + } +} diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java index 2f7dc5d7c..7fc2f77e4 100644 --- a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/BaseTextResolver.java @@ -4,6 +4,7 @@ import net.ornithemc.osl.text.api.Style; import net.ornithemc.osl.text.api.TextComponent; import net.minecraft.text.Text; + import net.ornithemc.osl.text.api.TextComponents; import java.util.List; diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java new file mode 100644 index 000000000..c3c35c78c --- /dev/null +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java @@ -0,0 +1,23 @@ +package net.ornithemc.osl.text.impl.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.server.command.source.CommandSource; +import net.minecraft.text.Text; + +import net.ornithemc.osl.text.api.MessageConsumer; +import net.ornithemc.osl.text.api.TextComponent; +import net.ornithemc.osl.text.api.TextComponents; + +@Mixin(CommandSource.class) +public interface CommandSourceMixin extends MessageConsumer { + + @Shadow + void sendMessage(Text messae); + + @Override + default void sendMessage(TextComponent message) { + this.sendMessage(TextComponents.convert(message, Text.class)); + } +} diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker index 749bad2cd..aa5037216 100644 --- a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.classtweaker @@ -3,3 +3,5 @@ classTweaker v1 named accessible method net/minecraft/text/Text getTranslated ()Ljava/lang/String; accessible method net/minecraft/text/Text getSiblings ()Ljava/util/List; accessible method net/minecraft/text/Text getText ()Ljava/lang/String; + +transitive-inject-interface net/minecraft/server/command/source/CommandSource net/ornithemc/osl/text/impl/MessageConsumerImpl diff --git a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.mixins.json b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.mixins.json index 7f5c435c3..5168e6f27 100644 --- a/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.mixins.json +++ b/libraries/text-components/text-components-mc13w21a-mc1.6.4/src/main/resources/osl.text-components.mixins.json @@ -4,6 +4,7 @@ "package": "net.ornithemc.osl.text.impl.mixin", "compatibilityLevel": "JAVA_8", "mixins": [ + "common.CommandSourceMixin" ], "client": [ ], diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java new file mode 100644 index 000000000..c3c35c78c --- /dev/null +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java @@ -0,0 +1,23 @@ +package net.ornithemc.osl.text.impl.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.server.command.source.CommandSource; +import net.minecraft.text.Text; + +import net.ornithemc.osl.text.api.MessageConsumer; +import net.ornithemc.osl.text.api.TextComponent; +import net.ornithemc.osl.text.api.TextComponents; + +@Mixin(CommandSource.class) +public interface CommandSourceMixin extends MessageConsumer { + + @Shadow + void sendMessage(Text messae); + + @Override + default void sendMessage(TextComponent message) { + this.sendMessage(TextComponents.convert(message, Text.class)); + } +} diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json index 21a8231ba..8894b4d6c 100644 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/fabric.mod.json @@ -11,6 +11,7 @@ "mixins": [ "osl.text-components.mixins.json" ], + "accessWidener": "osl.text-components.classtweaker", "depends": { "fabricloader": "\u003e\u003d0.18.0", "minecraft": "\u003e\u003d1.7-alpha.13.36.a \u003c\u003d1.14.4", diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.classtweaker b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.classtweaker new file mode 100644 index 000000000..b4ef17ccf --- /dev/null +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.classtweaker @@ -0,0 +1,3 @@ +classTweaker v1 named + +transitive-inject-interface net/minecraft/server/command/source/CommandSource net/ornithemc/osl/text/impl/MessageConsumerImpl diff --git a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json index 5ac3f49a8..da57edd50 100644 --- a/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json +++ b/libraries/text-components/text-components-mc13w36a-mc1.14.4/src/main/resources/osl.text-components.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_8", "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ + "common.CommandSourceMixin", "common.StyleMixin" ], "client": [ diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java new file mode 100644 index 000000000..e5fb98fa5 --- /dev/null +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/java/net/ornithemc/osl/text/impl/mixin/common/CommandSourceMixin.java @@ -0,0 +1,29 @@ +package net.ornithemc.osl.text.impl.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.server.command.source.CommandSource; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.GameSide; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.text.api.MessageConsumer; +import net.ornithemc.osl.text.api.TextComponent; + +@Conditional(minecraftVersion = { + @Version(value = ">=12w16a", gameSide = GameSide.CLIENT), + @Version(value = ">=a0.1.2_01", gameSide = GameSide.SERVER) +}) +@Mixin(CommandSource.class) +public interface CommandSourceMixin extends MessageConsumer { + + @Shadow + void sendMessage(String messae); + + @Override + default void sendMessage(TextComponent message) { + this.sendMessage(message.buildFormattedString()); + } +} diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json index 43cb356c7..05c375777 100644 --- a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/fabric.mod.json @@ -11,6 +11,7 @@ "mixins": [ "osl.text-components.mixins.json" ], + "accessWidener": "osl.text-components.classtweaker", "depends": { "fabricloader": "\u003e\u003d0.18.0", "minecraft": "\u003e\u003d1.0.0-alpha.0.1.1 \u003c\u003d1.6-alpha.13.19.a", diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.classtweaker b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.classtweaker new file mode 100644 index 000000000..b4ef17ccf --- /dev/null +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.classtweaker @@ -0,0 +1,3 @@ +classTweaker v1 named + +transitive-inject-interface net/minecraft/server/command/source/CommandSource net/ornithemc/osl/text/impl/MessageConsumerImpl diff --git a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json index 7f5c435c3..620b29abb 100644 --- a/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json +++ b/libraries/text-components/text-components-mca1.0.1_01-mc13w19a/src/main/resources/osl.text-components.mixins.json @@ -3,7 +3,9 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.text.impl.mixin", "compatibilityLevel": "JAVA_8", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ + "common.CommandSourceMixin" ], "client": [ ],