本篇教程由作者设定未经允许禁止转载。
前言
最初我添加 Lightmans Currency (以下简称LC)是为了让自己的自组整合包实现类似机械动力官方包的、基于热力系列货币的系统商店,使之能够实现单机玩家或少数玩家开黑联机时玩家与系统之间的贸易(最好还有自动化!),比如售卖自己生产的农作物或击杀怪物来赚钱,并利用赚到的钱向系统购买一些难获取的资源或不可再生资源。然而下载了模组之后才发现LC只添加了一个拥有各种机制和物品的壳子(虽然这个壳子极其强大且优秀),且由于模组热度有限,中文社区暂时缺少这一方面的教程。经过我个人长时间的摸索、翻阅模组 Github Wiki 以及在 Curseforge 与模组原作者进行简短交流,现整理了一篇关于利用LC搭建系统商店的系统性保姆级教程。
观前提醒:
①限于篇幅及作者本人对模组了解程度,本教程暂不讨论玩家间交易商店或大型服务器经济系统的搭建方法。
②教程内容基于1.18.2 forge,模组版本 2.1.2.2 。若模组更新导致教程内容与实际不符,欢迎在评论区指出!
准备工作
【若你已经有一定的整合包/模组开发经验,可跳过本部分】
关于文本编辑器
在开始一切工作之前,建议你先准备一个合适的文本编辑器。使用记事本不是不行,但它大概率会让你事倍功半。你的时间非常值钱
作者推荐使用VS Code,轻量级、易学习、功能强大、扩展性强,完全能满足本教程需求。你也可以依照个人喜好选择其他的文本编辑器。
关于配置文件
本教程包括一些修改配置文件的操作,因此需要先搞清楚LC配置文件的位置和各自的内容。作者之后会整理完整的配置文件详解,并发布相关教程。本篇教程仅讨论与系统商店相关的修改项目。
所述配置文件均位于游戏版本根目录(.minecraft/versions/游戏版本名称),若你没有进行版本隔离,则它们会位于.minecraft文件夹。
①基本配置文件:/config/lightmanscurrency-common.toml
包含内容:禁用特定设备合成、村民交易修改、怪物掉落和箱子战利品修改等。
②客户端配置文件:/config/lightmanscurrency-client.toml
包含内容:UI、动画和音效调整等。
③默认服务端配置文件:/defaultconfigs/lightmanscurrency-server.toml
包含内容:铸币机制、钱包机制、“金钱修补”附魔调整等等。
默认服务端配置文件会在创建新存档时应用于该存档。
④特定存档服务端配置文件:/saves/存档名/serverconfig/lightmanscurrency-server.toml
包含内容:同③。
可以在这里进行单个存档的配置调整,不影响其他存档和全局配置。
⑤ATM配置文件:/config/lightmanscurrency/ATMData.json
包含内容:ATM界面调整。
⑥银行家交易配置文件:/config/lightmanscurrency/custom_banker_trades.json
包含内容:LC mod 添加的村民“银行家”的默认交易列表。
⑦出纳员交易配置文件:/config/lightmanscurrency/custom_cashier_trades.json
包含内容:LC mod 添加的村民“出纳员”的默认交易列表。
⑧钱币价值配置文件:/config/lightmanscurrency/MasterCoinList.json
包含内容:各种材质货币的上下级关系、互相兑换汇率,及钱币堆/钱币块的价值。
⑨永久交易配置文件:/config/lightmanscurrency/PersistentTraders.json
包含内容:将在本教程最后一部分详述。
LC钱币及经济机制简述
钱币及其获取
LC的钱币共分为铜、铁、金、绿宝石、钻石、下界合金6种材质,默认兑换率为每两级之间1:10兑换。钱币可以通过各种交易、铸币、击杀怪物掉落及箱子战利品等方式获取,大部分获取方式均可通过配置文件修改。
铸币
使用铸币机,默认每1个对应金属锭/宝石可以铸造1枚对应材质的钱币;钱币亦可以反向熔化为对应的材料。
配置文件:服务端配置文件
可配置项目:
canMintCoins = true/false 能否铸造钱币
canMeltCoins = true/false 能否熔化钱币
canMint(Melt)Copper(Iron,Gold......) = true/false 能否铸造/熔化特定材质钱币
教程作者建议禁用铸币/熔币机制或仅开放低级钱币的铸造,发币权应掌握在系统商店手中;允许玩家铸造高级钱币/熔化低级钱币可能导致无法预料的平衡性崩溃。同时建议通过kubejs、crt等方式禁用铸币机合成表,防止玩家误合成一个无用的机器。
怪物掉落
击杀怪物有几率掉落钱币,越高级的怪物能掉落更高级的钱币。
配置文件:基本配置文件
可配置项目:
enableEntityDrops = true/false 怪物能否掉落钱币
enableSpawnerEntityDrops = true/false 刷怪笼生成的怪物能否掉落钱币
allowFakePlayerTrigger = true/false 非玩家攻击击杀怪物能否掉落钱币(如机械动力的机械手)
entityListT1(2,3,4,5,6) = [实体ID] 各个等级的怪物列表,击杀该表中的普通怪物能获得对应及以下等级的少量钱币
bossEntityListT1(2,3,4,5,6) = [实体ID] 各个等级的Boss怪物列表,击杀该表中的Boss怪物能获得对应及以下等级的大量钱币
箱子战利品
打开地牢、沉船、下界要塞等宝箱有几率开出钱币。
配置文件:基本配置文件
可配置项目:
enableChestLoot = true/false 宝箱中能否开出钱币
chestListT1(2,3,4,5,6) = [战利品表ID] 对应等级的货币会出现在相应的战利品表中,如默认情况下将"minecraft:chests/jungle_temple"加入 chestListT3 能使得丛林神庙宝箱中可以开出金币
村民交易
可以将村民的通用货币从绿宝石换成LC的钱币。
配置文件:基本配置文件
可配置项目:
changeVanillaTrades = true 改变原版村民的交易货币,不包括流浪商人
changeModdedTrades = true 改变mod添加的村民的交易货币,如 Chef's Delight 添加的厨师村民
changeWanderingTrades = true 改变流浪商人的交易货币
defaultTraderCoin = 物品ID 默认用于替换绿宝石的货币,如"lightmanscurrency:coin_emerald"代表用LC的绿宝石币替换原版村民交易中的绿宝石
示例:用金币替换默认货币后的渔夫交易
traderOverrides = ["村民ID-货币ID"] 对于特定职业的村民,用另一种货币来替代绿宝石,村民和物品ID之间需要用 "-" 进行连接;如在此表中加入"minecraft:butcher-lightmanscurrency:coin_gold"代表:对于屠夫,使用金币、而不是上一条配置中设置的默认货币来替换绿宝石
(P.S. 更改默认货币可能会导致绿宝石的获取变得意外的困难,如果整合包中有其他需要使用绿宝石的合成表,如储物抽屉的抽屉容量升级(V),建议同时添加其他获得绿宝石的方式。)
钱币的存放和使用
钱币可以存放在玩家背包或不同等级的钱包中(在安装 Curios 的前提下,钱包可以装备于玩家的饰品栏中),也可以存放在玩家或团队的银行账户中。银行账户可以通过ATM进行访问,ATM不仅可以无限量地存放玩家的钱币,也可以在不同材质的货币间进行互相兑换。
钱币可以在交易中使用;在LC自带的交易系统上进行交易时,存放于玩家钱包中的钱币也可以被使用(部分设备还可以直接使用玩家ATM账户内的钱币);但与村民交易时必须先将对应的钱币放入背包内。
搭建系统商店
准备阶段结束,这一部分我们将进入正题。作者建议单独建立一个创造模式超平坦世界来进行搭建系统商店的各种操作以及后续的修改和管理。
利用售货机建立一项交易
首先必须进入LC模组的管理员模式,这可以通过一条指令实现:/lcadmin toggleadmin。进入成功后,聊天栏会弹出“LC管理模式:启用”的消息。再次输入这条指令可以离开管理员模式。
接下来,在地面上放置任意一个售货机,例如大型售货机。(不建议使用盔甲展示橱等限制商品种类的售货机)
右键售货机并打开交易储存界面(左下角箱子图标按钮):
在此可以编辑想要添加的交易。点击任意一个交易选项,进入交易编辑界面:
点击箭头的左边可以调整价格。按住shift点击增减箭头按钮可以一次增减5枚对应钱币的价格,按住ctrl则可以一次增减10枚。(在其它涉及钱币数量增减的界面中也可以采用相同操作)
用相应物品点击箭头的右边可以放置交易的物品,物品的数量需要事先在背包中分好。每项交易支持同时交易2种物品。
名字框可以改变交易的显示名称,但不会改变买入手中的商品的名称。
交易类型共有出售、交换(以物易物)、购买(收购)3种。
点击右上角的书图标按钮可以改变商品的交易规则,例如添加折扣、免费样品、价格波动、限购次数等。举个例子,当你向玩家售卖一把功能强大的神镐时,鉴于平衡性考虑,可以将限购数量设为1,使每名玩家最多买到1把神镐。
将普通交易转化为系统交易(永久交易)
如图所示,我们已经建立好了一个购买末影珍珠和一个收购小麦的交易。但此时交易界面可能会显示“无存货”和“买不起”,因为此时的两项交易还是默认的玩家间交易,需要玩家填充库存才能正常运作,而且仅能在这个世界的这台交易机上进行。
返回交易存储界面,点击左侧从上向下的第四个齿轮图标按钮,进入交易设置界面:
红框:该项交易组的名称,它包含这台售货机内的所有已设定交易。输入名称后需要点击“重命名”键以完成交易组的命名。
黄框:该项交易组显示的所有者名称。你也可以将之改成更有沉浸感的名字,如将售卖农产品的交易组所有者改为“某某村庄”。
蓝框:该项交易组的ID。若留空,则系统会随机生成一串ID。作者十分建议养成一个自己设定标签的好习惯,以方便后期交易增多之后的管理,以及通过游戏外文本编辑器的方式进行交易编辑。
灰框:("C"字样)将该交易组设定为创造交易,即库存无限的交易。必须将这一项打开以创建系统商店形式的交易。其左侧的“+”“-”按钮可以增加或减少本台售货机的最大交易数,以支持添加超过12项交易的交易组。
绿框:("P"字样)将该交易组存储为永久交易,即我们上文所述的系统商店中的交易。点击这个按钮后,聊天框会弹出“添加了ID为xx的通用交易”,代表添加成功。
(P.S. 模组本身对于“persistent trade”的汉化不一致;上文所述的“永久交易”“通用交易”和作者为方便各位理解而采用的“系统商店形式的交易”及类似说法指的是同一样东西;若造成理解上的混乱,请各位读者见谅!)
系统商店的使用
作者十分建议整合包开发者利用 FTBQuests 等工具来指导玩家如何使用系统商店。
交易终端
对于模组玩家而言,可以使用交易终端与系统商店进行交易。放置一个交易终端并右击:
如图所示,我们之前创建的“示例交易1”已经出现在交易列表中,这一列表对于所有玩家都是开放的,玩家可以在此处与系统商店进行我们之前所设定过的交易。
P.S. 最上方的“拍卖所”项默认显示(在你的汉化版本中这可能会显示成“种田交易中心”种田梨沙:?),作者暂时没有发现怎么去掉这一项,不过好在它无伤大雅。
自动化交易
对于某些需要持续进行/大批量的交易(如连接在自动化农场上的农产品收购交易机),玩家可以使用商品交易界面终端进行自动化的交易。打开商品交易界面终端,并点击上方第三个交易终端图标的按钮“选择交易者”,选中我们之前创建的“示例交易1”:
之后选择新增的第四个金币/铁币交易图标的按钮“选择交易”,选中想要进行的交易,例如选择以1绿宝石币5金币购买5末影珍珠的交易:
商品交易界面终端可以直接使用玩家ATM账户内的钱币及机器本身库存栏中的物品进行交易,并会在状态界面显示玩家账户余额:
第二个箱子图标的按钮可以打开机器的库存栏,并可以配置哪一面进行物品和钱币的输入/输出。机器的库存栏只能在选择收购和交换类交易时放入对应的物品,不能放入钱币。
右上角显示为禁止图标的按钮可以调整机器是否受到红石信号影响或常开/常关。显示为对钩图标的按钮可以调整在玩家(机器的放置者和状态界面显示的账户所有者)在线时才进行交易或是无论何时都进行交易。
满足所有工作条件,且玩家账户余额充足时(对于收购/交换类交易,则是机器库存中存有足量的对应物品时),商品交易界面终端会每秒进行一次交易,并将库存槽内的物品通过配置的输出面进行输出(需要输出面有漏斗等可以进行主动物品传输的方块)。
在游戏外编辑系统商店交易
之前在游戏内所添加的所有交易均会存储在 "游戏版本根目录/config/lightmanscurrency/PersistentTraders.json" 中。
例如,我们之前所创建的“示例交易1”在该JSON文件中的格式是这样的:
{
"Traders": [
{
"Type": "lightmanscurrency:item_trader",
"ID": "example_trade_1",
"Name": "示例交易1",
"OwnerName": "系统商店",
"Trades": [
{
"TradeType": "SALE",
"SellItem": {
"ID": "minecraft:ender_pearl",
"Count": 5
},
"Price": {
"Value": [
{
"Coin": "lightmanscurrency:coin_emerald",
"Amount": 1
},
{
"Coin": "lightmanscurrency:coin_gold",
"Amount": 5
}
]
}
},
{
"TradeType": "PURCHASE",
"SellItem": {
"ID": "minecraft:wheat",
"Count": 50
},
"Price": {
"Value": [
{
"Coin": "lightmanscurrency:coin_iron",
"Amount": 2
},
{
"Coin": "lightmanscurrency:coin_copper",
"Amount": 2
}
]
}
}
]
}
],
"Auctions": []
}
对于文件中的每一行代表什么,简单观察便可得知,作者不再赘述。以此方法可以更加方便且自由地添加新的永久交易,以及对已有的永久交易进行编辑和管理。
本教程到这里结束,希望各位读者都能成功创建出一个运行良好的系统商店!