An IItemStack Object consists of an item definition, a meta/damage value and NBT data.
In other words, it refers to an item or to a block.

Импорт пакета

Link to импорт-пакета

It might be required for you to import the package if you encounter any issues (like casting an Array), so better be safe than sorry and add the import.
import crafttweaker.item.IItemStack;

Вызов IItemStack

Link to вызов-iitemstack

Есть несколько методов, как получить IItemStack:

Calling an IItemStack[] or a IItemStack List

Link to calling-an-iitemstack-or-a-iitemstack-list

If you call these functions, you will most likely do so to iterate through the resulting lists/Arrays

  • Using the items method on an IIngredient returns a IItemStack List: <ore:ingotGold>.items
  • Using the itemArray method on an IIngredient returns a IItemStack[]: <ore:ingotGold>.itemArray
  • Using the items method on a IMod object returns a IItemStack[]: loadedMods["minecraft"].items

Так что же мы можем сделать с ним сейчас?

Наследование от IIngredient

Link to наследование-от-iingredient

IItemStack extends IIngredient.
That means all functionality that is available to IIngredient objects also is applicable to IItemStacks.

Derived Methods
  • stack.mark
  • stack.amount
  • stack.items
  • stack.itemArray
  • stack.liquids
  • stack.commandString
  • stack | otherIngredient
  • stack.or(otherIngredient)
  • stack.transform(transformer)
  • stack.transformNew(transformer)
  • stack.only(condition)
  • stack.marked(mark)
  • stack.matches(item)
  • stack.matchesExact(item)
  • stack.matches(liquid)
  • stack has ingredient
  • stack.applyTransform(stack,player)
  • stack.hasTransformers()

Геттеры/сеттеры

Link to геттерысеттеры

Можете прочитать, как их использовать здесь. Также, можете проверить примеры ниже.

Геттер/методZenSetter/ZenMethodТип
Геттер/метод
definition
ZenSetter/ZenMethod
Тип
IItemDefinition
Геттер/метод
name
ZenSetter/ZenMethod
Тип
string
Геттер/метод
displayName
ZenSetter/ZenMethod
displayName
Тип
string
Геттер/метод
maxStackSize
ZenSetter/ZenMethod
maxStackSize
Тип
int
Геттер/метод
hardness
ZenSetter/ZenMethod
hardness
Тип
float
Геттер/метод
damage
ZenSetter/ZenMethod
Тип
int
Геттер/метод
maxDamage
ZenSetter/ZenMethod
maxDamage
Тип
int
Геттер/метод
hasTag
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
tag
ZenSetter/ZenMethod
withTag(tag)
Тип
IData
Геттер/метод
ores
ZenSetter/ZenMethod
Тип
List<IOreDictEntry>
Геттер/метод
toolClasses
ZenSetter/ZenMethod
Тип
List<string>
Геттер/метод
itemEnchantability
ZenSetter/ZenMethod
Тип
int
Геттер/метод
containerItem
ZenSetter/ZenMethod
Тип
IItemStack
Геттер/метод
hasContainerItem
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
repairCost
ZenSetter/ZenMethod
repairCost
Тип
int
Геттер/метод
canEditBlocks
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isOnItemFrame
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isEnchantable
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isEnchanted
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isDamaged
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isDamageable
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isItemBlock
ZenSetter/ZenMethod
Тип
bool (if contained item is an itemblock)
Геттер/метод
isStackable
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isBeaconPayment
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
hasEffect
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
hasDisplayName
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
metadata
ZenSetter/ZenMethod
Тип
int
Геттер/метод
hasSubtypes
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
isEmpty
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
burnTime
ZenSetter/ZenMethod
Тип
int
Геттер/метод
showsDurabilityBar
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
hasCustomEntity
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
enchantments
ZenSetter/ZenMethod
Тип
List<IEnchantment>
Геттер/метод
совпадающий Тег Точно
ZenSetter/ZenMethod
Тип
bool
Геттер/метод
maxItemUseDuration
ZenSetter/ZenMethod
Тип
int
Геттер/метод
capNBT
ZenSetter/ZenMethod
Тип
IData

Количество

Link to количество

Вызов методаВозвращаетТипы параметров
Вызов метода
stack.anyAmount()
Возвращает
A new IItemStack with any amount for recipes
Типы параметров
Вызов метода
stack.amount(int amount)
Возвращает
A new IItemStack with the specified amount
Типы параметров
int
Вызов метода
stack.withAmount(int amount)
Возвращает
A new IItemStack with the specified amount
Типы параметров
int
Вызов метода
stack * amount
Возвращает
A new IItemStack with the specified amount
Типы параметров
int
Вызов метода
stack.splitStack(int amount)
Возвращает
Разделяет IItemStack. Старый будет соответственно уменьшен.
Типы параметров
int
Вызов методаВозвращаетТипы параметров
Вызов метода
stack.percent(float chance)
Возвращает
WeightedItemStack
Типы параметров
float (100 = 100%)
Вызов метода
stack.weight(float chance)
Возвращает
WeightedItemStack
Типы параметров
float (1 = 100%)
Вызов методаВозвращаетТипы параметров
Вызов метода
stack.anyDamage()
Возвращает
A new IItemStack with any damage for recipes
Типы параметров
Вызов метода
stack.withDamage(int damage)
Возвращает
A new IItemStack with the specified damage
Типы параметров
int
Вызов метода
stack.damageItem(int amount, IEntity entity)
Возвращает
void
Типы параметров
int, IEntity
Вызов методаВозвращаетТипы параметров
Вызов метода
stack.withEmptyTag()
Возвращает
A new IItemStack with an empty NBT tag
Типы параметров
Вызов метода
stack.withTag(IData tag)
Возвращает
A new IItemStack with the specified NBT tag
Типы параметров
IData
Вызов метода
stack.withTag(IData tag, bool matchTagExact)
Возвращает
A new IItemStack with the specified NBT tag
Типы параметров
IData, bool
Вызов метода
stack.removeTag(String name)
Возвращает
A new IItemStack with the specified NBT tag removed, if it exists
Типы параметров
string
Вызов метода
stack.updateTag(тег IDat)
Возвращает
A new IItemStack with the added NBT tag
Типы параметров
IData
Вызов метода
stack.updateTag(IData тег, bool matchTagExact)
Возвращает
A new IItemStack with the added NBT tag
Типы параметров
IData, bool
Вызов методаВозвращает
Вызов метода
stack.asBlock()
Возвращает
A new IBlock object.
Вызов метода
stack as IBlock
Возвращает
A new IBlock object.

Lore/DisplayName

Link to loredisplayname

Вызов методаВозвращаетТипы параметров
Вызов метода
stack.withDisplayName(String name)
Возвращает
A new IItemStack with the specified display name. Unlike the displayName setter, this only applies to this single item.
Типы параметров
string (supports color codes with "§")
Вызов метода
stack.withLore(String[] lore)
Возвращает
A new IItemStack with the specified lore.
Типы параметров
string[] (supports color codes with "§")
Вызов метода
stack.clearCustomName()
Возвращает
void
Типы параметров

Gets or Sets an item's forge capability data. In most cases, the tag of the stack has what you need, this is mainly for advanced use cases.

Вызов методаВозвращает
Вызов метода
stack.getCapNBT()
Возвращает
IData
Вызов метода
stack.withCapNBT(IData data)
Возвращает
A new IItemStack with the specified capability NBT
Вызов методаВозвращаетТипы параметров
Вызов метода
stack.canApplyAtCraftingTable(IEnchantmentDefinition enchantment)
Возвращает
A bool.
Типы параметров
IEnchantmentDefinition
Вызов метода
stack.addEnchantment(IEnchantment enchantment)
Возвращает
void
Типы параметров
IEnchantment

canItem...

Link to canitem

Вызов методаВозвращаетТипы параметров
Вызов метода
stack.canPlaceOn(IBlockDefinition block)
Возвращает
A bool that tells if the item can be placed on the block.
Типы параметров
IBlockDefinition
Вызов метода
stack.canDestroy(IBlockDefinition block)
Возвращает
A bool that tells if the item can destroy the block.
Типы параметров
IBlockDefinition
Вызов метода
stack.canHarvestBlock(IBlockState block)
Возвращает
A bool that tells if the item can harvest the block.
Типы параметров
IBlockState
Вызов метода
stack.getStrengthAgainstBlock(IBlockState block)
Возвращает
A float that represents the item's strength against the block.
Типы параметров
IBlockState

create IEntityItem

Link to create-ientityitem

Вызов методаВозвращаетParameter Types
Вызов метода
stack.createEntityItem(IWorld world, float x, float y, float z);
Возвращает
A new IEntityItem that corresponds to the newly created item in the world
Parameter Types
IWorld, float, float, float
Вызов метода
stack.createEntityItem(IWorld world, IBlockPos pos);
Возвращает
A new IEntityItem that corresponds to the newly created item in the world
Parameter Types
IWorld, IBlockPos

Gets a mutable ItemStack. Its damage, amount and tag is mutable. Its withTag, withAmount and other methods will change the item itself, rather than returning a new changed item.

Вызов методаВозвращает
Вызов метода
stack.mutable()
Возвращает
IMutableItemStack

ItemTransformers and ItemConditions

Link to itemtransformers-and-itemconditions

You can find how to use these either in the IIngredient page or in their respecive entries:
Item Conditions
Item Transformers

Globally (translates the item to the new name).

ZenScript
Copy
val apple = <minecraft:apple>;

//prints "Apple"
print(apple.displayName);

//Sets apples Display Name to "Tomato"
apple.displayName = "Tomato";

//prints "Tomato"
print(apple.displayName);

Locally (only this single item).

ZenScript
Copy
<minecraft:coal>.withDisplayName("Black Gold");

<minecraft:coal>.withLore(["This function","requires a","string[]"]);

Maximum Stack Size

Link to maximum-stack-size

The maximum Stack Size is how many items fit in one Stack, for example, wool’s Stack size is 64 and Buckets’ only 16.

ZenScript
Copy
val apple = <minecraft:apple>;
val bucket = <minecraft:bucket>;

//prints 64
print(apple.maxStackSize);

//sets apples Max Stack size to 32
apple.maxStackSize = 32;

//prints 32
print(apple.maxStackSize);

//sets apples Max Stack size to Bucket's Max Stack size
apple.maxStackSize = bucket.maxStackSize;

//prints 16
print(apple.maxStackSize);

The Hardness is how long it takes to break the referred block. Only works if the object refers to a block.

ZenScript
Copy
val grass = <minecraft:grass>;

//prints 1.0
print(grass.hardness);

//sets grass Hardness to 10.0
grass.hardness = 10.0;

//prints 10.0
print(grass.hardness);

The damage for items that cannot be damaged is 0.

ZenScript
Copy
val pick = <minecraft:diamond_pickaxe>;

//prints 1561
print(pick.maxDamage);

//sets the max damage of the Diamond Pickaxe to 256
pick.maxDamage = 256;

//prints 256
print(pick.maxDamage);



//Damage doesn't matter, used in recipes
<minecraft:iron_pickaxe>.anyDamage();

//With the given damage
<minecraft:iron_pickaxe>.withDamage(122);

The tag is an IData object.
If the item does not contain a tag, it will return an empty tag, never null.

ZenScript
Copy
//creates apple with the given tag
//Removes existing tags
<minecraft:apple>.withTag({Unbreakable: 1});

//creates apple with an empty tag
<minecraft:apple>.withEmptyTag();

//removes a tag by its name
item.removeTag("tagName");

//removes all tags from an item
item.removeTag(null);

//update the existing tag
//If the tag doesn't override an existing tag, they will stay constant.
item.updateTag({Unbreakable: 1});

Returns the liquid contained in a single item (if multiple) or null if the item is no container.
Returns an ILiquidStack Object or null.

ZenScript
Copy
val lav = <minecraft:lava_bucket>;
print(lav.liquid.name);

Количество

Link to количество-1

How many apples are there?

ZenScript
Copy
<minecraft:apple>.anyAmount();

//1 Apple
val apple = <minecraft:apple>;

//2 Apples
val moreApples = apple * 2;

//3 Apples
val evenMoreApples = <minecraft:apple> * 3;

Returns a weightedItemStack with the provided percentage.

ZenScript
Copy
val apple = <minecraft:apple>;

//Creates a weightedItemStack with 100 percent chance
var applePercentage = apple % 100;

//Does the same as the above
applePercentage = apple.weight(1.0);

Returns a List of IOreDictEntries referring to this item.

ZenScript
Copy
<minecraft:apple>.ores;

Casting to IBlock

Link to casting-to-iblock

You can cast an IItemStack to an IBlock, as long as you are referring to a block, otherwise the cast will throw an exception.

ZenScript
Copy
<minecraft:dirt>.asBlock();
<minecraft:dirt> as crafttweaker.block.IBlock;

You can also test if an IItemStack contains an ItemBlock and can thus be converted:

zenscript:
Copy
<minecraft:dirt>.isItemBlock; // true
<minecraft:stick>.isItemBlock; // false

You can check if an IItemStack is a food item and what food properties it has.
May not work for every modded food item!

ZenScript
Copy
<minecraft:apple>.isFood; //true
<minecraft:apple>.saturation; //0.3
<minecraft:apple>.healAmount; //4