Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bukkit插件-将参数与所有可能的项目进行比较_Java_Plugins_Bukkit - Fatal编程技术网

Java 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

我最近刚刚开始编写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.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。例外太普遍了。