活塞
当收到红石信号时,活塞可以推动最多12个方块。信号输入时,活塞会在不到一秒的时间内伸出活塞臂。任何挡道的实体都会被它推动,包括玩家,而且,如果你在活塞前端放一块黏液块,它们就会被弹走。弹弹弹!
活塞(Piston)是一种被红石信号激活时可以推动大多数方块和实体的方块,当红石信号结束时只会将方块留在原处。
黏性活塞(Sticky Piston)和普通活塞的功能相同,但当红石信号结束时也能拉回被移动的方块。
生成[编辑 | 编辑源代码]
普通的活塞不会生成在世界中。
自然生成[编辑 | 编辑源代码]
丛林神庙中会自然生成3个黏性活塞。
远古城市中心的红石地下室里会自然生成5个黏性活塞。
获取[编辑 | 编辑源代码]
合成[编辑 | 编辑源代码]
名称 | 材料 | [隐藏]合成配方 |
---|---|---|
活塞 | 任意木板 + 圆石 + 铁锭 + 红石粉 |
|
黏性活塞 | 黏液球 + 活塞 |
破坏[编辑 | 编辑源代码]
挖掘活塞、黏性活塞和活塞头[2]的合适工具是镐。移动的活塞不能被挖掘破坏。
方块 | ![]() ![]() ![]() |
![]() |
---|---|---|
硬度 | 1.5 | -1[挖掘 1] |
合适挖掘工具 | ![]() |
无 |
挖掘时间[挖掘 2] | ||
徒手 | 2.25 | ∞ |
![]() |
1.15 | — |
![]() |
0.6 | — |
![]() |
0.4 | — |
![]() |
0.3 | — |
![]() |
0.25 | — |
![]() |
0.2 | — |
活塞和黏性活塞被破坏后会掉落自身,并破坏其伸出的活塞头(若有)。活塞头被破坏后,生成自身的活塞也会在PP更新后被破坏。移动的活塞被破坏后会掉落对应的方块。
用途[编辑 | 编辑源代码]
活塞在被放置时永远朝向玩家。附着性方块(比如拉杆)可以放在活塞或黏性活塞上,但不可以放在激活的活塞侧面
当活塞被激活时,活塞的木质表面(活塞头)会在启动延迟后尝试伸出,并移动在其前方的方块;当活塞被取消激活时,活塞头会被收回。如果是黏性活塞,活塞头被收回时也会尝试将前方的方块拉回。
黏性活塞只有在拉回时才有黏性,因此静止时黏性活塞头上的方块不会被黏住。
红石元件[编辑 | 编辑源代码]

- 激活
活塞是机械元件,可被下列形式激活:
- 除活塞面向的毗邻的开启的电源(例外:红石火把不会激活其所附着的活塞,侦测器只会激活指向的活塞)。
- 除活塞面向的毗邻的充能方块。
- 除活塞面向的毗邻的指向活塞且激活的红石中继器、红石比较器或红石粉(包括活塞上方的红石粉);毗邻但未指向活塞的红石粉不会激活活塞
[仅Java版]或会主动指向活塞并激活活塞 [仅基岩版]。
在Java版中,活塞还能通过半连接性激活。若以上所述的途径对于活塞正上方的方格(不需要实际存在红石元件,空气方块或非红石导体均可)成立,活塞会在收到方块更新(狭义)时被激活。
在基岩版中,在同一红石刻内,电容器更新阶段前存在,但在电容器更新阶段被取消的信号无法激活活塞。
活塞不是红石导体,不可充能。
- 行为
活塞被激活或取消激活后会在启动延迟后推出或拉回。在基岩版中,活塞正在推拉时不响应输入变化。
启动延迟[编辑 | 编辑源代码]
活塞被激活或取消激活后不会立刻推出或拉回,从输入变化到活塞真正开始推拉的时延就是启动延迟。
在基岩版中,启动延迟固定为2游戏刻(0.1秒),即活塞输入变化后2游戏刻(0.1秒)后开始推出或拉回。
在Java版中,根据活塞输入变化发生在游戏计算的什么阶段,启动延迟可以为0游戏刻(0秒)(同刻启动)或1游戏刻(0.05秒)(下一刻启动):
- 如果活塞是在执行计划刻或执行方块事件中被更新激活,那么活塞事件会在这一游戏刻的方块事件阶段被执行。此时启动延迟就是0游戏刻(0秒),也就是同刻启动。
- 如果活塞是在执行实体、方块实体时更新激活,或是因为玩家的操作而被激活时,活塞事件会在下一刻的方块事件阶段被执行。此时启动延迟就是1游戏刻(0.05秒),也就是下一刻启动。
移动方块结构[编辑 | 编辑源代码]
工作的活塞会让方块被推动或拉动,从而使这些方块及其关联的方块跟随活塞的推拉而移动。
当下列情况发生时,方块会尝试被推动:
- 方块正位于将要推出的活塞前方;
- 方块位于另一个方块的移动方向前方时会尝试被推动。
当下列情况发生时,方块会尝试被拉动:
若一个方块既符合推动条件又符合拉动条件,我们将它视为推动。
下方的原理图展示了不同情况下各个方块的推拉状况:
一个方块将要被推动或拉动时,会产生不同的行为。方块的推拉行为有下列几类:
- 方块允许推动与拉动。
- 方块允许推动,但不可拉动。
- 方块被推动时会被破坏,且不可拉动。
- 方块不可推动与拉动。
方块 | Java版行为 | [显示]基岩版行为 |
---|---|---|
不可推动或拉动 | ||
N/A | 不可推动或拉动 | |
可推动或拉动 | ||
推动时会被破坏,当可掉落为物品时会掉落为物品;不可拉动 | ||
不可推动或拉动 | 可推动或拉动 | |
可推动或拉动,但会被拆分成两个箱子 | ||
推动到位后若没有被别的方块支撑则会被破坏并掉落为物品;不可拉动 | ||
推动时会被破坏,当可掉落为物品时会掉落为物品;不可拉动 | ||
可推动或拉动 | 可推动,不可拉动 | |
可推动,不可拉动 | ||
可推动或拉动;在沿Y轴拉动时会被破坏并掉落为物品 | ||
推动时会被破坏,当可掉落为物品时会掉落为物品;不可拉动 | 可推动或拉动 | |
推动时会被破坏,当可掉落为物品时会掉落为物品;不可拉动 | ||
不可拉动;仅在下落状态时可被推动。 | 可推动或拉动,但下方没有方块支撑时会下落而非黏在黏性活塞上 | |
可推动或拉动,但在下方没有方块支撑时会下落而非黏在黏性活塞上 | ||
可推动或拉动,但在下方没有方块支撑时会被破坏并掉落为物品 |
当活塞本身正在伸出、正在收回或已经伸出时,它不可推动和拉动;但当活塞处于收回状态时,它可推动和拉动。黏液块和蜂蜜块之间不能相互拉动。
活塞推出或拉回所带动的方块结构就是移动方块结构,下列原理图用*
标记了活塞推出时的移动方块结构。
活塞的移动方块受到多种条件限制。在下列情况下,活塞无法推动方块,黏性活塞无法拉回方块但可以收回活塞头:
- 移动方块结构的方块总数超过12个。
- 黏性活塞尝试拉回不可拉动的方块。
- 移动方块结构会被移动超过建筑高度上限或建筑高度下限。
- 移动方块结构移动方向前方有不可推动的方块。
当移动方块结构移动时,附着于这个方块结构上的附着性方块会被破坏,移动方向前方的推动破坏方块也会被破坏,整个结构变为移动状态。通常情况下,2游戏刻(0.1秒)后移动方块结构到位,整个结构回到普通的方块状态。部分情况下移动结构可以在短于2游戏刻(0.1秒)的时间内到位(即为瞬间到位)。在Java版中,若黏性活塞接收到一个小于3游戏刻(0.15秒)的短正脉冲信号,它就可能无法在信号消失时拉回推出的方块结构。
在活塞推出和拉回时会发出声音,以活塞为中心31×31×31的区域内都能听到。
推动实体[编辑 | 编辑源代码]
在移动方块结构正在移动时,它会对在移动范围内的实体施加推力,从而使这些实体跟随着方块结构的移动而移动。如果实体被推动后无法向着对应方向移动,移动的方块可能会推入实体中。如果方块是一个窒息方块,方块被推入生物后可能造成生物窒息而亡。
绝大多数实体都可以被推动,但区域效果云、Marker为true的盔甲架、展示实体、交互实体和标记
如果实体被正在移动的黏液块推动,则会以较高的速度被弹开。
技术性组件[编辑 | 编辑源代码]
活塞头[编辑 | 编辑源代码]
活塞头(Piston Head)(又称活塞臂)是一个技术方块,用于已经伸出的活塞。
活塞头不能使用常规方式放置,只能使用/setblock
命令或调试棒放置。
在基岩版中,使用/give @s pistonarmcollision
和/give @s stickypistonarmcollision
可分别获得活塞头和黏性活塞头的方块物品。
当活塞头的后方接收到PP更新
当活塞头被破坏时,活塞头对应的活塞也会被破坏,并掉落物品。
在Java版中,活塞头使用一个方块状态来定义它是一个普通活塞头还是一个黏性活塞头。在基岩版中,两种活塞头使用不同的ID定义。
移动的活塞[编辑 | 编辑源代码]
移动的活塞(Moving Piston)
活塞推拉方块时,方块需要进入或离开网格单元而占据了每个不同方块网格,因此不能被存储为正常方块。活塞推拉方块的过程中,活塞本身和移动方块结构内的所有方块都被替换为“移动的活塞”方块,原先的方块数据全部存储入方块实体数据中。在活塞推拉到位后,移动的活塞方块会被重新复原为原先的方块。
在Java版中,使用命令放置的移动的活塞不会创建方块实体,使得此移动的活塞永远保持当前状态不会自动转变为正常方块。
移动的活塞具有下面的性质:
- 它本身不可见,但其方块实体可见且渲染为储存的方块的移动动画。
- 它本身没有碰撞箱,但它会使用其方块实体中保存的方块碰撞箱,随方块移动程度改变碰撞箱的位置。
- 它没有轮廓箱,玩家无法选中它。
- 在不使用命令的情况下,它只能被爆炸破坏。它的爆炸抗性为0,与储存的方块无关。在这种情况下,某些方块可能本身爆炸抗性很高,但如果被推动时产生爆炸,则会因为36号方块的爆炸抗性为0而被破坏。
- 它是不可替换的方块,玩家不能在它所在的位置直接放置方块。
- 当玩家踩上移动的活塞时,移动的活塞发出石头的声音,与储存的方块无关。
移动的活塞无法继承多数其代表的方块的特征。[3]
方块实体[编辑 | 编辑源代码]
该技术性方块具有与其相关联的保存了其附加数据的方块实体。
- 方块实体数据
- 方块实体共通标签,见Template:Nbt inherit/blockentity/source
- *
*blockState:所代表的被移动的方块。- 方块状态,见自定义世界生成/block_state
- *
*extending:表示移动的活塞是否是由推出的活塞移动而被创建的。 - *
*facing:(0≤值≤5)创建移动的活塞的活塞的方向。从0到5分别对应下上北南西东,如果超过值域则对6取余并取绝对值后对应方向。 - *
*progress:(0≤值≤1)方块已经移动的进度。如果设置值超过1则重置为1,并到位。 - *
*source:表示移动的活塞是否为引发移动的活塞或活塞头。
基岩版:
活塞移动细节[编辑 | 编辑源代码]
Java版[编辑 | 编辑源代码]
- 创建移动方块结构
当活塞推出,黏性活塞推出或收回时,系统会以活塞前方的方块作为“起始点”递归创建一个移动方块结构,并计算这个结构是否能被移动和移动这个方块结构需破坏周围什么方块。创建移动方块结构的流程如下:
- 确定移动方向。若活塞正在推出,那么方向与活塞一致;若活塞正在收回,则方向与活塞相反。
- 创建移动列表和破坏列表。移动列表负责储存将移动的方块,破坏列表负责储存方块结构移动开始时将破坏的方块。
- 若起始点是一个推动破坏的方块,且活塞正在推出,则在破坏列表中加入该方块,中止创建移动方块结构。
- 从起始点向后方查找可以被拉动的方块,从远到近依次编号,添加入移动列表中,直到找到空气或即将移动的活塞本身。
- 若查找过程中移动列表大小超过12,则中止创建移动方块结构,整个方块结构无法被移动。
- 从起始点向前查找方块,从近到远依次编号添加入移动列表中,直到找到空气、即将移动的活塞本身、推动破坏的方块、不可推动的方块或已经存在于移动列表中的方块。
- 若查找过程中移动列表大小超过12,则中止创建移动方块结构,整个方块结构无法被移动。
- 若查找到推动破坏的方块而中止查找,则将该方块添加入破坏列表中。
- 若查找到不可推动的方块或即将移动的活塞本身而中止查找,则说明整个移动方块结构被阻挡,无法移动。此时创建移动方块结构中止,整个方块结构都不会移动。
- 若查找到已存在于移动列表中的方块而中止查找,说明当前移动列表的元素顺序出现了问题,需要将目前计算的这列方块插入到已经存在于移动列表的方块前方。
- 按照移动列表内元素的顺序,依次遍历各个元素(包括将在这个循环中添加的方块):
- 检查方块是否为黏液块或蜂蜜块。若不是,不执行接下来的分支创建;若是,执行下面的流程:
- 按照下、上、北、南、西、东的顺序,尝试添加分支:
- 若当前方向正好为推动方向或推动方向的反向,则不创建在这个方向上的分支。
- 若对应方向上的方块无法拉动(包括黏液块和蜂蜜块之间不可拉动),则不创建在这个方向上的分支。
- 以对应方向上的方块为新的起始点,执行外层的4、5步骤。
- 遍历元素结束后,移动列表和破坏列表就被填充完毕,创建移动方块结构完毕。
从这个流程可以看出,活塞移动方块结构内的编号顺序是按照移动方向依次递增的。垂直于移动方向上来看,离活塞越近,编号也越小。
- 产生更新
当活塞开始伸出或收回时,它会与移动方块结构按照一定的顺序发出方块更新。
若活塞未伸出,但当前具有红石信号,那么活塞被激活并尝试推出:
- 若活塞不可推出,则不产生更新。
- 计算移动方块结构,获得移动列表和破坏列表。
- 逆序破坏破坏列表内的方块,此过程不产生NC更新和PP更新。
- 逆序在移动后的位置放置移动的活塞方块,存储移动方块的信息,此过程不产生NC更新。
- 活塞应该产生活塞头的位置放置移动的活塞,保存活塞头信息,此过程不产生NC更新。
- 对于移动方块后留下的“空位”,以位置的哈希码大小排序从小到大将它们设置为空气,此过程不产生NC更新和PP更新。设置完成后,再按照这个顺序遍历一次这些方块产生PP更新。其中,位置的哈希码计算公式为
x+31y+961z
,取最后32位有符号整数作为这个位置的哈希码。 - 逆序对破坏方块列表内的方块产生间接PP更新和NC更新,再逆序对移动方块列表内的方块产生NC更新,最后在活塞头产生NC更新。
- 移动准备结束,活塞设置自身方块状态,产生NC更新和PP更新。
若活塞已伸出,但当前没有红石信号,那么活塞被取消激活并尝试收回:
- 若活塞头位置是移动的活塞方块实体,则瞬间到位。
- 设置自身状态为移动的活塞,此时不产生NC更新和PP更新。之后添加方块实体,并产生NC更新和PP更新。
- 若活塞是普通的活塞,则设置活塞头方块为空气,产生NC更新和PP更新,移动准备结束。
- 若活塞是黏性活塞,检查对应方向前方的第二格方块(即黏性活塞可能拉回的方块):
- 若这个方块是一个移动的活塞方块实体,并且方向与黏性活塞相同,并处于正在推出状态,则瞬间到位。
- 否则,检查前方方块是否为移动的活塞方块实体:
- 若是,并且方向与黏性活塞相同,并正在推出,推动进度小于一半或刚刷新一次推动进度或此事件发生在计划刻和方块事件阶段内,则设置活塞头位置为空气,产生NC更新和PP更新,不拉回方块。
- 若不是或没有满足上述条件,则再次检查前方的第二格方块是否为活塞可拉动的方块(但不检查移动方块结构):
- 若不是可拉动的方块,则设置活塞头位置为空气,产生NC更新和PP更新。
- 若是可拉动的方块,且移动方块结构也可以被拉动,则与上文推出类似,创建移动列表和破坏列表,并进行对应的NC更新和PP更新。
- 若是可拉动的方块,但移动方块结构不能被拉动,则只会设置活塞头位置为空气,不产生NC更新和PP更新。
- 到位
在移动过程中,方块转变为移动的活塞方块,历经两次方块实体游戏刻计算后,在第三次调用刻计算时,执行普通到位。若从活塞开始伸出的那一游戏刻记为第0游戏刻开始计算,普通到位会在第2游戏刻的方块实体阶段被调用。
若在移动过程中移动的活塞被破坏,则会瞬间到位。
普通到位的流程如下:
- 删除方块实体。
- 检查当前方块是否为移动的活塞,若不是,则中止流程。
- 检查移动的活塞内部包含的要到位的方块到位后是否能成功附着或是否能在到位位置上存在,并矫正方块的形状。此过程约等于周围6个方块对本方块产生PP更新。
- 若检查失败,则先设置本方块位置为要到位的方块,设置过程不产生NC更新和PP更新,最后再产生NC更新和PP更新。
- 若检查成功,先将要到位的方块的含水状态清除,然后将本方块位置设置为要到位的方块,此过程产生NC更新和PP更新,再对本方块本身接收一次NC更新。
瞬间到位的流程如下:
- 删除方块实体。
- 检查当前方块是否为移动的活塞,如果不是,则中止流程。
- 检查自身是否为活塞头或活塞。
- 若是,则将本方块位置设置为空气,此过程产生NC更新和PP更新,再对本方块本身接收一次NC更新。
- 若不是,则将要到位的方块转换为最后要到位的方块,此过程约等于周围6个方块对本方块产生PP更新,用于矫正方块的形状和检查方块是否能在到位位置上存在。之后设置本方块位置为最后要到位的方块,此过程产生NC更新和PP更新,再对本方块本身接收一次NC更新。
瞬间到位和普通到位最明显的差异是是否清除方块的含水状态。当含水的方块被普通到位时,含水状态会被清除;而被瞬间到位时,含水状态不会被清除。
基岩版[编辑 | 编辑源代码]
- 活塞方块实体更新
- 初始化。
- 活塞在被放置后的第一次更新中,活塞会设置一些关于活塞头、推出方向等的值并在完成后发送通知。在第一次更新后直到被删除前,该活塞都不会继续执行这一段代码。
- 根据活塞的红石状态同步和改变自身的推出状态。
- 计算活塞的浮点坐标,设置碰撞箱。
- 若活塞推出状态的值是1(即活塞需要推出)则执行推出检查函数
pistonblockactor::_checkAttachedBlocks
。若返回值为0,则本函数直接返回,意味着活塞推出失败。- 同步活塞红石状态(并非信号状态)和推出状态。
- 调用
pistonblockactor::_spawnmovingblocks
函数,该函数为活塞推出方块、破坏方块一系列行为执行的主函数。
- 向活塞的六个面发送NC更新。
- 若活塞的推出状态不是1和3,而是2,则执行对推出的每个位置的移动的方块转方块的函数。
- 调用
pistonblockactor::_spawnblocks
,该函数为遍历列表使移动的方块转方块的主函数。
- 调用
- 若活塞的推出状态是3(即活塞需要收回),则执行和4相近的内容,仅在活塞收回中多出了一个删除方块的操作(可能是删除活塞头位置的方块)。
- 收回转方块和推出转方块类似。
- 活塞推出检查
checkattachedblocks
函数用于检查活塞是否能推出,实际上这个函数更多的是计算一些位置、方向、发送事件和释放内存,同时调用真正的检查函数pistonblockactor::attachedblockwalker
。这个函数会递归搜寻检查要被活塞推出的方块,检查每一个可能位置上的方块,并把可推出或破坏的方块加入列表,逻辑如下:
- 检查函数的参数是一个方块实体对象、一个
blocksource
对象,正在检查的方块的三维向量(递归搜寻,所以只是一个方块的坐标),还有两个指针。- 遍历一次已加入列表的方块,若参数中的三维坐标在列表已经存在,则立即返回1。
- 计算正在检查的方块移动后的新坐标是否突破了高度限制。
- 计算活塞坐标和正在检查的坐标是否满足某种关系,并检查这个坐标是否为移动的方块,若是则通过检查
[需要更多信息]。 - 处理液体方块。
- 检查所检查位置是否有方块实体,若有则检查该方块实体是否为可移动的方块实体。
- 检查这个位置是否为空气,若是则通过检查。
- 处理黏性链接
handleslimeconnection
函数。 - 再次处理液体方块。
- 调用
attachedblockwalker
函数自身,并检查返回值,若返回值为0(即不能推出),自身也返回0(不能推出)。
- 活塞推出方块主函数
- 调用
pistonblockactor::sortattachedblocks
函数排序方块推出列表中的方块。 - 检查列表是否过长以至于溢出。
- 生成一个
random
对象,也就是处理随机数的,用于处理活塞推方块掉落物品。 - 遍历破坏列表里的方块,生成破坏后的掉落物并破坏方块。
- 遍历移动列表里的方块,对每个遍历到的坐标执行
pistonblockactor::spawnmovingblock
函数。 - 一些检查,释放内存。
- 活塞移动方块函数
- 判断被移动的方块是否有方块实体,而且方块实体是“2LL”类方块实体(应该是容器)。
- 强制关闭箱子,若是大型箱子,则断开连接。
- 检查成就。
- 判断被移动的方块是否为空气,具有方块实体。方块实体是“19LL”类,即移动的方块。
- 若是,将这个MB方块实体里的方块直接替换掉这个位置的方块(注意,和放置不同,这里的替换甚至不会发出NC更新)。
- 构造一个
movingblock
,并放置在目标位置。 - 若被移动的方块有方块实体,则将该方块实体的两个值记录到另两个变量里,将它们本身改成0(可能是与移动状态相关的),然后移除该方块实体。
- 若没有,也要移除一遍该位置的方块实体,即使根本就没有。
- 若新建的
movingblock
的位置没有成功地新建movingblock
的方块实体,则直接跳到最后(删除原位置的方块)。 - 处理活塞移动的一些特殊情况。
- 若被移动的方块含有别的方块,而且该方块没有“0x2000000L”性质(液体方块具有这个性质),就一起移动,记录到
movingblock
里。 - 发送一些通知,并调用新创建的
movingblock
的函数移动碰撞的实体。 - 删除原位置的方块。
- 活塞处理方块转方块函数
- 检查活塞状态,若不是0和2状态,就执行转方块。
- 遍历活塞推动方块的列表。
- 检查正在处理的方块是否为移动的方块。
- 若被推动的方块含液体方块,则检查相邻方块有没有液体方块,处理连接渲染状态。
- 将被移动的方块含的方块,即
extrablock
,放置出来。 - 将被移动的方块放出来。
- 移动的方块实体更新函数
- 作为方块实体类的子类,调用
blockactor::tick
。 - 判断自身记录的方块是否为移动的方块(也就是被移动的
movingblock
),若是,则把记录的movingblock
直接替换成空气,它的extrablock
也会被替换。 - 若检查自身记录的活塞位置没有活塞,则转方块。
音效[编辑 | 编辑源代码]
音效 | 字幕 | 分类 | 描述 | 命名空间ID | 本地化键名 |
---|---|---|---|---|---|
方块:被破坏 | 方块 | 破坏方块 | block.stone.break | subtitles.block.generic.break | |
某物:摔落到方块上 | 玩家 | 带有摔落伤害时摔落在方块上 | block.stone.fall | subtitles.block.generic.fall | |
方块:损坏中 | 方块 | 挖掘方块 | block.stone.hit | subtitles.block.generic.hit | |
方块:被放置 | 方块 | 放置方块 | block.stone.place | subtitles.block.generic.place | |
脚步声 | 玩家 | 在方块上行走 | block.stone.step | subtitles.block.generic.footsteps | |
活塞:移动 | 方块 | 活塞伸出 | block.piston.extend | subtitles.block.piston.move | |
活塞:移动 | 方块 | 活塞缩回 | block.piston.contract | subtitles.block.piston.move |
基岩版:
音效 | 分类 | 描述 | 命名空间ID | 系统音效类型 | 音量 | 音高 | 衰减距离 | 流 | 预载 |
---|---|---|---|---|---|---|---|---|---|
方块 | 方块作为物品使用时发出的音效 | use.stone | item.use.on | 1.0 | 0.8 | 16 | 否 | 否 | |
方块 | 破坏方块 | dig.stone | break | 1.0 | 0.8-1 | 16 | 否 | 是 | |
方块 | 挖掘方块 | hit.stone | hit | 0.37 | 0.5 | 16 | 否 | 是 | |
方块 | 放置方块 | dig.stone | place | 1.0 | 0.8-1 | 16 | 否 | 是 | |
玩家 | 带有摔落伤害时摔落在方块上 | fall.stone | fall | 0.4 | 1.0 | 16 | 否 | 否 | |
玩家 | 在方块上行走 | step.stone | step | 0.3 | 1.0 | 16 | 否 | 是 | |
方块 | 在方块上跳跃 | jump.stone | jump | 0.12 | 1.0 | 16 | 否 | 是 | |
方块 | 在方块上着陆 | land.stone | land | 0.22 | 1.0 | 16 | 否 | 否 | |
方块 | 活塞伸出 | tile.piston.out | piston.out | 0.5 | 0.6-0.75 | 16 | 否 | 否 | |
方块 | 活塞缩回 | tile.piston.in | piston.in | 0.5 | 0.6-0.75 | 16 | 否 | 否 |
数据值[编辑 | 编辑源代码]
ID[编辑 | 编辑源代码]
名称 | 命名空间ID | 方块标签(JE) | 本地化键名 |
---|---|---|---|
![]() | piston | mineable/pickaxe | block.minecraft.piston |
![]() | sticky_piston | block.minecraft.sticky_piston | |
![]() | piston_head | block.minecraft.piston_head | |
![]() | moving_piston | dragon_immune wither_immune | block.minecraft.moving_piston |
名称 | 命名空间ID |
---|---|
![]() | piston |
基岩版:
名称 | 命名空间ID | 别名ID(BE) | 本地化键名 |
---|---|---|---|
![]() | piston | 无 | tile.piston.name |
![]() | sticky_piston | 无 | tile.sticky_piston.name |
![]() | piston_arm_collision | pistonArmCollision | tile.piston_arm_collision.name |
![]() | sticky_piston_arm_collision | stickyPistonArmCollision | tile.sticky_piston_arm_collision.name |
![]() | moving_block | movingBlock | tile.moving_block.name |
名称 | 命名空间ID |
---|---|
![]() | PistonArm |
![]() | MovingBlock |
方块数据[编辑 | 编辑源代码]
位 | 值 |
---|---|
0x1 0x2 0x4 |
一个储存0-5的三位字段表示活塞的朝向:
|
方块实体[编辑 | 编辑源代码]
方块状态[编辑 | 编辑源代码]
方块 | 方块属性 | 默认值 | 接受值 | 描述 |
---|---|---|---|---|
![]() ![]() |
extended
|
false
|
true
|
活塞已伸出 |
false
|
活塞未伸出 | |||
facing
|
north
|
north
|
方块朝向北方 | |
east
|
方块朝向东方 | |||
south
|
方块朝向南方 | |||
west
|
方块朝向西方 | |||
up
|
方块朝向上方 | |||
down
|
方块朝向下方 | |||
![]() |
facing
|
north
|
north
|
方块朝向北方 |
east
|
方块朝向东方 | |||
south
|
方块朝向南方 | |||
west
|
方块朝向西方 | |||
up
|
方块朝向上方 | |||
down
|
方块朝向下方 | |||
short
|
false
|
true
|
活塞头较短,整体长1格 | |
false
|
正常的活塞头,整体长1.25格 | |||
type
|
normal
|
normal
|
该方块属于一个普通活塞 | |
sticky
|
该方块属于一个黏性活塞 | |||
![]() |
facing
|
north
|
north
|
方块朝向北方 |
east
|
方块朝向东方 | |||
south
|
方块朝向南方 | |||
west
|
方块朝向西方 | |||
up
|
方块朝向上方 | |||
down
|
方块朝向下方 | |||
type
|
normal
|
normal
|
该方块属于一个普通活塞 | |
sticky
|
该方块属于一个黏性活塞 |
基岩版:
方块 | 方块属性 | 默认值 | 接受值 | 描述 |
---|---|---|---|---|
![]() |
无法获取到此方块的方块状态 | |||
![]() ![]() ![]() ![]() |
facing_direction
|
0
|
0
|
方块朝向下方 |
1
|
方块朝向上方 | |||
2
|
方块朝向南方 | |||
3
|
方块朝向北方 | |||
4
|
方块朝向东方 | |||
5
|
方块朝向西方 |
成就[编辑 | 编辑源代码]
图标 | 成就 | 游戏内描述 | 实际需求(若异) | Xbox点数 | 奖杯(PS) | |
---|---|---|---|---|---|---|
![]() | ![]() | 始作俑者 Inception | 用一个活塞推另一个,然后用那个活塞拉最开始那一个。 | 将2个活塞面对面放置,其中至少有一个是黏性活塞。顺次激活二者使整体移动1格。 | 20G | 银杯 |
视频[编辑 | 编辑源代码]
历史[编辑 | 编辑源代码]
请在将需要的等轴渲染图添加到该段落后移除此模板。
具体说明:MCPE-38053、原Mod中黏性活塞推出时的渲染图
Java版Classic | |||||||
---|---|---|---|---|---|---|---|
2009年5月21日 | Notch表示有兴趣添加当接收到来自线路的脉冲时可以拉动和推动其他方块的方块; 他把这种方块分别称为“Pulley1”与“Pulley2”。“Pulley1”会拉动一个方块,而“Pulley2”则会推动一个方块。 | ||||||
Java版Beta | |||||||
? | ![]() ![]() ![]() | ||||||
另一位用户DiEvAl也在私下提交过代码,他提出了利用方块实体追踪移动的方块的想法。[5][6] | |||||||
然而,由于Jeb那时忙于携带版的开发,活塞没有在Beta 1.5和Beta 1.6更新中发布。最终,当携带版足够好可以在E3上展示时,Jeb回到Java版的开发,最终在Beta 1.7中添加了活塞和黏性活塞。 | |||||||
2011年6月7日 | Jeb在动态中发布了一张开发中的活塞的图片。 | ||||||
![]() | |||||||
1.7 | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 加入了活塞和黏性活塞,以及与之相关的活塞头和移动的方块。 | ||||||
![]() ![]() | |||||||
1.7_01 | 黏性活塞不再会在它们缩回时黏住方块。 | ||||||
Java版 | |||||||
? | 移动的活塞方块的线框现在与其碰撞箱对齐。 | ||||||
1.2.4 | 正式版 | 云杉木板、白桦木板以及丛林木板现在可以用来合成活塞。 | |||||
1.2.5 | 活塞头方块现在可以通过选取方块键获得。 | ||||||
1.3.1 | 12w16a | 活塞头方块不再可以通过选取方块键获得。 | |||||
12w22a | 黏性活塞现在可以在丛林神庙中自然生成,用于弓箭陷阱和隐藏宝藏。 | ||||||
12w27a | 改进了活塞来使它们不那么容易出错,这也代表它们会更新得更慢一些。同时这也更改了活塞的工作原理,使得玩家可能需要调整其中继器的延迟以及其他类似的红石装置。由于这次改动,活塞现在需要2红石刻(4游戏刻)的时间来伸缩,但它们仍然会瞬间缩回。 | ||||||
1.7.2 | 13w37a | 34号方块(活塞头)和36号方块从/give 命令中移除。 | |||||
1.7.1 | 金合欢木板与深色橡木木板现在可以用来合成活塞。 | ||||||
1.8 | 14w17a | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | |||||
14w18a | 现在当活塞推动黏液块时,黏液块会带动与其相邻的、可以被推动的方块。 | ||||||
现在活塞朝上推动时,其顶部若放有一个黏液块,则会将黏液块上的实体(生物、玩家、掉落物、已发射的箭等)弹射到空中。 | |||||||
14w19a | 附着活塞的黏液块现在可以推动侧面的和下面的方块。 | ||||||
14w26a | 活塞现在使用方块状态,取代了之前的数据值。因此怪异的活塞已被移除。 | ||||||
14w29a | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 这个版本现在存在“短”版的活塞头,其用途未知。 | ||||||
为piston_head 的方块状态添加了short=true/false 。 | |||||||
14w32a | 移动的活塞头不再拥有碰撞箱。 | ||||||
1.9 | 15w49a | 没有伸长的活塞、面朝下的活塞和面朝上的活塞头现在被认为拥有固体的顶部表面,就像倒置的楼梯和上半顶部的台阶。同时还存在着这样的一个漏洞:当活塞头收回时,它会拉动穿过它的实体,称为易位。 | |||||
1.11.1 | 16w50a | 为piston_extension 方块实体添加了一个名为source 的新字节标签,当方块代表活塞头部时为true,而代表被推动的方块时为false。易位被修复了。 | |||||
1.12 | 17w16a | 黏性活塞不再能拉动带釉陶瓦。现在活塞推动黏液块时不会推动附着在黏液块侧面的带釉陶瓦。 | |||||
pre3 | 黏液块不再能推动在它任何一侧的带釉陶瓦。 | ||||||
1.13 | 17w47a | 移动方块的ID已从piston_extension 改变为moving_piston 。 | |||||
在扁平化之前,这些方块的数字ID为29、33、34和36。 | |||||||
活塞现在可以推动音符盒。 | |||||||
pre6 | 黏性活塞现在再次可以拉动带釉陶瓦。 | ||||||
pre8 | 黏性活塞不再可以拉动带釉陶瓦。 | ||||||
1.14 | 18w43a | ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 更改了与活塞有关的纹理。 | |||||
虽然橡木木板的纹理在随后的快照中进行了升级,但活塞的纹理并未因此受到改动。[7] | |||||||
18w44a | 活塞不再是透明方块了。 | ||||||
18w46a | 伸出的活塞现在允许光透过某些面。 | ||||||
1.15 | 19w41a | 加入了蜂蜜块。蜂蜜块与活塞有着多种不同种类的交互。 | |||||
1.16 | 20w06a | 活塞的硬度由0.5增加到了1.5。 | |||||
镐现在可以更快地破坏活塞。 | |||||||
放置在活塞背部的红石部件不再会在活塞收回时掉落。 | |||||||
绯红木板和诡异木板现在可以用来合成活塞。 | |||||||
1.17 | 20w45a | 被活塞破坏的方块现在会产生粒子。 | |||||
1.19 | 22w11a | 红树木板现在可以用来合成活塞。 | |||||
22w13a | 现在黏性活塞和活塞头会生成在远古城市中心的地下室内。 | ||||||
22w17a | ![]() ![]() | ||||||
1.21 | 24w20a | 更改了活塞伸出和收缩的音效。 | |||||
24w21a | 回退了24w20a的音效更改,并降低了原音效的音量和衰减距离。 | ||||||
1.21.5 | 25w10a | 现在被活塞破坏的方块会播放其破坏音效。[8] | |||||
携带版Alpha | |||||||
0.15.0 | build 1 | ![]() ![]() | |||||
? | 同样存在怪异的活塞,但这种活塞并不是六面活塞。 | ||||||
基岩版 | |||||||
1.10.0 | 1.10.0.3 | ![]() ![]() | |||||
1.13.0 | ? | 黏性活塞头现在是独立的方块,分离于普通的活塞头,不再由方块状态决定。命名空间ID现在是stickypistonarmcollision ,数字ID为472。 | |||||
1.16.0 | 1.15.0.55 | 现在推动含水方块将使其失去含水状态。 | |||||
? | movingblock 方块不再能够使用命令放置。 | ||||||
1.18.30 | 1.18.30.26 | 活塞头、黏性活塞头和移动的方块的ID分别由pistonarmcollision 、stickypistonarmcollision 、movingblock 更改为piston_arm_collision 、sticky_piston_arm_collision 、moving_block 。 | |||||
1.19.0 | 1.19.0.26 | 现在黏性活塞可以生成于远古城市中心的地下室。 | |||||
1.19.50 | 1.19.50.20 | 现在活塞头与黏性活塞头推出和收回的动画更加流畅。[9] | |||||
现在活塞推动方块的动画更加流畅。[10] | |||||||
1.19.51 | 方块在被活塞推动时被破坏后不再会重新出现。 | ||||||
1.20.30 | 1.20.20.21 | 活塞和黏性活塞的硬度由0.5改为1.5。 | |||||
活塞的爆炸抗性由0.5改为1.5。 | |||||||
1.20.30.20 | 镐现在可以更快地破坏活塞。 | ||||||
New Nintendo 3DS版 | |||||||
0.1.0 | ![]() ![]() | ||||||
原主机版 | |||||||
Xbox 360 | Xbox One | PS3 | PS4 | PS Vita | Wii U | Switch | |
TU3 | CU1 | 1.00 | 1.00 | 1.00 | Patch 1 | 1.0.1 | ![]() ![]() |
TU14 | 1.04 | 活塞现在花费双倍的时间(2红石刻或4游戏刻)来延长,但它们仍然立即收缩。 | |||||
1.90 | ![]() ![]() |
原主机版 | |||||||
---|---|---|---|---|---|---|---|
Xbox 360 | Xbox One | PS3 | PS4 | PS Vita | Wii U | Switch | |
TU3 | CU1 | 1.00 | 1.00 | 1.00 | Patch 1 | 1.0.1 | ![]() ![]() |
TU14 | 1.04 | 活塞现在花费双倍的时间(2红石刻或4游戏刻)来延长,但它们仍然立即收缩。 | |||||
1.90 | ![]() ![]() |
你知道吗[编辑 | 编辑源代码]
- Mojang曾经声称活塞只能推动12个方块的限制不会被改动,因为“现有的限制是有意设计的”。[11]
- 当活塞托举着一个受重力影响的方块(例如沙子)并不断迅速地伸缩,该方块很有可能最终掉落为物品。因为该方块所对应的实体要变回对应方块时,活塞臂刚好伸出了。不过,沙砾不会掉落为燧石。
- 如果通过短脉冲充能的黏性活塞直接推动含水方块,那么含水方块在被推动到新地点后还会保持含水。
- 生物可以在活塞头方块中生成。
- 地毯可以放在活塞臂上,如果用
/setblock
替换活塞臂的话,地毯还会留在原位。 - 在基岩版中,使用命令生成的活塞头是不可见且是没有碰撞箱的。这个版本中移动的活塞不能使用方块放置命令放置。
- 活塞头在基岩版中与Java版形状略有不同。
- 如果一个活塞在世界的顶部,并且面向上,或者在底部且面向下,它就不能伸出。
- 一个活塞不能推动另一个被激活的活塞。
- “移动中的活塞”方块是透明的并且不发光。
- 发光的方块被活塞移动的瞬间会短暂变暗,不透明的方块被移动的瞬间则能够透光。
- 移动中的活塞无法使生物窒息。
画廊[编辑 | 编辑源代码]
-
在活塞的起源Mod中活塞的样子
-
第一张活塞的截图,注意在头上还有带子
-
Notch对于活塞柄部(柄部在伸出时的长度为一整个方块长)如何缩回活塞基座的解释(基座内纵深即一个方块长减去活塞面的宽)[12]
-
完全由活塞与红石中继器构成的基础逻辑门。从左上角顺时针看分别为:与门,或门,异或门,非门
-
由红石线、红石火把、红石中继器与活塞组成的长周期时钟
-
Beta 1.7中的黏性活塞
-
活塞控制水流的例子
-
黏性活塞与玻璃板配合的例子
-
黏性活塞与铁轨配合的例子
-
黏性活塞与栅栏配合的例子
-
旧版本中一个在物品栏里的活塞头
-
光从伸出的活塞中透出
-
在携带版中连接至活塞的红石
艺术作品[编辑 | 编辑源代码]
-
活塞的官方艺术作品,描绘了一个连接到拉杆的活塞
参见[编辑 | 编辑源代码]
注释[编辑 | 编辑源代码]
参考[编辑 | 编辑源代码]
- ↑ “Block of the Week: Piston” – Minecraft.net,2017年10月13日
- ↑ MC-171370 — “活塞头用镐破坏的速度比用斧头破坏得更快” — 漏洞状态为“有意为之”。
- ↑ MC-123217
- ↑ http://www.minecraftforum.net/viewtopic.php?t=247686&f=1032
- ↑ http://www.reddit.com/r/Minecraft/comments/hvkmo/attribution_of_the_piston_mod_in_vanilla_minecraft/
- ↑ http://imageshack.us/photo/my-images/51/jebf.jpg/
- ↑ MC-248841 — 漏洞状态为“有意为之”。
- ↑ MC-203550 — 漏洞状态为“已修复”。
- ↑ MCPE-155987 — 漏洞状态为“已修复”。
- ↑ MCPE-146597 — 漏洞状态为“已修复”。
- ↑ Piston Push Limits (and increases). The current limitations are by design. — Minecraft Feedback,2019年1月3日。
- ↑ https://twitter.com/notch/status/83513677654929408
导航[编辑 | 编辑源代码]
[隐藏] | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
| |||||||||||||||
[隐藏] | |
---|---|
红石电路 | |
教程 | |
电源 | |
传输元件 | |
机械元件 | |
杂项 |