CuboidModel.java
net.minecraft.client.resources.model.cuboid.CuboidModel
信息
- 全限定名:net.minecraft.client.resources.model.cuboid.CuboidModel
- 类型:public record
- 包:net.minecraft.client.resources.model.cuboid
- 源码路径:src/main/java/net/minecraft/client/resources/model/cuboid/CuboidModel.java
- 起始行号:L25
- 实现:UnbakedModel
- 职责:
TODO
字段/常量
GSON- 类型:
Gson - 修饰符:
static final - 源码定位:
L33 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.resources.model.cuboid.CuboidModel.Deserializer- 类型:
class - 修饰符:
public static - 源码定位:
L47 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static CuboidModel fromStream(Reader reader) @ L42
- 方法名:fromStream
- 源码定位:L42
- 返回类型:CuboidModel
- 修饰符:public static
参数:
- reader: Reader
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public record CuboidModel(
@Nullable UnbakedGeometry geometry,
UnbakedModel.@Nullable GuiLight guiLight,
@Nullable Boolean ambientOcclusion,
@Nullable ItemTransforms transforms,
TextureSlots.Data textureSlots,
@Nullable Identifier parent
) implements UnbakedModel {
@VisibleForTesting
static final Gson GSON = new GsonBuilder()
.registerTypeAdapter(CuboidModel.class, new CuboidModel.Deserializer())
.registerTypeAdapter(CuboidModelElement.class, new CuboidModelElement.Deserializer())
.registerTypeAdapter(CuboidFace.class, new CuboidFace.Deserializer())
.registerTypeAdapter(ItemTransform.class, new ItemTransform.Deserializer())
.registerTypeAdapter(ItemTransforms.class, new ItemTransforms.Deserializer())
.create();
public static CuboidModel fromStream(Reader reader) {
return GsonHelper.fromJson(GSON, reader, CuboidModel.class);
}
@OnlyIn(Dist.CLIENT)
public static class Deserializer implements JsonDeserializer<CuboidModel> {
public CuboidModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject object = json.getAsJsonObject();
UnbakedGeometry elements = this.getElements(context, object);
String parentName = this.getParentName(object);
TextureSlots.Data textureMap = this.getTextureMap(object);
Boolean hasAmbientOcclusion = this.getAmbientOcclusion(object);
ItemTransforms transforms = null;
if (object.has("display")) {
JsonObject display = GsonHelper.getAsJsonObject(object, "display");
transforms = context.deserialize(display, ItemTransforms.class);
}
UnbakedModel.GuiLight guiLight = null;
if (object.has("gui_light")) {
guiLight = UnbakedModel.GuiLight.getByName(GsonHelper.getAsString(object, "gui_light"));
}
Identifier parentLocation = parentName.isEmpty() ? null : Identifier.parse(parentName);
return new CuboidModel(elements, guiLight, hasAmbientOcclusion, transforms, textureMap, parentLocation);
}
private TextureSlots.Data getTextureMap(JsonObject object) {
if (object.has("textures")) {
JsonObject texturesObject = GsonHelper.getAsJsonObject(object, "textures");
return TextureSlots.parseTextureMap(texturesObject);
} else {
return TextureSlots.Data.EMPTY;
}
}
private String getParentName(JsonObject object) {
return GsonHelper.getAsString(object, "parent", "");
}
protected @Nullable Boolean getAmbientOcclusion(JsonObject object) {
return object.has("ambientocclusion") ? GsonHelper.getAsBoolean(object, "ambientocclusion") : null;
}
protected @Nullable UnbakedGeometry getElements(JsonDeserializationContext context, JsonObject object) {
if (!object.has("elements")) {
return null;
} else {
List<CuboidModelElement> elements = new ArrayList<>();
for (JsonElement element : GsonHelper.getAsJsonArray(object, "elements")) {
elements.add(context.deserialize(element, CuboidModelElement.class));
}
return new UnbakedCuboidGeometry(elements);
}
}
}
}引用的其他类
-
- 引用位置:
实现/方法调用 - 关联成员:
UnbakedModel.GuiLight.getByName()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
CuboidFace.Deserializer(), Deserializer()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
CuboidModelElement.Deserializer(), Deserializer()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
Deserializer(), ItemTransform.Deserializer()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
Deserializer(), ItemTransforms.Deserializer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
UnbakedCuboidGeometry()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TextureSlots.parseTextureMap()
- 引用位置:
-
ClientboundPlayerInfoUpdatePacket
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Identifier.parse()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
GsonHelper.fromJson(), GsonHelper.getAsBoolean(), GsonHelper.getAsJsonArray(), GsonHelper.getAsJsonObject(), GsonHelper.getAsString()
- 引用位置: