如何要求用户输入并将其返回到新清单中

问题描述

我13岁,所以请不要在这里对我不耐烦,因为我可能犯了一个愚蠢的错误或没有以正确的角度思考某些事情。

我想制作一个Spigot插件,通过制作一个有趣且具有教育意义的项目来增加我的Java知识。我正在跟踪有关如何制作GUI的教程,但想用不太复杂的方式来创建它。

我正在四处逛逛,发现类似于该LobbyCompass示例的东西。

这是我的“ GuiConstruct”课程


import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.inventory.Inventory;

public class GuiConstruct {

    private String input(String input) {
        return input;
    }


    public Inventory newGui(String Name,int size) {
        return Bukkit.getServer().createInventory(null,9,ChatColor.RED + input());
    }

}

这是我的主班

package me.yarkosharko.worldswitcher;

import org.bukkit.plugin.java.JavaPlugin;

public final class WorldSwitcher extends JavaPlugin {

    @Override
    public void onEnable() {
        // Plugin startup logic

    }

    @Override
    public void ondisable() {
        // Plugin shutdown logic
    }
}

我在想这是正确的方法吗?我需要做一些完全不同的事情吗?为了清楚起见,我想做这样的事情:

/ worldswitcher'args'

然后显示名为'args'的清单GUI

解决方法

我可能不理解您的问题,因为这不是直截了当的。就如我所知,您想创建一个命令来打开具有指定名称的GUI。有多种方法可以执行此操作...最简单的方法是在插件主类中实现方法onCommand

public final class WorldSwitcher extends JavaPlugin {

    @Override
    public void onEnable() {
        // Plugin startup logic

    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }

    @Override
    public boolean onCommand(CommandSender sender,Command command,String label,String[] args) {
        // executor must be player
        if(!(sender instanceof Player)) {
            sender.sendMessage("§cYou must be player to execute this command!");
            return true;
        }
        
        // If command name is "worldswitcher",handle logic
        if(command.getName().equalsIgnoreCase("worldswitcher")) {
            // If an argument is present,we can work with it
            if(args.length > 0){
                // cast player from command sender
                Player executor = (Player) commandSender;
                // get first argument
                String worldName = args[0];
                // openup a gui for him
                MyGUIClass.openGui(executor,worldName/*,other parameters*/)
            
            } else {
                // we require single argument,but it is missing
                sender.sendMessage("§cMissing argument");
            }
        }
        return true;
    }
}

并且您必须将此添加到您的plugin.yml

commands:
    worldswitcher: {}

这段代码也许可以解释它的工作原理,但是如果没有的话,有很多很棒的资源可用来学习命令的工作原理:Tutorial from TheSourceCode: CommandExecutorsTutorial from Pogostick(Noah Rubin): Basic commands