khalil-Scrap_Clean icon

Scrap Clean

Press F to enter clean mode and remove dropped items or player-placed objects. Highlight the target you aim at, or sweep a ground-hugging dashed circle to clear everything inside it.

By khalil

CHANGELOG

Changelog

1.1.0

修复

  • 多人联机下,自己扔出的蘑菇类放置物无法清理(踏板菇 / 弹跳菇 / 满血蘑菇 / 云雾菇)。 这些落地实体是在持有者客户端创建的,而所有权信息可能被 PUN 的缓存判错, 导致模组误以为"东西是别人的",只发出一句请求后就再无下文(界面一直显示"已请求清理")。 现在模组会正确识别"这台机器就是它的创建者/所有者",直接就地清理。
  • 清理对方物品时的兜底:如果对方客户端没有安装本模组、或迟迟没有响应, 模组会在一小段等待后由本机接管所有权并完成清理,不再无限期停留在"已请求清理"。 这条兜底只在 Network/AllowOwnershipTakeover 开启时生效。
  • 绳索更换所有者后可能残留:删除绳索锚点时,若绳索视图的所有权缓存同样出错, 会留下一根悬空的绳子。现在锚点与绳索使用同一套所有权判定。
  • 清理失败时不再误报成功:之前若所有权获取失败,界面仍会显示"已清理", 现在会如实提示失败原因。

改进

  • 清理日志补充了 Owner / Creator / 本地玩家编号,便于排查联机问题。

1.0.0

首发版本。

功能

  • F 进入 / 退出清理模式。
  • 单选清理:按视线挑选目标 —— 准星指向的掉落物或放置物会被高亮,左键清理它。 判定顺序为「距离上限 → 在视野锥内 → 无地形遮挡 → 与准星夹角最小」, 因此不在玩家眼中的东西不会被选中。距离上限默认 100 米。
  • 范围清理:视线中出现一个贴合表面的虚线圆形(默认半径 3 米), 圆心是准星命中的那个点,圆环沿命中面的法线展开并逐点吸附到真实几何体上: 地面贴地、墙面贴墙、斜坡沿坡面起伏。圆内的所有掉落物与放置物会被一起清理。
  • 滚轮在两种模式之间切换(无界,每滚一次换一个模式)。
  • 进入模式、退出模式、切换模式都有明确的文字提示与上下滚动动画,文字停留 2 秒后自行消失。
  • 常驻信息条实时显示当前会清理哪个目标。

目标识别

  • 掉落物:任何被丢在地上的道具(Item.itemState == Ground)。 手里拿的、背包里的永远不会被清理。
  • 放置物:玩家使用道具后留在地图上的物体 —— 绳索锚点与其绳索、岩钉(含劣质岩钉)、 检查点旗帜、便携炉、侦察兵大炮、踏板菇 / 弹跳菇 / 满血蘑菇 / 云真菌的已放置形态、 魔法豆藤蔓、锁链与丛林藤蔓、系在玩家身上的气球。
  • 世界生成的地形、岩石、建筑、木质平台等固定景物绝不会被清理

高亮

  • 复用游戏原生的 _Interactable 材质属性(与游戏自身的悬停高亮同一条路径), 零额外渲染开销,视觉风格与原生一致。

多人联机

清理分三条路径,全部依据 PUN 的实际规则实现:

  1. 自己的东西 → 直接删除。
  2. 别人的掉落物 → 物品是 OwnershipOption.Takeover,抢过所有权后删除。
  3. 别人的放置物 → PUN 禁止转移这类物体的所有权, 模组会向该物体的所有者客户端发送一个自定义事件(事件码 190),由对方代为删除。 对端也需要安装本模组,否则该物体保留不动(安全失败,绝不越权破坏别人的世界)。

输入

  • 清理模式只接管鼠标左键滚轮;移动、跳跃、交互、语音全部保持正常。
  • 左键的"松开"事件会保留,因为游戏自身的绳索、攀爬、长按施法状态机用它做收尾。

配置

配置文件:BepInEx/config/com.zhuanban.peak.scrapclean.cfg

默认 说明
General/ToggleKey F 开关快捷键
General/SingleRange 100 单选清理的视线判定距离上限(米),范围 5~300
General/AreaRadius 3 范围清理圆半径(米)
Filter/CleanDroppedItems true 是否清理掉落物
Filter/CleanPlacedObjects true 是否清理放置物
Network/AllowOwnershipTakeover true 是否允许跨玩家清理
UI/ToastSeconds 2 文字提示停留时间(秒)
Debug/VerboseLogs false 详细诊断日志(排查问题时才打开)

已知边界

  • 固定所有权的放置物依赖对端响应:对端没装模组时清不掉。这是 PUN 的硬限制,模组不会绕过它。
  • 范围清理受视线影响:准星没打到任何表面时不会显示圆环。
  • 高亮覆盖面:极少数材质没有 _Interactable 属性,对这些目标高亮不可见,但清理功能正常。
  • 活体生物:蝎子 / 青蛙等身上带 MobItem : Item,走动时状态就是 Ground, 因此也会被当作掉落物清理。