Skip to content

Commit

Permalink
cleanup code
Browse files Browse the repository at this point in the history
  • Loading branch information
3093FengMing committed Dec 27, 2022
1 parent a355a98 commit f4a09ff
Show file tree
Hide file tree
Showing 11 changed files with 277 additions and 213 deletions.
184 changes: 106 additions & 78 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,69 @@
# Vanilla Hardcoded Breaker(Vault Patcher
# Vault Patcher(Vanilla Hardcoded Breaker)

[简体中文](README.md) [English](README_en_us.md)

### 硬编码->本地化字符串

### Let the hard coded change into localization string in some mods.

# 配置

## 基础配置
Vanilla Hardcoded Breaker会在`.minecraft\config\vaultpatcher`下生成config.json(下文统称***配置文件***

Vault Patcher会在`.minecraft\config\vaultpatcher`下生成config.json(下文统称***配置文件***

配置文件的格式大概是长这样:

```json
[
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":-1
},
"key":"I'm key",
"value":"Im value"
{
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": -1
},
{
"target_class":{
"name":"me.modid.item.relics",
"mapping":"SRG",
"stack_depth":3
},
"key":"Dragon Relic",
"value":"namespace.modify.modid.item.relics.dragonrelic"
"key": "I'm key",
"value": "Im value"
},
{
"target_class": {
"name": "me.modid.item.relics",
"mapping": "SRG",
"stack_depth": 3
},
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":0
},
"key":"Talents",
"value":"namespace.modify.the_vault.gui.talnets"
}
"key": "Dragon Relic",
"value": "namespace.modify.modid.item.relics.dragonrelic"
},
{
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": 0
},
"key": "Talents",
"value": "namespace.modify.the_vault.gui.talnets"
}
]
```

其中,

```json
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":-1
},
"key":"I'm key",
"value":"Im value"
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": -1
},
"key": "I'm key",
"value": "Im value"
}
```

就是一个翻译键值对,主要涉及到`key``value``target_class`

### 键值(key & value)

`key`,顾名思义,指定的是要翻译的字符串。

如果我想翻译标题界面的``Copyright Mojang AB. Do not distribute!``
Expand All @@ -67,26 +76,28 @@ Vanilla Hardcoded Breaker会在`.minecraft\config\vaultpatcher`下生成config.j

这样一个基础的键值对就完成了。
应该是这样子的:

```json
{
"key":"Copyright Mojang AB. Do not distribute!",
"value":"Mojang AB."
"key": "Copyright Mojang AB. Do not distribute!",
"value": "Mojang AB."
}
```

然而,光有这点东西是无法使用的。
你还得加上~~虽然基本用不到但是还是要加上的~~``target_class``

例如

```json
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":-1
},
"key":"Copyright Mojang AB. Do not distribute!",
"value":"Mojang AB."
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": -1
},
"key": "Copyright Mojang AB. Do not distribute!",
"value": "Mojang AB."
}
```

Expand All @@ -105,79 +116,96 @@ Vanilla Hardcoded Breaker会在`.minecraft\config\vaultpatcher`下生成config.j
`target_class`中有三个键:`name``mapping``stack_depth`

### 类名(name)
类名的匹配规则大概是这样的:
*`#`开头的字符串会视为模糊匹配(示例:`#TitleScreen`会匹配`net.minecraft.client.gui.screens.TitleScreen``net.minecraft.client.gui.screens.titlescreen`

类名的匹配规则大概是这样的:

*`#`开头的字符串会视为模糊匹配(示例:`#TitleScreen`会匹配`net.minecraft.client.gui.screens.TitleScreen`
`net.minecraft.client.gui.screens.titlescreen`
但不匹配`net.minecraft.client.gui.titlescreen.screens`
* 不以`#`开头的字符串会视为全匹配(示例:`net.minecraft.client.gui.screens.TitleScreen`会匹配`net.minecraft.client.gui.screens.TitleScreen``net.minecraft.client.gui.screens.titlescreen`
* 不以`#`开头的字符串会视为全匹配(示例:`net.minecraft.client.gui.screens.TitleScreen`会匹配`net.minecraft.client.gui.screens.TitleScreen`
`net.minecraft.client.gui.screens.titlescreen`
但不匹配`net.minecraft.client.gui.titlescreen.screens`

### 映射(mapping)

保留字段

### 堆栈深度(stack depth)

堆栈深度在堆栈中用于更精准的匹配类,
例如在如下堆栈中

```
java.base/java.lang.Thread.getStackTrace(Thread.java:1610),
TRANSFORMER/minecraft@1.18.2/net.minecraft.network.chat.TextComponent.handler$zza000$proxy_init(TextComponent.java:531),
TRANSFORMER/minecraft@1.18.2/net.minecraft.client.gui.screens.TitleScreen(TitleScreen.java:3),
...
```

`net.minecraft.client.gui.screens.TitleScreen``stack_depth`就是2。
`stack_depth`的大小取决于要定位的堆栈所处的位置,
使用`stack_depth`时,`name`不能为模糊匹配。

例如:

```json
{
"target_class":{
"name":"net.minecraft.client.gui.screens.TitleScreen",
"mapping":"SRG",
"stack_depth":2
},
"key":"Copyright Mojang AB. Do not distribute!",
"value":"Mojang AB."
"target_class": {
"name": "net.minecraft.client.gui.screens.TitleScreen",
"mapping": "SRG",
"stack_depth": 2
},
"key": "Copyright Mojang AB. Do not distribute!",
"value": "Mojang AB."
}
```

此时便能精准的定位到`net.minecraft.client.gui.screens.TitleScreen`这个类。

### 参考配置

**_(用于Vault Hunter 3rd Edition)_**

```json
[
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":0
},
"key":"Attack Damage",
"value":"namespace.modify.the_vault.gui.attackdamage"
{
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": 0
},
"key": "Attack Damage",
"value": "namespace.modify.the_vault.gui.attackdamage"
},
{
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": 0
},
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":0
},
"key":"Dragon Relic",
"value":"namespace.modify.the_vault.item.relics.dragonrelic"
"key": "Dragon Relic",
"value": "namespace.modify.the_vault.item.relics.dragonrelic"
},
{
"target_class": {
"name": "",
"mapping": "SRG",
"stack_depth": 0
},
{
"target_class":{
"name":"",
"mapping":"SRG",
"stack_depth":0
},
"key":"Talents",
"value":"namespace.modify.the_vault.gui.talnets"
}
"key": "Talents",
"value": "namespace.modify.the_vault.gui.talnets"
}
]
```

如果你仔细看的话,那么你会发现,`target_class`这个键其实很少被使用。

## 其他

#### 主作者:FengMing([github](https://github.com/3093FengMing))

#### 配置部分:teddyxlandlee([github](https://github.com/teddyxlandlee))

#### 想法:yiqv([github](https://github.com/yiqv))

#### Mod地址:[github](https://github.com/3093FengMing/VaultPatcher)[mcmod]()[bilibili]()
Loading

0 comments on commit f4a09ff

Please sign in to comment.