CreativeCostsNumismatics

CreativeCostsNumismatics

在生存模式中,你可以访问所有模组添加的创造模式标签页,每件物品都需要消耗创造货币。所有物品供应有限,必须通过航空交付合同来补充库存。

创意成本钱币学

感谢 VoidAnomaly 提供的选择性创造物品栏
需要前置模组「机械动力」!

本模组为物品栏中的每件物品定价,价格由合成配方图推导得出,并在玩家从创造模式菜单取出物品时收取费用。创造模式菜单是一个商店,而非收入来源:它只会从经济体系中扣除金钱。赚取金钱是「配送任务」模组的工作。

一个包含 200 个模组的整合包有数万件物品,没有人会手动为它们定价。但几乎每件物品都是由其他物品制成的,而几十种原材料则值得手动定价。因此,价格由配方图上的求解器计算得出。

 

| 模组                                     | id                             | 版本    | 说明 |
|------------------------------------------|--------------------------------|---------|------|
| 选择性创造物品栏 (Selective Creative Inventory) | `selective_creative_inventory` | 1.0.0 | **必需** — 负责界面 |
| 机械动力:钱币学 (Create: Numismatics) | `numismatics` | 1.0.20 | **必需** — 提供货币 |
| 机械动力 (Create) | `create` | 6.0.10 | **必需** — 用于定价的配方图 |
| 机械动力:航空学 — 配送任务 (Create Aeronautics: Delivery Required) | `createdeliveryrequired` | 1.0.2 | **必需** — 价格锚点与所有玩家收入 |

 

操作

按下 E 键。本模组没有独立的 GUI 或专属按键绑定。「选择性创造物品栏」模组已经为启用的玩家将物品栏按键重定向至创造菜单(使用 /sci enable <玩家名>),而本模组则改变了在该菜单中点击的行为。

操作 效果
左键点击物品 购买 1 个
右键点击物品 购买 shop.bulkBuyCount 个(默认为 8)
Ctrl + 左键点击 购买一整组
Shift + 左键点击 购买一个无限供应源(仅限方块)
中键点击 在聊天栏中打印该物品的市场数据
手持一组物品时点击任何商店槽位或垃圾桶 销毁该组物品。不予退款。

 

物品提示框会显示购买价格和供应量,并带有稀缺性指示器(▲ +42% / ▼ -18% / ■ 平价);在商店内部,提示框还会显示操作提示和你的余额。

指令

指令 权限 效果
/ccn balance 所有人 查看你的余额
/ccn price 所有人 查看手持物品的市场数据
/ccn market 所有人 查看总市值、货架等级、交易记录
/ccn sync 所有人 强制进行完全重新同步(用于调试)
/ccn supply set <数值> 管理员 (2) 设置手持物品的供应量
/ccn supply reset 管理员 (2) 将所有供应量重置为基准值
/ccn reload 管理员 (2) 重新计算价格并重新同步所有玩家
/ccn export 管理员 (2) 将整个解析后的价格表导出到 ccn-prices-export.json
/ccn contract add|remove 管理员 (2) 将手持物品列入配送合同清单
/ccn market add|remove 管理员 (2) 将手持物品列入大宗市场购买清单

设计上不存在出售指令。

方块物品

/ccn blocklist
/ccn blocklist 查看手动屏蔽的物品
/ccn blocklist add 屏蔽手持物品
/ccn blocklist add <物品> 屏蔽指定物品 ID(支持 Tab 补全)
/ccn blocklist remove [<物品>]

新玩家

整合包应无需管理员为每位玩家手动设置即可运行,因此 PlayerOnboarding 会在玩家首次加入时执行两项操作。

创造物品栏权限。「选择性创造物品栏」模组通常通过 /sci enable 为每个玩家单独设置访问权限。它的 CREATIVE_INVENTORY 附件是公开的,因此可以直接设置该标志——仅字段查找过程使用反射,附件类型本身是 NeoForge 的类。如果没有这一步,每位新玩家只会看到普通的生存模式物品栏,而没有商店。

初始资金。向玩家的「钱币学」银行账户发放 4096 斯珀——一枚太阳币——以便他们能够进行交易。仅当玩家的钱包、银行和虚拟余额全部为零时才会发放。全新玩家还没有银行账户,因此 NumismaticsBank.depositToNewAccount 会通过 getOrCreateAccount(UUID, Type.PLAYER) 为其开设一个账户;如果该操作不可用,则会以硬币形式支付,而不是默默丢失。

这两项操作每位玩家仅会执行一次,并记录在世界存档中,这一点的重要性超乎表面所见。资金测试的条件是「你是否身无分文」,如果没有记录,每当有人花光所有钱时都会再次获得资金——这便成了一个完全绕开合同体系的收入来源。而且,如果每次登录都重新授予创造物品栏权限,会悄无声息地覆盖管理员有意执行的 /sci disable 操作。

 

 

服务器拥有最终裁决权。客户端发送「我在此模式下点击了此物品」;服务器决定物品、数量、价格、玩家是否可以购买、是否买得起,以及市场的后续反应。ClientMarket 的存在仅仅是为了让提示框无需网络往返即可显示。

 

 

已知限制

  • 制成品只能通过合同回流。任何不在 raw_materials 清单上且没有任何合同要求的物品,都会单向滑向 market.maxMultiplier。这是设计意图,但这意味着原材料清单是整合包需要配置得最准确的部分。
  • 玩家间交易不会被追踪(双向均不追踪)。
  • 整合包中的其他模组是此设计所不了解的收入来源。该经济体系假定收入来自配送合同,但 bountiful、numismatic_bounties、jackpot、stockmarket 和 trading_floor 都会独立发放奖励,而且村民交易(以及 easy_npc 和 villageroverhaul)既能铸造货币,也能在不经过市场的情况下提供物品。这些在机制上都不会破坏任何东西——只是意味着经济循环存在漏洞,而这个漏洞值得做出决定,而不是成为意外。
  • AlmostUnified 在求解器运行前会重写配方和标签,因此推导出的价格会正确地遵循统一后的配方。它统一掉的物品仍然存在于注册表中并会被定价,这虽无害,但会给 /ccn export 的输出增加噪音。
  • CraftTweaker 和 KubeJS 的配方会被包含在内,因为求解是在 ServerStartedEvent 和每次重载后进行的——换言之,在脚本已重写配方管理器之后。
  • 无限供应源只会被阻止缩小数量,但不会阻止被用作合成材料。ItemStack#consume 是放置方块的路径;直接调用 shrink 的配方仍然会消耗一个物品。
  • 带组件的物品堆按物品 ID 定价。购买附魔书将收取基础物品的价格,并且客户端发送的组件会被照单全收。
  • 发射器和其他非玩家放置无限供应源的行为不会被计费。
  • 商店选项卡内禁用拖拽分配功能。



    未来的更新已在计划中。这个模组还很新!感谢 Fable 5