RecipeBookSettings.java
net.minecraft.stats.RecipeBookSettings
信息
- 全限定名:net.minecraft.stats.RecipeBookSettings
- 类型:public final class
- 包:net.minecraft.stats
- 源码路径:src/main/java/net/minecraft/stats/RecipeBookSettings.java
- 起始行号:L14
- 职责:
TODO
字段/常量
-
STREAM_CODEC- 类型:
StreamCodec<FriendlyByteBuf,RecipeBookSettings> - 修饰符:
public static final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
MAP_CODEC- 类型:
MapCodec<RecipeBookSettings> - 修饰符:
public static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
crafting- 类型:
RecipeBookSettings.TypeSettings - 修饰符:
private - 源码定位:
L35 - 说明:
TODO
- 类型:
-
furnace- 类型:
RecipeBookSettings.TypeSettings - 修饰符:
private - 源码定位:
L36 - 说明:
TODO
- 类型:
-
blastFurnace- 类型:
RecipeBookSettings.TypeSettings - 修饰符:
private - 源码定位:
L37 - 说明:
TODO
- 类型:
-
smoker- 类型:
RecipeBookSettings.TypeSettings - 修饰符:
private - 源码定位:
L38 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.stats.RecipeBookSettings.TypeSettings- 类型:
record - 修饰符:
public - 源码定位:
L114 - 说明:
TODO
- 类型:
构造器
public RecipeBookSettings() @ L40
- 构造器名:RecipeBookSettings
- 源码定位:L40
- 修饰符:public
参数:
- 无
说明:
TODO
private RecipeBookSettings(RecipeBookSettings.TypeSettings crafting, RecipeBookSettings.TypeSettings furnace, RecipeBookSettings.TypeSettings blastFurnace, RecipeBookSettings.TypeSettings smoker) @ L49
- 构造器名:RecipeBookSettings
- 源码定位:L49
- 修饰符:private
参数:
- crafting: RecipeBookSettings.TypeSettings
- furnace: RecipeBookSettings.TypeSettings
- blastFurnace: RecipeBookSettings.TypeSettings
- smoker: RecipeBookSettings.TypeSettings
说明:
TODO
方法
下面的方法块按源码顺序生成。
public RecipeBookSettings.TypeSettings getSettings(RecipeBookType type) @ L61
- 方法名:getSettings
- 源码定位:L61
- 返回类型:RecipeBookSettings.TypeSettings
- 修饰符:public
参数:
- type: RecipeBookType
说明:
TODO
private void updateSettings(RecipeBookType recipeBookType, UnaryOperator<RecipeBookSettings.TypeSettings> operator) @ L71
- 方法名:updateSettings
- 源码定位:L71
- 返回类型:void
- 修饰符:private
参数:
- recipeBookType: RecipeBookType
- operator: UnaryOperator<RecipeBookSettings.TypeSettings>
说明:
TODO
public boolean isOpen(RecipeBookType type) @ L87
- 方法名:isOpen
- 源码定位:L87
- 返回类型:boolean
- 修饰符:public
参数:
- type: RecipeBookType
说明:
TODO
public void setOpen(RecipeBookType type, boolean open) @ L91
- 方法名:setOpen
- 源码定位:L91
- 返回类型:void
- 修饰符:public
参数:
- type: RecipeBookType
- open: boolean
说明:
TODO
public boolean isFiltering(RecipeBookType type) @ L95
- 方法名:isFiltering
- 源码定位:L95
- 返回类型:boolean
- 修饰符:public
参数:
- type: RecipeBookType
说明:
TODO
public void setFiltering(RecipeBookType type, boolean filtering) @ L99
- 方法名:setFiltering
- 源码定位:L99
- 返回类型:void
- 修饰符:public
参数:
- type: RecipeBookType
- filtering: boolean
说明:
TODO
public RecipeBookSettings copy() @ L103
- 方法名:copy
- 源码定位:L103
- 返回类型:RecipeBookSettings
- 修饰符:public
参数:
- 无
说明:
TODO
public void replaceFrom(RecipeBookSettings other) @ L107
- 方法名:replaceFrom
- 源码定位:L107
- 返回类型:void
- 修饰符:public
参数:
- other: RecipeBookSettings
说明:
TODO
代码
public final class RecipeBookSettings {
public static final StreamCodec<FriendlyByteBuf, RecipeBookSettings> STREAM_CODEC = StreamCodec.composite(
RecipeBookSettings.TypeSettings.STREAM_CODEC,
o -> o.crafting,
RecipeBookSettings.TypeSettings.STREAM_CODEC,
o -> o.furnace,
RecipeBookSettings.TypeSettings.STREAM_CODEC,
o -> o.blastFurnace,
RecipeBookSettings.TypeSettings.STREAM_CODEC,
o -> o.smoker,
RecipeBookSettings::new
);
public static final MapCodec<RecipeBookSettings> MAP_CODEC = RecordCodecBuilder.mapCodec(
i -> i.group(
RecipeBookSettings.TypeSettings.CRAFTING_MAP_CODEC.forGetter(o -> o.crafting),
RecipeBookSettings.TypeSettings.FURNACE_MAP_CODEC.forGetter(o -> o.furnace),
RecipeBookSettings.TypeSettings.BLAST_FURNACE_MAP_CODEC.forGetter(o -> o.blastFurnace),
RecipeBookSettings.TypeSettings.SMOKER_MAP_CODEC.forGetter(o -> o.smoker)
)
.apply(i, RecipeBookSettings::new)
);
private RecipeBookSettings.TypeSettings crafting;
private RecipeBookSettings.TypeSettings furnace;
private RecipeBookSettings.TypeSettings blastFurnace;
private RecipeBookSettings.TypeSettings smoker;
public RecipeBookSettings() {
this(
RecipeBookSettings.TypeSettings.DEFAULT,
RecipeBookSettings.TypeSettings.DEFAULT,
RecipeBookSettings.TypeSettings.DEFAULT,
RecipeBookSettings.TypeSettings.DEFAULT
);
}
private RecipeBookSettings(
RecipeBookSettings.TypeSettings crafting,
RecipeBookSettings.TypeSettings furnace,
RecipeBookSettings.TypeSettings blastFurnace,
RecipeBookSettings.TypeSettings smoker
) {
this.crafting = crafting;
this.furnace = furnace;
this.blastFurnace = blastFurnace;
this.smoker = smoker;
}
@VisibleForTesting
public RecipeBookSettings.TypeSettings getSettings(RecipeBookType type) {
return switch (type) {
case CRAFTING -> this.crafting;
case FURNACE -> this.furnace;
case BLAST_FURNACE -> this.blastFurnace;
case SMOKER -> this.smoker;
};
}
private void updateSettings(RecipeBookType recipeBookType, UnaryOperator<RecipeBookSettings.TypeSettings> operator) {
switch (recipeBookType) {
case CRAFTING:
this.crafting = operator.apply(this.crafting);
break;
case FURNACE:
this.furnace = operator.apply(this.furnace);
break;
case BLAST_FURNACE:
this.blastFurnace = operator.apply(this.blastFurnace);
break;
case SMOKER:
this.smoker = operator.apply(this.smoker);
}
}
public boolean isOpen(RecipeBookType type) {
return this.getSettings(type).open;
}
public void setOpen(RecipeBookType type, boolean open) {
this.updateSettings(type, s -> s.setOpen(open));
}
public boolean isFiltering(RecipeBookType type) {
return this.getSettings(type).filtering;
}
public void setFiltering(RecipeBookType type, boolean filtering) {
this.updateSettings(type, s -> s.setFiltering(filtering));
}
public RecipeBookSettings copy() {
return new RecipeBookSettings(this.crafting, this.furnace, this.blastFurnace, this.smoker);
}
public void replaceFrom(RecipeBookSettings other) {
this.crafting = other.crafting;
this.furnace = other.furnace;
this.blastFurnace = other.blastFurnace;
this.smoker = other.smoker;
}
public record TypeSettings(boolean open, boolean filtering) {
public static final RecipeBookSettings.TypeSettings DEFAULT = new RecipeBookSettings.TypeSettings(false, false);
public static final MapCodec<RecipeBookSettings.TypeSettings> CRAFTING_MAP_CODEC = codec("isGuiOpen", "isFilteringCraftable");
public static final MapCodec<RecipeBookSettings.TypeSettings> FURNACE_MAP_CODEC = codec("isFurnaceGuiOpen", "isFurnaceFilteringCraftable");
public static final MapCodec<RecipeBookSettings.TypeSettings> BLAST_FURNACE_MAP_CODEC = codec(
"isBlastingFurnaceGuiOpen", "isBlastingFurnaceFilteringCraftable"
);
public static final MapCodec<RecipeBookSettings.TypeSettings> SMOKER_MAP_CODEC = codec("isSmokerGuiOpen", "isSmokerFilteringCraftable");
public static final StreamCodec<ByteBuf, RecipeBookSettings.TypeSettings> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.BOOL,
RecipeBookSettings.TypeSettings::open,
ByteBufCodecs.BOOL,
RecipeBookSettings.TypeSettings::filtering,
RecipeBookSettings.TypeSettings::new
);
@Override
public String toString() {
return "[open=" + this.open + ", filtering=" + this.filtering + "]";
}
public RecipeBookSettings.TypeSettings setOpen(boolean open) {
return new RecipeBookSettings.TypeSettings(open, this.filtering);
}
public RecipeBookSettings.TypeSettings setFiltering(boolean filtering) {
return new RecipeBookSettings.TypeSettings(this.open, filtering);
}
private static MapCodec<RecipeBookSettings.TypeSettings> codec(String openFieldName, String filteringFieldName) {
return RecordCodecBuilder.mapCodec(
i -> i.group(
Codec.BOOL.optionalFieldOf(openFieldName, false).forGetter(RecipeBookSettings.TypeSettings::open),
Codec.BOOL.optionalFieldOf(filteringFieldName, false).forGetter(RecipeBookSettings.TypeSettings::filtering)
)
.apply(i, RecipeBookSettings.TypeSettings::new)
);
}
}
}引用的其他类
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
StreamCodec.composite()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: