MsgCommand.java
net.minecraft.server.commands.MsgCommand
信息
- 全限定名:net.minecraft.server.commands.MsgCommand
- 类型:public class
- 包:net.minecraft.server.commands
- 源码路径:src/main/java/net/minecraft/server/commands/MsgCommand.java
- 起始行号:L16
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static void register(CommandDispatcher<CommandSourceStack> dispatcher) @ L17
- 方法名:register
- 源码定位:L17
- 返回类型:void
- 修饰符:public static
参数:
- dispatcher: CommandDispatcher
说明:
TODO
private static void sendMessage(CommandSourceStack source, Collection<ServerPlayer> players, PlayerChatMessage message) @ L33
- 方法名:sendMessage
- 源码定位:L33
- 返回类型:void
- 修饰符:private static
参数:
- source: CommandSourceStack
- players: Collection
- message: PlayerChatMessage
说明:
TODO
代码
public class MsgCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
LiteralCommandNode<CommandSourceStack> msg = dispatcher.register(
Commands.literal("msg")
.then(Commands.argument("targets", EntityArgument.players()).then(Commands.argument("message", MessageArgument.message()).executes(c -> {
Collection<ServerPlayer> players = EntityArgument.getPlayers(c, "targets");
if (!players.isEmpty()) {
MessageArgument.resolveChatMessage(c, "message", message -> sendMessage(c.getSource(), players, message));
}
return players.size();
})))
);
dispatcher.register(Commands.literal("tell").redirect(msg));
dispatcher.register(Commands.literal("w").redirect(msg));
}
private static void sendMessage(CommandSourceStack source, Collection<ServerPlayer> players, PlayerChatMessage message) {
ChatType.Bound incomingChatType = ChatType.bind(ChatType.MSG_COMMAND_INCOMING, source);
OutgoingChatMessage tracked = OutgoingChatMessage.create(message);
boolean wasFullyFiltered = false;
for (ServerPlayer player : players) {
ChatType.Bound outgoingChatType = ChatType.bind(ChatType.MSG_COMMAND_OUTGOING, source).withTargetName(player.getDisplayName());
source.sendChatMessage(tracked, false, outgoingChatType);
boolean filtered = source.shouldFilterMessageTo(player);
player.sendChatMessage(tracked, filtered, incomingChatType);
wasFullyFiltered |= filtered && message.isFullyFiltered();
}
if (wasFullyFiltered) {
source.sendSystemMessage(PlayerList.CHAT_FILTERED_FULL);
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Commands.argument(), Commands.literal()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EntityArgument.getPlayers(), EntityArgument.players()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
MessageArgument.message(), MessageArgument.resolveChatMessage()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ChatType.bind()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
OutgoingChatMessage.create()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: