如何要求用户输入并 return 在新清单中输入
How to ask for user input and return it in a new inventory
我今年 13 岁,所以请不要对我不耐烦,因为我可能会犯一个愚蠢的错误或者没有从正确的角度思考问题。
我想制作一个 Spigot 插件来增加我的 Java 知识,方法是制作一个有趣且有教育意义的项目。我正在学习有关如何制作 GUI 的教程,但我想通过一种不太复杂的方式来创建它。
我四处寻找,发现了一些类似于显示此示例的东西 LobbyCompass。
这是我的“GuiConstruct”class
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());
}
}
这是我的主要内容class
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
我可能不明白你的问题,因为它不是 straight-forward。正如我所了解的,您想创建打开具有指定名称的 GUI 的命令。有多种方法可以做到这一点...最简单的方法是在插件 main class.
中实现方法 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: CommandExecutors, Tutorial from Pogostick(Noah Rubin): Basic commands
我今年 13 岁,所以请不要对我不耐烦,因为我可能会犯一个愚蠢的错误或者没有从正确的角度思考问题。
我想制作一个 Spigot 插件来增加我的 Java 知识,方法是制作一个有趣且有教育意义的项目。我正在学习有关如何制作 GUI 的教程,但我想通过一种不太复杂的方式来创建它。
我四处寻找,发现了一些类似于显示此示例的东西 LobbyCompass。
这是我的“GuiConstruct”class
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());
}
}
这是我的主要内容class
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我可能不明白你的问题,因为它不是 straight-forward。正如我所了解的,您想创建打开具有指定名称的 GUI 的命令。有多种方法可以做到这一点...最简单的方法是在插件 main class.
中实现方法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: CommandExecutors, Tutorial from Pogostick(Noah Rubin): Basic commands