SoundEventRegistrationSerializer.java
net.minecraft.client.resources.sounds.SoundEventRegistrationSerializer
信息
- 全限定名:net.minecraft.client.resources.sounds.SoundEventRegistrationSerializer
- 类型:public class
- 包:net.minecraft.client.resources.sounds
- 源码路径:src/main/java/net/minecraft/client/resources/sounds/SoundEventRegistrationSerializer.java
- 起始行号:L22
- 实现:JsonDeserializer
- 职责:
TODO
字段/常量
DEFAULT_FLOAT- 类型:
FloatProvider - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public SoundEventRegistration deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) @ L25
- 方法名:deserialize
- 源码定位:L25
- 返回类型:SoundEventRegistration
- 修饰符:public
参数:
- json: JsonElement
- typeOfT: Type
- context: JsonDeserializationContext
说明:
TODO
private List<Sound> getSounds(JsonObject object) @ L33
- 方法名:getSounds
- 源码定位:L33
- 返回类型:List
- 修饰符:private
参数:
- object: JsonObject
说明:
TODO
private Sound getSound(JsonObject object) @ L52
- 方法名:getSound
- 源码定位:L52
- 返回类型:Sound
- 修饰符:private
参数:
- object: JsonObject
说明:
TODO
private Sound.Type getType(JsonObject sound, Sound.Type fallback) @ L67
- 方法名:getType
- 源码定位:L67
- 返回类型:Sound.Type
- 修饰符:private
参数:
- sound: JsonObject
- fallback: Sound.Type
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class SoundEventRegistrationSerializer implements JsonDeserializer<SoundEventRegistration> {
private static final FloatProvider DEFAULT_FLOAT = ConstantFloat.of(1.0F);
public SoundEventRegistration deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject object = GsonHelper.convertToJsonObject(json, "entry");
boolean replace = GsonHelper.getAsBoolean(object, "replace", false);
String subtitle = GsonHelper.getAsString(object, "subtitle", null);
List<Sound> sounds = this.getSounds(object);
return new SoundEventRegistration(sounds, replace, subtitle);
}
private List<Sound> getSounds(JsonObject object) {
List<Sound> result = Lists.newArrayList();
if (object.has("sounds")) {
JsonArray array = GsonHelper.getAsJsonArray(object, "sounds");
for (int i = 0; i < array.size(); i++) {
JsonElement element = array.get(i);
if (GsonHelper.isStringValue(element)) {
Identifier name = Identifier.parse(GsonHelper.convertToString(element, "sound"));
result.add(new Sound(name, DEFAULT_FLOAT, DEFAULT_FLOAT, 1, Sound.Type.FILE, false, false, 16));
} else {
result.add(this.getSound(GsonHelper.convertToJsonObject(element, "sound")));
}
}
}
return result;
}
private Sound getSound(JsonObject object) {
Identifier name = Identifier.parse(GsonHelper.getAsString(object, "name"));
Sound.Type type = this.getType(object, Sound.Type.FILE);
float volume = GsonHelper.getAsFloat(object, "volume", 1.0F);
Validate.isTrue(volume > 0.0F, "Invalid volume");
float pitch = GsonHelper.getAsFloat(object, "pitch", 1.0F);
Validate.isTrue(pitch > 0.0F, "Invalid pitch");
int weight = GsonHelper.getAsInt(object, "weight", 1);
Validate.isTrue(weight > 0, "Invalid weight");
boolean preload = GsonHelper.getAsBoolean(object, "preload", false);
boolean stream = GsonHelper.getAsBoolean(object, "stream", false);
int attenuationDistance = GsonHelper.getAsInt(object, "attenuation_distance", 16);
return new Sound(name, ConstantFloat.of(volume), ConstantFloat.of(pitch), weight, type, stream, preload, attenuationDistance);
}
private Sound.Type getType(JsonObject sound, Sound.Type fallback) {
Sound.Type type = fallback;
if (sound.has("type")) {
type = Sound.Type.getByName(GsonHelper.getAsString(sound, "type"));
Objects.requireNonNull(type, "Invalid type");
}
return type;
}
}引用的其他类
-
- 引用位置:
参数/方法调用/构造调用/返回值 - 关联成员:
Sound(), Sound.Type.getByName()
- 引用位置:
-
- 引用位置:
实现/构造调用/返回值 - 关联成员:
SoundEventRegistration()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Identifier.parse()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
GsonHelper.convertToJsonObject(), GsonHelper.convertToString(), GsonHelper.getAsBoolean(), GsonHelper.getAsFloat(), GsonHelper.getAsInt(), GsonHelper.getAsJsonArray(), GsonHelper.getAsString(), GsonHelper.isStringValue()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ConstantFloat.of()
- 引用位置:
-
- 引用位置:
字段
- 引用位置: