You are viewing a potentially older version of this package. View all versions.
LLL_112-DSPTrashBuilding-1.2.3 icon

DSPTrashBuilding

A standalone placeable trash can building. Sorters feed it and everything inserted is destroyed. / 独立建筑垃圾桶:用分拣器送入的物品会被立即销毁。

By LLL_112
Date uploaded 6 days ago
Version 1.2.3
Download link LLL_112-DSPTrashBuilding-1.2.3.zip
Downloads 72
Dependency string LLL_112-DSPTrashBuilding-1.2.3

This mod requires the following mods to function

xiaoye97-BepInEx-5.4.17 icon
xiaoye97-BepInEx

BepInEx5.4.17 mod plugin framework, Mod框架

Preferred version: 5.4.17
xiaoye97-LDBTool-3.0.3 icon
xiaoye97-LDBTool

Library that allows mods to add and edit Proto data. Also allows you to see Proto data, config ID's of mod Protos and change localized strings

Preferred version: 3.0.3

README

DSP Trash Building / 建筑垃圾桶

一个独立的《戴森球计划》建筑:垃圾桶。 把它放在地上,用分拣器把物品送进去,物品会被立即销毁。

这是独立的新建筑物品,不是把游戏里的储物仓/储液罐改成垃圾桶。 建筑内部使用游戏引擎的储物容器组件来接收分拣器物品,这是引擎允许分拣器输入的唯一途径; 但物品、模型、配方、建造菜单项都是本模组新增的。

功能

  • 新增建筑物品 垃圾桶,可在建造菜单中放置。
  • 配方:4 个铁块 → 1 个垃圾桶,由科技 自动化冶金 解锁; 可在复制器“建筑”页手动制造,也可以在制造台中正常生产。
  • 外观在原版模型基础上做了安全的顶点变形(上窄下宽、整体压矮)和红白相间的工业涂装(白色主色、红色装饰板与警示带), 正面玻璃改为与背面一致的实体外壳,不再和原版蓄电池一模一样。
  • 物品栏 / 背包 / 建造菜单 / 配方中的图标由放置模型实时渲染,与实体外观一致。
  • 12 个分拣器接口,分拣器送入的物品默认全部销毁。
  • 点击建筑打开原版储物箱窗口(可直接拖动),用它配置黑白名单:
    • 中键点击格子选择该格的名单物品,右键清除(与原版箱子设置过滤器一致);
    • 窗口底部的“自动化容量限制”一行改为黑白名单切换:左=黑名单,右=白名单, 旁边的原版按钮也可以点击切换;
    • 名单物品显示在原版格子的筛选图标位置;
    • 配置直接保存在储物组件里,随建筑存档,不需要额外存档模组。
  • 黑白名单语义:
    • 黑名单:销毁名单外的物品,名单内的物品会被分拣器拿住(不销毁)。
    • 白名单:只销毁名单内的物品,名单外的物品会被分拣器拿住。
  • 建造预览(全息模型)正常显示。
  • 可正常存档/读档,可同时放置多个。

重要:如何送入物品

《戴森球计划》的储物类建筑不能直接接传送带,储物仓本身就是靠分拣器进货的。 所以正确用法是:

传送带 ──> 分拣器 ──> 垃圾桶

用分拣器从传送带上取货并放进垃圾桶即可。不要把传送带直接拖到垃圾桶上: 原版引擎不支持储物建筑作为传送带端点,强行添加“传送带接口”会导致传送带建造报错。

安装

  1. 安装 BepInEx 5.4.17 x64。
  2. 安装 LDBTool 3.0.3(Thunderstore:xiaoye97-LDBTool)。
  3. 把 DSPTrashBuilding.dll 放到:
    • 手动安装:<游戏目录>\BepInEx\plugins\DSPTrashBuilding\
    • 整合包:...\profiles\<配置名>\BepInEx\plugins\DSPTrashBuilding\
  4. 启动游戏。建造菜单第 4 类(与储物仓同类)第 4 格可以看到垃圾桶。

卸载

删除 BepInEx\plugins\DSPTrashBuilding\DSPTrashBuilding.dll 即可。 已经放置在地图上的垃圾桶会随存档保留;在没有本模组时读取该存档,相关建筑会变成未知建筑,建议先拆除再卸载。

编译

.\build.ps1 -DspHome "D:\...\Dyson Sphere Program" -Package

需要 .NET Framework 4.8 Developer Pack(或 Visual Studio Build Tools 的 Roslyn 编译器)。 脚本会自动在游戏目录和 Thunderstore/r2modman 配置中查找 BepInEx 与 LDBTool。 打包输出:dist\DSPTrashBuilding-1.2.3.zip。

已知限制

  • 只支持分拣器输入,不支持传送带直接接入(见上文)。
  • 被黑白名单拒绝的物品会让分拣器停住并持有该物品,这是储物建筑机制决定的; 需要放行时请调整名单。
  • 黑白名单最多 20 个物品格(10×2,与原版储物窗口格子一致)。
  • 建筑外观使用运行时变形/换色模型,没有外部 AssetBundle;不影响功能。
  • 多人游戏(Nebula)未测试。

日志

启动后可在 BepInEx\LogOutput.log 中看到:

[DSP Trash Building] Linked recipe 11998 to tech 3 (自动化冶金).
[DSP Trash Building] Prefab ready: storage=True storageSize=10x2 beltPorts=0 sorterSlots=12
[DSP Trash Building] Build bar placement: category 4, slot 4

CHANGELOG

Changelog

1.2.3

  • 实体配色改为 红白相间 的工业面板:
    • 白色主体 + 分散的红色装饰板;
    • 白色面板上加红色警示带,红白相互点缀;
    • 深色面板接缝、亮白色铆钉,接近原版建筑的配色风格;
    • 顶点颜色改为中性色,不再给整体叠加橙色。
  • 背包 / 建造栏 / 配方图标由同一模型实时渲染,颜色同步更新。

1.2.2

  • 修复标注黑白名单物品时 UIStorageGrid._OnUpdate 抛出 IndexOutOfRangeException 的问题。
    • 原因:垃圾桶储物容量是 4×3=12,但原版储物窗口的格子固定为 10 列, 窗口实际生成 10×2=20 个格子;第 13~20 格访问 storage.grids 时越界。
    • 修复:垃圾桶储物改为 10×2=20 格,与窗口格子一一对应; 旧存档中 12 格的垃圾桶在打开窗口时自动无损扩容到 20 格 (原有名单保留)。
    • 黑白名单上限从 12 个物品增加到 20 个。

1.2.1

  • 修复读档时 GPUInstancingManager.Init() 空引用、一直停留在“载入中”的问题。
    • 原因:模型使用了稀疏的高 ID 714,并把 LDB.models.modelArray 强行扩展到 778 项; 读档重建 GameMain 时,GPU instancing 初始化遍历这个稀疏数组会崩溃。
    • 现在模型改用紧凑 ID(本次为 666),不再扩展 / 稀疏化 modelArray。
    • 旧存档实体里保存的 modelIndex = 714 通过兼容别名继续有效, 旧版本放置的垃圾桶不会失效。
  • 其余功能与 1.2.0 相同(科技解锁、原版箱子 UI、80×80 图标)。

1.2.0

  • 配方的解锁条件改为科技 自动化冶金(原为开局解锁)。
  • 修复制造台与复制器“建筑”页里看不到垃圾桶配方的问题:
    • 原配方 GridIndex = 2909 的行号是 8,而配方表只有 8 行(行号 0~7), 两个界面都会直接把这条配方过滤掉且不报错;
    • 现在只在 2xxx 建筑页的行 1~8、列 1~14 内选择空位。
  • 黑白名单 UI 改为直接使用原版储物箱窗口:
    • 窗口可随意拖动,样式、字体、格子、按钮全部与原版一致;
    • 物品选择器由原版逻辑在格子旁弹出,不再与窗口重叠;
    • 中键点击格子设置该格的名单物品,右键清除(与原版箱子设置过滤器一致);
    • 窗口底部的“自动化容量限制”一行改为黑白名单切换(左黑右白), 旁边的原版按钮也可点击切换;
    • 名单物品显示在原版格子的筛选图标位置。
  • 修复背包 / 建造栏 / 配方图标只显示垃圾桶一个角的问题:
    • 游戏的图标图集固定从每张图标纹理的 (0,0) 复制 80×80, 之前生成的 256×256 图标只会被复制左下角一块;
    • 现在改为高分辨率渲染后降采样为 80×80,并按模型投影范围重新取景。
  • 删除自定义黑白名单面板及其自绘 UI 代码。
  • 旧存档兼容:名单仍保存在储物组件的格子 filter 与 bans 字段中; 已研究“自动化冶金”的旧存档会自动补解锁该配方。

1.1.0

  • 恢复配方:4 个铁块 → 1 个垃圾桶,开局解锁,复制器与制造台均可生产。
  • 点击垃圾桶打开箱子风格的黑白名单面板:
    • 4×3 共 12 个格子,左键点击选择物品,右键清除;
    • 底部按钮切换黑名单 / 白名单,格子颜色与提示同步变化。
  • 黑白名单直接保存在储物组件的格子 filter 与 bans 字段中,随建筑存档, 不需要 DSPModSave 等额外存档模组。
  • 过滤在 StorageComponent.AddItem/AddItemFiltered/AddItemFilteredBanOnly/AddCargo 的 Prefix 中处理;被拒绝的物品不写入格子,分拣器会持有并重试。
  • 储物容量改为 4×3(12 格),旧建筑在打开面板时自动扩容。

1.0.0

  • 新增独立建筑物品「垃圾桶」,建造分类 4,配方 4 铁块。
  • 12 个分拣器接口;分拣器送入的物品立即销毁。
  • 建造预览、建造菜单图标、双语名称/描述。
  • 抑制点击建筑时弹出原版储物窗口。
  • 修复:不再伪造传送带接口。储物建筑不能作为传送带端点,伪造接口会导致 PlanetFactory.OnBeltBuilt 空引用报错且传送带无法建造。
  • 修复:运行时预制体内的碰撞体位置保持正确,建造预览与点击选中正常。
  • 修复:PlanetFactory.PrefabDescByModelIndex 是在 LDBTool 追加本模组模型之前 建立的静态缓存,导致索引 714 为 null。在垃圾桶附近建造传送带时, OnBeltBuilt 遍历附近实体并读取该缓存,触发空引用。现在会在注册后补全缓存项。
  • 物品/配方图标改为使用放置模型(视觉 donor)的原版图标, 背包、物品栏、建造菜单和手动制造界面的图标与放置出来的实体一致。
  • 外观:对原版 LOD 网格做安全顶点变形(上窄下宽、整体压矮 10%), 使用橙色金属面板贴图重新上色,正面玻璃材质替换为与背面一致的实体外壳。 保持原有子网格/材质/LOD 结构,避免再次触发 GPU instancing 崩溃。
  • 图标改为从变形后的实际模型实时渲染,颜色/形状与放置实体一致。
  • 移除 RecipeProto:物品不再出现在制造面板和制造台中,也没有手动制造配方。
  • 已知限制:储物类建筑不能直接接传送带,必须用分拣器送入。
  • 已知限制:垃圾桶没有配方,需要沙盒物品列表、存档或其他方式获得。