问题描述
我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: CommandExecutors,Tutorial from Pogostick(Noah Rubin): Basic commands