Bukkit 1.20.1 插件:玩家传送回上一个位置 - Java 代码示例
以下是使用Java编写的Bukkit插件代码,实现了玩家传送到另一个玩家身边后,可以输入“back”命令传送回上一个位置:
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.UUID;
public class TeleportPlugin extends JavaPlugin implements CommandExecutor {
private HashMap<UUID, Location> prevLocations;
@Override
public void onEnable() {
// 初始化HashMap
prevLocations = new HashMap<>();
// 注册命令
getCommand("back").setExecutor(this);
}
@Override
public void onDisable() {
// 清空HashMap
prevLocations.clear();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can use this command.");
return true;
}
Player player = (Player) sender;
// 如果玩家输入的是/back命令
if (command.getName().equalsIgnoreCase("back")) {
// 检查玩家是否有上一个位置
if (prevLocations.containsKey(player.getUniqueId())) {
// 获取上一个位置
Location prevLocation = prevLocations.get(player.getUniqueId());
// 传送玩家到上一个位置
player.teleport(prevLocation);
// 从HashMap中移除上一个位置
prevLocations.remove(player.getUniqueId());
player.sendMessage("You have been teleported back.");
} else {
player.sendMessage("You don't have a previous location to teleport back to.");
}
return true;
}
return false;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can use this command.");
return true;
}
Player player = (Player) sender;
Player targetPlayer = player.getServer().getPlayer(args[0]);
// 检查目标玩家是否在线
if (targetPlayer == null) {
player.sendMessage("The specified player is not online.");
return true;
}
// 保存当前位置到HashMap
prevLocations.put(player.getUniqueId(), player.getLocation());
// 传送玩家到目标玩家身边
player.teleport(targetPlayer.getLocation());
player.sendMessage("You have been teleported to " + targetPlayer.getName() + "'s location.");
return true;
}
}
请注意,这只是一个简单的示例代码,你需要将其保存为一个Java文件,并将其编译为一个可用的Bukkit插件。
原文地址: https://www.cveoy.top/t/topic/pWu1 著作权归作者所有。请勿转载和采集!