BedRule.java
net.minecraft.world.attribute.BedRule
信息
- 全限定名:net.minecraft.world.attribute.BedRule
- 类型:public record
- 包:net.minecraft.world.attribute
- 源码路径:src/main/java/net/minecraft/world/attribute/BedRule.java
- 起始行号:L12
- 职责:
TODO
字段/常量
-
CAN_SLEEP_WHEN_DARK- 类型:
BedRule - 修饰符:
public static final - 源码定位:
L13 - 说明:
TODO
- 类型:
-
EXPLODES- 类型:
BedRule - 修饰符:
public static final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
CODEC- 类型:
Codec<BedRule> - 修饰符:
public static final - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.world.attribute.BedRule.Rule- 类型:
enum - 修饰符:
public static - 源码定位:
L39 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public boolean canSleep(Level level) @ L27
- 方法名:canSleep
- 源码定位:L27
- 返回类型:boolean
- 修饰符:public
参数:
- level: Level
说明:
TODO
public boolean canSetSpawn(Level level) @ L31
- 方法名:canSetSpawn
- 源码定位:L31
- 返回类型:boolean
- 修饰符:public
参数:
- level: Level
说明:
TODO
public Player.BedSleepingProblem asProblem() @ L35
- 方法名:asProblem
- 源码定位:L35
- 返回类型:Player.BedSleepingProblem
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public record BedRule(BedRule.Rule canSleep, BedRule.Rule canSetSpawn, boolean explodes, Optional<Component> errorMessage) {
public static final BedRule CAN_SLEEP_WHEN_DARK = new BedRule(
BedRule.Rule.WHEN_DARK, BedRule.Rule.ALWAYS, false, Optional.of(Component.translatable("block.minecraft.bed.no_sleep"))
);
public static final BedRule EXPLODES = new BedRule(BedRule.Rule.NEVER, BedRule.Rule.NEVER, true, Optional.empty());
public static final Codec<BedRule> CODEC = RecordCodecBuilder.create(
i -> i.group(
BedRule.Rule.CODEC.fieldOf("can_sleep").forGetter(BedRule::canSleep),
BedRule.Rule.CODEC.fieldOf("can_set_spawn").forGetter(BedRule::canSetSpawn),
Codec.BOOL.optionalFieldOf("explodes", false).forGetter(BedRule::explodes),
ComponentSerialization.CODEC.optionalFieldOf("error_message").forGetter(BedRule::errorMessage)
)
.apply(i, BedRule::new)
);
public boolean canSleep(Level level) {
return this.canSleep.test(level);
}
public boolean canSetSpawn(Level level) {
return this.canSetSpawn.test(level);
}
public Player.BedSleepingProblem asProblem() {
return new Player.BedSleepingProblem(this.errorMessage.orElse(null));
}
public static enum Rule implements StringRepresentable {
ALWAYS("always"),
WHEN_DARK("when_dark"),
NEVER("never");
public static final Codec<BedRule.Rule> CODEC = StringRepresentable.fromEnum(BedRule.Rule::values);
private final String name;
private Rule(String name) {
this.name = name;
}
public boolean test(Level level) {
return switch (this) {
case ALWAYS -> true;
case WHEN_DARK -> level.isDarkOutside();
case NEVER -> false;
};
}
@Override
public String getSerializedName() {
return this.name;
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
StringRepresentable.fromEnum()
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
BedSleepingProblem(), Player.BedSleepingProblem()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: