ChatAbilities.java
net.minecraft.client.multiplayer.chat.ChatAbilities
信息
- 全限定名:net.minecraft.client.multiplayer.chat.ChatAbilities
- 类型:public class
- 包:net.minecraft.client.multiplayer.chat
- 源码路径:src/main/java/net/minecraft/client/multiplayer/chat/ChatAbilities.java
- 起始行号:L15
- 职责:
TODO
字段/常量
-
NO_RESTRICTIONS- 类型:
ChatAbilities - 修饰符:
public static final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
restrictionReasons- 类型:
Set<ChatRestriction> - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
permissions- 类型:
PermissionSet - 修饰符:
private final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
visibleMessagesFilter- 类型:
Predicate<GuiMessage> - 修饰符:
private final - 源码定位:
L19 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.multiplayer.chat.ChatAbilities.Builder- 类型:
class - 修饰符:
public static - 源码定位:
L81 - 说明:
TODO
- 类型:
构造器
private ChatAbilities(Set<ChatRestriction> restrictionReasons) @ L21
- 构造器名:ChatAbilities
- 源码定位:L21
- 修饰符:private
参数:
- restrictionReasons: Set
说明:
TODO
方法
下面的方法块按源码顺序生成。
private static Predicate<GuiMessage> selectVisibleMessages(ChatAbilities chatAbilities) @ L33
- 方法名:selectVisibleMessages
- 源码定位:L33
- 返回类型:Predicate
- 修饰符:private static
参数:
- chatAbilities: ChatAbilities
说明:
TODO
public boolean hasAnyRestrictions() @ L48
- 方法名:hasAnyRestrictions
- 源码定位:L48
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public Stream<ChatRestriction> restrictions() @ L52
- 方法名:restrictions
- 源码定位:L52
- 返回类型:Stream
- 修饰符:public
参数:
- 无
说明:
TODO
public PermissionSet permissions() @ L56
- 方法名:permissions
- 源码定位:L56
- 返回类型:PermissionSet
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean canSendMessages() @ L60
- 方法名:canSendMessages
- 源码定位:L60
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean canSendCommands() @ L64
- 方法名:canSendCommands
- 源码定位:L64
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean canReceivePlayerMessages() @ L68
- 方法名:canReceivePlayerMessages
- 源码定位:L68
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean canReceiveSystemMessages() @ L72
- 方法名:canReceiveSystemMessages
- 源码定位:L72
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public Predicate<GuiMessage> visibleMessagesFilter() @ L76
- 方法名:visibleMessagesFilter
- 源码定位:L76
- 返回类型:Predicate
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ChatAbilities {
public static final ChatAbilities NO_RESTRICTIONS = new ChatAbilities(Set.of());
private final Set<ChatRestriction> restrictionReasons;
private final PermissionSet permissions;
private final Predicate<GuiMessage> visibleMessagesFilter;
private ChatAbilities(Set<ChatRestriction> restrictionReasons) {
this.restrictionReasons = restrictionReasons;
Set<Permission> permissionSet = new HashSet<>(Permissions.CHAT_PERMISSIONS);
for (ChatRestriction restrictionReason : restrictionReasons) {
restrictionReason.modifyPermissions(permissionSet);
}
this.permissions = Set.copyOf(permissionSet)::contains;
this.visibleMessagesFilter = selectVisibleMessages(this);
}
private static Predicate<GuiMessage> selectVisibleMessages(ChatAbilities chatAbilities) {
ImmutableSet.Builder<GuiMessageSource> visibleSourcesBuilder = ImmutableSet.builder();
visibleSourcesBuilder.add(GuiMessageSource.SYSTEM_CLIENT);
if (chatAbilities.canReceivePlayerMessages()) {
visibleSourcesBuilder.add(GuiMessageSource.PLAYER);
}
if (chatAbilities.canReceiveSystemMessages()) {
visibleSourcesBuilder.add(GuiMessageSource.SYSTEM_SERVER);
}
ImmutableSet<GuiMessageSource> visibleSources = visibleSourcesBuilder.build();
return guiMessage -> visibleSources.contains(guiMessage.source());
}
public boolean hasAnyRestrictions() {
return !this.restrictionReasons.isEmpty();
}
public Stream<ChatRestriction> restrictions() {
return this.restrictionReasons.stream();
}
public PermissionSet permissions() {
return this.permissions;
}
public boolean canSendMessages() {
return this.permissions.hasPermission(Permissions.CHAT_SEND_MESSAGES);
}
public boolean canSendCommands() {
return this.permissions.hasPermission(Permissions.CHAT_SEND_COMMANDS);
}
public boolean canReceivePlayerMessages() {
return this.permissions.hasPermission(Permissions.CHAT_RECEIVE_PLAYER_MESSAGES);
}
public boolean canReceiveSystemMessages() {
return this.permissions.hasPermission(Permissions.CHAT_RECEIVE_SYSTEM_MESSAGES);
}
public Predicate<GuiMessage> visibleMessagesFilter() {
return this.visibleMessagesFilter;
}
@OnlyIn(Dist.CLIENT)
public static class Builder {
private final Set<ChatRestriction> restrictions = new HashSet<>();
public ChatAbilities.Builder addRestriction(ChatRestriction restriction) {
this.restrictions.add(restriction);
return this;
}
public ChatAbilities build() {
return this.restrictions.isEmpty() ? ChatAbilities.NO_RESTRICTIONS : new ChatAbilities(Set.copyOf(this.restrictions));
}
}
}引用的其他类
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置: