From 9eec9972f48ffdc300944b9f9e51a4dbcea0c9f6 Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Sun, 15 Mar 2026 13:44:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=8E=A9=E5=81=B6?= =?UTF-8?q?=E7=9A=84Jade=E7=9A=AE=E8=82=A4=E6=89=80=E5=B1=9E=E8=80=85?= =?UTF-8?q?=E7=9A=84=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/datagen/value/Lib39LangKey.java | 4 +++ fabric/build.gradle | 1 + .../base/compat/jade/FabricJadePlugin.java | 25 +++++++++++++++ .../provider/FabricDollComponentProvider.java | 31 ++++++++++++++++++ fabric/src/main/resources/fabric.mod.json | 3 ++ forge/build.gradle | 2 +- .../base/compat/jade/ForgeJadePlugin.java | 25 +++++++++++++++ .../provider/ForgeDollComponentProvider.java | 32 +++++++++++++++++++ 8 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/FabricJadePlugin.java create mode 100644 fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/FabricDollComponentProvider.java create mode 100644 forge/src/main/java/top/r3944realms/lib39/base/compat/jade/ForgeJadePlugin.java create mode 100644 forge/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/ForgeDollComponentProvider.java diff --git a/common/src/main/java/top/r3944realms/lib39/base/datagen/value/Lib39LangKey.java b/common/src/main/java/top/r3944realms/lib39/base/datagen/value/Lib39LangKey.java index db9483e..d983969 100644 --- a/common/src/main/java/top/r3944realms/lib39/base/datagen/value/Lib39LangKey.java +++ b/common/src/main/java/top/r3944realms/lib39/base/datagen/value/Lib39LangKey.java @@ -251,6 +251,10 @@ public enum Lib39LangKey implements ILangKeyValueCollection { addLang(LangKeyValue.copyOf( Lib39Blocks.WALL_DOLL, ModPartEnum.BLOCK, dollName )); + addLang( + LangKeyValue.ofKey("config.jade.plugin_lib39.lib39", ModPartEnum.DEFAULT, + "Lib 39", "叁玖库", "叁玖庫", "叁玖庫" + )); addLang(LangKeyValue.ofKey( "tooltip.lib39.content.doll.hover.1", ModPartEnum.DESCRIPTION, "§eSkinOwner §7:§a %s ", "§e皮肤所有者§7:§a%s", "§e皮膚所有者§7:§a%s", "§e膚主§7:§a%s" diff --git a/fabric/build.gradle b/fabric/build.gradle index 9f43bab..170e754 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -20,6 +20,7 @@ dependencies { modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}" implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1' implementation project(":common") + modImplementation "curse.maven:jade-324717:6291330" testImplementation "net.fabricmc:fabric-loader-junit:${fabric_loader_version}" localRuntime 'net.covers1624:DevLogin:0.1.0.5' } diff --git a/fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/FabricJadePlugin.java b/fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/FabricJadePlugin.java new file mode 100644 index 0000000..fac8b53 --- /dev/null +++ b/fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/FabricJadePlugin.java @@ -0,0 +1,25 @@ +package top.r3944realms.lib39.base.compat.jade; + +import net.minecraft.resources.ResourceLocation; +import snownee.jade.api.IWailaClientRegistration; +import snownee.jade.api.IWailaPlugin; +import snownee.jade.api.WailaPlugin; +import top.r3944realms.lib39.Lib39; +import top.r3944realms.lib39.base.compat.jade.provider.FabricDollComponentProvider; +import top.r3944realms.lib39.content.block.DollBlock; + +/** + * The type Fabric jade plugin. + */ +@WailaPlugin +public class FabricJadePlugin implements IWailaPlugin { + /** + * The constant UID. + */ + public static final ResourceLocation UID = Lib39.rl("lib39"); + + @Override + public void registerClient(IWailaClientRegistration registration) { + registration.registerBlockComponent(new FabricDollComponentProvider(), DollBlock.class); + } +} diff --git a/fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/FabricDollComponentProvider.java b/fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/FabricDollComponentProvider.java new file mode 100644 index 0000000..9992436 --- /dev/null +++ b/fabric/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/FabricDollComponentProvider.java @@ -0,0 +1,31 @@ +package top.r3944realms.lib39.base.compat.jade.provider; + +import com.mojang.authlib.GameProfile; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; +import top.r3944realms.lib39.base.compat.jade.FabricJadePlugin; +import top.r3944realms.lib39.content.block.blockentity.DollBlockEntity; + +/** + * The type Fabric doll component provider. + */ +public class FabricDollComponentProvider implements IBlockComponentProvider { + @Override + public ResourceLocation getUid() { + return FabricJadePlugin.UID; + } + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getBlockEntity() instanceof DollBlockEntity doll) { + GameProfile ownerProfile = doll.getOwnerProfile(); + if (ownerProfile != null) { + iTooltip.add(Component.translatable("tooltip.lib39.content.doll.hover.1", ownerProfile.getName())); + } + } + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index b7f5dcd..05c5dc7 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -20,6 +20,9 @@ ], "client": [ "top.r3944realms.lib39.Lib39FabricClient" + ], + "jade": [ + "top.r3944realms.lib39.base.compat.jade.FabricJadePlugin" ] }, "mixins": [ diff --git a/forge/build.gradle b/forge/build.gradle index 393aeee..55c68e8 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -22,7 +22,6 @@ legacyForge { validateAccessTransformers = true def at = project(':common').file('src/main/resources/META-INF/accesstransformer.cfg') - def generated = project(':common').file('src/generated/resources/') if (at.exists()) { accessTransformers = ["src/main/resources/META-INF/accesstransformer.cfg"] } @@ -78,6 +77,7 @@ dependencies { modImplementation(group: 'tschipp.carryon', name: 'carryon-forge-1.20.1', version: '2.1.2.7') { transitive = false } + modImplementation ("curse.maven:jade-324717:6855440") implementation(jarJar("io.github.llamalad7:mixinextras-forge:0.2.0")) } diff --git a/forge/src/main/java/top/r3944realms/lib39/base/compat/jade/ForgeJadePlugin.java b/forge/src/main/java/top/r3944realms/lib39/base/compat/jade/ForgeJadePlugin.java new file mode 100644 index 0000000..65b38fb --- /dev/null +++ b/forge/src/main/java/top/r3944realms/lib39/base/compat/jade/ForgeJadePlugin.java @@ -0,0 +1,25 @@ +package top.r3944realms.lib39.base.compat.jade; + +import net.minecraft.resources.ResourceLocation; +import snownee.jade.api.IWailaClientRegistration; +import snownee.jade.api.IWailaPlugin; +import snownee.jade.api.WailaPlugin; +import top.r3944realms.lib39.Lib39; +import top.r3944realms.lib39.base.compat.jade.provider.ForgeDollComponentProvider; +import top.r3944realms.lib39.content.block.DollBlock; + +/** + * The type Forge jade plugin. + */ +@WailaPlugin +public class ForgeJadePlugin implements IWailaPlugin { + /** + * The constant UID. + */ + public static final ResourceLocation UID = Lib39.rl("lib39"); + + @Override + public void registerClient(IWailaClientRegistration registration) { + registration.registerBlockComponent(new ForgeDollComponentProvider(), DollBlock.class); + } +} diff --git a/forge/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/ForgeDollComponentProvider.java b/forge/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/ForgeDollComponentProvider.java new file mode 100644 index 0000000..20c3688 --- /dev/null +++ b/forge/src/main/java/top/r3944realms/lib39/base/compat/jade/provider/ForgeDollComponentProvider.java @@ -0,0 +1,32 @@ +package top.r3944realms.lib39.base.compat.jade.provider; + +import com.mojang.authlib.GameProfile; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +import top.r3944realms.lib39.base.compat.jade.ForgeJadePlugin; +import top.r3944realms.lib39.content.block.blockentity.DollBlockEntity; + +/** + * The type Forge doll component provider. + */ +public class ForgeDollComponentProvider implements IBlockComponentProvider { + @Override + public ResourceLocation getUid() { + return ForgeJadePlugin.UID; + } + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getBlockEntity() instanceof DollBlockEntity doll) { + GameProfile ownerProfile = doll.getOwnerProfile(); + if (ownerProfile != null) { + iTooltip.add(Component.translatable("tooltip.lib39.content.doll.hover.1", ownerProfile.getName())); + } + } + } +}