可自定义电梯

可自定义电梯

用你自己的方块建造一部电梯!支持门和绳索。

冒险

为生存模式寻找重要错误和漏洞,需要翻译帮助(目前仅支持俄语、英语、波兰语和俄语旧正字法)。

⚙️ 安装

数据包要正常工作,你需要安装 MIDWUT(点击) 核心数据包!

📖 关于

使用此数据包,你可以将普通方块变成可用的电梯!所有电梯元素都由你的方块组成。

特性:

  • 克隆方块移动,并传送电梯内/上方/下方的实体;
  • 处理电梯创建和运行过程中所有可能的错误;
  • 电梯速度可调节;
  • 支持按钮(告示牌)上的自定义文本。

🧊 方块与合成

新方块 — 电梯控制站

当玩家获得铜锭或红石时,会在配方书中收到配方。

  • 画廊中有配方的截图。
  • 在 misode 生成器网站上的配方可视化:点击

它是一个容器方块,内部包含电梯配置工具。

其中有电梯速度设置和当前速度显示。在技术层面,速度是移动之间的刻延迟(1 秒 = 20 刻),因此无法在某些范围内设置精确速度。将刻延迟转换为每秒方块数的公式:20/(延迟)

恢复了旧版磁石配方

现在合成中使用下界合金锭,与 1.21.4 及更早版本一样。

这是因为磁石被用作绞盘,我决定恢复更昂贵的合成配方。

🧰 工具

通用使用信息

选择器用于设置选择区域的点。这些点通过右键点击放置。第二个点的颜色更深。

按钮和停止点设置器通过右键点击选择一个方块。按钮和门设置器需要按住疾跑键并右键点击带有停止点设置的方块来复制楼层 ID。

任何点都可以通过按住潜行键并右键点击方块来移除。

电梯选择器

放置两个全局绿色点,选择电梯轿厢。点有高度限制:不能到达基岩,也不能接近世界顶部。

绳索选择器

放置两个紫色点,选择电梯绳索。每根绳索在其整个长度上必须由同一方块组成。第一个点固定在电梯顶部,第二个点固定在绞盘(磁石)上。我注意到不支持方块实体。

楼层选择按钮

放置一个黄色点,仅限电梯轿厢内部。修改告示牌,使正面可点击。

停止点设置器

放置蓝色点,每个 Y 坐标一个。对于其他工具,需要从这些方块复制楼层 ID。

呼叫按钮

放置金色点,需要复制楼层 ID。修改告示牌,使正面可点击。

门选择器

有两种门放置类型——用于电梯和用于楼层。

对于电梯门,在轿厢内放置两个红色点,选择门。

对于楼层门,需要复制楼层 ID,然后放置两个灰色点,选择门。

我注意到不支持方块实体。

🏗️ 电梯元素

电梯轿厢

轿厢通过移动方块来移动。

  • 向上移动时,轿厢内和顶部的实体会被向上传送;
  • 向下移动时,轿厢内和轿厢下方的实体会被向下传送。

如果移动方向上检测到方块,电梯将停止并通知电梯内的玩家。

绳索

当电梯移动时,会检查电梯顶部绳索方块与保存的方块是否正确。如果检测到不完整或错误的绳索方块,电梯将停止并告知错误。

门

任何门在打开之前都会检查是否存在方块实体,然后它们才会打开。关闭时,会检查门的位置是否有任何方块或生物。

门将在以下情况下打开:

  • 电梯到达楼层;
  • 如果电梯已在门关闭的楼层,玩家按下了电梯呼叫按钮;
  • 电梯内的玩家按下了开门按钮。

门将在 15 秒后尝试关闭,但如果门无法关闭,将在 3 秒后重复关闭。

按钮

电梯呼叫按钮向未移动的电梯发送带有楼层 ID 和电梯 ID 的信号。该值使用以下公式编码:{(eID * 1000) + (height + 400)}0
如果你在告示牌第一行指定一个数字,它将被视为楼层编号,然后你可以在其他三行写任意文本。否则,告示牌的内容将被替换为带有楼层高度的文本。

楼层选择按钮仅存储电梯 ID。当玩家点击它时,会向玩家显示楼层列表和开门按钮。门只能在电梯未移动时打开。楼层按钮的值使用与呼叫按钮相同的公式计算,但末尾数字为 1:{(eID * 1000) + (height + 400)}1。如果玩家在电梯轿厢外按下楼层按钮,电梯将不会收到信号。

🧩 附加组件与技术信息

实体

默认情况下,电梯只能移动所有原版生物实体,但这是可配置的。

  • 将 ignore.customizable_elevators 标签添加到生物实体上,电梯将忽略它。
  • 对于来自模组的生物实体,你需要将实体 ID 添加到 #customizable_elevators:living entity_type 标签中。
  • 对于非生物实体,你需要将实体 ID 添加到 #customizable_elevators:not_living entity_type 标签中,并添加 notice.customizable_elevators 生物标签。

点的高度限制

如果你需要在你的维度中支持电梯,你需要在你的数据包中添加 #customizable_elevators:dimension_for_y_check 函数标签,并使用你的函数来处理你的维度。

示例:

# 来自 dimension_for_y_check 标签的函数
execute if dimension <dimension_id> run return run function <custom_path>/dimension_for_elevator/<dimension>

# <dimension> 函数
## #y main_score 计分板存储点的 Y 坐标
## 不要更改这些函数,它们包含现成的错误消息。如果需要,请创建你自己的函数,不要忘记 `return fail` 命令

execute if score #y main_score matches ..-60 run return run function customizable_elevators:zzz/block/elevator_station/selector/raycast/dimension/below
execute if score #y main_score matches 317.. run return run function customizable_elevators:zzz/block/elevator_station/selector/raycast/dimension/above
return 1

如果你需要更改原版维度的限制,你还需要添加 #customizable_elevators:redefining_validation_for_vanilla_dimension 函数标签,并在其中使用你的函数,使用命令: data modify storage midwut:main dimension append value {id:"<dimension_id>"}

🔗 链接

你可以在 PMC 页面留下评论!

PMC

数据包制作者的俄语 Discord 服务器 / Русский дискорд сервер датапакеров

如果你是一名数据包制作者,正在寻找合适的帮助、有用的资源以及分享项目的机会,那么请加入 СвинСоюз: Датапаки! 这是一个从 ZeroCaty 最初废弃的服务器 "СвинСоюз" 分支出来的服务器。我们现在与它没有任何关系。

SvinSoyuz