diff --git a/Localization/wiki/zh_cn/API-documentation.md b/Localization/wiki/zh_cn/API-documentation.md new file mode 100644 index 00000000..b757fbff --- /dev/null +++ b/Localization/wiki/zh_cn/API-documentation.md @@ -0,0 +1,585 @@ + + + +# CPM Api 文档 +目录: +* [开始](#开始) ([版本](#latest-versions)) +* [创建你的插件](#create-your-plugin) +* [客户端 API](#client-api) +* [通用 API](#common-api) + + + + +## 开始 +将 CPM api 添加到你的 gradle 构建脚本(`build.gradle`): + + + + +### 手动 +从 [Releases](https://github.com/tom5454/CustomPlayerModels/releases/tag/0.4.0a) 下载 api +并将其放入您的模组项目文件夹中。 +将其添加到你的 gradle 文件中 + +```gradle +dependencies { + implementation files("CustomPlayerModels-API-0.4.0.jar"); +} +``` + + + + +### Gradle + + + + +#### 存储库 + +```gradle +repositories { + maven { + name = "tom5454 maven" + url = "https://raw.githubusercontent.com/tom5454/maven/main" + } +} +``` + + + + +#### 最新版本 +API 版本: ![API 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-API%2Fmaven-metadata.xml) + +| Minecraft 版本 | 运行版本(Forge) | 运行版本(NeoForge) | 运行版本(Fabric) | 运行版本(Quilt) | +| ------------- | --------------- | ------------------ | ---------------- | --------------- | +| 1.20.5 | ![1.20.5 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModelsLexForge-1.20.5%2Fmaven-metadata.xml) | ![1.20.5 neoForge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.20.5%2Fmaven-metadata.xml) | ![1.20.5 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.20.5%2Fmaven-metadata.xml) | - | +| 1.20.4 | ![1.20.4 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModelsLexForge-1.20.4%2Fmaven-metadata.xml) | ![1.20.4 neoForge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.20.4%2Fmaven-metadata.xml) | ![1.20.4 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.20.4%2Fmaven-metadata.xml) | ![1.20.4 quilt version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Quilt-1.20.4%2Fmaven-metadata.xml) | +| 1.20.2 | ![1.20.2 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModelsLexForge-1.20.2%2Fmaven-metadata.xml) | ![1.20.2 neoForge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.20.2%2Fmaven-metadata.xml) | ![1.20.2 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.20.2%2Fmaven-metadata.xml) | Use the Fabric version | +| 1.20 | ![1.20 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.20%2Fmaven-metadata.xml) | Use the Forge version | ![1.20 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.20%2Fmaven-metadata.xml) | ![1.20 quilt version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Quilt-1.20%2Fmaven-metadata.xml) | +| 1.19.4 | ![1.19.4 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.19.4%2Fmaven-metadata.xml) | - | ![1.19.4 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.19.4%2Fmaven-metadata.xml) | Use the Fabric version | +| 1.19.3 | ![1.19.3 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.19.3%2Fmaven-metadata.xml) | - | ![1.19.3 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.19.3%2Fmaven-metadata.xml) | Use the Fabric version | +| 1.19 | ![1.19 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.19%2Fmaven-metadata.xml) | - | ![1.19 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.19%2Fmaven-metadata.xml) | Use the Fabric version | +| 1.18 | ![1.18 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.18%2Fmaven-metadata.xml) | - | ![1.18 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.18%2Fmaven-metadata.xml) | Use the Fabric version | +| 1.17 | ![1.17 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.17%2Fmaven-metadata.xml) | - | ![1.17 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.17%2Fmaven-metadata.xml) | - | +| 1.16 | ![1.16 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.16%2Fmaven-metadata.xml) | - | ![1.16 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.16%2Fmaven-metadata.xml) | - | +| 1.15 | ![1.15 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.15%2Fmaven-metadata.xml) | - | ![1.15 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.15%2Fmaven-metadata.xml) | - | +| 1.14 | ![1.14 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.14%2Fmaven-metadata.xml) | - | ![1.14 fabric version badge](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-Fabric-1.14%2Fmaven-metadata.xml) | - | +| 1.12.2 | ![1.12 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.12.2%2Fmaven-metadata.xml) | - | - | - | +| 1.10.2 | ![1.10 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.10.2%2Fmaven-metadata.xml) | - | - | - | +| 1.8 | ![1.8 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.8%2Fmaven-metadata.xml) | - | - | - | +| 1.7.10 | ![1.7 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.7.10%2Fmaven-metadata.xml) | - | - | - | +| 1.6.4 | ![1.6 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.6.4%2Fmaven-metadata.xml) | - | - | - | +| 1.5.2 | ![1.5 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.5.2%2Fmaven-metadata.xml) | - | - | - | +| 1.4.7 | ![1.4 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.4.7%2Fmaven-metadata.xml) | - | - | - | +| 1.2.5 | ![1.2 Forge 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-1.7.10%2Fmaven-metadata.xml) | - | - | - | +| b1.7.3 | - | - | ![b1.7.3 babric 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-b1.7.3%2Fmaven-metadata.xml) | - | +| BTA | - | - | ![BTA babric 版本徽章](https://img.shields.io/maven-metadata/v?color=forestgreen&label=release&metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2Ftom5454%2Fmaven%2Fmain%2Fcom%2Ftom5454%2Fcpm%2FCustomPlayerModels-BTA%2Fmaven-metadata.xml) | - | + + + + +#### gradle.properties +```ini +# CPM 版本 +cpm_api_version= +cpm_mc_version= +cpm_runtime_version=<运行版本> +``` + + + + +#### 使用 FG2 的依赖项 +```gradle +dependencies { + compile "com.tom5454.cpm:CustomPlayerModels-API:${project.cpm_api_version}" + deobfProvided "com.tom5454.cpm:CustomPlayerModels-${project.cpm_mc_version}:${project.cpm_runtime_version}" +} +``` + + + + +#### 使用 FG3+ 的依赖 + +```gradle +dependencies { + /* Minecraft 依赖在这里 */ + + compileOnly "com.tom5454.cpm:CustomPlayerModels-API:${project.cpm_api_version}" + runtimeOnly fg.deobf("com.tom5454.cpm:CustomPlayerModels-${project.cpm_mc_version}:${project.cpm_runtime_version}") +} +``` + + + + +#### 使用 NeoGradle 的依赖 + +```gradle +dependencies { + /* Minecraft 依赖在这里 */ + + compileOnly "com.tom5454.cpm:CustomPlayerModels-API:${project.cpm_api_version}" + runtimeOnly "com.tom5454.cpm:CustomPlayerModels-${project.cpm_mc_version}:${project.cpm_runtime_version}" +} +``` + + + + +#### 使用 Fabric 的依赖 + +```gradle +dependencies { + /* Minecraft 依赖在这里 */ + + compileOnly "com.tom5454.cpm:CustomPlayerModels-API:${project.cpm_api_version}" + modRuntimeOnly "com.tom5454.cpm:CustomPlayerModels-Fabric-${project.cpm_mc_version}:${project.cpm_runtime_version}" +} +``` + + + + +#### 使用 Voldeloom 的依赖 + +```gradle +dependencies { + /* Minecraft 依赖在这里 */ + + compileOnly "com.tom5454.cpm:CustomPlayerModels-API:${project.cpm_api_version}" + //1.4.7, 1.5.2 + coremodImplementation ("com.tom5454.cpm:CustomPlayerModels-${project.cpm_mc_version}:${project.cpm_runtime_version}") { + copyToFolder("coremods") + } + //1.6.4 + modRuntimeOnly "com.tom5454.cpm:CustomPlayerModels-${project.cpm_mc_version}:${project.cpm_runtime_version}" +} +``` + +On 1.2.5: + +```gradle +volde { + runs { + client { + programArg "Dev" + vmArg "-Dcpmcore.deobf=true" + vmArg "-Dcpmcore.env.client=true" + vmArg "-javaagent:\"" + file("CustomPlayerModels-${project.cpm_runtime_version}.jar").absolutePath + "\"" + } + } +} + +dependencies { + /* Minecraft 依赖在这里 */ + + compileOnly "com.tom5454.cpm:CustomPlayerModels-API:${project.cpm_api_version}" +} +``` + +您必须将当前模组版本从 Modrinth 放置到项目根文件夹中,否则 Java 代理将无法加载。 + + + + +## 创建你的插件 + +创建一个实现 `ICPMPlugin` 的类。 + +```java +public class CPMCompat implements ICPMPlugin { + public void initClient(IClientAPI api) { + //初始化客户端 + } + + public void initCommon(ICommonAPI api) { + //通用的初始化 + } + + public String getOwnerModId() { + return "example_mod"; + } +} +``` + + + + +### Forge 1.2.5 +插件加载器未实现。 + + + + +### Forge 1.12 及更低版本 +发送包含您的插件类位置的 IMC 消息。 +`FMLInterModComms.sendMessage("customplayermodels", "api", "com.example.mod.CPMCompat");` + + + + +### Forge 1.16 及更高版本 +发送 IMC 消息。 + +```java +public MyMod() { + ... + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); + ... +} + +private void enqueueIMC(final InterModEnqueueEvent event) { + InterModComms.sendTo("cpm", "api", () -> (Supplier) () -> new CPMCompat()); + ... +} +``` + + + + +### Fabric +在 fabric.mod.json 文件中的`entrypoints`字段添加`cpmapi`字段,如下所示: + +```json +"entrypoints": { + "cpmapi": [ "com.example.mod.CPMCompat" ] +} +``` + + + + +### Bukkit、Spigot、Paper(0.4.1+) +使用服务管理器注册您的插件,您的插件的`initCommon`方法将使用`ICommonAPI`实例调用。 + +```java +RegisteredServiceProvider rsp = getServer().getServicesManager().getRegistration(CPMPluginRegistry.class); +if (rsp != null) + rsp.getProvider().register(new CPMCompat()); +else + log.info("Customizable Player Models plugin not installed, compat disabled"); +``` + + + + +## 客户端 API + + + + +### 语音动画 +注册语音级别支持。 +`IClientAPI:registerVoice(Player.class, player -> voiceLevel);` +[Player.class](#client-player-class) + +注册语音级别支持。(UUID变体)(0.6.0+) +`IClientAPI:registerVoice(playerUUID -> voiceLevel);` + +注册语音静音支持。(0.6.0+) +`IClientAPI:registerVoiceMute(Player.class, player -> voiceMuted);` +[Player.class](#client-player-class) + +注册语音静音支持。(UUID变体)(0.6.0+) +`IClientAPI:registerVoiceMute(playerUUID -> voiceMuted);` + + + + +### 渲染 API +创建一个玩家渲染器以在任何玩家实体上渲染 CPM 模型。 +`PlayerRenderer renderer = IClientAPI.createPlayerRenderer(Model.class, ResourceLocation.class, RenderType.class, MultiBufferSource.class, GameProfile.class)` +对于 1.12 及更低版本需要使用: +`RetroPlayerRenderer renderer = IClientAPI.createPlayerRenderer(Model.class, GameProfile.class);` +[Model.class](#client-model-class) +[ResourceLocation.class](#client-resourcelocation-class) +[RenderType.class](#client-rendertype-class) +[MultiBufferSource.class](#client-multibuffersource-class) +[GameProfile.class](#client-gameprofile-class) + + + + +#### 使用 CPM 模型渲染实体 +1. 在渲染之前使用渲染器设置 GameProfile 或 LocalModel。 +`setGameProfile(gameProfile)`:渲染玩家模型 +`setLocalModel(localModel)`:渲染本地模型,[加载本地模型](#loading-a-local-model) +2. 设置基础模型,必须是人形或双足模型:`setRenderModel(model)` +3. 在 1.16+ 上设置默认 RenderType 工厂:例如:半透明实体:`setRenderType(RenderType::entityTranslucent)`。 +4. 设置模型姿势,使用`getAnimationState()`、`setActivePose(pose)`、`setActiveGesture(gesture)`将动画应用到模型。 +5. 调用 `preRender(buffers, mode)`(或 1.12 版中的 `preRender(mode)`) +6. 正常渲染您的模型。CPM 已将其渲染器注入您的模型。(使用 `getDefaultRenderType()` 获取模型的 RenderType(1.16+))。 + 1. 要渲染其他模型(鞘翅、披风、盔甲),请调用:`prepareSubModel(model, type,texture)`(或 1.12- 上的 `prepareSubModel(model, type)`) + 2. 可选在 1.16+ 版本中更改模型的默认 RenderType:例如:`setRenderType(RenderType::armorCutoutNoCull)` + 3. 渲染你的模型(使用`getRenderTypeForSubModel(subModel)`获取模型的 RenderType(1.16+))。 +7. 调用`postRender()`完成渲染。 + +示例(1.18 Forge): + +```java +import java.io.IOException; +import java.io.InputStream; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.resources.ResourceLocation; + +import com.mojang.authlib.GameProfile; +import com.mojang.blaze3d.vertex.PoseStack; + +import com.tom.cpm.api.IClientAPI; +import com.tom.cpm.api.IClientAPI.PlayerRenderer; +import com.tom.cpm.shared.animation.AnimationEngine.AnimationMode; + +public class ExampleRenderer extends LivingEntityRenderer> { + private static PlayerRenderer renderer; + + public static void init(IClientAPI api) { + renderer = api.createPlayerRenderer(Model.class, ResourceLocation.class, RenderType.class, MultiBufferSource.class, GameProfile.class); + + // TODO: 替换为资源重载监听器以支持资源包。 + try (InputStream is = Minecraft.getInstance().getResourceManager().open(new ResourceLocation("example_mod", "models/example_entity_model.cpmmodel"))){ + renderer.setLocalModel(api.loadModel("example_entity_model", is)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public ExampleRenderer(Context pContext, float pShadowRadius) { + super(pContext, new PlayerModel<>(pContext.bakeLayer(ModelLayers.PLAYER), false), pShadowRadius); + + } + + @Override + public void render(ExampleEntity pEntity, float pEntityYaw, float pPartialTicks, PoseStack pMatrixStack, + MultiBufferSource pBuffer, int pPackedLight) { + renderer.setRenderModel(model); + renderer.setRenderType(RenderType::entityTranslucent); + // 使用 renderer.getAnimationState()、setActivePose(name) 或 setActiveGesture(name) 设置模型姿势 + renderer.preRender(pBuffer, AnimationMode.PLAYER); + if(renderer.getDefaultTexture() != null) { + super.render(pEntity, pEntityYaw, pPartialTicks, pMatrixStack, pBuffer, pPackedLight); + } else { + renderNameTag(pEntity, pEntity.getDisplayName(), pMatrixStack, pBuffer, pPackedLight); + } + renderer.postRender(); + } + + @Override + public ResourceLocation getTextureLocation(ExampleEntity pEntity) { + return renderer.getDefaultTexture(); + } +} +``` + +当模型在后台加载时,`renderer.getDefaultTexture()`将返回 null! + + + + +#### 加载本地模型 +从“.cpmmodel”文件加载模型。 +`IClientAPI.loadModel(name, inputstream)` +使用加载的模型进行[渲染实体](#rendering-an-entity-with-cpm-model) + + + + +### 注册编辑器生成器 +为编辑器注册一个模型生成器。生成器位于“编辑/工具”下。 +`IClientAPI.registerEditorGenerator("button.example_mod.example_generator", "tooltip.example_mod.example_generator", ExampleGenerator::apply);` + +```java +public class ExampleGenerator { + public static void apply(EditorGui gui) { + //TODO: 应用生成器 + // 使用 gui.getEditor() 访问编辑器 + // 使用 Editor.action 和 ActionBuilder 进行可撤消的更改。 + // 注意:编辑器的部分内容可能会发生变化。 + } +} +``` + +本地化(i18n): +将 `button.example_mod.example_generator`、`tooltip.example_mod.example_generator` 添加到您的语言文件中。在工具提示中使用 `\` 字符作为换行符。 + + + + +### 播放动画(0.6.0+) +为玩家播放指定的命令动画(客户端)。 + +name:动画名称 +`IClientAPI.playAnimation(name);` 或 +value:0:重置姿势/手势,1:播放姿势/手势,对于图层值:0-255,切换:0-1 或 -1 切换状态 +`IClientAPI.playAnimation(name, value);` +返回:如果找到动画并开始播放,则返回 true + + + + +### 检测动画 (0.6.14+) +检测玩家是否正在播放动画 +`int value = IClientAPI.getAnimationPlaying(name);` +返回:动画值(值层:0-255,其他动画:0-1),如果动画不存在则返回 -1 + + + + +### 客户端网络(0.6.1+) +注册NBT消息发送到服务器,或广播给其他客户端。 +`MessageSender sender = IClientAPI.registerPluginMessage(Player.class, message_id, (player, message) -> {/*Handle message*/}, broadcastToTracking);` +[Player.class](#client-player-class) +或 UUID 版本: +`MessageSender sender = IClientAPI.registerPluginMessage(message_id, (player_uuid, message) -> {/*Handle message*/}, broadcastToTracking);` +使用`MessageSender`发送消息。 +`boolean success = sender.sendMessage(message_tag);` +使用`com.tom.cpl.nbt.*`包的独立于平台的 NBT 实现。 +broadcastToTracking:false:将消息发送到服务器/true:向附近的玩家广播消息(通过服务器)。 +服务器端需要 CPM 0.6.1+ 才能实现网络功能。 +当使用broadcastToTracking或状态消息时,服务器上不需要您的模组/插件即可使数据包转发正常工作,您无需注册任何内容。 要接收非广播消息,请使用 ICommonAPI.registerPluginMessage + + + + +#### 状态消息 +最后的状态消息存储在服务器上,并发送给进入跟踪范围(渲染距离)的每个客户端。 +`MessageSender sender = IClientAPI.registerPluginStateMessage(Player.class, message_id, (player, message) -> {/*Handle message*/});` +[Player.class](#client-player-class) +或 UUID 版本: +`MessageSender sender = IClientAPI.registerPluginMessage(message_id, (player_uuid, message) -> {/*Handle message*/});` + + + + +### 类映射 +类取决于您的 Minecraft 版本和模组加载器。 + + + +#### 客户端 Player.class +Minecraft Forge 1.12 及更低版本:`EntityPlayer.class` +Minecraft Forge 1.16 和 Fabric:`PlayerEntity.class` +Minecraft Forge 1.17 及更高版本:来自 `net.minecraft.*` 的 `Player.class` + + + + +#### 客户端 Model.class +Minecraft Forge 1.16+ 和 Fabric:来自 `net.minecraft.client.*` 的 `Model.class` +Minecraft Forge 1.12 及更低版本:`ModelBase.class` + + + + +#### 客户端 ResourceLocation.class +Minecraft Forge: `ResourceLocation.class` +Fabric: `Identifier.class` + + + + +#### 客户端 RenderType.class +Minecraft Forge: `RenderType.class` +Fabric: `RenderLayer.class` + + + + +#### 客户端 MultiBufferSource.class +Minecraft Forge 1.16: `IRenderTypeBuffer.class` +Minecraft Forge (1.17+): `MultiBufferSource.class` +Fabric: `VertexConsumerProvider.class` + + + + +#### 客户端 GameProfile.class +来自 AuthLib 的 GameProfile:`com.mojang.authlib.GameProfile` + + + + +## 通用 API + + + + +### 设置模型(0.4.1+) +设置玩家模型 +`ICommonAPI.setPlayerModel(Player.class, playerObj, base64Model, forced, persistent);` +或 +`ICommonAPI.setPlayerModel(Player.class, playerObj, modelFile, forced);` +使用 `ModelFile.load(file);` 或 `ModelFile.load(inputstream);` 创建 ModelFile +或 +`ICommonAPI.resetPlayerModel(Player.class, playerObj);` +清除服务器设置模型 +[Player.class](#common-playerclass) + + + + +### 跳跃(0.4.1+) +为玩家播放跳跃动画。 +`ICommonAPI.playerJumped(Player.class, playerObj);` +[Player.class](#common-playerclass) + + + + +### 播放动画(0.6.0+) +为玩家播放指定的命令动画(服务器端)。 + +name:动画名称 +`ICommonAPI.playAnimation(Player.class, playerObj, name);` or +`ICommonAPI.playAnimation(Player.class, playerObj, name, value);` +Value:0:重置姿势/手势,1:播放姿势/手势,图层值:0-255,切换:0-1 或 -1 切换状态 +[Player.class](#common-playerclass) + + + + +### 服务器网络(0.6.1+) +注册NBT消息,用于接收非广播消息/向客户端发送消息。 +`MessageSender sender = ICommonAPI.registerPluginMessage(Player.class, message_id, (player, message) -> {/*Handle message*/});` +[Player.class](#client-player-class) +使用`MessageSender`发送消息。 +`boolean success = sender.sendMessageTo(player, message_tag);` +或广播给附近的玩家: +`sender.sendMessageToTracking(player, message_tag, sendToSelf);` +使用来自“com.tom.cpl.nbt.*”包的独立于平台的 NBT 实现。 +sendToSelf:向参数 1 中选定的玩家发送消息 + + + + +### 检测动画(0.6.9+) +检测玩家是否正在播放动画 +`int value = ICommonAPI.getAnimationPlaying(Player.class, playerObj, name);` +返回:动画值(值层:0-255,其他动画:0-1),如果动画不存在则返回 -1 +[Player.class](#common-playerclass) + + + + +### 类映射 +类别取决于你的 Minecraft 版本和模组加载器。 + + + +#### 通用 Player.class +Minecraft Forge 1.12 及更低版本:`EntityPlayer.class` +Minecraft Forge 1.16 和 Fabric:`PlayerEntity.class` +Minecraft Forge 1.17 及更高版本:来自 `net.minecraft.*` 的 `Player.class` +Bukkit: 来自“org.bukkit.entity”的“Player.class”。 diff --git a/Localization/wiki/zh_cn/Agent-Install.md b/Localization/wiki/zh_cn/Agent-Install.md new file mode 100644 index 00000000..4a74967f --- /dev/null +++ b/Localization/wiki/zh_cn/Agent-Install.md @@ -0,0 +1,20 @@ + + + +## Java Agent 安装 + +Minecraft 1.2.5版本的CPM是一个Java Agent。 + +1. 将 CPM jar 复制到 `.minecraft` 文件夹中。 +2. 然后添加以下 JVM 参数: +`-javaagent:CustomPlayerModels-1.2.5-.jar` +将 `` 替换为您安装的版本。 + +更新 CPM 时必须更新 JVM 参数。 + +需要 Minecraft Forge 1.2.5 + +这个版本的 CPM 附带了一个类似于 mod 的“单人游戏命令”。 +添加 `-Dcpmcore.spc=true` JVM 参数以启用。 +支持的命令: +gamemode, tp, time, give, toggledownfall, cpm, cpmclient diff --git a/Localization/wiki/zh_cn/Animated-Textures.md b/Localization/wiki/zh_cn/Animated-Textures.md new file mode 100644 index 00000000..504b8a51 --- /dev/null +++ b/Localization/wiki/zh_cn/Animated-Textures.md @@ -0,0 +1,31 @@ + + + +## 动画纹理 + +通过添加动画纹理效果,可以对部分纹理进行动画处理。 +选择要添加动画的纹理,然后按 `效果/添加动画纹理` +![模型树中的动画纹理](https://github.com/tom5454/CustomPlayerModels/wiki/images/animated_tree.png) + + + + +### 选项 + +**区域开始和区域大小:** +设置纹理上的动画区域。这是纹理将被动画化的区域。 +使用 U/V 微调器来获得该值。 +**动画纹理:** +动画纹理帧的左上角 U/V。 +**帧时间:** +每帧的时间(以毫秒为单位)。 +**帧数:** +动画中的帧数。 +**水平:** +动画帧的布局。 +**插值:** +在帧之间进行插值。 +![皮肤面板中的动画纹理](https://github.com/tom5454/CustomPlayerModels/wiki/images/animated_tex.png) +黄色区域将会有动画效果。 白色区域是动画框架。 +示例项目:[链接](https://github.com/tom5454/CustomPlayerModels/raw/master/examples/animated_texture.cpmproject) +动画区域不应与动画纹理帧区域重叠。这将导致游戏中出现视觉故障。 diff --git a/Localization/wiki/zh_cn/Animations.md b/Localization/wiki/zh_cn/Animations.md new file mode 100644 index 00000000..a4a695a2 --- /dev/null +++ b/Localization/wiki/zh_cn/Animations.md @@ -0,0 +1,15 @@ + + + +## 创建动画 +TODO + + + +### 自定义动画 +TODO + + + +### 自定义动画编码 +TODO diff --git a/Localization/wiki/zh_cn/Controls.md b/Localization/wiki/zh_cn/Controls.md new file mode 100644 index 00000000..c15bc11c --- /dev/null +++ b/Localization/wiki/zh_cn/Controls.md @@ -0,0 +1,50 @@ + + + +## 编辑器控件 + + + +### 相机: +按住鼠标中键可旋转视图。按住 Shift+鼠标中键可平移视图。 +可以在“编辑/设置”中更改为右键单击。 + + + + +### 微调器: +![图片:微调器](https://github.com/tom5454/CustomPlayerModels/wiki/images/spinner.png) +按住 Shift 可增加/减少 0.1 +按住 Ctrl 可增加/减少 10 +按住 Alt 可增加/减少 0.01 +按住 Alt+Shift 可增加/减少 0.001 +按住 Ctrl+Shift 可增加/减少 100 + + + + +### 图像编辑器 +Ctrl+单击颜色以吸取颜色 + + + + +### 编辑器 +Ctrl+Z 撤销 +Ctrl+Y 重做 + + + + +## 游戏内控制(按键绑定) +手势菜单(默认 G): +![图片:手势菜单](https://github.com/tom5454/CustomPlayerModels/wiki/images/gestures_menu.png) +控制自定义动画,设置快速访问键绑定。 +快速访问 1-6:自定义动画的快速访问键绑定 +切换渲染:打开/关闭自定义模型渲染。 + + + + +### 设置快速访问 +将鼠标悬停在选定的姿势或手势上,然后点击快速访问按钮进行绑定。 diff --git a/Localization/wiki/zh_cn/Exporting.md b/Localization/wiki/zh_cn/Exporting.md new file mode 100644 index 00000000..6d49426b --- /dev/null +++ b/Localization/wiki/zh_cn/Exporting.md @@ -0,0 +1,89 @@ + + + +## 导出模型 + +有~~三种~~方法可以导出你的模型: +* [保存在皮肤中](#stored-in-skin) +* [模型文件](#model-file) +* [Base64(仅适用于开发者,不适用于普通玩家)](#base64) + + + + +### 保存在皮肤中 +模型将存储在你的 Minecraft 皮肤未使用的区域中。 +此方式可以让你在原版服务器和没有此模组的服务器上使用。 +但是您无法在游戏中改变您的模型。 +[更多信息如下](#skin) + + + + +### 模型文件 +该模型将存储在 `<你的 Minecraft 目录>/player_models` 内的 `.cpmmodel` 文件中。 +此模式需要在服务器上安装模组或插件,并且无法在原版服务器上使用。 +您可以在游戏中在`手势菜单/模型`下更改您的模型。 +[更多信息如下](#exporting-as-local-model) + + + + +### Base64 +Base64 模型适用于服务器所有者、地图制作者。 +可以[使用命令](https://github.com/tom5454/CustomPlayerModels/wiki/The--cpm-command#setskin)或[API](https://github.com/tom5454/CustomPlayerModels/wiki/API-documentation#set-model-041)来加载模型。 +此选项仅适用于开发人员。 + + + + +## 皮肤 +要在游戏中使用自定义模型,您必须使用编辑器导出模型,然后上传导出的皮肤。 + +![图片:导出皮肤 GUI](https://github.com/tom5454/CustomPlayerModels/wiki/images/export_gui.png) + +单击“...”按钮设置输出文件,然后点击“导出”。您可以使用“更改原版皮肤”按钮更改基本皮肤。如果您未安装该模组,则会显示此皮肤,默认情况下它会加载您当前的皮肤。 +皮肤层设置用于[创建自定义动画](https://github.com/tom5454/CustomPlayerModels/wiki/Animations#custom-animations-encoding)。 + + + + +### 数据溢出 +如果模型太大,无法放入皮肤文件中未使用的空间,那么您必须将其上传到以下位置之一: +- 我的粘贴站点:选择“上传粘贴”。您可以更改粘贴的名称(您可以在编辑/粘贴中查看已上传的粘贴,站点限制每个文件最多可粘贴 15 次,最多 100kB)。 +- [GitHub Gist](https://gist.github.com/):选择“上传 Gist”选项。单击“复制”,然后创建一个新的 Gist/Pastebin 并粘贴您刚刚复制的模型数据。然后从创建的 Gist 中获取 URL,然后将其放入底部的文本字段中。 +- GitHub存储库,您​​可以将模型数据放入公开的存储库中的文本文件中并链接它。 + +> [!NOTE] +> 仅当您拥有活跃的 GitHub 帐户时才使用 GitHub Gists! +> 加入 [CPM discord 服务器](https://discord.gg/mKyXdEsMZD) 并在 #commands 频道中运行 `/paste-register` 以扩展您的粘贴存储限制 +> 您需要一个有效的 Minecraft 帐户才能使用我的粘贴网站! + +![图片:导出溢出 Gui](https://github.com/tom5454/CustomPlayerModels/wiki/images/export_overflow_popup.png) + +按“确定”完成导出。 + +导出后,使用您的 Minecraft 启动器或 Minecraft 网站将导出的皮肤文件上传为您的 Minecraft 皮肤。 +模型数据被写入皮肤上未使用的空间,因此如果您没有安装此模组,模型将不会显示。 +如果启动器显示无法加载皮肤,请尝试重新启动启动器。 + +在服务器上安装了该模组的用户都可以加载此模型。 + + + + +## 导出为本地模型 +> [!NOTE] +> 此功能需要在服务器上安装 CPM。 + +您可以将模型导出为本地模型。在安装了自定义玩家模型模组的服务器上或在单人游戏中,甚至在游戏中,您可以在手势菜单/模型中更改这些模型。 +![图片:导出模型 Gui](https://github.com/tom5454/CustomPlayerModels/wiki/images/export_model.png) +您可以在“文件/导出”中导出本地模型,然后点击“导出方式:???”按钮至“导出:模型”。 +模型名称将为文件名。您可以为模型设置一个图标。 +点击“导出”。 +在“编辑/模型”或游戏中的“手势菜单/模型”中应用您的模型。 +选择您的模型并单击预览下方的应用。 +本地模型仅适用于安装了模组或插件的单人游戏和多人服务器。 +[如果模型太大(超过 30kB),则必须上传](#data-overflow) +可以使用编辑器中的“编辑/模型”菜单将皮肤兼容模型转换为常规[存储在皮肤中](#stored-in-skin)的模型(您必须从主菜单打开编辑器)。 +查看:[模型弹出窗口](https://github.com/tom5454/CustomPlayerModels/wiki/Models-Menu#models-popup) diff --git a/Localization/wiki/zh_cn/FAQ.md b/Localization/wiki/zh_cn/FAQ.md new file mode 100644 index 00000000..47379546 --- /dev/null +++ b/Localization/wiki/zh_cn/FAQ.md @@ -0,0 +1,157 @@ + + + +### 问题:Forge 或者 Fabric? +回答:是的:[CF上的Forge](https://www.curseforge.com/minecraft/mc-mods/custom-player-models), [CF上的Fabric/Quilt](https://www.curseforge.com/minecraft/mc-mods/custom-player-models-fabric), [CF上的Bukkit/Spigot/Paper](https://www.curseforge.com/minecraft/bukkit-plugins/custom-player-models-bukkit), [GitHub上的Bukkit/Spigot/Paper](https://github.com/tom5454/CustomPlayerModels/releases), [Modrinth上的Forge, Fabric 或 Quilt](https://modrinth.com/mod/custom-player-models) + + + + +### 问题:Discord服务器? +回答:[https://discord.gg/mKyXdEsMZD](https://discord.gg/mKyXdEsMZD) + + + + +### 问题:这个模组可以在服务器中使用吗? +回答:这是一个客户端模组。 这使得安装了该模组的玩家都可以看到您的模型。 请查看:[导出](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting) + + + + +### 问题:该项目/模型适用于我的 Minecraft 版本吗? +回答:是的,项目和模型适用于所有受支持的 Minecraft 版本。 + + + + +### 问题:模型编辑器在哪里? +回答:在游戏主菜单的左上角。您不需要下载第三方程序。 + + + + +### 问题:我要如何使用我的模型? +回答:您必须导出您的项目。 [导出](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting) + + + + +### 问题:我要如何制作模型? +回答:建议您先使用“转换原版模型”工具,它允许您直接编辑身体。 然后添加块、位和纹理,直到完成。 +请查看[Discord 上的#community-tutorials](https://discord.com/channels/811508670205788211/844561618281168968) 或 [CPM的综合用户指南](https://docs.google.com/presentation/d/117GBWxtyNT6L3a69cENXz1Gjx-MplB1UC9l_uISn6oQ/edit?usp=sharing) (Google文档),作者为`Discord 上的 @w3eb`,了解更多信息。 + + + + +### 问题:哪里可以下载到模型? +回答:请查看 [Discord 上的#free-models](https://discord.com/channels/811508670205788211/811532237521551360)。 + + + + +### 问题:如何设置颜色或者纹理? +回答:查看左侧面板并修改它。 如果你使用第三方软件(例如paint.net、GIMP 或 Photoshop)来完成此操作会容易得多。 您还可以更改纹理表的大小。 + + + + +### 问题:我要如何制作更多形状? +回答:你必须使用用块来制作它,不然你没有其他办法来实现不规则形状。 您可以用两个相同颜色的块制作一个三角形等。 + + + + +### 问题:我要如何制作动画? +回答:将其从一个姿势移动到另一个姿势,并使用毫秒计数来确定动画持续的时间。 您还可以让块在动画中出现和消失! + + + + +### 问题:我要如何导出 +回答:点击"导出"按钮,选择导出皮肤能使原版玩家(即未安装CPM模组)看见您的皮肤。 选择导出位置和文件名称,如果文件具有相同名称或包含无效字符,则不会导出。 + + + + +### 问你题:Gist是什么? +回答:在[https://gist.github.com/](https://gist.github.com/)上你可以创建一个Gist。但你需要创建一个Github账户,然后模组会给你一些内容,你可以将内容复制并粘贴到Gist中。创建好Gist后,复制其链接并将其粘贴到编辑器中。你需要这样做,因为皮肤文件无法包含它,因为要存储的数据太多了。 + + + + +### 问题:有教程吗? +回答:请查看[Discord 上的#community-tutorials](https://discord.com/channels/811508670205788211/844561618281168968) 或 [CPM的综合用户指南](https://docs.google.com/presentation/d/117GBWxtyNT6L3a69cENXz1Gjx-MplB1UC9l_uISn6oQ/edit?usp=sharing) (Google文档),作者为`Discord 上的 @w3eb`,了解更多信息。 + + + + +### 问题:如何让块发光? +回答:使用叫“发光的眼睛”的效果,您可以使整个模型/块“发光”(末影人的眼睛)。而且它是透明的,为了解决这个问题,在完全相同的位置创建两个相同的块,然后只让其中一个发光!然后它将是一个不透明的“发光”块!(您还可以使用光影使其有真正的发光效果) + + + + +### 问题:我要如何停止使用原版动画? +回答:关闭附加功能,然后稍微移动根肢体,然后您就可以制作自己的动画了!(**不是转换原版模型里面的东西**)。或者使用禁用原版动画效果。 + + + + +### 问题:模型没有在游戏中显示! +回答:你确定你使用的是正确的皮肤吗?请检查皮肤上是否有数据(颜色和其他东西)。 +离线/盗版服务器不会加载皮肤,因此请先在单人游戏中测试。 + + + + +### 问题:有人可以给我做个模型吗? +回答:除非有人提出可以免费给你做一个模型,不然请不要要求无偿,除非有人愿意做!!! + + + + +### 问题:如何制作好看的双腿? +回答:以特定方式排列块来制作特殊的腿,许多人制作的常见腿是双足腿。 + + + + +### 问题:我要如何做尾巴? +回答:添加一堆块并使其变长,YouTube 上有视频教程。 + + + + +### 问题:我可以拥有那个模型吗? +回答:请查了[Discord 上的 #free-models](https://discord.com/channels/811508670205788211/811532237521551360),因为他们可能不想分享它,或者如果他们还没有分享它,或者还在制作中! + + + + +### 问题:设置玩家模型类型(苗条形或经典型) +回答:文件/新建/新建模型/苗条或默认 + + + + +### 问题:bukkit 插件有什么用? +回答:该插件相当于在模组服务器上安装模组。模组和插件允许使用模型菜单快速修改模型。 + + + + +### 问题:快速修改模型 +回答:将模型导出为模型文件,然后使用手势菜单 (G) 中可访问的模型菜单。该模型必须安装在服务器上。 + + + + +### 问题:如何使用皮肤更换器 +回答:您可以在导出时选择“导出和上传”,或者在编辑器的“编辑/模型”下选择一个模型并点击“上传皮肤”。请注意,这仅在您不在游戏中时才有效。 + + + + +### 问题:我可以使用 Blockbench 吗? +回答:是的,有一个 Blockbench 的插件:[使用 Blockbench](https://github.com/tom5454/CustomPlayerModels/tree/master/Blockbench)。 diff --git a/Localization/wiki/zh_cn/FirstStartGuide.md b/Localization/wiki/zh_cn/FirstStartGuide.md new file mode 100644 index 00000000..9b4106c2 --- /dev/null +++ b/Localization/wiki/zh_cn/FirstStartGuide.md @@ -0,0 +1,70 @@ + + + +# 快速开始 +**本指南正在制作中。** + + + + +## 链接 +加入Discord服务器:[https://discord.gg/mKyXdEsMZD](https://discord.gg/mKyXdEsMZD) +Bug反馈:[https://github.com/tom5454/CustomPlayerModels/issues](https://github.com/tom5454/CustomPlayerModels/issues) + + + + +## Gui比例 +$[guiScale]() +如果您收到了GUI比例警告,请编辑在`编辑/设置/编辑器`下的设置。 + + + + +## 基本控制 + + + +### 鼠标控制: +$[mouseControls]() +您可以稍后在`编辑/按键绑定`下更改这些设置。 + + + + +### 滑块 +![图片:滑块](https://github.com/tom5454/CustomPlayerModels/wiki/images/spinner.png) +您可以按住 Shift 键可增加/减少 0.1 +您可以按住 Ctrl 键可增加/减少 10 +您可以输入数字。 + + + + +### 图片编辑器 +您可以按住 Ctrl 键并单击需要吸取的颜色 +您可以在外部编辑器中编辑纹理:保存纹理并修改它。 +使用“重新加载”按钮更新保存的文件中的纹理。 + + + + +## 模型和纹理 +[模型和纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Modelling) (在游戏内打开) +[纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Texturing) (在游戏内打开) +请查看[Discord 上的#community-tutorials](https://discord.com/channels/811508670205788211/844561618281168968) 或 [CPM的综合用户指南](https://docs.google.com/presentation/d/117GBWxtyNT6L3a69cENXz1Gjx-MplB1UC9l_uISn6oQ/edit?usp=sharing) (Google文档),作者为`Discord 上的 @w3eb`,了解更多信息。 + + + + +## 在游戏中使用您的模型 +使用`文件/测试游戏`快速测试您的模型。 + +要在没有`测试游戏`的情况下使用模型并在服务器上使用它,您必须将其导出。 +更多信息请查看 wiki 文章:[在这里](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting) (在游戏内打开) + + + + +## 常见问题 +[在这里](https://github.com/tom5454/CustomPlayerModels/wiki/FAQ) (在游戏内打开) diff --git a/Localization/wiki/zh_cn/Home.md b/Localization/wiki/zh_cn/Home.md new file mode 100644 index 00000000..1965c2a2 --- /dev/null +++ b/Localization/wiki/zh_cn/Home.md @@ -0,0 +1,24 @@ + + + +## 欢迎来到自定义玩家模型的Wiki! +* [模型](https://github.com/tom5454/CustomPlayerModels/wiki/Modelling) +* [纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Texturing) +* [使用模板](https://github.com/tom5454/CustomPlayerModels/wiki/Templates) +* [导出模型](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting) +* [创建动画](https://github.com/tom5454/CustomPlayerModels/wiki/Animations) +* [动画纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Animated-Textures) +* [使用Blockbench](https://github.com/tom5454/CustomPlayerModels/tree/master/Blockbench) +* [常见问题](https://github.com/tom5454/CustomPlayerModels/wiki/FAQ) + + + + +## 加载您的自定义定制模型 +要加载自定义模型,您必须[将模型导出为皮肤文件](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting)并将其上传为您的 Minecraft 皮肤。 Mod将会吧模型写入到皮肤文件上未使用的空间。 + + + + +### 开发扩展 +[API文档 (Beta)](https://github.com/tom5454/CustomPlayerModels/wiki/API-documentation) diff --git a/Localization/wiki/zh_cn/Mod-Integrations.md b/Localization/wiki/zh_cn/Mod-Integrations.md new file mode 100644 index 00000000..0f846588 --- /dev/null +++ b/Localization/wiki/zh_cn/Mod-Integrations.md @@ -0,0 +1,37 @@ +整合动画: +- [比例](https://github.com/tom5454/CustomPlayerModels/wiki/Scaling) +- [语音动画](#voice-animations) +- [第一人称视角](#first-person-view) +- [VR动画](#vr-animations) +- [OSC](#osc-protocol) + + + + +## 语音动画 +- [简单的语音聊天](https://www.curseforge.com/minecraft/mc-mods/simple-voice-chat) +需要兼容Mod:自定义玩家模型的简单的语音聊天兼容 [CurseForge](https://www.curseforge.com/minecraft/mc-mods/cpmsvcc)、[Modrinth](https://modrinth.com/mod/cpmsvcc) +- [Plasmo语音](https://www.curseforge.com/minecraft/mc-mods/plasmo-voice) +需要兼容Mod:自定义玩家模型Plasmo语音兼容 [CurseForge](https://www.curseforge.com/minecraft/mc-mods/cpmpvc), [Modrinth](https://modrinth.com/mod/cpmpvc) + + + + +## 第一人称视角 +- [更真实的第一人称模型 (Forge/Fabric)](https://www.curseforge.com/minecraft/mc-mods/first-person-model) + + + + +## VR动画 +- [ViveCraft 1.16.5、1.18.2 仅适用于 Forge](https://www.vivecraft.org/) +- [ViveCraft Mixin 版本 1.18+ Forge 和 Fabric](https://www.curseforge.com/minecraft/mc-mods/vivecraft) + + + + +## OSC协议 +您可以设置眼睛/面部跟踪动画、基于心率的动画或 Streamdeck 上的按钮等。 +[Wiki页面](https://github.com/tom5454/CustomPlayerModels/wiki/OSC-Setup) +或者使用支持 OSC 的外部程序设置自定义脚本。 [使用 OSC 编写脚本](https://github.com/tom5454/CustomPlayerModels/wiki/OSC-Setup#Scripting) +需要扩展Mod:自定义玩家模型OSC兼容 [CurseForge](https://www.curseforge.com/minecraft/mc-mods/cpmoscc), [Modrinth](https://modrinth.com/mod/cpmoscc) diff --git a/Localization/wiki/zh_cn/Modelling.md b/Localization/wiki/zh_cn/Modelling.md new file mode 100644 index 00000000..654c6cf0 --- /dev/null +++ b/Localization/wiki/zh_cn/Modelling.md @@ -0,0 +1,23 @@ + + + +## 模型 +模型块只能添加到现有元素(例如普通玩家模型或其他模型块)。旋转或移动时,自定义块将随其父元素一起移动。 +可以使用“切换可见性”按钮隐藏原始模型块,此选项在导出时不会隐藏自定义模型块。 +可以使用“效果/默认隐藏”选项隐藏自定义模型。 可以使用[自定义动画](https://github.com/tom5454/CustomPlayerModels/wiki/Animations)使隐藏部分可见。 + +![图片:模型设置面板](https://github.com/tom5454/CustomPlayerModels/wiki/images/model_settings.png) +枢轴点:元素的中心位置和旋转点。 +旋转:旋转。 + +位置:块位置相对于中心的枢轴点 +尺寸:块尺寸 + +缩放:缩放比例 +MC比例:从快组中心开始将尺寸增加设定量。 用于第二层皮肤。 +镜像:镜像纹理。 + +模式: +块可以有纯色或[自定义纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Texturing)。 + +可以复制原版块:右键单击/复制。 (v0.0.10a+) diff --git a/Localization/wiki/zh_cn/Models-Menu.md b/Localization/wiki/zh_cn/Models-Menu.md new file mode 100644 index 00000000..d9102d81 --- /dev/null +++ b/Localization/wiki/zh_cn/Models-Menu.md @@ -0,0 +1,41 @@ + + + +# 模型菜单 + +> [!NOTE] +> 此功能需要服务器上安装 CPM。 + +![模型菜单截图](https://github.com/tom5454/CustomPlayerModels/wiki/images/models_menu.png) + +您可以使用模型菜单动态更改模型。 +使用[模型选项](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting#model-file)导出模型 + +`从皮肤加载`按钮(以前叫`重置皮肤`)会禁用已启用的`.cpmmodel`并从[皮肤](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting#stored-in-skin)加载模型。 + + + + +## 文件夹 +模型菜单支持模型文件夹。 +您可以在模型菜单中应用`icon.png`和`description.txt`来设置文件夹图标和描述。 + + + + +## 导入 +当模型菜单打开时,您可以将`.cpmmodel`文件拖放到 Minecraft 游戏窗口中以导入它们。 + + + + +## 模型窗口 + +> [!NOTE] +> 您必须从标题屏幕打开编辑器才能使皮肤切换器工作! + +![模型窗口截图](https://github.com/tom5454/CustomPlayerModels/wiki/images/models_popup.png) +您可以选择一个模型并单击`上传皮肤`将现有的`.cpm模型`转换为皮肤导出。 +您必须使用“皮肤兼容”选项导出“.cpmmodel”才能使其工作。 + +更改皮肤工程会用所选皮肤替换您的皮肤。 diff --git a/Localization/wiki/zh_cn/OSC-Setup.md b/Localization/wiki/zh_cn/OSC-Setup.md new file mode 100644 index 00000000..8e27cc30 --- /dev/null +++ b/Localization/wiki/zh_cn/OSC-Setup.md @@ -0,0 +1,30 @@ +所需插件模组:[CurseForge 的自定义玩家模型OSC兼容](https://www.curseforge.com/minecraft/mc-mods/cpmoscc)、[Modrinth上的自定义玩家模型OSC兼容](https://modrinth.com/mod/cpmoscc) + + + + +## 通过 CPM 设置 OSC 触发动画 +您必须在`编辑/工具/OSC 设置`下配置 OSC。 +使用`编辑/工具/OSC动画向导`创建OSC触发动画。 +动画必须是`命令激活动画`。 +使用`值层`动画类型将 OSC 值映射到 CPM 动画。 +切换图层在 0.5 以上触发(映射) +值映射: +CPM 需要标准化值 (0-1),使用动画向导设置最小值和最大值。 +`值映射 = (OSC值 - minimum最小值_value) / (最大值 - 最小值)` + +CPM 与 OSC/VMC 值兼容。 + + + + +## 脚本编写 +您可以使用 [TouchOSC](https://hexler.net/touchosc#get) 运行响应 OSC 命令的 lua 脚本。 [TouchOSC 脚本编写示例](https://hexler.net/touchosc/manual/script-examples) +OSC 的 Python 库:[python-osc](https://github.com/attwad/python-osc) + + + + +## 其他应用程序 +人脸追踪:[VSeeFace](https://www.vseeface.icu/) +大多数 OSC 发送应用程序都可以与 VRChat 一起使用。 [VRChat OSC 资源](https://docs.vrchat.com/docs/osc-resources) diff --git a/Localization/wiki/zh_cn/Paste-site-API.md b/Localization/wiki/zh_cn/Paste-site-API.md new file mode 100644 index 00000000..275020f1 --- /dev/null +++ b/Localization/wiki/zh_cn/Paste-site-API.md @@ -0,0 +1,189 @@ + + + +# 粘贴站点API + + + +## Endpoints +* [下载](#download) +* [连接](#connect) +* [认证](#authenticate) +* [列表](#list) +* [上传](#upload) +* [删除](#delete) +* [更新](#update) +* [浏览器登录](#browser-login) +* [应用程序登录](#app-login) +* [应用程序检查](#app-check) +* [应用程序令牌请求](#app-token-request) +* [错误信息](#error-messages) + +API 地址:`https://paste.tom5454.com/` +Java中的完整实现:[CPM中的粘贴客户端](https://github.com/tom5454/CustomPlayerModels/blob/master/CustomPlayerModels/src/shared/java/com/tom/cpm/shared/paste/PasteClient.java) + + + + +### 下载 +URL:`raw/<粘贴ID>` + + + + +### 连接 +URL:`api/connect?name=<玩家名称>` +响应:(JSON) + * id:会话id,未来的请求中需要 + * key: Minecraft 加入服务器密钥 + +运行 minecraft 的加入服务器 api。 +这与您加入 Minecraft 服务器时 Minecraft 使用的身份验证相同。 +URL:`https://sessionserver.mojang.com/session/minecraft/join` +需要 POST 请求 +Post body:(JSON数据) + * accessToken:Minecraft 帐户访问令牌 + * selectedProfile:Minecraft 帐户 uuid 作为字符串(不带 `-` 字符) + * serverId: 使用服务器ID计算出的`key` + +服务器ID +SHA-1 哈希值: +`tom5454-paste`、`<会话ID>` 和 `` 作为 ASCII 字符串 +然后将结果字符串化为十六进制数。 +Java示例代码: +```java + byte[] mojKey = Base64.getDecoder().decode(key);//key string from api + // SHA-1 散列所有数据 + byte[] mojangKey = digestData("tom5454-paste".getBytes(), session.getBytes(), mojKey); + String serverId = new BigInteger(mojangKey).toString(16); +``` + +调用 [认证](#认证) 完成会话设置。 + + + + +### 认证 +URL:`api/session` +HTTP 报头: + * Session:<连接的会话 ID> + +响应:(JSON) + 成功时返回空 JSON + + + + +### 列表 +URL:`api/list` +HTTP 报头: + * Session:<连接的会话 ID> + +需要身份验证 +响应:(JSON) + * 文件(数组对象) + (每个对象) + * id:粘贴id + * name:粘贴名称 + * time: 上传时间(以毫秒为单位的 UTC 时间) + * maxSize + * maxFiles + + + + +### 上传 +URL: `api/upload` +HTTP 报头: + * Session:<连接的会话 ID> + * Content-Length: 文件长度 + * File-Name: 粘贴名称 + +需要身份验证 +需要 POST 请求 +Post body:粘贴内容 +响应:(JSON) + * id:粘贴的新随机粘贴 ID + + + + +### 删除 +URL: `api/delete?file=` +HTTP 报头: + * Session:<连接的会话 ID> + +需要身份验证 +响应:(JSON) + 成功时返回空 JSON + + + + +### 更新 +URL: `api/update?file=` +HTTP 报头: + * Session:<连接的会话 ID> + * Content-Length: 文件长度 + +需要身份验证 +需要 POST 请求 +Post body:粘贴内容 +响应:(JSON) + 成功时返回空 JSON + + + + +### 浏览器登录 +URL: `api/browser_login` +HTTP 报头: + * Session:<连接的会话 ID> + +需要身份验证 +响应:(JSON) + * id:浏览器登录令牌,有效期 5 分钟,可与`/login.html?id=`站点一起使用 + + + + +### 应用程序登录 +HTTP 报头: + * AppID:<应用程序 ID> + +响应:(JSON) + * id:应用程序登录令牌有效期为 5 分钟,可与`/auth.html?id=`站点一起使用 + + + + +### 应用程序检查 +URL: `api/app_check` +HTTP 报头: + * AppID:<应用程序 ID> + * Session:<应用程序登录的 ID> + +响应:(JSON) + * id:粘贴应用程序令牌 +或者 + * 如果尚未授权,则为空 JSON + + + + +### 应用程序令牌请求 +URL: `api/app_token_req` +HTTP 报头: + * AppID:<应用程序 ID> + * Session:<应用程序登录的 ID> + +响应:(JSON) + * id:粘贴可用于[列表](#列表)、[上传](#上传)、[删除](#删除)、[更新](#更新)的会话令牌 + + + + +### 错误信息 +响应:(JSON) + * error:人类可读的错误消息 + * errorMessage:错误消息的翻译键 diff --git a/Localization/wiki/zh_cn/Scaling.md b/Localization/wiki/zh_cn/Scaling.md new file mode 100644 index 00000000..e993ff08 --- /dev/null +++ b/Localization/wiki/zh_cn/Scaling.md @@ -0,0 +1,72 @@ + + + +## 比例 + +- [属性比例](#attribute-scaling) +- [支持的模组](#supported-mods) + + + + +### 属性调整 +CPM 可以使用[属性](https://minecraft.wiki/w/Attribute)应用一些比例设置。 有关每个 Minecraft 版本支持的属性,请查看下面的列表: +| 比例选项 | 1.6 - 1.8 | 1.10 | 1.12 | 1.14 - 1.17 | 1.18 - 1.20.4 | 1.20.5 | +| --- | --- | --- | --- | --- | --- | --- | +| 实体比例 | No | No | No | No | No | Yes | +| 动作级别 | Yes | Yes | Yes | Yes | Yes | Yes | +| 最大行走高度 | No | No | No | No | Yes | Yes | +| 飞行速度 | No | No | Yes | Yes | Yes | Yes | +| 摔落伤害等级 | No | No | No | No | No | Yes | +| 破甲 | No | No | Yes | Yes | Yes | Yes | +| 挖掘速度 | No | No | No | No | No | Yes | +| 攻击速度 | No | Yes | Yes | Yes | Yes | Yes | +| 击退 | No | No | No | Yes | Yes | Yes | +| 攻击伤害等级 | Yes | Yes | Yes | Yes | Yes | Yes | +| 保护等级 | No | Yes | Yes | Yes | Yes | Yes | +| 生命值 | Yes | Yes | Yes | Yes | Yes | Yes | +| 生物可见性 | Yes | Yes | Yes | Yes | Yes | Yes | +| 跳跃高度 | No | No | No | No | No | Yes | +| 击退抗性等级 | Yes | Yes | Yes | Yes | Yes | Yes | +| 安全摔落高度等级 | No | No | No | No | No | Yes | +| 比例选项 | 1.6 - 1.8 | 1.10 | 1.12 | 1.14 - 1.17 | 1.18 - 1.20.4 | 1.20.5 | + +方法名称:`属性` + + + + +### 支持的Mod + + + + +#### Pehkui +仅适用于 1.14+ +玩家大小、生命值、移动和各种属性都可以调整: +方法名称:`pehkui` +[CurseForge](https://www.curseforge.com/minecraft/mc-mods/pehkui), [Modrinth](https://modrinth.com/mod/pehkui) + + + + +#### 超级变变变(Chiseled Me) +仅适用于 1.10.2 和 1.12.2 +仅支持实体比例 +方法名称:`chiseledme` +[CurseForge](https://www.curseforge.com/minecraft/mc-mods/chiseled-me) + + + + +#### ArtemisLib +仅适用于 1.12.2 +仅支持实体比例、宽度、高度 +方法名称:`artemislib` +[CurseForge](https://www.curseforge.com/minecraft/mc-mods/artemislib) + + + + +## 服务器设置 +某些属性的比例默认情况下处于禁用状态,必须在服务器上使用 [/cpm 命令](https://github.com/tom5454/CustomPlayerModels/wiki/The--cpm-command#scaling) 启用。 diff --git a/Localization/wiki/zh_cn/Templates.md b/Localization/wiki/zh_cn/Templates.md new file mode 100644 index 00000000..71439e4d --- /dev/null +++ b/Localization/wiki/zh_cn/Templates.md @@ -0,0 +1,33 @@ +> [!CAUTION] +> 模板有缺陷且过时,请暂时不要使用它们。 +> 动画更新完成后,模板系统也会随之更新。 + + + + +## 使用模板 +模板是预先制作的模型,可以添加到您的玩家模型中。 +可以使用“编辑/添加模板”来导入模板。 +可以使用模板参数自定义模板,可以在模型树上访问。 + + + + +### 带纹理的模板 +可以使用模型树上可访问的纹理参数来预定义模板纹理或将其追加到皮肤纹理。 +您必须有一个比正常纹理更大的纹理表才能将模板纹理追加到您的皮肤上。 +选择“应用纹理”,然后在左侧的 U/V 设置将 Tex大小 设置为 1。使用“应用纹理”按钮将预定义的模板纹理绘制到你的画布上,同时也会绘制到当前的 U/V 位置。 + + + + +## 创建模板 +创建模板项目:“新建/模板”或“编辑/转换为模板” +导出模板:文件/导出,然后选择模板,然后将文本上传到 [GitHub Gist](https://gist.github.com/) 上。 + + + + +### 模板参数 +模板参数可用于允许自定义模型。 目前仅支持颜色参数。 +使用“添加”按钮添加模板参数并将元素绑定到“模型”下的参数。 diff --git a/Localization/wiki/zh_cn/Texturing.md b/Localization/wiki/zh_cn/Texturing.md new file mode 100644 index 00000000..90dc8f02 --- /dev/null +++ b/Localization/wiki/zh_cn/Texturing.md @@ -0,0 +1,25 @@ + + + +## 纹理 +![图片:纹理设置面板](https://github.com/tom5454/CustomPlayerModels/wiki/images/texture_settings.png) +U、V:左上角纹理坐标 +Tex大小:纹理大小乘数:将所有纹理坐标相乘。 + +模型纹理对齐: +![图片:模型纹理](https://github.com/tom5454/CustomPlayerModels/wiki/images/part_texture.png) + +重新加载:从磁盘重新加载打开的纹理/从保存位置重新加载纹理(使用“皮肤设置”/“保存皮肤”保存)。 + + + +### 皮肤设置: +![图片:皮肤设置弹出](https://github.com/tom5454/CustomPlayerModels/wiki/images/skin_settings.png) +打开皮肤/保存皮肤:加载/保存皮肤纹理。可以使用“重新加载”按钮重新加载。 +新皮肤:创建新的空白皮肤纹理。 +删除皮肤:恢复原版皮肤。 + + + +### 纹理表大小 +图片的大小以“像素”为单位。 一个“像素”是 U/V 坐标中的一个步长。 如果使用更高分辨率的皮肤,则不必与实际图片大小匹配。 diff --git a/Localization/wiki/zh_cn/The--cpm-command.md b/Localization/wiki/zh_cn/The--cpm-command.md new file mode 100644 index 00000000..23553ed9 --- /dev/null +++ b/Localization/wiki/zh_cn/The--cpm-command.md @@ -0,0 +1,155 @@ + + + +# `/cpm` 命令 + +> [!NOTE] +> 这是服务器端 CPM 命令,请查看客户端“/cpm client”命令,[在这里](https://github.com/tom5454/CustomPlayerModels/wiki/The--cpmclient-command) + + + + +### 子命令: +* [setskin](#setskin) +* [safety](#safety) +* [kick](#kick) +* [scaling](#scaling) +* [animate](#animate) +* [effects](#effects) +* [detect](#detect) + + + + +## setskin +用法:`/cpm setskin [-f|-t|-r] <目标> ` +参数: +* -f:强制设定模型,玩家无法更改自己的模型。 +* -t:临时模型,设定的模型会在玩家退出游戏时被清除。 +* -r:重置模型,移除服务器设置模型 + +Target:要设置模型的玩家 +Base64模型:使用Base64选项导出的模型。 +请查看:[Base64 导出](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting#base64) + + + + +## safety +子命令: +* [recommend](#safety-recommend) +* [set](#safety-set) + + + + +### safety recommend +用法:`/cpm safety recommend ` +启用发送安全设置建议。可以使用 [set](#safety-set) 命令设置选项。 + + + + +### safety set +用法:`/cpm safety set <选项> <值>` +设置推荐的安全设置 + + + + +## kick +控制将没有安装Mod的用户踢出。 +子命令: +* [enable](#kick-enable) +* [disable](#kick-disable) +* [message](#kick-message) + + + + +### kick enable +用法:`/cpm kick enable <踢出时间>` +踢出时间(以ticks为单位)之后踢出没有安装 mod 的用户。 + + + + +### kick disable +用法:`/cpm kick disable` +禁用踢出功能 + + + + +### kick message +用法:`/cpm kick message <踢出消息>` +设置踢出消息 + + + + +## scaling +用法:`/cpm scaling <缩放选项>` +子命令: +* [limit](#scaling-limit) +* [enabled](#scaling-enabled) +* [method](#scaling-method) +* [reset](#scaling-reset) + + + + +### scaling limit +用法:`/cpm scaling <缩选项> limit [玩家] <最大>` 或者 `/cpm scaling <缩放选项> limit [玩家] <最小> <最大>` +设置“缩放选项”的缩放限制。 可以选择使用`玩家`参数为每个玩家单独设置,对于全局设置留空。 + + + + +### scaling enabled +使用:`/cpm scaling <缩放选项> enabled [玩家] ` +启用“缩放选项”的缩放。 可以选择使用`玩家`参数为每个玩家单独设置,对于全局设置留空。 + + + + +### scaling method +使用:`/cpm scaling <缩放选项> method [玩家] <方法>` +设置“缩放选项”的缩放方法。 +支持的选项: +* `disable` 方法的作用就像未安装缩放Mod一样。 +* `default` 使用服务器默认的缩放器。 +* `attribute` 使用原版属性 +* `pehkui` 使用 [Pehkui](https://github.com/tom5454/CustomPlayerModels/wiki/Scaling#pehkui) 进行缩放(安装后) +* 有关其他支持的模组,请查看[缩放页面](https://github.com/tom5454/CustomPlayerModels/wiki/Scaling)。 + + + + +### scaling reset +使用:`/cpm scaling reset <玩家>` +重置选定玩家的缩放比例。 + + + + +## animate +使用:`/cpm animate <类型> <动画名称> [值(0-255)]` +为目标玩家播放动画。 +值:0:重置姿势/手势,1:播放姿势/手势,对于图层值:0-255,切换:0-1 或留空以切换状态。 + + + + +## effects +使用:`/cpm effects <效果> <选项>` +可用效果: +- `invisible_glow `:为隐形玩家启用发光层渲染。默认开启。重新登录后才有效。 + + + + +## detect +使用:`/cpm detect <类型> <动画名称> [值(0-255)]` +检测指定的动画是否正在播放 +如果存在`值`参数,则该命令检查动画值是否等于该参数 diff --git a/Localization/wiki/zh_cn/The--cpmclient-command.md b/Localization/wiki/zh_cn/The--cpmclient-command.md new file mode 100644 index 00000000..69456a2a --- /dev/null +++ b/Localization/wiki/zh_cn/The--cpmclient-command.md @@ -0,0 +1,63 @@ + + + +# `/cpmclient` 命令 + +添加自 0.6.15 + +> [!NOTE] +> Forge 1.14 到 1.17 之间的版本和 Fabric 1.19 以下的版本不支持客户端命令 +> 此命令在这些版本上被禁用。 + +> [!NOTE] +> 这是客户端 CPM 命令,请查看服务器端 `/cpm` 命令,[在这里](https://github.com/tom5454/CustomPlayerModels/wiki/The--cpm-command) + + + + +### 子命令 +* [profile](#profile) +* [safety](#safety) +* [animate](#animate) +* [set_model](#set_model) +* [reset_model](#reset_model) + + + + +## profile +用法:`/cpmclient profile <目标>` + +打开指定玩家的社交设置菜单 +目标:玩家名 + + + + +## safety +打开安全设置菜单 + + + + +## animate +用法:`/cpmclient animate <动画名称> [值(0-255)]` +为自己播放动画 +仅当具有“client:”前缀时才允许命令控制的动画。 +值:0:重置姿势/手势,1:播放姿势/手势,对于图层值:0-255,切换:0-1 或留空以切换状态。 + + + + +### set_model +用法:`/cpmclient set_model <模型文件>` +将当前模型更改为输入的模型文件。 +仅适用于安装了 mod 的服务器。 +这与模型菜单里的功能相同。 + + + + +### reset_model +删除当前选择的模型,并从皮肤加载。 +这与使用“模型菜单/从皮肤加载”按钮相同。 diff --git a/Localization/wiki/zh_cn/_Sidebar.md b/Localization/wiki/zh_cn/_Sidebar.md new file mode 100644 index 00000000..59edda2d --- /dev/null +++ b/Localization/wiki/zh_cn/_Sidebar.md @@ -0,0 +1,22 @@ +自定义玩家模型 Wiki +~[language_selector] + +* [主页](https://github.com/tom5454/CustomPlayerModels/wiki) +* [快速开始指南](https://github.com/tom5454/CustomPlayerModels/wiki/FirstStartGuide) +* [常见问题](https://github.com/tom5454/CustomPlayerModels/wiki/FAQ) +* 创建模型 + * [模型](https://github.com/tom5454/CustomPlayerModels/wiki/Modelling) + * [纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Texturing) + * [创建动画](https://github.com/tom5454/CustomPlayerModels/wiki/Animations) + * [动画纹理](https://github.com/tom5454/CustomPlayerModels/wiki/Animated-Textures) + * [导出模型](https://github.com/tom5454/CustomPlayerModels/wiki/Exporting) + * [编辑器控制](https://github.com/tom5454/CustomPlayerModels/wiki/Controls#editor-controls) +* [使用模板](https://github.com/tom5454/CustomPlayerModels/wiki/Templates) +* [模型菜单](https://github.com/tom5454/CustomPlayerModels/wiki/Models-Menu) +* [游戏内控制](https://github.com/tom5454/CustomPlayerModels/wiki/Controls#in-game-controls-keybindings) +* [扩展Mod](https://github.com/tom5454/CustomPlayerModels/wiki/Mod-Integrations) +* [比例](https://github.com/tom5454/CustomPlayerModels/wiki/Scaling) +* 命令 + * [/cpmclient 命令](https://github.com/tom5454/CustomPlayerModels/wiki/The--cpmclient-command) + * [/cpm 命令](https://github.com/tom5454/CustomPlayerModels/wiki/The--cpm-command) +* [API (Beta)](https://github.com/tom5454/CustomPlayerModels/wiki/API-documentation) diff --git a/Localization/zh_cn.json b/Localization/zh_cn.json index 68b4d5c3..c51cd6c5 100644 --- a/Localization/zh_cn.json +++ b/Localization/zh_cn.json @@ -26,7 +26,7 @@ "button.cpm.newSkin": "新建皮肤", "button.cpm.saveSkin": "保存皮肤", "button.cpm.tree.move": "移动", - "button.cpm.tree.put": "放置", + "button.cpm.tree.put": "应用", "button.cpm.display": "显示", "button.cpm.effect": "效果", "button.cpm.anim_reset_gesture": "重置手势", @@ -51,7 +51,7 @@ "button.cpm.new.model": "新建模型", "button.cpm.new.template": "新建模板", "button.cpm.duplicate": "复制", - "button.cpm.template_place_tex": "粘贴纹理", + "button.cpm.template_place_tex": "应用纹理", "button.cpm.template_remove_tex": "删除纹理", "button.cpm.export_def": "导出更新", "button.cpm.edit.settings": "设置", @@ -135,11 +135,11 @@ "button.cpm.editCopyTransform": "编辑复制转换", "button.cpm.openRecent": "最近打开的文件 \u003e", "button.cpm.keybindNone": "无", - "button.cpm.effect.setFpHandPos": "设置 FP 手位置", + "button.cpm.effect.setFpHandPos": "设置 FP 手枢轴点", "button.cpm.settings.reset": "重置", "button.cpm.config.menuButton": "上下文菜单按钮:%s", "button.cpm.config.selectButton": "选择按钮:s", - "button.cpm.openWikiSidebar": "目录 \u003e", + "button.cpm.openWikiSidebar": "ToC \u003e", "button.cpm.openWikiExt": "在浏览器中打开", "button.cpm.clearAnimDataAll": "全部清除", "button.cpm.defLayerSettings": "层默认值", @@ -174,14 +174,14 @@ "button.cpm.root_group.cape": "披风", "button.cpm.root_group.elytra": "鞘翅", "button.cpm.root_group.armor": "盔甲", - "button.cpm.root_group.itemHoldPos": "持有物品位置", + "button.cpm.root_group.itemHoldPos": "持有物品枢轴点", "button.cpm.root_group.parrots": "肩鹦鹉", "tooltip.cpm.export.as_skin": "将模型导出为皮肤文件。\\适用于原版服务器\\将模型编码到皮肤的未使用区域。", - "tooltip.cpm.export.as_b64": "将模型导出为 Base64 字符串。\\! 此选项适用于地图开发人员和服务器管理员!\\! 您可能希望导出为皮肤或模型而不是 Base64。 !\\可以加载\\\u0027/cpm setskin [-f | -t] \u003cplayer\u003e \u003cbase64_string\u003e\u0027\\命令在游戏中如果加载了服务器端mod并且你是一个操作。", + "tooltip.cpm.export.as_b64": "将模型导出为 Base64 字符串。\\! 此选项适用于地图开发人员和服务器管理员!\\! 您可能希望导出为皮肤或模型而不是 Base64。 !\\可以加载\\‘/cpm setskin [-f | -t] \u003c玩家\u003e \u003cBase64字符串\u003e’\\命令在游戏中如果加载了服务器端mod并且你是一个操作。", "tooltip.cpm.export.as_template": "将模型导出为模板。\\模板可以导入到其他项目中。", "tooltip.cpm.export.as_model": "将模型导出为 .cpmmodel 文件,\\将在皮肤自定义菜单中加载。\\可以在游戏中更改。\\! 服务器上需要该 mod 才能加载模型。 !", - "tooltip.cpm.customGridSize": "为纹理 U/V 启用自定义网格分辨率。\\不必匹配实际图像分辨率。\\宽高比应匹配。", - "tooltip.cpm.tools.convert_model_custom": "如果您想拥有更大的皮肤表,则将原版皮肤模型转换为自定义\\必需。", + "tooltip.cpm.customGridSize": "为纹理 U/V 启用自定义网格分辨率。\\不必匹配实际图片分辨率。\\宽高比应匹配。", + "tooltip.cpm.tools.convert_model_custom": "转换原版皮肤到自定义\\你要有更大的皮肤表则必须这么做", "tooltip.cpm.reloadSkin.file": "重新加载纹理:%s", "tooltip.cpm.reloadSkin.no_file": "无皮肤限制", "tooltip.cpm.new.template": "创建一个新的模板项目\\阅读关于使用模板的维基", @@ -190,7 +190,7 @@ "tooltip.cpm.config.titleScreenButton": "在标题屏幕上显示打开编辑器按钮\\打开编辑器按钮也可在选项/皮肤自定义 gui 中使用。", "tooltip.cpm.glow": "早期自发光。\\将末影人和蜘蛛眼使用的原版自发光眼睛效果应用到选定的模型。", "tooltip.cpm.display.onlyDrawOnSelected": "只允许在选定的模型上绘画。", - "tooltip.cpm.effect.scaling": "启用不同的模型缩放选项。\\有关选项,请参阅模型列表。", + "tooltip.cpm.effect.scaling": "启用不同的模型缩放选项。\\有关选项,请查看模型树。", "tooltip.cpm.cloneable": "任何人都可以克隆和使用此模型。\\在玩家设置菜单中克隆模型。", "tooltip.cpm.uuidlock": "将模型定义锁定到当前玩家 UUID。\\当前锁定 UUID:%s。\\这可以防止使用简单的皮肤获取软件获取模型。", "tooltip.cpm.uuidlockOw": "将模型定义锁定到已定义的 UUID。\\当前锁定 UUID:%s。\\这可以防止使用简单的皮肤获取软件获取模型。", @@ -205,7 +205,7 @@ "tooltip.cpm.export_def.noLink": "原版皮肤没有编码的链接文件", "tooltip.cpm.export.skin.vanillaSkinInfo": "这是没有模组的玩家会在多人服务器上看到的皮肤。", "tooltip.cpm.filechooser.openNative": "打开系统文件选择器", - "tooltip.cpm.singleTex": "在块的所有边上使用单个正方形纹理。\\正方形的大小由元素的最大尺寸值决定。\\适用于选定的元素。", + "tooltip.cpm.singleTex": "在块的所有边上使用单个块纹理。\\块的大小由元素的最大尺寸值决定。\\适用于选定的元素。", "tooltip.cpm.recolor": "对选定元素应用颜色过滤器。\\使用下面的按钮指定颜色。\\动画可以更改这些元素的颜色。", "tooltip.cpm.recolor.colorbtn": "为滤色器选择颜色。", "tooltip.cpm.hidden_effect": "从当前动画帧中删除所选模型。\\保留 ctrl 以从所有帧中删除。", @@ -215,7 +215,7 @@ "tooltip.cpm.deleteFace": "删除面", "tooltip.cpm.toAllFaces": "将 UV 应用到所有面", "tooltip.cpm.config.posMode.absolute": "模型原点始终位于中心,\\类似于Blockbench。", - "tooltip.cpm.config.posMode.relative": "子模型的原点位于父模型的位置。(默认)", + "tooltip.cpm.config.posMode.relative": "子块的原点位于父模型的枢轴点。(默认)", "tooltip.cpm.playerInfo": "玩家的名称:%s\\玩家的 UUID:%s", "tooltip.cpm.displServerInfo": "按住 SHIFT 和 ALT 以显示服务器 ip。", "tooltip.cpm.serverInfo": "服务器 IP: %s", @@ -224,7 +224,7 @@ "tooltip.cpm.safetyProfile.medium": "只为普通玩家加载较小的模型。\\(默认设置)", "tooltip.cpm.safetyProfile.high": "禁用普通玩家的模型加载。", "tooltip.cpm.effect.hideHeadIfSkull": "佩戴头颅时隐藏头部模型\\(默认开启)", - "tooltip.cpm.effect.removeArmorOffset": "移除重复盔甲模型的偏移。\\使复制盔甲模型的动画更容易。\\(默认开启,推荐)", + "tooltip.cpm.effect.removeArmorOffset": "移除重复盔甲模型的位置。\\使复制盔甲模型的动画更容易。\\(默认开启,推荐)", "tooltip.cpm.display.playVanillaAnims": "在动画/设置选项卡中播放原版动画。", "tooltip.cpm.playerUUID": "玩家名称:%s\\玩家的 UUID:%s\\加载模式:%s", "tooltip.cpm.addAnimatedTex": "将动画纹理区域添加到当前纹理。", @@ -236,18 +236,18 @@ "tooltip.cpm.tree.at.frameTime": "以毫秒为单位的一帧时间", "tooltip.cpm.tree.at.anX": "在垂直和水平\\动画帧布局之间切换", "tooltip.cpm.tree.at.interpolate": "在动画帧之间进行插值", - "tooltip.cpm.errorLog": "%s\\Level: %s\\Exception: %s\\按住 SHIFT 以显示堆栈跟踪。", + "tooltip.cpm.errorLog": "%s\\级别: %s\\异常: %s\\按住 SHIFT 显示堆栈跟踪。", "tooltip.cpm.errorLogST": "%s\\级别:%s\\异常:%s", "tooltip.cpm.saveSuccess": "%s 保存成功", "tooltip.cpm.autoSaveSuccess": "%s 自动保存成功", "tooltip.cpm.saving": "正在保存项目...", "tooltip.cpm.autosaving": "自动保存...", - "tooltip.cpm.errorTooltip": "%s\\有关详细信息,请参阅“编辑/错误日志”。", + "tooltip.cpm.errorTooltip": "%s\\有关详细信息,请查看“编辑/错误日志”。", "tooltip.cpm.paste.paste": "上传日期:%s\\粘贴 ID:%s", - "tooltip.cpm.extrude_effect": "将 2d 纹理挤出到 3d 模型中,例如持有的物品。", + "tooltip.cpm.extrude_effect": "将 2D 纹理挤出到 3D 模型中,例如持有的物品。", "tooltip.cpm.tree.scaling.entity": "全局缩放", "tooltip.cpm.brushAlpha": "画笔或填充工具的像素透明度设置。", - "tooltip.cpm.safety.blockNetwork": "禁用从服务器加载自定义模型。\\重新登录是必需的", + "tooltip.cpm.safety.blockNetwork": "禁用从服务器加载自定义模型。\\必需重新登录", "tooltip.cpm.animType.group.global": "全局动画", "tooltip.cpm.animType.group.custom": "自定义动画", "tooltip.cpm.animType.group.pose": "姿势动画\\只能播放一种姿势动画类型", @@ -268,45 +268,45 @@ "tooltip.cpm.animType.pose.global": "一直在播放动画", "tooltip.cpm.animType.pose.parrot_left": "鹦鹉坐在左肩", "tooltip.cpm.animType.pose.parrot_right": "鹦鹉坐在右肩", - "tooltip.cpm.tree.scaling.eye_height": "修改眼睛高度", - "tooltip.cpm.tree.scaling.hitbox_width": "修改碰撞箱宽度", - "tooltip.cpm.tree.scaling.hitbox_height": "修改碰撞箱高度", - "tooltip.cpm.tree.scaling.model": "模型渲染位置、旋转和缩放\\模型转换仅适用于自定义模型。", + "tooltip.cpm.tree.scaling.eye_height": "更改眼睛高度", + "tooltip.cpm.tree.scaling.hitbox_width": "更改碰撞箱宽度", + "tooltip.cpm.tree.scaling.hitbox_height": "更改碰撞箱高度", + "tooltip.cpm.tree.scaling.model": "模型渲染枢轴点、旋转和缩放\\模型转换仅适用于自定义块。", "tooltip.cpm.tree.scaling.third_person": "客户端和服务器都需要第三人称相机距离", "tooltip.cpm.tree.scaling.view_bobbing": "查看摆动速度大小", - "tooltip.cpm.tree.scaling.motion": "所有移动效果大小,如速度、跳跃高度、走路", - "tooltip.cpm.tree.scaling.step_height": "台阶高度大小", + "tooltip.cpm.tree.scaling.motion": "所有运动效果等级,如速度、跳跃高度、最大行走高度", + "tooltip.cpm.tree.scaling.step_height": "最大行走高度大小", "tooltip.cpm.tree.scaling.flight_speed": "创造飞行速度大小", - "tooltip.cpm.tree.scaling.fall_damage": "跌落伤害等级", - "tooltip.cpm.tree.scaling.reach": "到达距离大小", - "tooltip.cpm.tree.scaling.mining_speed": "挖矿速度大小", + "tooltip.cpm.tree.scaling.fall_damage": "摔落伤害等级", + "tooltip.cpm.tree.scaling.reach": "破甲距离大小", + "tooltip.cpm.tree.scaling.mining_speed": "挖掘速度等级", "tooltip.cpm.tree.scaling.attack_speed": "攻击速度等级", - "tooltip.cpm.tree.scaling.attack_knockback": "攻击击退量表", + "tooltip.cpm.tree.scaling.attack_knockback": "击退等级", "tooltip.cpm.tree.scaling.attack_dmg": "攻击伤害等级", - "tooltip.cpm.tree.scaling.defense": "防御规模", - "tooltip.cpm.tree.scaling.health": "生命大小", - "tooltip.cpm.tree.scaling.mob_visibility": "僵尸检测距离范围", - "tooltip.cpm.tree.scaling.width": "模型 \u0026 碰撞箱宽度比例", - "tooltip.cpm.tree.scaling.height": "模型 \u0026 碰撞箱高度比例", - "tooltip.cpm.tree.scaling.jump_height": "跳跃高度比例", + "tooltip.cpm.tree.scaling.defense": "保护等级", + "tooltip.cpm.tree.scaling.health": "生命值大小", + "tooltip.cpm.tree.scaling.mob_visibility": "生物可见性", + "tooltip.cpm.tree.scaling.width": "模型和碰撞箱宽度比例\\不影响移动速度", + "tooltip.cpm.tree.scaling.height": "模型和碰撞箱高度比例\\不影响移动速度", + "tooltip.cpm.tree.scaling.jump_height": "跳跃高度等级", "tooltip.cpm.tree.scaling.projectile_dmg": "投掷物伤害等级", "tooltip.cpm.tree.scaling.explosion_dmg": "爆炸伤害等级", - "tooltip.cpm.tree.scaling.disabledByDefault": "%s\\此设置默认禁用。\\使用\u0027/cpm scaling %s enable [玩家ID] true\u0027启用它,需要操作,仅在重启游戏后有效。", + "tooltip.cpm.tree.scaling.disabledByDefault": "%s\\此设置默认禁用。\\使用‘/cpm scaling %s enable [玩家ID] true’启用它,需要操作,仅在重启游戏后有效。", "tooltip.cpm.tree.scaling.serverRequired": "%s\\在客户端和服务器上都需要安装Customizable Player Models\\请查看Wiki上的缩放页面,了解适用于您的版本所需的模组。", "tooltip.cpm.animType.pose.freezing": "在细雪中结冰(1.17+)", "tooltip.cpm.animType.pose.speaking": "需要兼容的语音聊天Mod\\动画帧取决于声音响度", "tooltip.cpm.pluginGenerator": "%s\\添加者:%s", "tooltip.cpm.gestureQuickAccess": "在选项/控制菜单中绑定快速访问键\\将鼠标悬停在手势/姿势上并按下按钮进行绑定。\\按住 Ctrl 以启用按住播放模式。\\此模式将在您播放所选姿势/循环手势时 长按按钮", "tooltip.cpm.config.showLoadingInfo": "在玩家头顶显示模型加载状态。", - "tooltip.cpm.copyTransform": "复制元素位置、旋转和缩放\\在模型上单击鼠标右键,稍后编辑效果。", + "tooltip.cpm.copyTransform": "复制元素枢轴点、旋转和缩放\\右键单击块部分可以稍后编辑效果。", "tooltip.cpm.config.advScalingSettings": "始终启用高级缩放设置。", - "tooltip.cpm.effect.setFpHandPos": "设置第一人称手位置\\在游戏中转到文件/测试,在世界上一次\\按[%s]打开手势菜单\\打开左下角的手位置菜单。\\或按Ctrl+ 手势菜单", + "tooltip.cpm.effect.setFpHandPos": "设置第一人称手枢轴点\\转到`文件/测试游戏`,进入世界后\\按[%s]打开手势菜单\\打开左下角的手位置菜单。\\或按Ctrl+ 手势菜单", "tooltip.cpm.display.forceItemInAnim": "始终使用动画选项卡中选定的持有项目\\项目可能不会显示在正确的位置", "tooltip.cpm.display.displayGizmo": "切换显示 gizmo\\快捷键:%s", "tooltip.cpm.disableVanillaAnim": "禁用选定模型上的所有原版动画。", "tooltip.cpm.loading": "正在加载项目...", "tooltip.cpm.loadSuccess": "已加载项目:%s", - "tooltip.cpm.failedToLoadImage": "加载图像失败:%s", + "tooltip.cpm.failedToLoadImage": "加载图片失败:%s", "tooltip.cpm.config.wikiOfflineMode": "使用离线wiki,可能已经过时了!", "tooltip.cpm.config.editorGizmoAlpha": "Gizmo透明度", "tooltip.cpm.config.editorUVAreaAlpha": "选定的 UV 区域叠加透明度", @@ -329,16 +329,16 @@ "tooltip.cpm.animType.pose.vr_first_person": "当您的模型在 VR 中以第一人称显示时。", "tooltip.cpm.animType.pose.vr_third_person_sitting": "当您的模型在坐姿 VR 模式下以第三人称显示时。", "tooltip.cpm.animType.pose.vr_third_person_standing": "当您的模型在站立 VR 模式下以第三人称显示时。", - "tooltip.cpm.animType.pose.first_person_hand": "当你的模型\u0027的手以第一人称显示时。", + "tooltip.cpm.animType.pose.first_person_hand": "当模型的手以第一人称渲染时。", "tooltip.cpm.anim_is_property": "设置所选层动画是否为属性。\\属性层显示在模型属性菜单中\\并在游戏之间保存。", - "tooltip.cpm.anim_is_property.disable": "模型未启用此选项。\\通过设置 \u0027模型属性 ID\u0027 选项在\u0027 编辑/描述\u0027 下启用它。\\\\%s", + "tooltip.cpm.anim_is_property.disable": "模型未启用此选项。\\通过设置‘模型属性 ID’选项在‘编辑/描述’下启用它。\\\\%s", "tooltip.cpm.modelPropertyId": "为属性动画标识此模型的唯一 ID。", "tooltip.cpm.layerGroup": "分组图层显示在下拉框中\\一次只能在一个组中激活一个图层。", "tooltip.cpm.display.showPreviousFrame": "将动画的前一帧显示为所选模型的大纲", "tooltip.cpm.anim_command": "从手势Gui隐藏动画。\\只能通过命令或 API 播放。", "tooltip.cpm.noCopyTransforms": "无转换", "tooltip.cpm.config.editorEscExit": "按 ESC 启用退出编辑器", - "tooltip.cpm.effect.removeBedOffset": "删除睡眠姿势中的偏移,\\当其他玩家查看时\\使玩家沉入床上\\就像第一人称一样,使其在玩家之间看起来一致。\\需要转换模型", + "tooltip.cpm.effect.removeBedOffset": "删除睡眠姿势中的位置,\\当其他玩家查看时\\使玩家沉入床上\\就像第一人称一样,使其在玩家之间看起来一致。\\需要转换模型", "tooltip.cpm.anim.copyFrame": "复制当前帧", "tooltip.cpm.anim.pasteFrame": "从剪贴板设置当前帧", "tooltip.cpm.anim.copyData": "复制当前模型姿势", @@ -348,7 +348,7 @@ "tooltip.cpm.mirrorAnimations": "镜像模型的镜像动画", "tooltip.cpm.anim.mirrorFrameData": "镜像所选模型的姿势", "tooltip.cpm.keybind": "%s\\按键绑定: %s", - "tooltip.cpm.animType.pose.health": "动画帧取决于生命等级", + "tooltip.cpm.animType.pose.health": "动画帧取决于生命值等级", "tooltip.cpm.animType.pose.hunger": "动画帧取决于饥饿程度", "tooltip.cpm.animType.pose.air": "动画帧取决于空气等级", "tooltip.cpm.animType.pose.in_menu": "与方块交互时显示(箱子、熔炉……)", @@ -371,13 +371,12 @@ "tooltip.cpm.display.showOutlines": "显示块轮廓", "tooltip.cpm.config.showIngameWarnings": "在聊天中显示有关加载问题的警告消息。 (缩放/安全/UUID)", "tooltip.cpm.tree.scaling.knockback_resistance": "击退抗性", - "tooltip.cpm.openWikiTooltip": "%s\\按下 %s 快捷键,在游戏内打开Wiki上的页面 \u0027%s\u0027。", - "tooltip.cpm.config.experimentalExport0614": "使用0.6.14中添加的实验格式导出模型\\!!! 请务必保留您的项目文件,导出的模型可能会在未来的版本中损坏。 !!!\\请参阅变更日志以了解实验性功能。", + "tooltip.cpm.openWikiTooltip": "%s\\按下 %s 快捷键,在游戏内打开Wiki上的页面 ‘%s’。", + "tooltip.cpm.config.experimentalExport0614": "使用0.6.14中添加的实验格式导出模型\\!!! 请务必保留您的项目文件,导出的模型可能会在未来的版本中损坏。 !!!\\请查看变更日志以了解实验性功能。", "tooltip.cpm.export": "导出模型以在游戏中使用。", - "tooltip.cpm.tree.scaling.safe_fall_distance": "安全落地距离属性乘数", + "tooltip.cpm.tree.scaling.safe_fall_distance": "安全摔落高度属性乘数", "tooltip.cpm.tools.exportUVMap": "导出选定的纹理 UV 映射。", - "tooltip.cpm.uvexport.layered": "分层 OpenRaster (.ora) 文件。\\每个立方体贴图位于单独的图层上。", - "tooltip.cpm.config.updateChecker": "UNLOCALIZED: Enable checking for updates while starting the game/opening the Editor for the first time.\\Neo/Forge versions use the built in update checker that\u0027s separate from this setting.\\Also hides the Changelog button user Edit as it won\u0027t work anymore.", + "tooltip.cpm.config.updateChecker": "首次启动游戏/打开编辑器时启用检查更新。\\Neo/Forge 版本使用与此设置分开的内置更新检查器。\\同时隐藏“更改日志”的用户编辑按钮,因为它不再起作用。", "tab.cpm.model": "模型", "tab.cpm.texture": "纹理", "tab.cpm.animation": "动画", @@ -395,20 +394,20 @@ "tab.cpm.social.blocked": "被封锁的玩家", "tab.cpm.social.errorLog": "错误日志", "tab.cpm.export.paste": "上传粘贴", - "tab.cpm.export.gist": "上传摘要", + "tab.cpm.export.gist": "上传 Gist", "tab.cpm.tags.items": "物品", "tab.cpm.tags.blocks": "方块", "tab.cpm.tags.entities": "实体", "tab.cpm.tags.biomes": "生物群戏", - "label.cpm.position": "移动", - "label.cpm.size": "缩放", + "label.cpm.position": "枢轴点", + "label.cpm.size": "尺寸", "label.cpm.rotation": "旋转", - "label.cpm.offset": "移动", + "label.cpm.offset": "位置", "label.cpm.scale": "缩小", "label.cpm.mcScale": "MC比例", "label.cpm.mirror": "镜像", "label.cpm.name": "名称", - "label.cpm.texSize": "线密度大小:", + "label.cpm.texSize": "Tex 大小:", "label.cpm.loadFile": "加载项目", "label.cpm.saveFile": "保存项目", "label.cpm.error.load": "项目加载错误", @@ -473,10 +472,10 @@ "label.cpm.export_success": "导出成功", "label.cpm.export_success.desc": "模型成功导出为: %s", "label.cpm.result.base64_model": "Base64模型", - "label.cpm.result.base64_model.desc": "可以使用 \u0027/cpm setskin \u003cplayer\u003e \u003cbase64_string\u003e\u0027 在游戏中加载。", + "label.cpm.result.base64_model.desc": "可以使用 ‘/cpm setskin \u003c玩家\u003e \u003cBase64字符串\u003e’ 在游戏中加载。", "label.cpm.delSkin": "删除自定义皮肤?", "label.cpm.tex_size_too_big": "纹理尺寸太大!\\最大尺寸:%1$sx%1$s", - "label.cpm.skin_has_vanilla_parts": "模型仍然具有启用原版皮肤模型。\\更改此设置不会影响它们。\\使用编辑/转换原版模型将它们转换为自定义模型。", + "label.cpm.skin_has_vanilla_parts": "模型仍然启用了原版皮肤模型。\\更改此设置不会影响它们。\\使用编辑/转换原版模型将它们转换为自定义模型。", "label.cpm.template_name": "模板(%s)", "label.cpm.template_link_input": "模板链接", "label.cpm.template_link_input.desc": "输入模板链接", @@ -489,7 +488,7 @@ "label.cpm.tree.template_arguments": "模板参数", "label.cpm.tree.hidden": "%s [H]", "label.cpm.new_template_arg": "创建新模板参数", - "label.cpm.arg_desc": "参数说明:(使用 \u0027\\\u0027 换行)", + "label.cpm.arg_desc": "参数说明:(使用 ‘\\’ 换行)", "label.cpm.desc": "描述", "label.cpm.template_arg.color": "颜色", "label.cpm.template_arg.tex": "纹理", @@ -508,9 +507,9 @@ "label.cpm.no_gesture": "无手势", "label.cpm.anim_priority": "优先:", "label.cpm.template_tex_setup": "纹理设置", - "label.cpm.template_place_tex": "放置纹理", - "label.cpm.template_place_tex.title": "放置模板纹理", - "label.cpm.template_place_tex.desc": "您确定要放置模板纹理吗?\\下面的区域将被模板纹理覆盖。", + "label.cpm.template_place_tex": "应用纹理", + "label.cpm.template_place_tex.title": "应用模板纹理", + "label.cpm.template_place_tex.desc": "您确定要应用模板纹理吗?\\下面的区域将被模板纹理覆盖。", "label.cpm.template_arg_tex": "纹理设置", "label.cpm.result.skin_update": "皮肤要点更新", "label.cpm.result.skin_update.desc": "用以下文本替换您的皮肤模型要点:", @@ -532,7 +531,7 @@ "label.cpm.effect.scaling": "缩放", "label.cpm.cloneable": "可克隆", "label.cpm.uuidlock": "UUID 锁", - "label.cpm.display.firstPersonHand": "偏移第一人称手", + "label.cpm.display.firstPersonHand": "移动第一人称手", "label.cpm.firstPersonHand.offset_0": "左手", "label.cpm.firstPersonHand.offset_1": "右手", "label.cpm.export.skinCompat": "皮肤兼容", @@ -541,7 +540,7 @@ "label.cpm.skinUpload.fail": "将皮肤上传到 minecraft.net 失败\\错误:%s", "label.cpm.skinUpload.success": "皮肤成功上传到 minecraft.net", "label.cpm.export.upload": "上传?", - "label.cpm.export.upload.desc": "导出,然后将导出的皮肤上传到 minecraft.net.\\!!! 这将改变你当前的 Minecraft 皮肤!!!\\如果这不起作用,导出到图像并使用你的 Minecraft 启动器来应用,\\如果你使用非Minecraft官方启动器,可能需要重启 Minecraft。", + "label.cpm.export.upload.desc": "导出,然后将导出的皮肤上传到 minecraft.net.\\!!! 这将改变你当前的 Minecraft 皮肤!!!\\如果这不起作用,导出到图片并使用你的 Minecraft 启动器来应用,\\如果你使用非Minecraft官方启动器,可能需要重启 Minecraft。", "label.cpm.addSkinToFolder": "将皮肤添加到列表中?", "label.cpm.modelNotSkinCompatible": "输入模型名称:模型文件与皮肤不兼容", "label.cpm.convertFail": "无法将模型转换为皮肤", @@ -582,7 +581,7 @@ "label.cpm.safety.maxLink": "最大模型文件大小", "label.cpm.safety.maxCubeCount": "最大块数", "label.cpm.safety.slider": "%s(%s)", - "label.cpm.safetyProfile.custom": "自定义\u0027%s\u0027", + "label.cpm.safetyProfile.custom": "自定义‘%s’", "label.cpm.safetyProfile.off": "关闭", "label.cpm.safetyProfile.low": "低", "label.cpm.safetyProfile.medium": "中", @@ -595,7 +594,7 @@ "label.cpm.effect.cubeEffects": "- 块效果 ---", "label.cpm.effect.modelEffects": "- 模型效果 ---", "label.cpm.effect.hideHeadIfSkull": "头颅覆盖", - "label.cpm.effect.removeArmorOffset": "移除盔甲偏移", + "label.cpm.effect.removeArmorOffset": "移除盔甲位置", "label.cpm.enterNewUUID": "输入新的 UUID", "label.cpm.invalidUUID": "无效的 UUID", "label.cpm.display.layers": "- 层级 ---", @@ -675,17 +674,17 @@ "label.cpm.rangeOf": "最小值 %s,最大值 %s", "label.cpm.tree.scaling.third_person": "第三人称距离", "label.cpm.tree.scaling.view_bobbing": "查看摆动", - "label.cpm.tree.scaling.motion": "运动比例", - "label.cpm.tree.scaling.step_height": "台阶高度", + "label.cpm.tree.scaling.motion": "动作级别", + "label.cpm.tree.scaling.step_height": "最大行走高度", "label.cpm.tree.scaling.flight_speed": "飞行速度", - "label.cpm.tree.scaling.fall_damage": "摔落损伤量表", - "label.cpm.tree.scaling.reach": "范围", + "label.cpm.tree.scaling.fall_damage": "摔落伤害等级", + "label.cpm.tree.scaling.reach": "破甲", "label.cpm.tree.scaling.mining_speed": "挖掘速度", "label.cpm.tree.scaling.attack_speed": "攻击速度", - "label.cpm.tree.scaling.attack_knockback": "攻击击退", + "label.cpm.tree.scaling.attack_knockback": "击退", "label.cpm.tree.scaling.attack_dmg": "攻击伤害等级", - "label.cpm.tree.scaling.defense": "防御大小", - "label.cpm.tree.scaling.health": "生命", + "label.cpm.tree.scaling.defense": "保护等级", + "label.cpm.tree.scaling.health": "生命值", "label.cpm.tree.scaling.mob_visibility": "怪物可见性", "label.cpm.tree.scaling.width": "宽度", "label.cpm.tree.scaling.height": "高度", @@ -708,10 +707,10 @@ "label.cpm.copyTransform": "复制转换", "label.cpm.copyTransformFlag": "%s [CT]", "label.cpm.warnTemplate": "模板项目已经过时且处于实验状态\\并且缺少很多功能\\您可能想要创建一个普通模型\\您确定要继续吗?", - "label.cpm.keybind.position": "移动:", - "label.cpm.keybind.size": "缩放:", + "label.cpm.keybind.position": "枢轴点:", + "label.cpm.keybind.size": "尺寸:", "label.cpm.keybind.rotation": "旋转:", - "label.cpm.keybind.offset": "抵消:", + "label.cpm.keybind.offset": "位置:", "label.cpm.keybind.zoomInCamera": "放大:", "label.cpm.keybind.zoomOutCamera": "缩小:", "label.cpm.keybind.resetCamera": "重置视图:", @@ -719,7 +718,7 @@ "label.cpm.setKeybind.desc": "按任意键设置", "label.cpm.keybinds.title": "按键绑定", "label.cpm.keybinds.editor": "- 编辑 ---", - "label.cpm.keybinds.treeNav": "- 目录导航 ---", + "label.cpm.keybinds.treeNav": "- 树导航 ---", "label.cpm.keybind.quickMenu": "手势菜单", "label.cpm.keybind.save": "保存", "label.cpm.keybind.undo": "撤消", @@ -788,16 +787,16 @@ "label.cpm.new_profile": "[创建个人资料]", "label.cpm.modelPropertyId": "模型属性 ID", "label.cpm.overwriteProfile": "覆盖配置文件?", - "label.cpm.loadProfile": "加载配置文件\u0027%s\u0027?", + "label.cpm.loadProfile": "加载配置文件‘%s’?", "label.cpm.layerGroup": "图层组名称", "label.cpm.layerNone": "无", "label.cpm.display.showPreviousFrame": "显示上一帧", "label.cpm.anim_command": "命令激活动画", "label.cpm.config.editorEscExit": "使用 ESC 退出编辑器", "label.cpm.customGridSize": "自定义网格大小", - "label.cpm.effect.removeBedOffset": "删除床偏移", + "label.cpm.effect.removeBedOffset": "删除床位置", "label.cpm.keybinds.animAct": "- 动画动作 ---", - "label.cpm.keybind.focusCamera": "重点选择", + "label.cpm.keybind.focusCamera": "聚焦选定", "label.cpm.keybind.copyAnimFrame": "复制帧:", "label.cpm.keybind.pasteAnimFrame": "粘贴帧:", "label.cpm.keybind.copyAnimPart": "复制模型姿势:", @@ -831,7 +830,7 @@ "label.cpm.tags.raw.desc": "输入要添加的对象的 ID:", "label.cpm.import": "导入", "label.cpm.config.showIngameWarnings": "显示加载警告", - "label.cpm.tree.scaling.knockback_resist": "击退抗性比例", + "label.cpm.tree.scaling.knockback_resist": "击退抗性等级", "label.cpm.md.quote.note": "笔记", "label.cpm.md.quote.tip": "提示", "label.cpm.md.quote.important": "重要", @@ -844,16 +843,16 @@ "label.cpm.exportWarn": "您无法编辑已导出的模型。\\请备份好您的项目文件。", "label.cpm.keybinds.general": "- 常规 ---", "label.cpm.keybind.openWiki": "打开Wiki", - "label.cpm.tree.scaling.safe_fall_distance": "安全落地距离比例", + "label.cpm.tree.scaling.safe_fall_distance": "安全摔落高度等级", "label.cpm.file_openraster": "Open Raster文件(.ora)", "label.cpm.exportUVs": "导出 UV 映射", "label.cpm.tree.renamedRoot": "%s (%s)", "label.cpm.uvexport.layered": "分层 UV 映射", "label.cpm.uvexport.selected": "仅选定的元素", - "label.cpm.config.updateChecker": "UNLOCALIZED: Check for Updates", - "label.cpm.keybind.animPrevFrame": "UNLOCALIZED: Animation Previous Frame", - "label.cpm.keybind.animNextFrame": "UNLOCALIZED: Animation Next Frame", - "label.cpm.keybind.reloadTexture": "UNLOCALIZED: Reload Texture", + "label.cpm.config.updateChecker": "检查更新", + "label.cpm.keybind.animPrevFrame": "动画前一帧", + "label.cpm.keybind.animNextFrame": "动画下一帧", + "label.cpm.keybind.reloadTexture": "重新加载纹理", "label.cpm.paste.connecting.title": "连接...", "label.cpm.paste.connecting.message": "正在连接到粘贴站点...", "label.cpm.paste.listing": "正在刷新文件列表...", @@ -946,7 +945,7 @@ "label.cpm.pose.vr_third_person_sitting": "VR 第三人称视角(坐姿)", "label.cpm.pose.vr_third_person_standing": "VR 第三人称视角(站立)", "label.cpm.pose.first_person_hand": "第一人称手", - "label.cpm.pose.health": "生命", + "label.cpm.pose.health": "生命值", "label.cpm.pose.hunger": "饥饿", "label.cpm.pose.air": "空气", "label.cpm.pose.in_menu": "与方块交互", @@ -976,11 +975,11 @@ "label.cpm.block_reason.too_many_cubes": "块太多", "label.cpm.block_reason.texture_overflow": "纹理太大", "label.cpm.block_reason.uuid_lock": "被UUID锁锁定", - "error.cpm.crash": "CustomPlayerModels的GUI已崩溃。\\请在 GitHub 上创建Issues,并附上您的Minecraft日志。\\错误:%s", - "error.cpm.too_many_animations": "当前皮肤层设置的自定义动画太多。\\在 \u0027Animation\u0027 选项卡下编辑皮肤层设置。\\或者关闭某些动画的皮肤层触发设置。", + "error.cpm.crash": "自定义玩家模型的GUI已崩溃。\\请在 GitHub 上创建issuse,并附上您的Minecraft日志。\\错误:%s", + "error.cpm.too_many_animations": "当前皮肤层设置的自定义动画过多。\\在“动画”选项卡下编辑皮肤层设置。\\或者在某些动画上关闭“皮肤层触发”设置。", "error.cpm.custom_anims_not_supported": "当前的皮肤层设置不支持\\自定义姿势和手势。\\请在“动画”选项卡下的皮肤层设置中启用至少 2 个皮肤层。", - "error.cpm.img_load_failed": "无法加载图像文件\\%s", - "error.cpm.img_save_failed": "无法保存图像文件\\%s", + "error.cpm.img_load_failed": "无法加载图片文件\\%s", + "error.cpm.img_save_failed": "无法保存图片文件\\%s", "error.cpm.unknownError": "未知错误", "error.cpm.templateExportAsSkin": "模板项目不能作为皮肤导出。", "error.cpm.projectNotTemplate": "此项目不是模板\\使用编辑/转换为模板", @@ -999,7 +998,7 @@ "error.paste.parseError": "来自服务器的损坏响应", "error.paste.fileTooBig": "文件太大", "narrator.cpm.field": "文本域", - "key.cpm.category": "CustomPlayerModels", + "key.cpm.category": "自定义玩家模型", "key.cpm.gestureMenu": "手势菜单", "key.cpm.renderToggle": "切换渲染", "key.cpm.qa_1": "快速访问1", @@ -1011,8 +1010,8 @@ "commands.cpm.setskin.success": "设置 %s的皮肤", "commands.cpm.setskin.success.force": "强制设置%s的皮肤", "commands.cpm.usage": "有效的子命令:setskin、safety、kick、scaling、animate、effects、Detect", - "commands.cpm.setValue": "设置 \u0027%s\u0027到\u0027%s\u0027", - "commands.cpm.setValueFor": "将玩家 \u0027%s\u0027的\u0027%s\u0027设置为%s", + "commands.cpm.setValue": "设置 ‘%s’到‘%s’", + "commands.cpm.setValueFor": "将玩家 ‘%s’的‘%s’设置为%s", "commands.cpm.safety.recommend": "推荐安全设置", "commands.cpm.safety.profile.custom": "自定义", "commands.cpm.kickWOMod": "在没有模组的情况下踢出玩家", @@ -1058,10 +1057,10 @@ "action.cpm.arg": "参数", "action.cpm.rmFromArg": "从参数中删除", "action.cpm.bucketFill": "油漆桶填充", - "action.cpm.texSize": "模板大小", - "action.cpm.draw": "画", + "action.cpm.texSize": "纹理尺寸", + "action.cpm.draw": "绘制", "action.cpm.newTexture": "创建新纹理", - "action.cpm.placeTex": "放置纹理", + "action.cpm.placeTex": "应用纹理", "action.cpm.delTexture": "删除纹理", "action.cpm.rotateUV": "旋转UV", "action.cpm.deleteFace": "删除面", @@ -1170,15 +1169,15 @@ "bb-label.cpmInfo.export": "您必须导出到Customizable Player Models项目文件才能在游戏中使用它。", "bb-label.cpmInfo.import": "使用“打开Customizable Player Models项目”选项导入现有项目文件。", "bb-label.warn.unknownTexture": "未知纹理:%s", - "bb-label.warn.unknownRoot": "未知的根组:%s", + "bb-label.warn.unknownRoot": "未知的 Root 组:%s", "bb-label.warn.cubeSkipped": "跳过块。 检查跳过的Root", "bb-label.pleaseReport": "请在 GitHub 上报告", "bb-label.error.export": "导出时出错:", "bb-label.error.import": "导入时出错:", "bb-label.error.title": "CPM 插件错误", - "bb-label.selectRoot": "选择根组", - "bb-label.warn.invalidTexture": "块 \u0027%s\u0027 丢失或使用了错误的纹理", - "bb-label.selectTexture": "为 \u0027%s\u0027 选择纹理", + "bb-label.selectRoot": "选择 Root 组", + "bb-label.warn.invalidTexture": "块 ‘%s’ 丢失或使用了错误的纹理", + "bb-label.selectTexture": "为 ‘%s’ 选择纹理", "bb-label.selectTexture.title": "修复纹理", "bb-label.export.markDuplicateRoot": "标记为重复Root", "bb-label.export.renameGroup": "重命名组", @@ -1192,7 +1191,7 @@ "bb-label.warn.coloredCubeNotSupported": "不支持彩色块:%s", "bb-label.warn.copyTransformNotVis": "具有复制变换的元素无法正确显示", "bb-label.warn.multiple": "%s(%s 警告)", - "bb-label.warn.rootScaling": "缩放 Root 上的动画", + "bb-label.warn.rootScaling": "调整 Root 上的动画", "bb-label.warn.globalRotation": "全局旋转动画", "bb-label.newCPMProject": "新建新 CPM 项目", "bb-label.newAnimation": "新建新动画",