IBlockState
Link to iblockstate
IBlockState 对象代表一个方块的当前状态。
导入相关包
Link to 导入相关包
如果你遇到问题 ,你可能需要导入相关包,为此,最安全的方法就是进行导入。
import crafttweaker.block.IBlockState;
调用 IBlockState 对象
Link to 调用-iblockstate-对象
有很多方法可以返回一个 IBlockState 对象。
- 使用尖括号引用
<blockstate:minecraft:log:variant=spruce>
- 使用静态方法
IBlockState.getBlockState()
(详情见下文) - 使用 IBlockStateMatcher 对象的
getMatchingBlockStates()
方法检索一个 IBlockStates 数组。 - 使用另一个 IBlockState 对象的
withProperty()
方法。
运行时解析 IBlockState
Link to 运行时解析-iblockstate
有可能你的脚本会依赖于一个还没有加载的 mod 的方块交互,例如 ContentTweaker 或是其他的 pre-init 阶段的脚本加载器的 inside block 事件。 如果你尝试在一个还没有注册的方块上使用尖括号引用,这个引用的解析会失败,你的脚本就会失效。
你可以使用静态方法 IBlockState.getBlockState()
在运行时解析一个 IBlockState 来避免这种情况。
静态方法 getBlockState
Link to 静态方法-getblockstate
static IBlockState getBlockState(String blockname, String... properties)
参数:
- String blockname → 一个和 BlockState 尖括号引用中一样的字符串,例如 "modid:blockname"
- String... properties → 一些可选的字符串,表示应用于这个方块状态的属性对,例如
"name=value"
。 没有指定的属性会使用这个方块的默认属性。
返回指定 blockname
的 IBlockState 对象,存在 properties
时会带着指定的属性。
继承自 IBlockProperties
Link to 继承自-iblockproperties
IBlockState 继承自 IBlockProperties。 就是说 IBlockProperties 对象的所有方法都可以用于 IBlockState 对象。
继承自 IBlockStateMatcher
Link to 继承自-iblockstatematcher
IBlockState 继承自 IBlockStateMatcher。 就是说 IBlockStateMatcher 对象的所有方法都可以用于 IBlockState 对象。
ZenMethods and ZenGetters
Link to zenmethods-and-zengetters
ZenGetter | 返回值类型 | 描述 |
---|---|---|
ZenGetter block #方块 | 返回值类型 IBlock | 描述 Returns the refered block |
ZenGetter meta | 返回值类型 int | 描述 Returns the refered block's metadata |
ZenGetter commandString #命令字符串 | 返回值类型 string | 描述 返回这个方块状态的一个可能的 Bracket Handler |
ZenMethods
Link to zenmethods
isReplacable
Link to isreplacable
boolean isReplaceable(IWorld world, IBlockPos pos);
Parameters:
Returns a boolean that sais whether the block can be replaced or not.
获取或改变属性
Link to 获取或改变属性
你可以获取一个包含所有注册的属性的表,可以是包含所有属性名的列表,也可以是包含了属性到属性值的映射。
你还可以检查对于一个给定的属性名,有哪一个属性值是可能的。
你还可以使用 withProperty
来创建一个修改了属性值的新的 IBlockState 对象。
ZenScript CopyList<String> getPropertyNames();
String getPropertyValue(String name);
List<String> getAllowedValuesForProperty(String name);
IBlockState withProperty(String name, String value);
比较两个 IBlockState 对象
Link to 比较两个-iblockstate-对象
你可以使用 int compare(IBlockState other);
或者 Zen 比较运算符 ==
和 !=
。
差异在于返回值类型:
state.compare(other)
returns an int that is 0 if they are equalstate == other
returns a bool that is true of they are equal
获取一个显式方块状态匹配器
Link to 获取一个显式方块状态匹配器
返回一个匹配给定方块的 IBlockStateMatcher
ZenScript CopyIBlockStateMatcher matchBlock();