
机械动力:蓝图补丁
修复了机械动力模组中原理图物品的一个错误。
本模组已停止维护,不再提供更新或支持。请访问 https://modrinth.com/mod/createschematicchecker 寻找类似模组。
概述
本模组修复了 Minecraft 1.21+ 中 Create 模组的一个严重的设计图(Schematic)物品漏洞。请注意:在服务器上首次使用本模组时(模组版本≥1.1),请执行命令 /schematic-config reload 来初始化模组配置。
原始问题
Create 模组的设计图可以存储带有非法组件的方块/物品,使玩家能够获得生存模式下无法获取的物品。
修复特性
- 异常检测:实时扫描上传的设计图
- 数据净化:自动移除非法组件/黑名单方块
- 警报记录:当玩家上传异常设计图时输出服务器警告
- 自动归档:备份异常设计图至:
/schematics/anomaly/playername/schematic.nbt
适用于模组版本<1.1.3
- 可配置:通过
schematicsfix-common.toml进行黑名单管理 - 高级配置功能:你可以使用 JSON 在
schematicsfix.jsonl中定义设计图 NBT 检测逻辑。但请注意,此功能仍处于实验阶段。除非你了解自己在做什么,否则不要修改默认的高级配置。
适用于模组版本≥1.1.3
- 可配置:通过
schematicsfix.yaml自由定义 NBT 过滤规则
管理员优势
- 实时漏洞拦截
- 自动证据保留
- 可自定义的过滤规则
- 合法上传零人工审核
配置文件格式(模组版本≥1.1.3)
配置文件位置:config/schematicsfix.yaml
基本结构:
version: "1.0"
rules:
- name: "rule_name"
target_path: "target_path"
conditions:
- condition_list
cleanup_actions:
- cleanup_action_list
规则字段:
- name:规则的唯一标识符,用于日志记录和命令显示
- target_path:在 NBT 数据中搜索的目标路径,支持通配符
- conditions:条件列表,必须全部满足才能触发清理
- cleanup_actions:条件满足时执行的清理操作列表
路径语法:
- 普通路径:使用点分隔,例如 "blocks.nbt.id"
- 通配符:使用 [* ] 匹配所有数组元素 示例:"blocks[* ].nbt" 匹配所有 blocks 数组中的 nbt 字段 示例:"messages[* ]" 匹配 messages 数组中的所有元素
- 特定索引:使用 [数字] 匹配特定数组索引 示例:"messages[0]" 匹配 messages 数组中的第一个元素
条件类型:
field_equals - 字段值等于
type: "field_equals"
path: "field_path"
value: expected_value
field_not_equals - 字段值不等于
type: "field_not_equals"
path: "field_path"
value: expected_value
field_exists - 字段存在
type: "field_exists"
path: "field_path"
string_contains - 字符串包含
type: "string_contains"
path: "field_path"
value: "string_to_find"
清理操作类型:
conditional_remove - 条件移除
type: "conditional_remove"
target_path: "target_field_path"
condition: removal_condition (可选)
remove_strategy: "field_only"(仅移除字段值)
path_remove - 路径移除
type: "path_remove"
target_path: "target_path"
remove_strategy: "entire_object"(移除整个对象)
nested_string_remove - 嵌套字符串清理
type: "nested_string_remove"
target_path: "target_path"
condition: trigger_condition (可选)
remove_pattern: "regex_pattern"
remove_strategy: "regex_replace"
完整示例:
示例 1:清理阀门手柄的特定字段 规则名称:valve_handle_capacity_cleanup 目标路径:blocks[* ].nbt 条件:id 字段等于 "create:valve_handle" 操作1:如果 Network.Capacity 不等于 256.0,移除该字段 操作2:如果 Speed 不等于 32.0,移除该字段
示例 2:清理剪贴板的容器数据 规则名称:clipboard_container_cleanup 目标路径:blocks[* ].nbt 条件:id 字段等于 "create:clipboard" 操作:移除 Item.components.minecraft:container 路径
示例 3:清理告示牌的点击事件 规则名称:sign_clickevent_cleanup 目标路径:blocks[* ].nbt 条件:id 字段等于 "minecraft:sign" 操作:在 front_text.messages[*] 中搜索包含 "clickEvent" 的字符串, 使用正则表达式移除 clickEvent 对象
配置示例代码:
version: "1.0"
rules:
- name: "valve_handle_capacity_cleanup"
target_path: "blocks[*].nbt"
conditions:
- type: "field_equals"
path: "id"
value: "create:valve_handle"
cleanup_actions:
- type: "conditional_remove"
target_path: "Network.Capacity"
condition:
type: "field_not_equals"
path: "Network.Capacity"
value: 256.0
remove_strategy: "field_only"
- type: "conditional_remove"
target_path: "Speed"
condition:
type: "field_not_equals"
path: "Speed"
value: 32.0
remove_strategy: "field_only"
- name: "clipboard_container_cleanup"
target_path: "blocks[*].nbt"
conditions:
- type: "field_equals"
path: "id"
value: "create:clipboard"
cleanup_actions:
- type: "path_remove"
target_path: "Item.components.minecraft:container"
remove_strategy: "entire_object"
- name: "sign_clickevent_cleanup"
target_path: "blocks[*].nbt"
conditions:
- type: "field_equals"
path: "id"
value: "minecraft:sign"
cleanup_actions:
- type: "nested_string_remove"
target_path: "front_text.messages[*]"
condition:
type: "string_contains"
value: "clickEvent"
remove_pattern: "\"clickEvent\":\\s*\\{[^}]*\\}"
remove_strategy: "regex_replace"
重要注意事项:
- 修改配置后使用
/schematic-config reload重新加载配置 - 使用
/schematic-config rules查看已加载的规则 - 使用
/schematic-config status检查模组状态 - 所有操作仅支持移除,不具备替换功能
- 正则表达式使用 Java 标准语法
- 确保 YAML 文件使用正确的缩进(使用空格,而非制表符)
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。