Bukkit 1.20.1 玩家传送回上一个位置的 Java 插件
以下是一个简单的 Java 代码示例,用于在 Bukkit 1.20.1 中实现玩家传送到其他地方后,输入'back'可以传送回上一个位置:
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.UUID;
public class BackPlugin extends JavaPlugin {
private HashMap<UUID, Location> lastLocations;
@Override
public void onEnable() {
lastLocations = new HashMap<>();
getServer().getPluginManager().registerEvents(new BackListener(), this);
getLogger().info("BackPlugin enabled");
}
@Override
public void onDisable() {
getLogger().info("BackPlugin disabled");
}
private class BackListener implements org.bukkit.event.Listener {
@org.bukkit.event.EventHandler
public void onPlayerMove(org.bukkit.event.player.PlayerMoveEvent event) {
Player player = event.getPlayer();
UUID playerId = player.getUniqueId();
// 如果玩家移动,则更新其上一个位置
lastLocations.put(playerId, event.getFrom());
}
@org.bukkit.event.EventHandler
public void onPlayerCommand(org.bukkit.event.player.PlayerCommandPreprocessEvent event) {
Player player = event.getPlayer();
String command = event.getMessage().toLowerCase();
if (command.startsWith("/back")) {
UUID playerId = player.getUniqueId();
Location lastLocation = lastLocations.get(playerId);
if (lastLocation != null) {
player.teleport(lastLocation);
player.sendMessage("传送回上一位置");
} else {
player.sendMessage("没有上一位置可传送");
}
event.setCancelled(true); // 取消原始的/back命令执行
}
}
}
}
请注意,这只是一个简单的示例,可能需要根据您的具体需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/fQsF 著作权归作者所有。请勿转载和采集!