001package fr.aumgn.bukkitutils.command.arg.bukkit; 002 003import org.bukkit.Material; 004 005import fr.aumgn.bukkitutils.command.CommandsMessages; 006import fr.aumgn.bukkitutils.command.arg.impl.AbstractCommandArg; 007import fr.aumgn.bukkitutils.command.exception.CommandError; 008import fr.aumgn.bukkitutils.util.Util; 009 010public class MaterialArg extends AbstractCommandArg<Material> { 011 012 public static class NoSuchMaterial extends CommandError { 013 private static final long serialVersionUID = 6849291638184124428L; 014 015 public NoSuchMaterial(CommandsMessages messages, String name) { 016 super(messages.noSuchMaterial(name)); 017 } 018 } 019 020 static Material getMaterial(CommandsMessages messages, String pattern) { 021 Material material = Util.matchMaterial(pattern); 022 if (material == null) { 023 throw new MaterialArg.NoSuchMaterial(messages, pattern); 024 } 025 026 return material; 027 } 028 029 private final CommandsMessages messages; 030 031 public MaterialArg(CommandsMessages messages, String string) { 032 super(string); 033 this.messages = messages; 034 } 035 036 @Override 037 public Material value() { 038 return getMaterial(messages, string); 039 } 040}