Java Bukkit插件-将参数与所有可能的项目进行比较
我最近刚刚开始编写Bukkit插件,用于个人使用和学习目的。我决定创建一个命令行全局商店,因为我不想在游戏中创建商店。以下是我目前拥有的代码:Java Bukkit插件-将参数与所有可能的项目进行比较,java,plugins,bukkit,Java,Plugins,Bukkit,我最近刚刚开始编写Bukkit插件,用于个人使用和学习目的。我决定创建一个命令行全局商店,因为我不想在游戏中创建商店。以下是我目前拥有的代码: package me.rougelong.globalshop; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bu
package me.rougelong.globalshop;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.Material;
import java.util.logging.Logger;
public class globalshop extends JavaPlugin{
public final Logger logger = Logger.getLogger("Minecraft");
public static globalshop plugin;
@Override
public void onDisable() {
PluginDescriptionFile pdfFile = this.getDescription();
this.logger.info(pdfFile.getName() + " Has Been Disabled!");
}
@Override
public void onEnable() {
PluginDescriptionFile pdfFile = this.getDescription();
this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has Been Enabled!");
}
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
String itemName = args[0];
String amount = args[1];
if (args.length > 4 && commandLabel.equalsIgnoreCase("shopcheck")) {
sender.sendMessage(ChatColor.RED + "Too many arguments! /shopcheck [item_name] [quantity]");
return false;
}
if (args.length < 2 && commandLabel.equalsIgnoreCase("shopcheck")) {
sender.sendMessage(ChatColor.RED + "Not enough arguments! /shopcheck [item_name] [quantity]");
return false;
}
if (args.length > 4 && commandLabel.equalsIgnoreCase("shopbuy")) {
sender.sendMessage(ChatColor.RED + "Too many arguments! /shopbuy [item_name] [quantity]");
return false;
}
if (args.length < 2 && commandLabel.equalsIgnoreCase("shopbuy")) {
sender.sendMessage(ChatColor.RED + "Not enough arguments! /shopbuy [item_name] [quantity]");
return false;
}
if (args.length > 4 && commandLabel.equalsIgnoreCase("shopsell")) {
sender.sendMessage(ChatColor.RED + "Too many arguments! /shopsell [item_name] [quantity]");
return false;
}
if (args.length < 2 && commandLabel.equalsIgnoreCase("shopsell")) {
sender.sendMessage(ChatColor.RED + "Not enough arguments! /shopsell [item_name] [quantity]");
return false;
}
if (commandLabel.equalsIgnoreCase("shopcheck")){
//I need to get it to compare HERE. :P
return false;
}
return false;
}
}
我需要它来比较itemName,否则args[0]将是一个字符串。示例:鹅卵石到所有可能的项目,我不想把所有的项目都写进这个插件,我想知道如何引用Bukkit中的项目列表。我不确定它是否是砖块、材料或其他东西
我的问题是:我需要导入哪个来正确比较arg?我将使用什么代码将该单数arg与所有项进行比较,以便它能够识别它
一旦代码被理解并运行起来,我将移动它,然后在该程序中或在一个单独的文件中列出一个价格。然后让它检查发送玩家的余额,看看他们是否可以购买,然后在不删除他们手中其他物品的情况下,将钱减去并添加到他们的库存中。一种方法是使用Bukkit API中的现有枚举作为您可以购买的物品列表。每个枚举类都支持valueOfString方法。调用此方法将返回特定的枚举值,如果字符串不是有效的枚举常量,则引发异常
String materialName = arg[n]..toUpperCase();
Material theMaterial = null;
try
{
theMaterial = Material.valueOf(materialName );
}
catch (Exception e)
{
//Not a valid material
}
然而,如果你有一个包含所有可能材料的文件或列表,以及它们的价格,那么你可以很容易地查找该列表 使用材质的ID/名称获取它。我以前做过。这很简单不是我用的,买它确实帮我找到了我想要的,谢谢。现在进入下一个问题!哈哈,谢谢。在catch块中使用IllegalArgumentException。例外太普遍了。