Reflection
This is highly not recommended, in most cases you do not need to use this.
- {classname}({methodname})[@{meta}] – This will invoke a static, parameter-less method of the specified class
- {classname}[{fieldname}][@{meta}] – This will retrieve a static field of the specified class
In both cases:
- {classname} should be fully qualified with the package name
- If the result is an Item or Block instance – it will be converted to an ItemStack with the specified meta/damage
- If meta is not specified – it will default either to 0 or to a wildcard value, depending on context
- If the result is an ItemStack – it will be used as is
- If meta specified – it will override the returned one and a warning will be logged
Class Macros
You can specify a macro for class names:
def {identifier} = {classname}
The identifier can then be used instead of the full class name as:
${identifier}({methodname})[@{meta}] or ${identifier}[{fieldname}][@{meta}]
Class macros can only appear in Recipe Blocks and are local to the block they appear in
com.someauthor.foomod.Items[itemBar] /* Will find a class named Items in package com.someauthor.foomod and get a static field named itemBar */ com.someauthor.foomod.Items(getBar) /* ditto, but will instead call a static method named getBar */ def fooItems = com.someauthor.foomod.Items $fooItems[itemBar] // Those 2 are equivalent to the above $fooItems(getBar)