mirror of
https://github.com/tanyaofei/minecraft-fakeplayer.git
synced 2025-09-14 11:16:46 +08:00
spawn 命令支持指定世界
This commit is contained in:
parent
41ce3ecff3
commit
70da43b128
@ -35,7 +35,7 @@ public class Commands {
|
|||||||
"可以创建模拟玩家的假人, 能保持附近区块的刷新、触发怪物生成。同时还提供了一些操作命令让你控制假人的物品、动作等等。"
|
"可以创建模拟玩家的假人, 能保持附近区块的刷新、触发怪物生成。同时还提供了一些操作命令让你控制假人的物品、动作等等。"
|
||||||
)
|
)
|
||||||
.withUsage(
|
.withUsage(
|
||||||
"§6/fp spawn §7- §f创建假人",
|
"§6/fp spawn [世界] [位置] §7- §f创建假人",
|
||||||
"§6/fp kill [假人] §7- §f移除假人",
|
"§6/fp kill [假人] §7- §f移除假人",
|
||||||
"§6/fp list [页码] [数量] §7- §f查看所有假人",
|
"§6/fp list [页码] [数量] §7- §f查看所有假人",
|
||||||
"§6/fp distance §7- §f查看与假人的距离",
|
"§6/fp distance §7- §f查看与假人的距离",
|
||||||
@ -47,14 +47,14 @@ public class Commands {
|
|||||||
"§6/fp health [假人] §7- §f查看生命值",
|
"§6/fp health [假人] §7- §f查看生命值",
|
||||||
"§6/fp exp [假人] §7- §f查看经验值",
|
"§6/fp exp [假人] §7- §f查看经验值",
|
||||||
"§6/fp expme [假人] §7- §f转移经验值",
|
"§6/fp expme [假人] §7- §f转移经验值",
|
||||||
"§6/fp attack <once|continuous|interval|stop> [假人] §7- §f攻击/破坏",
|
"§6/fp attack (once|continuous|interval|stop) [假人] §7- §f攻击/破坏",
|
||||||
"§6/fp use <once|continuous|interval|stop> [假人] §7- §f使用/交互/放置",
|
"§6/fp use (once|continuous|interval|stop) [假人] §7- §f使用/交互/放置",
|
||||||
"§6/fp jump <once|continuous|interval|stop> [假人] §7- §f跳跃",
|
"§6/fp jump (once|continuous|interval|stop) [假人] §7- §f跳跃",
|
||||||
"§6/fp drop [假人] [-a|--all] §7- §f丢弃手上物品",
|
"§6/fp drop [假人] [-a|--all] §7- §f丢弃手上物品",
|
||||||
"§6/fp dropinv [假人] §7- §f丢弃背包物品",
|
"§6/fp dropinv [假人] §7- §f丢弃背包物品",
|
||||||
"§6/fp look <north|south|east|west|up|down|at> §7- §f看向指定位置",
|
"§6/fp look (north|south|east|west|up|down|at) [假人] §7- §f看向指定位置",
|
||||||
"§6/fp turn <left|right|back|to> §7- §f转身到指定位置",
|
"§6/fp turn (left|right|back|to) [假人] §7- §f转身到指定位置",
|
||||||
"§6/fp move <forward|backward|left|right> §7- §f移动假人",
|
"§6/fp move (forward|backward|left|right) [假人] §7- §f移动假人",
|
||||||
"§6/fp cmd §7- §f执行命令",
|
"§6/fp cmd §7- §f执行命令",
|
||||||
"§6/fp reload §7- §f重载配置文件"
|
"§6/fp reload §7- §f重载配置文件"
|
||||||
)
|
)
|
||||||
@ -66,7 +66,10 @@ public class Commands {
|
|||||||
|
|
||||||
command("spawn")
|
command("spawn")
|
||||||
.withPermission(PERMISSION_SPAWN)
|
.withPermission(PERMISSION_SPAWN)
|
||||||
.withOptionalArguments(location("location").withPermission(PERMISSION_SPAWN_LOCATION))
|
.withOptionalArguments(
|
||||||
|
world("world").withPermission(PERMISSION_SPAWN_LOCATION),
|
||||||
|
location("location").withPermission(PERMISSION_SPAWN_LOCATION)
|
||||||
|
)
|
||||||
.executes(SpawnCommand.instance::spawn),
|
.executes(SpawnCommand.instance::spawn),
|
||||||
command("kill")
|
command("kill")
|
||||||
.withPermission(PERMISSION_SPAWN)
|
.withPermission(PERMISSION_SPAWN)
|
||||||
@ -164,7 +167,7 @@ public class Commands {
|
|||||||
.withOptionalArguments(target("target"))
|
.withOptionalArguments(target("target"))
|
||||||
.executes(ActionCommand.instance.look(Direction.DOWN)),
|
.executes(ActionCommand.instance.look(Direction.DOWN)),
|
||||||
command("at")
|
command("at")
|
||||||
.withArguments(new LocationArgument("location"))
|
.withArguments(location("location"))
|
||||||
.withOptionalArguments(target("target"))
|
.withOptionalArguments(target("target"))
|
||||||
.executes(ActionCommand.instance::lookAt)
|
.executes(ActionCommand.instance::lookAt)
|
||||||
),
|
),
|
||||||
@ -181,7 +184,7 @@ public class Commands {
|
|||||||
.withOptionalArguments(target("target"))
|
.withOptionalArguments(target("target"))
|
||||||
.executes(ActionCommand.instance.turn(180, 0)),
|
.executes(ActionCommand.instance.turn(180, 0)),
|
||||||
command("to")
|
command("to")
|
||||||
.withArguments(new RotationArgument("rotation"))
|
.withArguments(rotation("rotation"))
|
||||||
.withOptionalArguments(target("target"))
|
.withOptionalArguments(target("target"))
|
||||||
.executes(ActionCommand.instance::turnTo)
|
.executes(ActionCommand.instance::turnTo)
|
||||||
)
|
)
|
||||||
@ -258,6 +261,14 @@ public class Commands {
|
|||||||
return new LocationArgument(name);
|
return new LocationArgument(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static RotationArgument rotation(String name) {
|
||||||
|
return new RotationArgument(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WorldArgument world(String name) {
|
||||||
|
return new WorldArgument(name);
|
||||||
|
}
|
||||||
|
|
||||||
public static MultiLiteralArgument literals(String name, String... literals) {
|
public static MultiLiteralArgument literals(String name, String... literals) {
|
||||||
return new MultiLiteralArgument(name, Arrays.asList(literals));
|
return new MultiLiteralArgument(name, Arrays.asList(literals));
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import net.kyori.adventure.text.event.ClickEvent;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -34,13 +35,17 @@ public class SpawnCommand extends AbstractCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void spawn(@NotNull CommandSender sender, CommandArguments args) {
|
public void spawn(@NotNull CommandSender sender, CommandArguments args) {
|
||||||
|
var world = (World) args.get("world");
|
||||||
var location = (Location) args.get("location");
|
var location = (Location) args.get("location");
|
||||||
if (location == null) {
|
if (world == null || location == null) {
|
||||||
if (sender instanceof Player p) {
|
if (sender instanceof Player p) {
|
||||||
location = p.getLocation();
|
location = p.getLocation();
|
||||||
} else {
|
} else {
|
||||||
location = Bukkit.getServer().getWorlds().get(0).getSpawnLocation();
|
location = Bukkit.getServer().getWorlds().get(0).getSpawnLocation();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
location = location.clone();
|
||||||
|
location.setWorld(world);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fakePlayer = fakeplayerManager.spawn(sender, location.clone());
|
var fakePlayer = fakeplayerManager.spawn(sender, location.clone());
|
||||||
|
Loading…
Reference in New Issue
Block a user