Bukkit 1.20.1 玩家 Teleport (TPA) 插件 Java 代码示例
以下是一个用 Java 编写的示例代码,可以实现 Bukkit 1.20.1 版本中的玩家 tpa 功能,并提供一个 back 命令,允许玩家返回之前的位置。
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
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 TpaPlugin extends JavaPlugin {
private HashMap<UUID, Location> tpaRequests = new HashMap<>();
private HashMap<UUID, Location> backPositions = new HashMap<>();
@Override
public void onEnable() {
getLogger().info('TpaPlugin has been enabled!');
}
@Override
public void onDisable() {
getLogger().info('TpaPlugin has been disabled!');
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase('tpa')) {
if (!(sender instanceof Player)) {
sender.sendMessage('Only players can use this command!');
return true;
}
if (args.length != 1) {
sender.sendMessage('Usage: /tpa <playername>');
return true;
}
Player player = (Player) sender;
Player target = Bukkit.getPlayer(args[0]);
if (target == null) {
sender.sendMessage('Player not found!');
return true;
}
tpaRequests.put(target.getUniqueId(), player.getLocation());
sender.sendMessage('Sent a tpa request to ' + target.getName());
target.sendMessage('Player ' + player.getName() + ' wants to teleport to you. Use /tpaccept to accept or /tpdeny to deny.');
return true;
}
else if (command.getName().equalsIgnoreCase('tpaccept')) {
if (!(sender instanceof Player)) {
sender.sendMessage('Only players can use this command!');
return true;
}
Player player = (Player) sender;
UUID playerId = player.getUniqueId();
if (!tpaRequests.containsKey(playerId)) {
player.sendMessage('No tpa requests found!');
return true;
}
Location backPosition = player.getLocation();
backPositions.put(playerId, backPosition);
Location tpaLocation = tpaRequests.get(playerId);
player.teleport(tpaLocation);
player.sendMessage('Teleported to ' + tpaLocation.getWorld().getName() + ', ' + tpaLocation.getBlockX() + ', ' + tpaLocation.getBlockY() + ', ' + tpaLocation.getBlockZ());
tpaRequests.remove(playerId);
return true;
}
else if (command.getName().equalsIgnoreCase('tpdeny')) {
if (!(sender instanceof Player)) {
sender.sendMessage('Only players can use this command!');
return true;
}
Player player = (Player) sender;
UUID playerId = player.getUniqueId();
if (!tpaRequests.containsKey(playerId)) {
player.sendMessage('No tpa requests found!');
return true;
}
player.sendMessage('Tpa request denied!');
tpaRequests.remove(playerId);
return true;
}
else if (command.getName().equalsIgnoreCase('back')) {
if (!(sender instanceof Player)) {
sender.sendMessage('Only players can use this command!');
return true;
}
Player player = (Player) sender;
UUID playerId = player.getUniqueId();
if (!backPositions.containsKey(playerId)) {
player.sendMessage('No previous position found!');
return true;
}
Location backPosition = backPositions.get(playerId);
player.teleport(backPosition);
player.sendMessage('Teleported back to previous position!');
return true;
}
return false;
}
}
请注意,这只是一个示例代码,并未进行全面的错误处理和输入验证。在实际使用中,你可能需要根据自己的需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/pWuw 著作权归作者所有。请勿转载和采集!