禁用维度

禁用维度

一个难以破坏、抗悲伤的解决方案,用于阻止玩家进入下界、末地以及任何进一步的自定义维度,并可选地按维度设置条件。

尺寸

禁用维度

➜ 此模组的数据包版本可在此处找到

一个难以破坏、防干扰的解决方案,用于阻止玩家进入下界、末地以及任何其他自定义维度,并支持可选的按维度条件。

通过拦截所有已知的维度进入方式并立即将玩家传送回来,从而允许你禁用维度。每个维度都可以单独设置 enabled 或 disabled,并可通过可选条件覆盖该状态。

非常适合原版或模组多人服务器,当你希望禁用更多维度以防止玩家过快地推进游戏进度时。

为什么使用这个数据包/模组?

  1. 唯一的完整解决方案:目前没有其他数据包能够针对当前 Minecraft 版本禁用下界、末地以及其他自定义维度,并支持可选的按维度条件。所有旧方案要么过时、无法使用,要么功能不够丰富。

  2. 全面覆盖:适用于所有情况。适用于所有游戏模式的玩家、传送指令、末影珍珠、矿车等。玩家可以进入传送门或被传送,但会立即被传送回来。从下界返回其进入点(如果失败则返回世界出生点),从末地返回其重生点或世界出生点。少数需要手动清理的场景请参阅边界情况。

  3. 有意为之的原版奖励:尝试切换维度的玩家仍会获得原版的“进入维度”进度(下界或末地)。这是有意为之,作为他们尝试的小小奖励。通过查看他们的成就即可知道谁尝试过。别担心,他们会安全地被传送回来!

  4. 沉浸式反馈:传送回来时,玩家会看到一条简短的动作栏消息、听到一个微妙的音效提示并受到缓慢效果影响,使体验清晰且响应迅速,同时不显得突兀。

  5. 灵活且兼容:既可作为全局模组,也可作为特定世界的数据包使用,内置语言支持,并可直接兼容原版、模组及自定义维度设置。

  6. 服务器就绪:设计可靠、防干扰且完全被动,无需基于 tick 的检查即可运行,没有额外开销。非常适合公共或半公共多人服务器。

  7. 动态配置:可通过游戏内配置面板实时调整,无需重新加载或重启。

简而言之:一种稳定、轻量级的方式来阻止不必要的维度旅行,开箱即用。

安装

将数据包/模组添加到你的世界或服务器后,你应该可以打开关于面板,该面板可以完全用鼠标操作:

/function disable_dimensions:about

about_panel

语言支持

支持的语言提供翻译文本。这主要面向服务器管理员,因为展示给玩家的可配置消息反正也可以自定义。

  • 单人游戏中的模组:自动包含并开箱即用。
  • 数据包或服务器设置:翻译在客户端。对于仅使用数据包的专用服务器,管理员需要在其客户端上安装模组,或安装单独的资源包才能看到翻译后的 UI 文本。

如需添加新翻译,请参阅此 README。

配置

通过以下命令打开配置面板:

/function disable_dimensions:config

config_panel

在这里,你可以:

  • 切换每个维度的 enabled / disabled 状态
  • 编辑返回消息及其颜色
  • 添加和移除条件,更多信息请参阅条件
  • 添加自定义维度条目,指南请参阅自定义维度
  • 移除维度条目
  • 将维度条目重置为默认值
  • 设置世界出生点

存在默认的世界出生点,但你应该在生产使用前站在期望位置并点击 Replace 来设置一次。

条件

条件为真时可以覆盖当前设置的状态。借助它们,你可以在特定时间后、特定游戏模式下等情况下部分启用/禁用维度旅行。

每个条件需要:

  • name:条件的唯一名称。
  • type:决定值被检查的内容。
    • advancement:检查玩家的进度。值为进度 ID。
    • day:检查游戏内天数。值为确切的天数。
    • gamemode:检查玩家当前的游戏模式。值可以是 survival、creative、adventure 或 spectator。
    • gametime:检查世界运行了多长时间。值以 tick 为单位,所以天数的计算公式类似 day_count * 24 * 60 * 60 * 20。此时间仅在世界运行时推进,因此服务器停机时间会影响准确性。
    • item:检查玩家背包中的物品。值为物品 ID 以及可选的物品组件过滤器,例如 minecraft:diamond[count=64]。
    • score:检查玩家的计分板分数。值使用格式 objective_name=score_value,例如 nether_entries=5。
    • tag:检查玩家的标签。你可以给玩家自定义标签,例如 enter_nether。
    • team:检查玩家的队伍。值为队伍名称,例如 red_team。
  • value:要检查的具体值。其格式取决于所选类型。
  • disabled:条件生效时覆盖当前状态的禁用值。

如果你有多个条件,只需其中一个为真即可覆盖当前状态。

避免可能相互抵消的条件,例如两个条件都适用于当前玩家,而一个启用旅行,另一个禁用它。这可能导致意外行为。

以下是 minecraft:the_nether 的三个条件示例:

三天后启用

/function disable_dimensions:config/dimension/condition/add {id:"minecraft:the_nether",name:"3d Enable",type:"gametime",value:"5184000", disabled:"false"}

为创造模式启用

/function disable_dimensions:config/dimension/condition/add {id:"minecraft:the_nether",name:"Allow Creative",type:"gamemode",value:"creative", disabled:"false"}

7 个游戏日后禁用

/function disable_dimensions:config/dimension/condition/add {id:"minecraft:the_nether",name:"7d Disable",type:"day",value:"7", disabled:"true"}

自定义维度

要阻止自定义维度,请通过配置面板添加新条目。

每个条目需要:

  • name:条目的显示名称。用于配置面板中的显示,不应为空。
  • id:游戏内维度标识符,需要与自定义维度匹配。
  • type:决定玩家将被传送回的方式和位置。
    • nether_entered_pos:将玩家传送到其最后进入下界的位置。仅适用于下界。
    • respawn:将玩家传送到其重生点,如果没有则传送到世界出生点。适用于末地和其他自定义维度。
  • message_color:玩家返回时显示的消息颜色,使用有效的文本组件颜色。
  • message_text:玩家返回时显示的消息文本。

以下是添加自定义维度的两个示例:

天境

/function disable_dimensions:config/dimension/add {name: "The Aether", id: "aether:the_aether", type: "respawn", message_color: "aqua", message_text:"一股来自天堂的光辉力量阻止了你上升..."}

ATM10 - 彼岸

/function disable_dimensions:config/dimension/add {name: "The Other", id: "allthemodium:the_other", type: "respawn", message_color: "dark_purple", message_text:"来自彼岸的神秘力量阻止你进入..."}

仅服务器

配置面板只有在你物理登录到服务器并拥有 op 权限时才能使用。

要配置数据包/模组,你可以直接在服务器终端中使用配置面板使用的配置命令,如下所示:

  • 维度
    • 添加条目:function disable_dimensions:config/dimension/add {name: "", id: "", type: "", message_color: "", message_text:""}
    • 启用:function disable_dimensions:config/dimension/enable {id: ""}
    • 禁用:function disable_dimensions:config/dimension/disable {id: ""}
    • 编辑消息:function disable_dimensions:config/dimension/message {id: "", message_color: "", message_text:""}
    • 移除条目:function disable_dimensions:config/dimension/remove {id: ""}
    • 重置条目:function disable_dimensions:config/dimension/reset
  • 条件
    • 添加:function disable_dimensions:config/dimension/condition/add {id:"",name:"",type:"",value:"", disabled:"false"}
    • 启用:function disable_dimensions:config/dimension/condition/enable {id:"", name:""}
    • 禁用:function disable_dimensions:config/dimension/condition/disable {id:"", name:""}
    • 编辑:function disable_dimensions:config/dimension/condition/edit {id:"", name:"", type:"", value:""}"
    • 移除:function disable_dimensions:config/dimension/condition/remove {id:"", name:""}
  • 世界出生点:
    • 设置:不可能,因为需要物理存在于目标位置

id 是游戏中的维度标识符。对于下界是 {id: "minecraft:the_nether"},对于末地是 {id: "minecraft:the_end"}。

边界情况

此数据包/模组有意采用事件驱动,极少数转换情况需要手动清理或导致与预期不同的行为:

  1. 在被禁用维度中重生:如果通过重生锚或 spawnpoint 命令在某个稍后被禁用的维度中设置了重生点,玩家将继续在该处重生,直到重生点被清除或重置。

  2. 禁用时已在维度内:当维度被禁用时,已经在下界、末地或自定义维度中的玩家将留在那里,直到他们切换维度。如果需要,请将他们传送出来。

  3. 自定义维度重生限制:像天境这样的自定义维度可能会添加新的重生机制,但这些不受支持,因为它们依赖于自定义维度或方块。

贡献与问题

欢迎贡献:

  • 错误报告
  • 功能请求
  • 拉取请求

请在 GitHub 上提交 issue 或 PR。

许可证

此项目基于 LGPLv3 许可证 授权。详情请参阅 LICENSE。