PartDefinition.java
net.minecraft.client.model.geom.builders.PartDefinition
信息
- 全限定名:net.minecraft.client.model.geom.builders.PartDefinition
- 类型:public class
- 包:net.minecraft.client.model.geom.builders
- 源码路径:src/main/java/net/minecraft/client/model/geom/builders/PartDefinition.java
- 起始行号:L17
- 职责:
TODO
字段/常量
-
cubes- 类型:
List<CubeDefinition> - 修饰符:
private final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
partPose- 类型:
PartPose - 修饰符:
private final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
children- 类型:
Map<String,PartDefinition> - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
PartDefinition(List<CubeDefinition> cubes, PartPose partPose) @ L22
- 构造器名:PartDefinition
- 源码定位:L22
- 修饰符:package-private
参数:
- cubes: List
- partPose: PartPose
说明:
TODO
方法
下面的方法块按源码顺序生成。
public PartDefinition addOrReplaceChild(String name, CubeListBuilder cubes, PartPose partPose) @ L27
- 方法名:addOrReplaceChild
- 源码定位:L27
- 返回类型:PartDefinition
- 修饰符:public
参数:
- name: String
- cubes: CubeListBuilder
- partPose: PartPose
说明:
TODO
public PartDefinition addOrReplaceChild(String name, PartDefinition child) @ L32
- 方法名:addOrReplaceChild
- 源码定位:L32
- 返回类型:PartDefinition
- 修饰符:public
参数:
- name: String
- child: PartDefinition
说明:
TODO
public PartDefinition clearRecursively() @ L41
- 方法名:clearRecursively
- 源码定位:L41
- 返回类型:PartDefinition
- 修饰符:public
参数:
- 无
说明:
TODO
public PartDefinition clearChild(String name) @ L49
- 方法名:clearChild
- 源码定位:L49
- 返回类型:PartDefinition
- 修饰符:public
参数:
- name: String
说明:
TODO
public void retainPartsAndChildren(Set<String> parts) @ L58
- 方法名:retainPartsAndChildren
- 源码定位:L58
- 返回类型:void
- 修饰符:public
参数:
- parts: Set
说明:
TODO
public void retainExactParts(Set<String> parts) @ L67
- 方法名:retainExactParts
- 源码定位:L67
- 返回类型:void
- 修饰符:public
参数:
- parts: Set
说明:
TODO
public ModelPart bake(int texScaleX, int texScaleY) @ L78
- 方法名:bake
- 源码定位:L78
- 返回类型:ModelPart
- 修饰符:public
参数:
- texScaleX: int
- texScaleY: int
说明:
TODO
public PartDefinition getChild(String name) @ L90
- 方法名:getChild
- 源码定位:L90
- 返回类型:PartDefinition
- 修饰符:public
参数:
- name: String
说明:
TODO
public Set<Entry<String,PartDefinition>> getChildren() @ L94
- 方法名:getChildren
- 源码定位:L94
- 返回类型:Set<Entry<String,PartDefinition>>
- 修饰符:public
参数:
- 无
说明:
TODO
public PartDefinition transformed(UnaryOperator<PartPose> function) @ L98
- 方法名:transformed
- 源码定位:L98
- 返回类型:PartDefinition
- 修饰符:public
参数:
- function: UnaryOperator
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class PartDefinition {
private final List<CubeDefinition> cubes;
private final PartPose partPose;
private final Map<String, PartDefinition> children = Maps.newHashMap();
PartDefinition(List<CubeDefinition> cubes, PartPose partPose) {
this.cubes = cubes;
this.partPose = partPose;
}
public PartDefinition addOrReplaceChild(String name, CubeListBuilder cubes, PartPose partPose) {
PartDefinition child = new PartDefinition(cubes.getCubes(), partPose);
return this.addOrReplaceChild(name, child);
}
public PartDefinition addOrReplaceChild(String name, PartDefinition child) {
PartDefinition previous = this.children.put(name, child);
if (previous != null) {
child.children.putAll(previous.children);
}
return child;
}
public PartDefinition clearRecursively() {
for (String name : this.children.keySet()) {
this.clearChild(name).clearRecursively();
}
return this;
}
public PartDefinition clearChild(String name) {
PartDefinition child = this.children.get(name);
if (child == null) {
throw new IllegalArgumentException("No child with name: " + name);
} else {
return this.addOrReplaceChild(name, CubeListBuilder.create(), child.partPose);
}
}
public void retainPartsAndChildren(Set<String> parts) {
for (Entry<String, PartDefinition> entry : this.children.entrySet()) {
PartDefinition child = entry.getValue();
if (!parts.contains(entry.getKey())) {
this.addOrReplaceChild(entry.getKey(), CubeListBuilder.create(), child.partPose).retainPartsAndChildren(parts);
}
}
}
public void retainExactParts(Set<String> parts) {
for (Entry<String, PartDefinition> entry : this.children.entrySet()) {
PartDefinition child = entry.getValue();
if (parts.contains(entry.getKey())) {
child.clearRecursively();
} else {
this.addOrReplaceChild(entry.getKey(), CubeListBuilder.create(), child.partPose).retainExactParts(parts);
}
}
}
public ModelPart bake(int texScaleX, int texScaleY) {
Object2ObjectArrayMap<String, ModelPart> bakedChildren = this.children
.entrySet()
.stream()
.collect(Collectors.toMap(Entry::getKey, e -> ((PartDefinition)e.getValue()).bake(texScaleX, texScaleY), (a, b) -> a, Object2ObjectArrayMap::new));
List<ModelPart.Cube> bakedCubes = this.cubes.stream().map(definition -> definition.bake(texScaleX, texScaleY)).toList();
ModelPart result = new ModelPart(bakedCubes, bakedChildren);
result.setInitialPose(this.partPose);
result.loadPose(this.partPose);
return result;
}
public PartDefinition getChild(String name) {
return this.children.get(name);
}
public Set<Entry<String, PartDefinition>> getChildren() {
return this.children.entrySet();
}
public PartDefinition transformed(UnaryOperator<PartPose> function) {
PartDefinition newPart = new PartDefinition(this.cubes, function.apply(this.partPose));
newPart.children.putAll(this.children);
return newPart;
}
}引用的其他类
-
- 引用位置:
构造调用/返回值 - 关联成员:
ModelPart()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
CubeListBuilder.create()
- 引用位置: