BackHome

BackHome.java v1.0
允许玩家使用/return回城,回城目标可在configs.yml中指定世界和坐标。
作者: ice

命令列表

  • return回城到指定配置
package com.yourdomain.backhomeplugin;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
 * @pluginName BackHome
 * @author ice
 * @version 1.0
 * @description 允许玩家使用/return回城,回城目标可在configs.yml中指定世界和坐标。
 * [command]return|回城到指定配置[/command]
 */
public class BackHome extends JavaPlugin {
    private File configFile;
    private String targetWorld = "world";
    private double targetX = 0.5, targetY = 64, targetZ = 0.5, targetYaw = 0, targetPitch = 0;
    
    @Override
    public void onEnable() {
        // 确认plugins/Scriptirc/目录存在
        File scriptircDir = new File(getDataFolder().getParentFile(), "Scriptirc");
        File pluginDir = new File(scriptircDir, "script_src");
        if (!pluginDir.exists()) {
            pluginDir.mkdirs(); // 创建目录
        }
        // 配置文件路径
        configFile = new File(pluginDir, "configs.yml");
        // 初始化或读取配置
        loadOrInitConfig();
        getLogger().info("BackHome插件已启用。使用/return命令回城。");
    }

    @Override
    public void onDisable() {
        getLogger().info("BackHome插件已卸载。");
    }

    private void loadOrInitConfig() {
        if (!configFile.exists()) {
            // 若配置不存在,则创建默认配置文件
            try (FileWriter writer = new FileWriter(configFile)) {
                writer.write("world: world\n");
                writer.write("x: 0.5\n");
                writer.write("y: 64\n");
                writer.write("z: 0.5\n");
                writer.write("yaw: 0\n");
                writer.write("pitch: 0\n");
                targetWorld = "world";
                targetX = 0.5; targetY = 64; targetZ = 0.5; targetYaw = 0; targetPitch = 0;
                getLogger().info("生成默认configs.yml,请自行修改世界名与目标坐标。");
            } catch (IOException e) {
                getLogger().warning("无法创建默认configs.yml: " + e.getMessage());
            }
        } else {
            // 读取配置文件
            try (Scanner sc = new Scanner(configFile)) {
                while (sc.hasNextLine()) {
                    String line = sc.nextLine().trim();
                    if (line.startsWith("world:")) targetWorld = line.replace("world:", "").trim();
                    if (line.startsWith("x:")) targetX = Double.parseDouble(line.replace("x:", "").trim());
                    if (line.startsWith("y:")) targetY = Double.parseDouble(line.replace("y:", "").trim());
                    if (line.startsWith("z:")) targetZ = Double.parseDouble(line.replace("z:", "").trim());
                    if (line.startsWith("yaw:")) targetYaw = Float.parseFloat(line.replace("yaw:", "").trim());
                    if (line.startsWith("pitch:")) targetPitch = Float.parseFloat(line.replace("pitch:", "").trim());
                }
            } catch (Exception e) {
                getLogger().warning("读取configs.yml出错: " + e.getMessage());
            }
        }
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equalsIgnoreCase("return")) {
            // 只允许玩家执行
            if (!(sender instanceof Player)) {
                sender.sendMessage("§c只有玩家才能使用此命令!");
                return true;
            }
            Player player = (Player) sender;
            // 再次尝试读取,以确保配置变化后有效
            loadOrInitConfig();
            World world = Bukkit.getWorld(targetWorld);
            if (world == null) {
                player.sendMessage("§c目标世界【"+ targetWorld +"】不存在!请检查configs.yml。");
                return true;
            }
            // 传送并设置朝向
            Location loc = new Location(world, targetX, targetY, targetZ, (float)targetYaw, (float)targetPitch);
            player.teleport(loc);
            player.sendMessage("§a你已被传送至回城点!");
            return true;
        }
        return false;
    }
}

上一篇: GiftPack下一篇: CatAttrib

举报内容

意见反馈