ParticleCommand.java
net.minecraft.server.commands.ParticleCommand
信息
- 全限定名:net.minecraft.server.commands.ParticleCommand
- 类型:public class
- 包:net.minecraft.server.commands
- 源码路径:src/main/java/net/minecraft/server/commands/ParticleCommand.java
- 起始行号:L21
- 职责:
TODO
字段/常量
ERROR_FAILED- 类型:
SimpleCommandExceptionType - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext context) @ L24
- 方法名:register
- 源码定位:L24
- 返回类型:void
- 修饰符:public static
参数:
- dispatcher: CommandDispatcher
- context: CommandBuildContext
说明:
TODO
private static int sendParticles(CommandSourceStack source, ParticleOptions particle, Vec3 pos, Vec3 delta, float speed, int count, boolean force, Collection<ServerPlayer> players) @ L142
- 方法名:sendParticles
- 源码定位:L142
- 返回类型:int
- 修饰符:private static
参数:
- source: CommandSourceStack
- particle: ParticleOptions
- pos: Vec3
- delta: Vec3
- speed: float
- count: int
- force: boolean
- players: Collection
说明:
TODO
代码
public class ParticleCommand {
private static final SimpleCommandExceptionType ERROR_FAILED = new SimpleCommandExceptionType(Component.translatable("commands.particle.failed"));
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext context) {
dispatcher.register(
Commands.literal("particle")
.requires(Commands.hasPermission(Commands.LEVEL_GAMEMASTERS))
.then(
Commands.argument("name", ParticleArgument.particle(context))
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
c.getSource().getPosition(),
Vec3.ZERO,
0.0F,
0,
false,
c.getSource().getServer().getPlayerList().getPlayers()
)
)
.then(
Commands.argument("pos", Vec3Argument.vec3())
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
Vec3Argument.getVec3(c, "pos"),
Vec3.ZERO,
0.0F,
0,
false,
c.getSource().getServer().getPlayerList().getPlayers()
)
)
.then(
Commands.argument("delta", Vec3Argument.vec3(false))
.then(
Commands.argument("speed", FloatArgumentType.floatArg(0.0F))
.then(
Commands.argument("count", IntegerArgumentType.integer(0))
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
Vec3Argument.getVec3(c, "pos"),
Vec3Argument.getVec3(c, "delta"),
FloatArgumentType.getFloat(c, "speed"),
IntegerArgumentType.getInteger(c, "count"),
false,
c.getSource().getServer().getPlayerList().getPlayers()
)
)
.then(
Commands.literal("force")
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
Vec3Argument.getVec3(c, "pos"),
Vec3Argument.getVec3(c, "delta"),
FloatArgumentType.getFloat(c, "speed"),
IntegerArgumentType.getInteger(c, "count"),
true,
c.getSource().getServer().getPlayerList().getPlayers()
)
)
.then(
Commands.argument("viewers", EntityArgument.players())
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
Vec3Argument.getVec3(c, "pos"),
Vec3Argument.getVec3(c, "delta"),
FloatArgumentType.getFloat(c, "speed"),
IntegerArgumentType.getInteger(c, "count"),
true,
EntityArgument.getPlayers(c, "viewers")
)
)
)
)
.then(
Commands.literal("normal")
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
Vec3Argument.getVec3(c, "pos"),
Vec3Argument.getVec3(c, "delta"),
FloatArgumentType.getFloat(c, "speed"),
IntegerArgumentType.getInteger(c, "count"),
false,
c.getSource().getServer().getPlayerList().getPlayers()
)
)
.then(
Commands.argument("viewers", EntityArgument.players())
.executes(
c -> sendParticles(
c.getSource(),
ParticleArgument.getParticle(c, "name"),
Vec3Argument.getVec3(c, "pos"),
Vec3Argument.getVec3(c, "delta"),
FloatArgumentType.getFloat(c, "speed"),
IntegerArgumentType.getInteger(c, "count"),
false,
EntityArgument.getPlayers(c, "viewers")
)
)
)
)
)
)
)
)
)
);
}
private static int sendParticles(
CommandSourceStack source, ParticleOptions particle, Vec3 pos, Vec3 delta, float speed, int count, boolean force, Collection<ServerPlayer> players
) throws CommandSyntaxException {
int result = 0;
for (ServerPlayer player : players) {
if (source.getLevel().sendParticles(player, particle, force, false, pos.x, pos.y, pos.z, count, delta.x, delta.y, delta.z, speed)) {
result++;
}
}
if (result == 0) {
throw ERROR_FAILED.create();
} else {
source.sendSuccess(
() -> Component.translatable("commands.particle.success", BuiltInRegistries.PARTICLE_TYPE.getKey(particle.getType()).toString()), true
);
return result;
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Commands.argument(), Commands.hasPermission(), Commands.literal()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EntityArgument.getPlayers(), EntityArgument.players()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ParticleArgument.getParticle(), ParticleArgument.particle()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Vec3Argument.getVec3(), Vec3Argument.vec3()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: