Dante_7
本帖最后由 鸭蛋只吃黄 于 2019-10-6 14:47 编辑

啊啊啊我明明点的是保存草稿啊, 怎么变成审核中了, 麻烦版主删帖, 谢谢啦

准备


阅读前的准备工作


反混淆


因为 mcp 和 yarn 的反混淆名称不相同, 所以这里记录一下几个核心类的反混淆名称. 这个表只用来参考类名, 文中涉及的方法, 字段名等还是以 fabric1.14.4 为准.



























fabric1.14.4 forge1.14.4
StructurePiece StructurePiece
StructureFeature Structure
AbstractTempleFeature ScatteredStructure
net.minecraft.world.gen.decorator.DecoratorConfig net.minecraft.world.gen.placement.IPlacementConfig

名词解释


结构


地图上自然生成的一些看上去像是 "人工" 建造的建筑物. 以下是 minecraft 1.14.4 版本中全部的结构:


<ul>
<li>掠夺者前哨站</li>
<li>废弃矿井</li>
<li>林地府邸</li>
<li>丛林神庙</li>
<li>沙漠神殿</li>
<li>冰屋</li>
<li>沉船</li>
<li>女巫的沼泽小屋</li>
<li>要塞</li>
<li>海底遗迹</li>
<li>海底废墟</li>
<li>下界要塞</li>
<li>埋藏的宝藏(藏宝图指向的那个箱子)</li>
<li>村庄</li>
</ul>


地牢从代码的角度来看不属于结构(没有在 STRUCTURES 中注册), 但是从生成代码来看应该属于代码的历史遗留问题. 毕竟要在世界中放置一些方块来组成建筑并不只有注册结构这一种方式. 在远古时代 mc 的开发者可能使用了一种不同的实现方式.


子结构


子结构代表结构的某一部分. 比如废弃矿井有四个子结构:


<ul>
<li>过道</li>
<li>十字路口(有四根模板柱子的那个正方形区域)</li>
<li>房间(泥土的大房间)</li>
<li>楼梯</li>
</ul>


合理地使用子结构


g 方法


指的是 StructureFeature, StructurePiece, StructureStart 类中的 generategenerateStructure 方法. 在不引起歧义的情况下用 g 代替比较容易辨认调用链.



2021.12 数据,可能有更多内容啊啊啊我明明点的是保存草稿啊, 怎么变成审核中了, 麻烦版主删帖, 谢谢啦


# 准备


阅读前的准备工作


## 反混淆


因为 mcp 和 yarn 的反混淆名称不相同, 所以这里记录一下几个核心类的反混淆名称. 这个表只用来参考类名, 文中涉及的方法, 字段名等还是以 fabric1.14.4 为准.


|    fabric1.14.4  |  forge1.14.4   |
| :-----------------------------------------------: | :------------------------------------------------: |
|   StructurePiece    |    StructurePiece    |
|  StructureFeature   |   Structure    |
|   AbstractTempleFeature   |  ScatteredStructure  |
| net.minecraft.world.gen.decorator.DecoratorConfig | net.minecraft.world.gen.placement.IPlacementConfig |


## 名词解释


### 结构


地图上自然生成的一些看上去像是 &quot;人工&quot; 建造的建筑物. 以下是 minecraft 1.14.4 版本中全部的结构:


&lt;ul&gt;
    &lt;li&gt;掠夺者前哨站&lt;/li&gt;
    &lt;li&gt;废弃矿井&lt;/li&gt;
    &lt;li&gt;林地府邸&lt;/li&gt;
    &lt;li&gt;丛林神庙&lt;/li&gt;
    &lt;li&gt;沙漠神殿&lt;/li&gt;
    &lt;li&gt;冰屋&lt;/li&gt;
    &lt;li&gt;沉船&lt;/li&gt;
    &lt;li&gt;女巫的沼泽小屋&lt;/li&gt;
    &lt;li&gt;要塞&lt;/li&gt;
    &lt;li&gt;海底遗迹&lt;/li&gt;
    &lt;li&gt;海底废墟&lt;/li&gt;
    &lt;li&gt;下界要塞&lt;/li&gt;
    &lt;li&gt;埋藏的宝藏(藏宝图指向的那个箱子)&lt;/li&gt;
    &lt;li&gt;村庄&lt;/li&gt;
&lt;/ul&gt;


地牢从代码的角度来看不属于结构(没有在 `STRUCTURES` 中注册), 但是从生成代码来看应该属于代码的历史遗留问题. 毕竟要在世界中放置一些方块来组成建筑并不只有注册结构这一种方式. 在远古时代 mc 的开发者可能使用了一种不同的实现方式.


### 子结构


子结构代表结构的某一部分. 比如废弃矿井有四个子结构:


&lt;ul&gt;
    &lt;li&gt;过道&lt;/li&gt;
    &lt;li&gt;十字路口(有四根模板柱子的那个正方形区域)&lt;/li&gt;
    &lt;li&gt;房间(泥土的大房间)&lt;/li&gt;
    &lt;li&gt;楼梯&lt;/li&gt;
&lt;/ul&gt;


合理地使用子结构


### g 方法


指的是 `StructureFeature`, `StructurePiece`, `StructureStart` 类中的 `generate` 或 `generateStructure` 方法. 在不引起歧义的情况下用 `g` 代替比较容易辨认调用链.