跳到主要内容

📍 家具变体

简介

家具支持自定义变体。默认情况下,插件提供三种预设变体类型:groundceilingwall。变体将根据物品行为和家具行为进行切换。目前仅支持通过 API 操作切换变体。

下面,我将以 ground 模式为例,说明如何配置一个基本变体。

furniture:
default:bench:
variants:
ground:
# 为掉落物创建偏移,使其不会在方块内部生成
loot-spawn-offset: 0,0,0

# 展示元素
elements:
- item: default:bench
display-transform: NONE
billboard: FIXED
position: 0.5,0,0
translation: 0,0.5,0
apply-dyed-color: true # 默认值:true
# glow-color: 255,255,255 # 发光颜色:r,g,b

# 家具判定箱
hitboxes:
- type: interaction # 无碰撞判定箱
can-use-item-on: false # 默认值:false
can-be-hit-by-projectile: false # 默认值:false
blocks-building: false # 默认值:true
position: 0,0,0
width: 1
height: 2
# 可用 'scale' 简化 'width'/'height' 配置
# scale: 1,2
interactive: true # 交互实体是否可交互
seats:
- 0,0,-0.1 0

元素

在该系统中,元素指的是构成一件家具的每个独立组件。大多数家具结构简单,仅需单一元素即可完成。
不过,你也可以通过组装拼接多个元素来打造更复杂的家具。
例如,一个全息投影仪可由两个元素构成:基座与投影部分。基座可采用固定朝向,而投影部分则可以设置为始终面向玩家。

物品展示实体

https://zh.minecraft.wiki/w/展示实体

必填参数

type: item_display
item: default:bench

可选参数

display-transform: none # none  / third_person_left_hand / third_person_right_hand
# 不变换 / 第三人称视角左手变换 / 第三人称视角右手变换
# first_person_left_hand / first_person_right_hand
# 第一人称视角左手变换 / 第一人称视角右手变换
# head / gui / ground / fixed / on_shelf
# 放置在头部物品栏的变换 / 在图形界面中的变换 / 平铺在地面的变换 / 默认变换 / 在展示架中的变换
billboard: fixed # fixed / vertical / horizontal / center
# 固定垂直和水平轴 / 固定垂直轴 / 固定水平轴 / 按照中心旋转跟随玩家视角
position: 0.5,0,0
translation: 0,0.5,0
scale: 1 # scale: 1,2,1
apply-dyed-color: true
glow-color: 255,255,255
brightness:
block-light: 15
sky-light: 15
view-range: 1.0
# rotation 支持 3 种格式
rotation: 45 # Y 轴
rotation: 45,45,0 # 欧拉角
rotation: 0,0,0.7071,0.7071 # 四元数 https://quaternions.online/
注意

请注意区分 positiontranslationposition 改变对应展示实体的坐标位置,而 translation 是展示实体自身的位移属性。

危险

对于 wall 变体的家具,必须使用 position 进行微调偏移,否则特定位置时家具可能变黑。
译者注:你也可以通过配置 brightness.block-light 为 15 来解决。

文本展示实体

https://zh.minecraft.wiki/w/展示实体

必填参数

type: text_display
text: 你好 <papi:player_name>

可选参数

billboard: fixed  #      fixed      /  vertical   /  horizontal /         center
# 固定垂直和水平轴 / 固定垂直轴 / 固定水平轴 / 按照中心旋转跟随玩家视角
position: 0.5,0,0
translation: 0,0.5,0
scale: 1 # scale: 1,2,1
glow-color: 255,255,255
brightness:
block-light: 15
sky-light: 15
view-range: 1.0
# rotation 支持 3 种格式
rotation: 45 # 基于 Y 轴
rotation: 45,45,0 # 欧拉角
rotation: 0,0,0.7071,0.7071 # 四元数 https://quaternions.online/
line-width: 200
background-color: 64,0,0,0 # ARGB
text-opacity: -1
has-shadow: false
is-see-through: false
use-default-background-color: false
alignment: center # center / left / right
# 居中 / 左对齐 / 右对齐

掉落物

渲染一个掉落物

必填参数

type: item
item: default:bench
apply-dyed-color: true
position: 0,1,0

盔甲架

基于盔甲架渲染自定义物品

type: armor_stand
item: default:bench
apply-dyed-color: true
position: 0,1,0
scale: 1
small: false
glow-color: white # black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, white

判定箱

家具判定箱定义了玩家可与物体进行交互的交互体积。CraftEngine 提供多种判定箱类型,每种都具有独特的属性。你可以通过设置参数来添加并配置合适的判定箱,以满足你的需求。

交互实体

无碰撞判定箱

type: interaction
can-use-item-on: false
can-be-hit-by-projectile: false
blocks-building: false
position: 0,0,0
width: 1
height: 2
# 交互实体是否可交互
interactive: true
# 交互实体是否在 F3+B 下可见
invisible: false
seats:
- 0,0,-0.1 0
invisible: true
提示

widthheight 可简化为单个 scale 选项

type: interaction
scale: 1,2

潜影贝

硬碰撞判定箱

type: shulker
can-use-item-on: true
can-be-hit-by-projectile: true
blocks-building: true
position: 1,0,0
scale: 1
peek: 0 # 0~100
# 相对方向。north = 面向玩家
direction: UP # up/down/north/west/east/south
# 上/ 下 / 北 / 西 / 东 / 南
# 是否生成另外一个交互实体以获得更好的交互体验
interaction-entity: true
# 交互实体是否可交互
interactive: true
# 交互实体是否在F3+B下可见
invisible: false
seats:
- 1,0,-0.1 0

peek: 0 peek: 50 peek: 100

快乐恶魂

硬或软碰撞判定箱

type: happy_ghast
can-use-item-on: true
can-be-hit-by-projectile: true
blocks-building: true
hard-collision: true
position: 1,0,0
scale: 0.25 # 默认值:1
seats:
- 1,0,-0.1 0

自定义

软碰撞判定箱

type: custom
position: 1,0,0
scale: 5
# 你可以在此处使用任何实体
# 默认值:slime
entity-type: slime
seats:
- 1,0,-0.1 0
提示

一个 hitbox 可以配置多个座位。如果多个 hitbox 的座位被放置在同一位置,其效果等同于仅存在一个座位。

信息

seat 的位置由坐标和旋转角度共同决定,在配置中以空格分隔:

0,0,0 0

也可选择不配置旋转角度,此时玩家入座后可自由旋转至任意方向:

0,0,0

0,0,0 0

0,0,0

实体剔除

你可以单独控制每个家具变体是否启用实体剔除功能

ground:
entity-culling: false # 关闭

启用实体剔除后,你可以配置剔除参数

ground:
entity-culling:
aabb: -0.5,0,-0.5,0.5,2,0.5 # x1,y1,z1,x2,y2,z2,不建议自行配置 aabb,插件会自动计算
view-distance: 64 # 可视距离剔除,-1 表示不限制距离。
# 但是不建议在开启光线追踪的情况下设置为 -1,否则会导致算法路径过长,造成性能消耗
ray-tracing: false # 是否启用光线追踪剔除

外部模型

你也可以使用来自 ModelEngine 或 BetterModel 的模型

furniture:
default:bench:
variants:
ground:
model-engine: blueprint_id
better-model: blueprint_id