传送门属性


传送门属性

此处介绍传送门的属性。

可以通过 /portal set_portal_nbt 命令编辑. 自定义传送门

形态属性

决定朝向的基轴

两个相互垂直的单位向量,决定传送门的朝向。

NBT tags:axisWX axisWY axisWZ axisHX axisHY axisHZ

建议用 /portal rotate_portal_body 编辑该属性。

宽度,高度

宽度是传送门沿 axisW的长度。高度是传送门沿axisH的长度。

NBT tags: width height

建议用 /portal set_portal_size 编辑该属性。

特殊形状

可选。包括若干个2D平面上的三角形。

NBT tag: specialShape (是一个浮点数列表。每两个数代表一个2D平面上的点(x轴为axisW,y轴为axisH),每三个点代表一个三角形。

例子:将传送门的形状改为一个三角形 /portal set_portal_nbt {width:2,height:2,specialShape:[-1.0d,0.0d,1.0d,0.0d,0d,1.0d],cullableXStart:0,cullableXEnd:0,cullableYStart:0,cullableYEnd:0}

空间变换属性

指向的位面

传送门指向的位面。

NBT tag: dimensionTo

目标位置

传送门指向的位置坐标。

NBT tag: destinationX destinationY destinationZ

旋转变换

可选。一个四元数,表示传送门的旋转变换。

NBT tag: rotationA rotationB rotationC rotationD

缩放变换

传送门缩放变换的比例。

NBT tag: scale

传送属性

传送是否对实体进行缩放

如果传送门有缩放变换,这个属性决定传送门是否缩放通过的实体。

NBT tag: teleportChangesScale

传送是否改变实体的引力方向

如果传送门有旋转变换,则玩家在跨国传送门后会改变引力方向。需要Gravity Changer(Gravity API)模组。

NBT tag: teleportChangesGravity

是否在实体传送后调整实体位置

若为true则若玩家通过传送门后陷入地面,玩家会被自动抬升防止陷入地面。

NBT tag: adjustPositionAfterTeleport

是否有跨传送门碰撞

当一个实体碰到一个传送门后,其碰撞计算将会包括:

  • 传送门外碰撞。传送门后的物体无法与该实体碰撞。
  • 传送门内碰撞。传送门“内”的物体可以与该实体碰撞。

这个属性决定传送门内碰撞是否被处理。

NBT tag: hasCrossPortalCollision

传送后执行的命令

可选。指定实体在穿过该传送门后执行的命令。 命令的发起者为穿过传送门的实体。

命令将会以OP权限执行。 使用命令 /portal set_portal_nbt 改变该属性需要OP权限。

NBT tag: commandsOnTeleported

访问控制属性

是否可传送

若为false,则传送门可以看但不能传送。

NBT tag: teleportable

是否可以互动

玩家是否可以透过该传送门放置和破坏方块。

NBT tag: interactable

是否可视

控制传送门是否渲染。不可视的传送门仍然能进行传送,有跨传送门碰撞以及跨传送门区块加载。

NBT tag: isVisible

指定的使用者

可选。表示指定唯一能看见并使用该传送门的玩家的UUID。如果该值存在但为null,则所有玩家都不能看见并使用该传送门但非玩家实体能使用。

NBT tag: specificPlayerId

传送门动画

默认情况下,如果用 /portal 命令编辑传送门,则传送门会逐渐、顺滑地变化。

这些东西会逐渐变化:

  • 传送门的位置与指向位置
  • 传送门的朝向
  • 传送门的旋转变换
  • 传送门的缩放变换
  • 传送门的宽度和高度(如果传送门有特殊形状则不行)

NBT tag: animation

animation 标签有两个子标签: curvedurationTicks. curve 可以是 linear, sinecirclecurve 不改变轨迹,只影响动画过程中的速度变化。

例子:

  • 禁用传送门动画: /portal set_portal_nbt {animation:{durationTicks:0}}

  • 让传送门动画变为线性且时间为2秒: /portal set_portal_nbt {animation:{curve:"linear",durationTicks:40}}

传送门动画仅在客户端中有,在服务端传送门是立即变化的。在网络状况不好的情况下传送门动画仍然可以是顺滑的。

传送门动画只能通过 /portal 命令启动。使用/tp/data命令无法启动传送门动画。

尚未实现相对碰撞、传送。若传送门穿过你,你不会被传送。

传送门组绑定

每个传送门实体都是单面单向的,一个双面双向传送门包括4个传送门实体,这四个传送门实体组成一个传送门组。如果要编辑那个传送门,则总共需要编辑4个传送门实体。

启用 bindCluster传送门绑定后,在用 /portal 命令编辑其中一个传送门后,其他三个传送门会相应也被编辑,这使得编辑传送门更方便。

NBT tag: bindCluster

渲染属性

融合渲染

若为true,则传送门渲染不会渲染天空背景,同时保留传送门视域中的深度值,使传送门内部的景色与外部融合。

NBT tag: fuseView

渲染可合并

若为true,当该传送门碰到另外一个有相同空间变换的传送门时,这两个传送门会被“合并”,其渲染性能将会提升,提高帧率,但是渲染合并的传送门无法正常进行前部剪裁。

NBT tag: renderingMergable

是否渲染你自己

如果关闭,则传送门中不渲染玩家自己。

NBT tag: doRenderPlayer

可剔除范围

用于外部视锥剔除。

NBT tag: cullableXStart cullableXEnd cullableYStart cullableYEnd

其他属性

动量增强指数

若该数为正,则跟这个传送门碰撞的玩家会被在传送门面向的方向上加速。若该值为负,则玩家会被减速。

NBT tag: motionAffinity

可破坏传送门的属性

可破坏传送门有的属性。

是否不可被破坏

如果为true,则传送门框架破坏后传送门不消失。

NBT tag: unbreakable

附加材质属性

附加材质的方块状态

可选。传送门附加材质的方块状态。

NBT tag: overlayBlockState

附加材质的不透明度

附加材质的不透明度,在0和1之间。

NBT tag: overlayOpacity

附加材质的偏移量

附加材质的偏移量,沿着传送门面向的方向。

NBT tag: overlayOffset

关于编辑传送门的形状

你可以通过修改NBT tag of width, height, specialShape来编辑传送门的形状。

若 NBT tag specialShape 存在,则传送门的形状由 specialShape控制,否则由 widthheight控制。

specialShape 是一个浮点数的列表,每两个数代表一个二维点,每三个点对应一个三角形。在编辑传送门形状后可能会出现渲染异常,传送门内部的一些区块可能不会被渲染,传送门后方的一些地形区块可能会不被渲染。这是视锥剔除优化导致的。为防止此类问题,需要保证每个, specialShape 中的三角形没有超过 widthheight定义的方形空间。而且由cullableXStart, cullableXEnd, cullableYStart, cullableYEnd 定义的方形空间不能超过传送门的形状区域。