/** * Add a valid metadata. * * @param meta The metadata value * @param name The name used for registering the itemmodel as well as the unlocalized name of the meta. The unlocalized name will be lowercased and stripped of whitespaces. * @return An itemstack representing the Item-Meta combination. */ public ItemStack addMeta(int meta, String name) { if(meta > MAX) { throw new IllegalArgumentException(String .format("Metadata for %s too high, highest supported value is %d. Meta was %d", name, MAX, meta)); } else if(isValid(meta)) { throw new IllegalArgumentException(String .format("Metadata for %s is already taken. Meta %d is %s", name, meta, names .get(meta))); } while(meta >= availabilityMask.length) { availabilityMask = Arrays.copyOf(availabilityMask, availabilityMask.length * 2); } setValid(meta); names.put(meta, name); return new ItemStack(this, 1, meta); }
public String getUnlocalizedName(ItemStack stack) { int meta = stack.getMetadata(); // should call getMetadata below if(isValid(meta)) { return super.getUnlocalizedName(stack) + "." + LocUtils.makeLocString(names.get(meta)); if(this.isInCreativeTab(tab)) { for(int i = 0; i <= availabilityMask.length; i++) { if(isValid(i)) { subItems.add(new ItemStack(this, 1, i)); public int getMetadata(int damage) { int meta = super.getMetadata(damage); return isValid(meta) ? meta : 0;