因为我可以通过 java bukkit 上的命令来制作配置列表?

As I can make a configuration list through a command on java bukkit?

本例我是创建一个学习插件,我需要了解以下内容。 我想做的是在地图上建立点,在这些点上,另一个命令会落下闪电。

1- 例如:/thor setpoint 1, 2, 3, 4...

并在配置中创建...

Lightning:
  1:
    x:
    y:
    z:
  2:
    x:
    y:
    z:
  3... 6, 14..

接下来的三个命令。

现在我设法进入一个协调的单一配置文件。

提前致谢

主要:

package me.alexbanper.thorproject.plugin;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
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.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class ThorProject extends JavaPlugin implements Listener {

    public void onEnable(){
        saveDefaultConfig();
    }

    public void onDisable(){

    }

    public boolean onCommand(CommandSender enviar, Command comando, String commandLabel, String[] args){
        Player player = (Player) enviar;
        if(enviar instanceof Player){
            if(commandLabel.equalsIgnoreCase("trueno")){
                if(player.hasPermission("trueno.comando")){
                    if(args.length == 0){
                        player.sendMessage(col("&aUtiliza:"));
                        player.sendMessage(col("&6/trueno iniciarahora &5Inicia los truenos"));
                        player.sendMessage(col("&6/trueno iniciartiempo SEGUNDOS &5Inicia con segundos"));
                        player.sendMessage(col("&6/trueno setpoint &5establece un punto"));
                    }else if(args.length == 1){
                         if(args[0].equalsIgnoreCase("setpoint")){  
                            this.getConfig().set("Config" + ".Thor" + ".X", player.getLocation().getBlockX());
                            this.getConfig().set("Config" + ".Thor" + ".Y", player.getLocation().getBlockY());
                            this.getConfig().set("Config" + ".Thor" + My".Z", player.getLocation().getBlockZ());
                            //this.getConfig().set("Config" + ".World", player.getLocation().getWorld());
                            saveConfig();
                            player.sendMessage(col("&aSpawnPoint 1 set!"));
                            player.sendMessage("X: " + getConfig().getInt("Config.Thor.X"));
                            player.sendMessage("Y: " + getConfig().getInt("Config.Thor.Y"));
                            player.sendMessage("Z: " + getConfig().getInt("Config.Thor.Z"));
                            player.sendMessage("World: " + getConfig().getString("Config.World"));
                        }else if(args[0].equalsIgnoreCase("setpoint2")){    
                            this.getConfig().set("Config" + ".Thor2" + ".X", player.getLocation().getBlockX());
                            this.getConfig().set("Config" + ".Thor2" + ".Y", player.getLocation().getBlockY());
                            this.getConfig().set("Config" + ".Thor2" + ".Z", player.getLocation().getBlockZ());
                            //this.getConfig().set("Config" + ".World", player.getLocation().getWorld());
                            saveConfig();
                            player.sendMessage(col("&aSpawnPoint 2 Set!"));
                            player.sendMessage("X: " + getConfig().getInt("Config.Thor2.X"));
                            player.sendMessage("Y: " + getConfig().getInt("Config.Thor2.Y"));
                            player.sendMessage("Z: " + getConfig().getInt("Config.Thor2.Z"));
                            player.sendMessage("World: " + getConfig().getString("Config.World"));
                        }
                    }
                }else{enviar.sendMessage(col("&cAcceso Denegado!"));}
            }else if(commandLabel.equalsIgnoreCase("it")){
                int x = getConfig().getInt("Config.Thor.X");
                int y = getConfig().getInt("Config.Thor.Y");
                int z = getConfig().getInt("Config.Thor.Z");

                int x2 = getConfig().getInt("Config.Thor2.X");
                int y2 = getConfig().getInt("Config.Thor2.Y");
                int z2 = getConfig().getInt("Config.Thor2.Z");
                //Object world = getConfig().get("Config" + ".World");

                Location light = new Location(null, x, y, z);
                Location light2 = new Location(null, x2, y2, z2);

                Bukkit.getServer().getWorld("world").strikeLightningEffect(light);
                Bukkit.getServer().getWorld("world").strikeLightningEffect(light2);
                player.sendMessage("All correct!");
            }
        }else{enviar.sendMessage("Only Players!");}
        return false;
    }

    public static String col(String msg){
        return ChatColor.translateAlternateColorCodes('&', msg);
    }
}

/trueno = /thor(我说西班牙语)

首先,你也需要保存世界名称,否则你以后根本无法获取位置。对于所有人,调用以获取键集并遍历所有位置。 (请小心操作,确保使用正确的键) 当您需要删除位置时,请删除密钥的地图。最后,在选择特定ID时获取对应的key。 您可以通过大量视频 google 来了解 Bukkit 的 YAMLConfiguration class 的行为,但其中大部分都非常糟糕。我找到了一个对你来说没那么坏的。它用于配置文件,但 YAMLConfig class 的行为非常相似。 (我计划今年夏天自己做一些教程,但我会非常小心地遵循 java 约定和正确的做法,这与大多数 youtuber 不同)

Bukkit 编码 ~ 第 5 集:配置:https://youtu.be/SBvrpmNDr74

附带说明一下,bukkit 论坛比 stack overflow 更适合 bukkit 开发。 http://bukkit.org/forums/