mirror of
https://github.com/TheWhiteDog9487/RandomTeleporter.git
synced 2025-10-15 16:05:04 +08:00
使单个根名称的命令树一次性完成注册
并且现在由Minecraft自己的命令解析器确保用户输入的随机半径>=0 返回标准Command.SINGLE_SUCCESS
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package xyz.thewhitedog9487;
|
package xyz.thewhitedog9487;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.Command;
|
||||||
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
||||||
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
@@ -44,68 +45,48 @@ public class CommandRegister {
|
|||||||
* @see <a href="https://wiki.fabricmc.net/tutorial:commands">Fabric Wiki (Old style,English)</a>
|
* @see <a href="https://wiki.fabricmc.net/tutorial:commands">Fabric Wiki (Old style,English)</a>
|
||||||
*/
|
*/
|
||||||
public static void Register(String Name){
|
public static void Register(String Name){
|
||||||
// /rtp
|
|
||||||
CommandRegistrationCallback.EVENT
|
CommandRegistrationCallback.EVENT
|
||||||
.register((dispatcher, registryAccess, environment) ->{
|
.register((dispatcher, registryAccess, environment) ->{
|
||||||
dispatcher.register(literal(Name)
|
dispatcher.register(literal(Name)
|
||||||
|
// /rtp
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),null,null, null)));});
|
context.getSource(),null,null, null))
|
||||||
|
|
||||||
// /rtp <Radius(半径)>
|
// /rtp <Radius(半径)>
|
||||||
CommandRegistrationCallback.EVENT
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
null,
|
null,
|
||||||
null))));});
|
null)))
|
||||||
|
|
||||||
// /rtp <被传送玩家名(PlayerID)>
|
// /rtp <被传送玩家名(PlayerID)>
|
||||||
CommandRegistrationCallback.EVENT
|
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
null,
|
null,
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
null))));});
|
null)))
|
||||||
|
|
||||||
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)>
|
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)>
|
||||||
CommandRegistrationCallback.EVENT
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
null)))));});
|
null))))
|
||||||
|
|
||||||
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)>
|
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)>
|
||||||
CommandRegistrationCallback.EVENT
|
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
null)))));});
|
null))))
|
||||||
|
|
||||||
// // /rtp <Radius(半径)> <Origin(随机中心)>
|
// // /rtp <Radius(半径)> <Origin(随机中心)>
|
||||||
// CommandRegistrationCallback.EVENT
|
|
||||||
// .register((dispatcher, registryAccess, environment) -> {
|
|
||||||
// dispatcher.register(literal(Name)
|
|
||||||
// .then(argument("Radius(半径)", LongArgumentType.longArg())
|
// .then(argument("Radius(半径)", LongArgumentType.longArg())
|
||||||
// .then(argument("Origin(随机中心)",EntityArgumentType.player())
|
// .then(argument("Origin(随机中心)",EntityArgumentType.player())
|
||||||
// .requires(source -> source.hasPermissionLevel(PermissionLevel))
|
// .requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
@@ -113,78 +94,58 @@ public class CommandRegister {
|
|||||||
// context.getSource(),
|
// context.getSource(),
|
||||||
// LongArgumentType.getLong(context, "Radius(半径)"),
|
// LongArgumentType.getLong(context, "Radius(半径)"),
|
||||||
// null,
|
// null,
|
||||||
// EntityArgumentType.getEntity(context,"Origin(随机中心)"))))));});
|
// EntityArgumentType.getEntity(context,"Origin(随机中心)")))))
|
||||||
|
|
||||||
// /rtp <Radius(半径)> <OriginPos(随机中心,坐标)>
|
// /rtp <Radius(半径)> <OriginPos(随机中心,坐标)>
|
||||||
CommandRegistrationCallback.EVENT
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
|
||||||
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
null,
|
null,
|
||||||
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)"))))));});
|
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)")))))
|
||||||
|
|
||||||
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)> <OriginEntity(随机中心,实体)>
|
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)> <OriginEntity(随机中心,实体)>
|
||||||
CommandRegistrationCallback.EVENT
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.then(argument("OriginEntity(随机中心,实体)",EntityArgumentType.entity())
|
.then(argument("OriginEntity(随机中心,实体)",EntityArgumentType.entity())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
new Vec2f( (float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().x,
|
new Vec2f( (float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().x,
|
||||||
(float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().z )))))));});
|
(float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().z ))))))
|
||||||
|
|
||||||
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)> <OriginPos(随机中心,坐标)>
|
// /rtp <Radius(半径)> <被传送玩家名(PlayerID)> <OriginPos(随机中心,坐标)>
|
||||||
CommandRegistrationCallback.EVENT
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)")))))));});
|
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)"))))))
|
||||||
|
|
||||||
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)> <OriginEntity(随机中心,实体)>
|
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)> <OriginEntity(随机中心,实体)>
|
||||||
CommandRegistrationCallback.EVENT
|
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.then(argument("OriginEntity(随机中心,实体)",EntityArgumentType.entity())
|
.then(argument("OriginEntity(随机中心,实体)",EntityArgumentType.entity())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
new Vec2f( (float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().x,
|
new Vec2f( (float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().x,
|
||||||
(float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().z )))))));});
|
(float) EntityArgumentType.getEntity( context,"OriginEntity(随机中心,实体)").getEntityPos().z ))))))
|
||||||
|
|
||||||
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)> <OriginPos(随机中心,坐标)>
|
// /rtp <被传送玩家名(PlayerID)> <Radius(半径)> <OriginPos(随机中心,坐标)>
|
||||||
CommandRegistrationCallback.EVENT
|
|
||||||
.register((dispatcher, registryAccess, environment) -> {
|
|
||||||
dispatcher.register(literal(Name)
|
|
||||||
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
.then(argument("被传送玩家名(PlayerID)", EntityArgumentType.entity())
|
||||||
.then(argument("Radius(半径)", IntegerArgumentType.integer())
|
.then(argument("Radius(半径)", IntegerArgumentType.integer(0))
|
||||||
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
.then(argument("OriginPos(随机中心,坐标)",Vec2ArgumentType.vec2())
|
||||||
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
.requires(source -> source.hasPermissionLevel(PermissionLevel))
|
||||||
.executes(context -> execute_command(
|
.executes(context -> ExecuteCommand(
|
||||||
context.getSource(),
|
context.getSource(),
|
||||||
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
IntegerArgumentType.getInteger(context, "Radius(半径)"),
|
||||||
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
EntityArgumentType.getEntity(context,"被传送玩家名(PlayerID)"),
|
||||||
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)")))))));});}
|
Vec2ArgumentType.getVec2(context,"OriginPos(随机中心,坐标)")))))) );});}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 向游戏内注册命令
|
* 向游戏内注册命令
|
||||||
@@ -220,7 +181,6 @@ public class CommandRegister {
|
|||||||
return -1;}
|
return -1;}
|
||||||
if (Radius == null){Radius = (int) (WorldBorder - 1e4);}
|
if (Radius == null){Radius = (int) (WorldBorder - 1e4);}
|
||||||
// ↑ 远离世界边界
|
// ↑ 远离世界边界
|
||||||
Radius = Math.abs(Radius);
|
|
||||||
int Coordinate_X = 0;
|
int Coordinate_X = 0;
|
||||||
int Coordinate_Z = 0;
|
int Coordinate_Z = 0;
|
||||||
try {
|
try {
|
||||||
@@ -271,7 +231,7 @@ public class CommandRegister {
|
|||||||
int finalCoordinate_Y = Coordinate_Y;
|
int finalCoordinate_Y = Coordinate_Y;
|
||||||
int finalCoordinate_Z = Coordinate_Z;
|
int finalCoordinate_Z = Coordinate_Z;
|
||||||
// ↑ "lambda 表达式中使用的变量应为 final 或有效 final"
|
// ↑ "lambda 表达式中使用的变量应为 final 或有效 final"
|
||||||
final var FeedbackFallbackString = String.format("已将玩家%s传送到%d %d %d", entity.getName().getString(), Coordinate_X, finalCoordinate_Y, Coordinate_Z);
|
final var FeedbackFallbackString = String.format("已将玩家%s传送到%d %d %d", TargetEntity.getName().getString(), Coordinate_X, Coordinate_Y, Coordinate_Z);
|
||||||
Source.sendFeedback(()->{ return Text.translatableWithFallback("info.success", FeedbackFallbackString, entity.getName(), finalCoordinate_X, finalCoordinate_Y, finalCoordinate_Z); },true);
|
Source.sendFeedback(()->{ return Text.translatableWithFallback("info.success", FeedbackFallbackString, TargetEntity.getName(), finalCoordinate_X, Coordinate_Y, finalCoordinate_Z); },true);
|
||||||
return 16;}
|
return Command.SINGLE_SUCCESS;}
|
||||||
}
|
}
|
Reference in New Issue
Block a user