From b82391c5c99f06f0701d0dc316cd3468781bdec4 Mon Sep 17 00:00:00 2001 From: wenhe <1046926120@qq.com> Date: Wed, 9 Sep 2026 16:06:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BF=E5=8F=B8=20=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Script_NeteaseModousIY5aSF/modMain.py | 1 + .../xiangyemod/shousi/ShousiData.py | 126 +++++++ .../xiangyemod/shousi/__init__.py | 1 + .../shousi/service/ShousiService.py | 341 ++++++++++++++++++ .../xiangyemod/shousi/service/__init__.py | 1 + .../netease_items_res/rtdd_qingcai.json | 11 + tuilun/{ => ok}/乡野食材转化关系.txt | 0 tuilun/全部功能做了什么.txt | 68 ++++ tuilun/全部功能没做什么.txt | 23 ++ tuilun/寿司转化关系.txt | 163 ++++++--- tuilun/汤锅转化关系.txt | 10 +- tuilun/面食.甜食转化关系.txt | 3 +- 12 files changed, 692 insertions(+), 56 deletions(-) create mode 100644 behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/ShousiData.py create mode 100644 behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/__init__.py create mode 100644 behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/ShousiService.py create mode 100644 behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/__init__.py create mode 100644 resource_pack_Are13Lvd/netease_items_res/rtdd_qingcai.json rename tuilun/{ => ok}/乡野食材转化关系.txt (100%) diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/modMain.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/modMain.py index a80ed61..8207cf0 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/modMain.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/modMain.py @@ -17,6 +17,7 @@ from xiangyemod.chuju.service.ChujuTimerService import ChujuTimerService from xiangyemod.ziran.service.NaturalService import NaturalService from xiangyemod.ziran.service.NaturalTimerService import NaturalTimerService from xiangyemod.shicai.service.ShicaiService import ShicaiService +from xiangyemod.shousi.service.ShousiService import ShousiService if not serverApi.IsInServer(): pass diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/ShousiData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/ShousiData.py new file mode 100644 index 0000000..a57e1b3 --- /dev/null +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/ShousiData.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +""" +================================================================================ +寿司(xy_sushi)转化规则数据 +================================================================================ +统一管理"寿司"分类下的转化规则常量。只被 ShousiService 读取, +FeatureDispatcher 通过方块名/物品名集合路由到对应服务。 + +【实现范围(对应 寿司转化关系.txt)】 + 基础组 : 干海带 + 手持饭团右键 -> 干海带(加饭团), 消耗4个饭团 + 加鱼 : 干海带(加饭团) + 手持鱼右键 -> 对应寿司(加鱼), 消耗1个 + 卷制 : 空手右键逐级卷制(四级), 鲑鱼链无"卷_3"标注(成品卷=链尾) + 切块 : 手持菜刀右键卷寿司两次 -> 寿司块(三个) + 手握组 : 手握普通寿司 + 手持鱼右键 -> 手握X寿司(一个); + 手持 手握X寿司(一个) 右键 逐级堆叠到(三个) + 寿司堆组: 手持卷寿司右键 -> 寿司堆(两个) -> 寿司堆(三个); + 空手右键递减取走, 退回卷寿司 + 饭团放置: 手持饭团右键方块表面 -> 在表面上方放置 手握普通寿司 + (txt 第18条 todo, 手握组起点) + +【不实现(txt 明确"后续实现")】 + - 吃: 寿司块递减(5/9/13)、手握递减(14~17) 的空手右键吃, 后续实现 + - 饭团来源: 汤锅熟米饭捏饭团(属 汤锅 分类, 本次不做) +================================================================================ +""" + +# ---- 物品 ---- +RICE_BALL = "rtdd:rice_balls" # 饭团 +CLEAVER_ITEM = "rtdd:cleaver" # 菜刀(刀) + +# ---- 鱼物品(手持原料) ---- +FISH_COD = "minecraft:cod" # 鳕鱼 +FISH_SALMON = "minecraft:salmon" # 鲑鱼 +FISH_TROPICAL = "minecraft:tropical_fish" # 热带鱼 +FISH_SQUID = "rtdd:rawsquidwhiskersr" # 鱿鱼须(游戏中代表鱿鱼) + +# ---- 干海带 ---- +NORI_0 = "rtdd:sushi_0" # 干海带 +NORI_1 = "rtdd:sushi_1" # 干海带(加饭团), 游戏内名"干海带(加米)" + +# ---- 手握普通寿司(手握组起点) ---- +NIGIRI_BASE = "rtdd:nigirisushi" + +# ============================================================================ +# 四组鱼寿司 +# roll : 卷链(加鱼 -> 卷_1 -> 卷_2 -> 卷_3 -> 卷_4/成品卷), 空手右键逐级 +# cubes : 切块得到的 寿司块(三个) +# nigiri1/2/3 : 手握X寿司(一个/两个/三个) +# pile2/3: 寿司堆(X_两个/X_三个) +# ============================================================================ +SUSHI_GROUPS = [ + { + "key": "cod", + "fish": FISH_COD, + "roll": ["rtdd:codsushi_1", "rtdd:codsushi_2", + "rtdd:codsushi_3", "rtdd:codsushi_4", "rtdd:codsushi_5"], + "cubes": "rtdd:codsushi_6", + "nigiri1": "rtdd:nigirisushifishcod", + "nigiri2": "rtdd:nigirisushicod_2", + "nigiri3": "rtdd:nigirisushicod_3", + "pile2": "rtdd:sushipile_2", + "pile3": "rtdd:sushipile_3", + "addTip": "§a加上鳕鱼", + "rollTip": "§a鳕鱼寿司卷制中…", + "cutTip": "§a切出了鳕鱼寿司块(三个)", + "nigiriTip": "§a捏成手握鳕鱼寿司", + "pileTip": "§a堆成寿司堆", + "takeTip": "§a取走一个", + }, + { + "key": "salmon", + "fish": FISH_SALMON, + "roll": ["rtdd:salmonsushi_1", "rtdd:salmonsushi_2", + "rtdd:salmonsushi_3", "rtdd:salmonsushi_4", "rtdd:salmonsushi_5"], + "cubes": "rtdd:salmonsushi_6", + "nigiri1": "rtdd:nigirisushifishsalmon_1", + "nigiri2": "rtdd:nigirisushisalnom_2", + "nigiri3": "rtdd:nigirisushisalnom_3", + "pile2": "rtdd:sushipile_4", + "pile3": "rtdd:sushipile_5", + "addTip": "§a加上鲑鱼", + "rollTip": "§a鲑鱼寿司卷制中…", + "cutTip": "§a切出了鲑鱼寿司块(三个)", + "nigiriTip": "§a捏成手握鲑鱼寿司", + "pileTip": "§a堆成寿司堆", + "takeTip": "§a取走一个", + }, + { + "key": "fish", + "fish": FISH_TROPICAL, + "roll": ["rtdd:fishsushi_1", "rtdd:fishsushi_2", + "rtdd:fishsushi_3", "rtdd:fishsushi_4", "rtdd:fishsushi_5"], + "cubes": "rtdd:fishmonsushi_6", + "nigiri1": "rtdd:nigirisushifish_1", + "nigiri2": "rtdd:nigirisushifish_2", + "nigiri3": "rtdd:nigirisushifish_3", + "pile2": "rtdd:sushipile_0", + "pile3": "rtdd:sushipile_1", + "addTip": "§a加上热带鱼", + "rollTip": "§a热带鱼寿司卷制中…", + "cutTip": "§a切出了热带鱼寿司块(三个)", + "nigiriTip": "§a捏成手握热带鱼寿司", + "pileTip": "§a堆成寿司堆", + "takeTip": "§a取走一个", + }, + { + "key": "squid", + "fish": FISH_SQUID, + "roll": None, "cubes": None, "pile2": None, "pile3": None, + "nigiri1": "rtdd:squid_sushi", + "nigiri2": "rtdd:squidsushi_2", + "nigiri3": "rtdd:squidsushi_3", + "addTip": None, "rollTip": None, "cutTip": None, + "nigiriTip": "§a捏成手握鱿鱼寿司", + "pileTip": None, "takeTip": None, + }, +] + +# 干海带铺饭团消耗数(基础组) +NORI_RICE_CONSUME = 4 + +# 切块需要菜刀右击次数 +CUT_COUNT = 2 + +# 手握堆叠/寿司堆 每次消耗手持数 +STACK_CONSUME = 1 diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/__init__.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/ShousiService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/ShousiService.py new file mode 100644 index 0000000..2febeb8 --- /dev/null +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/ShousiService.py @@ -0,0 +1,341 @@ +# -*- coding: utf-8 -*- +""" +================================================================================ +寿司(xy_sushi)右键转换引擎(服务端) +================================================================================ +处理"寿司"(xy_sushi) 分类下的右键转换: + 基础组(干海带铺饭团)、加鱼、卷制、切块、手握(加鱼/堆叠)、 + 寿司堆(堆叠/递减取走)、饭团放置手握普通寿司(ItemUseOn)。 + +【事件监听在哪?】 + 本类【不】监听任何事件! + 所有事件由 FeatureDispatcher 统一监听, 按 blockOwner/itemUseOnOwner 路由到本类。 + +【本类怎么做】 + handleBlockUse ← 入口:分发器转发右键方块事件 + ├─ _handleCut ← 手持菜刀右键卷寿司两次 -> 寿司块(三个) + └─ handleSwitch ← 通用转换(基础组/加鱼/卷制/手握/寿司堆/递减) + handleItemUseOn ← 入口:手持饭团右键方块表面 -> 放置 手握普通寿司 + (通用工具) getCarriedItem / consumeItem / giveItem / replaceBlock / + checkCooldown +================================================================================ +""" +import time +import mod.server.extraServerApi as serverApi + +# ---- 网易API基础对象 ---- +ServerSystem = serverApi.GetServerSystemCls() # 服务端系统基类 +comp = serverApi.GetEngineCompFactory() # 组件工厂 + +# ---- 继承 BlueFox 框架的系统基类(提供 CreateEngineItemEntity 等方法) ---- +from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem +from ....BlueFoxTools.ToolsConfig import LevelId + +# ---- 只导入寿司自己的数据库 ---- +from ..ShousiData import ( + RICE_BALL, CLEAVER_ITEM, + NORI_0, NORI_1, NIGIRI_BASE, + SUSHI_GROUPS, NORI_RICE_CONSUME, CUT_COUNT, STACK_CONSUME, +) + +# ---- 统一分发器 ---- +from ...service.FeatureDispatcher import FeatureDispatcher + + +class ShousiService(BlueFoxServerSystem): + """ + 寿司·右键转换引擎 + """ + + def __init__(self, namespace, systemName): + super(ShousiService, self).__init__(namespace, systemName) + print "===== ShousiService init =====" + + # ---- (方块, 手持物品) -> 规则: O(1) 查找 ---- + self.recipes = {} + self.featureBlocks = set() + + # 1) 基础组: 干海带 + 手持饭团右键 -> 干海带(加饭团), 消耗4个饭团 + self.recipes[(NORI_0, RICE_BALL)] = { + "target": NORI_1, "consume": NORI_RICE_CONSUME, + "tip": "§a海苔上铺好了饭团", + } + self.featureBlocks.add(NORI_0) + + # 2) 切块映射: 卷寿司(链尾) -> 组(菜刀两次 -> 块三) + self.cutMap = {} + + # 3) 逐组构建规则 + for g in SUSHI_GROUPS: + roll = g.get("roll") + fish = g.get("fish") + + # 卷寿司组(鳕鱼/鲑鱼/热带鱼): 加鱼 -> 卷制 -> 切块 -> 寿司堆 + # (鱿鱼组 roll=None, 只有手握组, 无卷寿司/寿司堆) + if roll: + # 加鱼: 干海带(加饭团) + 手持鱼右键 -> 寿司(加鱼), 消耗1个 + self.recipes[(NORI_1, fish)] = { + "target": roll[0], "consume": 1, "tip": g.get("addTip"), + } + + # 卷制链: 空手右键逐级 + for i in range(len(roll) - 1): + self.recipes[(roll[i], None)] = { + "target": roll[i + 1], "tip": g.get("rollTip"), + } + self.featureBlocks.add(roll[i]) + + # 切块: 卷寿司(链尾) 手持菜刀右键两次 -> 块(三个) + self.cutMap[roll[-1]] = g + self.featureBlocks.add(roll[-1]) + + # 寿司堆: 手持卷寿司右键 -> 堆(两个) -> 堆(三个), 每级消耗1个 + if g.get("pile2"): + self.recipes[(roll[-1], roll[-1])] = { + "target": g["pile2"], "consume": STACK_CONSUME, + "tip": g.get("pileTip"), + } + self.recipes[(g["pile2"], roll[-1])] = { + "target": g["pile3"], "consume": STACK_CONSUME, + "tip": g.get("pileTip"), + } + # 递减: 空手右键, 每级取走一个, 退回卷寿司 + self.recipes[(g["pile3"], None)] = { + "target": g["pile2"], "give": roll[-1], + "tip": g.get("takeTip"), + } + self.recipes[(g["pile2"], None)] = { + "target": roll[-1], "give": roll[-1], + "tip": g.get("takeTip"), + } + self.featureBlocks.add(g["pile2"]) + self.featureBlocks.add(g["pile3"]) + + # 手握加鱼: 手握普通寿司 + 手持鱼右键 -> 手握X寿司(一个), 消耗1个 + self.recipes[(NIGIRI_BASE, fish)] = { + "target": g["nigiri1"], "consume": 1, "tip": g.get("nigiriTip"), + } + + # 手握堆叠: 手持 手握X寿司(一个) 右键 -> (两个) -> (三个), 每级消耗1个 + self.recipes[(g["nigiri1"], g["nigiri1"])] = { + "target": g["nigiri2"], "consume": STACK_CONSUME, + "tip": "§a堆叠成两个", + } + self.recipes[(g["nigiri2"], g["nigiri1"])] = { + "target": g["nigiri3"], "consume": STACK_CONSUME, + "tip": "§a堆叠成三个", + } + self.featureBlocks.add(g["nigiri1"]) + self.featureBlocks.add(g["nigiri2"]) + self.featureBlocks.add(g["nigiri3"]) + + self.featureBlocks.add(NORI_1) + self.featureBlocks.add(NIGIRI_BASE) + + # ---- 切块计数 {(dim,x,y,z): n} ---- + self.cutCounter = {} + + # ---- 右键冷却表 ---- + self.cooldown = {} + + # ---- 注册到统一分发器 ---- + FeatureDispatcher.register(self) + + # ============================================================================ + # 一、给 FeatureDispatcher 的接口 + # ============================================================================ + + def getFeatureBlocks(self): + """返回本功能管辖的所有右键方块名集合""" + return self.featureBlocks + + def getItemUseOnRules(self): + """手持饭团右键方块表面路由(放置手握普通寿司)""" + return {RICE_BALL: True} + + def handleBlockUse(self, args): + """由 FeatureDispatcher 转发的右键方块入口""" + blockName = args.get("blockName") + playerId = args.get("playerId") + x, y, z = args.get("x"), args.get("y"), args.get("z") + pos = (x, y, z) + dim = comp.CreateDimension(playerId).GetEntityDimensionId() + key = (dim, x, y, z) + + itemDict = self.getCarriedItem(playerId) + itemName = itemDict.get("newItemName") if itemDict else None + + # ---- 切块: 手持菜刀右键卷寿司 ---- + if blockName in self.cutMap: + if itemName == CLEAVER_ITEM: + return self._handleCut(blockName, playerId, pos, dim, key) + + # ---- 常规转换(基础组/加鱼/卷制/手握/寿司堆/递减) ---- + recipe = self.findRecipe(blockName, itemDict) + if not recipe: + return False + if not self.checkCooldown(key, 0.5): + return True + self.handleSwitch(recipe, playerId, pos, dim, itemDict) + return True + + def handleItemUseOn(self, args): + """由 FeatureDispatcher 转发的"手持物品右键方块表面"入口(饭团放置): + 手持饭团右键任意非寿司方块表面 -> 在表面上方放置 手握普通寿司。 + 返回 True=处理了; False=不属本功能管(交还其他服务/默认行为)。""" + itemName = args.get("itemName") + if itemName != RICE_BALL: + return False + playerId = args.get("playerId") or args.get("entityId") + x, y, z = args.get("x"), args.get("y"), args.get("z") + dim = comp.CreateDimension(playerId).GetEntityDimensionId() + + # 被点方块若归寿司管辖(干海带/寿司等), 交给方块右键逻辑, 不在此放置 + try: + cur = comp.CreateBlockInfo(LevelId).GetBlockNew((x, y, z), dim) + if not cur or cur.get("name") in self.featureBlocks: + return False + except Exception: + return False + + # 目标格 = 被点方块上方一格, 必须为空 + targetPos = (x, y + 1, z) + try: + cur = comp.CreateBlockInfo(LevelId).GetBlockNew(targetPos, dim) + if cur and cur.get("name") != "minecraft:air": + return False + except Exception: + return False + + # 连点冷却 + key = (dim, targetPos[0], targetPos[1], targetPos[2]) + if not self.checkCooldown(key, 0.5): + return True + + # 消耗饭团 + 放置手握普通寿司 + itemDict = self.getCarriedItem(playerId) + if not itemDict: + return False + self.consumeItem(playerId, itemDict, 1) + self.replaceBlock(targetPos, dim, NIGIRI_BASE, playerId) + comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a摆成手握普通寿司") + return True + + # ============================================================================ + # 二、规则匹配(精确 + 空手 fallback) + # ============================================================================ + + def findRecipe(self, blockName, itemDict): + itemName = itemDict.get("newItemName") if itemDict else None + recipe = self.recipes.get((blockName, itemName)) + if recipe: + return recipe + if not itemName or itemName == "minecraft:air": + return self.recipes.get((blockName, None)) + return None + + # ============================================================================ + # 三、通用转换执行 + # ============================================================================ + + def handleSwitch(self, recipe, playerId, pos, dim, itemDict): + # 消耗物品 + if recipe.get("consume", 0) > 0: + self.consumeItem(playerId, itemDict, recipe["consume"]) + # 替换方块 + if recipe.get("target"): + self.replaceBlock(pos, dim, recipe["target"], playerId) + # 给背包物品(递减取走) + if recipe.get("give"): + self.giveItem(playerId, recipe["give"]) + # 提示 + if recipe.get("tip"): + comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"]) + + # ============================================================================ + # 四、切块(手持菜刀右键卷寿司两次 -> 寿司块(三个)) + # ============================================================================ + + def _handleCut(self, blockName, playerId, pos, dim, key): + if not self.checkCooldown(key, 0.3): + return True + g = self.cutMap[blockName] + n = self.cutCounter.get(key, 0) + 1 + if n >= CUT_COUNT: + self.cutCounter.pop(key, None) + self.replaceBlock(pos, dim, g["cubes"], playerId) + msg = g.get("cutTip") or "§a切好了" + else: + self.cutCounter[key] = n + msg = "§a切寿司中…(%d/%d)" % (n, CUT_COUNT) + comp.CreateMsg(playerId).NotifyOneMessage(playerId, msg) + return True + + # ============================================================================ + # 五、工具方法:获取玩家主手物品 + # ============================================================================ + + def getCarriedItem(self, playerId): + itemComp = comp.CreateItem(playerId) + return itemComp.GetPlayerItem( + serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True) + + # ============================================================================ + # 六、工具方法:给玩家物品 + # ============================================================================ + + def giveItem(self, playerId, itemName, count=1, aux=0): + try: + itemDict = {"itemName": itemName, "count": count, "auxValue": aux} + comp.CreateItem(playerId).SpawnItemToPlayerInv(itemDict, playerId) + except Exception: + pass + + # ============================================================================ + # 七、工具方法:消耗物品 + # ============================================================================ + + def consumeItem(self, playerId, itemDict, amount=1): + if itemDict is None: + return + count = itemDict.get("count", 0) + if count <= amount: + comp.CreateItem(playerId).SetEntityItem( + serverApi.GetMinecraftEnum().ItemPosType.CARRIED, + {"itemName": "minecraft:air", "count": 0, "auxValue": 0}) + else: + itemDict["count"] = count - amount + comp.CreateItem(playerId).SetEntityItem( + serverApi.GetMinecraftEnum().ItemPosType.CARRIED, + {"itemName": itemDict["newItemName"], + "count": itemDict["count"], + "auxValue": itemDict.get("newAuxValue", 0), + "userData": itemDict.get("userData", {})}) + + # ============================================================================ + # 八、工具方法:替换方块(保留 aux, 兼容定向变体) + # ============================================================================ + + def replaceBlock(self, pos, dim, newBlockName, playerId=None): + creator = playerId if playerId is not None else LevelId + aux = 0 + try: + oldBlock = comp.CreateBlockInfo(creator).GetBlockNew(pos, dim) + aux = oldBlock.get("aux", 0) + except Exception: + aux = 0 + comp.CreateBlockInfo(creator).SetBlockNew( + pos, blockDict={"name": newBlockName, "aux": aux}, + oldBlockHandling=0, dimensionId=dim) + + # ============================================================================ + # 九、工具方法:冷却检查 + # ============================================================================ + + def checkCooldown(self, key, cd=0.5): + now = time.time() + last = self.cooldown.get(key, 0) + if now - last < cd: + return False + self.cooldown[key] = now + return True diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/__init__.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/shousi/service/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/resource_pack_Are13Lvd/netease_items_res/rtdd_qingcai.json b/resource_pack_Are13Lvd/netease_items_res/rtdd_qingcai.json new file mode 100644 index 0000000..a268db0 --- /dev/null +++ b/resource_pack_Are13Lvd/netease_items_res/rtdd_qingcai.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "description": { + "identifier": "rtdd:qingcai" + }, + "components": { + "minecraft:icon": "qingcai" + } + } +} \ No newline at end of file diff --git a/tuilun/乡野食材转化关系.txt b/tuilun/ok/乡野食材转化关系.txt similarity index 100% rename from tuilun/乡野食材转化关系.txt rename to tuilun/ok/乡野食材转化关系.txt diff --git a/tuilun/全部功能做了什么.txt b/tuilun/全部功能做了什么.txt index 9eb97bc..d346aa2 100644 --- a/tuilun/全部功能做了什么.txt +++ b/tuilun/全部功能做了什么.txt @@ -480,3 +480,71 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher) - 桃子堆/橙子堆: 9满格 (xy_peachpile_0 / xy_orangepile_0) [已实现] - 食材堆分解(堆放工作台): 9个堆均新增分解配方 xy_*_pile_unpack -> 对应食材x9 [已实现] + +######################################## +【寿司】(xy_sushi) 2026-09-09 +######################################## +实现于 xiangyemod/shousi (ShousiData + ShousiService, 注册到 FeatureDispatcher) ++ 盘装寿司 工作台配方 (netease_recipes/xy_plate_27/28/29/42) +(对应 寿司转化关系.txt 一~七组; 方块中文名/英文id 见该 txt 文末【方块清单】) + +一、寿司·基础组 +- 干海带 -> 干海带(加饭团) [手持 饭团 右键, 消耗4个饭团] [已实现] + 机制: 海苔上铺饭团 + +二、鳕鱼寿司组 +- 干海带(加饭团) + 鳕鱼 -> 鳕鱼寿司(加鳕鱼) [手持 鳕鱼 右键, 消耗1个] [已实现] +- 鳕鱼寿司(加鳕鱼) -> 鳕鱼寿司(卷_1) -> 鳕鱼寿司(卷_2) -> 鳕鱼寿司(卷_3) -> 鳕鱼寿司(卷_4) + [空手右键, 逐级卷制, 每卷一级共四级] [已实现] +- 鳕鱼寿司(卷_4) -> 鳕鱼寿司块(三个) [手持 菜刀 右键, 两次] [已实现] + 机制: 第一刀"切寿司中…", 第二刀切好, 得 鳕鱼寿司块(三个) + +三、鲑鱼寿司组 +- 干海带(加饭团) + 鲑鱼 -> 鲑鱼寿司(加鲑鱼) [手持 鲑鱼 右键, 消耗1个] [已实现] +- 鲑鱼寿司(加鲑鱼) -> 鲑鱼寿司(卷_1) -> 鲑鱼寿司(卷_2) -> 鲑鱼寿司(卷_4) -> 鲑鱼寿司(成品卷) + [空手右键, 逐级卷制, 每卷一级共四级] [已实现] + (注: 鲑鱼卷的游戏内卷序命名不整齐, 无"卷_3"标注; 链顺序以转化关系 txt 为准) +- 鲑鱼寿司(成品卷) -> 鲑鱼寿司块(三个) [手持 菜刀 右键, 两次] [已实现] + +四、热带鱼寿司组 +- 干海带(加饭团) + 热带鱼 -> 热带鱼寿司(加热带鱼) [手持 热带鱼 右键, 消耗1个] [已实现] +- 热带鱼寿司(加热带鱼) -> 热带鱼寿司(卷_1) -> 热带鱼寿司(卷_2) -> 热带鱼寿司(卷_3) -> 热带鱼寿司(卷_4) + [空手右键, 逐级卷制, 每卷一级共四级] [已实现] +- 热带鱼寿司(卷_4) -> 热带鱼寿司块(三个) [手持 菜刀 右键, 两次] [已实现] + +五、手握寿司组 +- 手握普通寿司来源: 饭团 右键 任意非寿司方块表面 -> 表面上方放置 手握普通寿司, 消耗1个饭团 + (txt 第18条 todo, 一并实现, 否则手握组无起点) [已实现] +- 手握普通寿司 + 鳕鱼 -> 手握鳕鱼寿司(一个) [手持 鳕鱼 右键, 消耗1个] [已实现] +- 手握鳕鱼寿司(一个) -> 手握鳕鱼寿司(两个) -> 手握鳕鱼寿司(三个) + [手持 手握鳕鱼寿司(一个) 右键, 逐级堆叠, 每级消耗1个] [已实现] +- 手握普通寿司 + 鲑鱼 -> 手握鲑鱼寿司(一个) [手持 鲑鱼 右键, 消耗1个] [已实现] +- 手握鲑鱼寿司(一个) -> 手握鲑鱼寿司(两个) -> 手握鲑鱼寿司(三个) + [手持 手握鲑鱼寿司(一个) 右键, 逐级堆叠, 每级消耗1个] [已实现] +- 手握普通寿司 + 热带鱼 -> 手握热带鱼寿司(一个) [手持 热带鱼 右键, 消耗1个] [已实现] +- 手握热带鱼寿司(一个) -> 手握热带鱼寿司(两个) -> 手握热带鱼寿司(三个) + [手持 手握热带鱼寿司(一个) 右键, 逐级堆叠, 每级消耗1个] [已实现] +- 手握普通寿司 + 鱿鱼须 -> 手握鱿鱼寿司(一个) [手持 鱿鱼须 右键, 消耗1个] [已实现] +- 手握鱿鱼寿司(一个) -> 手握鱿鱼寿司(两个) -> 手握鱿鱼寿司(三个) + [手持 手握鱿鱼寿司(一个) 右键, 逐级堆叠, 每级消耗1个] [已实现] + +六、寿司堆组 +- 鳕鱼寿司(卷_4) -> 寿司堆(鳕鱼_两个) -> 寿司堆(鳕鱼_三个) + [手持 鳕鱼寿司(卷_4) 右键, 逐级堆叠, 每级消耗1个] [已实现] +- 鲑鱼寿司(成品卷) -> 寿司堆(鲑鱼_两个) -> 寿司堆(鲑鱼_三个) + [手持 鲑鱼寿司(成品卷) 右键, 逐级堆叠, 每级消耗1个] [已实现] +- 热带鱼寿司(卷_4) -> 寿司堆(热带鱼_两个) -> 寿司堆(热带鱼_三个) + [手持 热带鱼寿司(卷_4) 右键, 逐级堆叠, 每级消耗1个] [已实现] +- 递减: 寿司堆(X_三个) -> 寿司堆(X_两个) -> 卷寿司 [空手右键, 逐级取走] + 机制: 每级取走一个并返还1个卷寿司; 鳕鱼/鲑鱼/热带鱼 同规则 [已实现] + +七、盘装寿司组 (工作台合成) +- 盘子 + 手握热带鱼寿司(三个) + 热带鱼寿司(卷_4) -> 盘装寿司(手握热带鱼三份+热带鱼寿司) (plate_27) [已实现] +- 盘子 + 手握鳕鱼寿司(三个) + 鳕鱼寿司(卷_4) -> 盘装寿司(手握鳕鱼三份+鳕鱼寿司) (plate_28) [已实现] +- 盘子 + 手握鲑鱼寿司(三个) + 鲑鱼寿司(成品卷) -> 盘装寿司(手握鲑鱼三份+鲑鱼寿司) (plate_29) [已实现] +- 盘子 + 手握鱿鱼寿司(三个) + 热带鱼寿司(卷_4) -> 盘装寿司(手握鱿鱼三份+热带鱼寿司) (plate_42) [已实现] +(盘子 = 盘子方块 plate_0, 厨具分类可工作台合成) + +【留后】吃(寿司块/手握 递减 空手右键吃)、饭团来源(汤锅熟米饭捏饭团, 属汤锅分类) +见 全部功能没做什么.txt 寿司节 + diff --git a/tuilun/全部功能没做什么.txt b/tuilun/全部功能没做什么.txt index 86f115c..4a41930 100644 --- a/tuilun/全部功能没做什么.txt +++ b/tuilun/全部功能没做什么.txt @@ -175,3 +175,26 @@ - 未做原因: 后续实现(用户明确标注被告知先跳过), 当前果树仍为"树叶->果实"简单计时结果 (乡野自然转化关系.txt 一、果树·树叶) + +######################################## +【寿司】(xy_sushi) +######################################## +(主要转换已实现于 xiangyemod/shousi, 见 全部功能做了什么.txt) +(对应 寿司转化关系.txt 二~八组; 方块中文名/英文id 见该 txt 文末【方块清单】) + +一、吃 (寿司块/手握 递减食用) +- 鳕鱼寿司块(三个) -> 鳕鱼寿司块(两个) -> 鳕鱼寿司块(一个) ->空 [空手右键 吃] (txt 5) +- 鲑鱼寿司块(三个) -> 鲑鱼寿司块(两个) -> 鲑鱼寿司块(一个) ->空 [空手右键 吃] (txt 9) +- 热带鱼寿司块(三个) -> 热带鱼寿司块(两个) -> 热带鱼寿司块(一个) ->空 [空手右键 吃] (txt 13) +- 手握鳕鱼寿司(三个) -> 手握鳕鱼寿司(两个) -> 手握鳕鱼寿司(一个) ->空 [空手右键 吃] (txt 14) +- 手握鲑鱼寿司(三个) -> 手握鲑鱼寿司(两个) -> 手握鲑鱼寿司(一个) ->空 [空手右键 吃] (txt 15) +- 手握热带鱼寿司(三个) -> 手握热带鱼寿司(两个) -> 手握热带鱼寿司(一个) ->空 [空手右键 吃] (txt 16) +- 手握鱿鱼寿司(三个) -> 手握鱿鱼寿司(两个) -> 手握鱿鱼寿司(一个) ->空 [空手右键 吃] (txt 17) +- 未做原因: 均为"空手右键 吃"的食用递减, 食用部分由统一的"总食用功能"汇总实现, + 本次不实现 (转化文档已用 todo 标注"吃的都 后续实现") + +二、饭团来源 (汤锅熟米饭捏饭团) +- 熟米饭(汤锅煮好) 空手右键(不用碗) -> 饭团 (txt 23) +- 未做原因: 属汤锅分类, 汤锅代码尚未实现; 本次寿司功能只用饭团物品本身 + (寿司的饭团暂靠创造模式/后续汤锅功能获取) + diff --git a/tuilun/寿司转化关系.txt b/tuilun/寿司转化关系.txt index ac638c0..6a1883a 100644 --- a/tuilun/寿司转化关系.txt +++ b/tuilun/寿司转化关系.txt @@ -1,86 +1,147 @@ ======================================== 【寿司】(xy_sushi) 转化关系 ======================================== -说明(基于行为包实际方块清单重写): -- 寿司方块: sushi_0(干海带/海苔)、sushi_1(干海带加米饭) - 鳕鱼寿司(codsushi_1~6/codsushicubes_1/2)、鲑鱼寿司(salmonsushi_1~6/salmonsushicubes_1/2)、 - 热带鱼寿司(fishsushi_1~5/fishsushicubes_1/2/fishmonsushi_6)、 - 手握(nigirisushi 系列)、寿司堆(sushipile_0~5)、盘装(plate_27/28/29/42) -- 【米饭来源·逻辑严谨】寿司用"米饭"是熟米饭: 大米(brownrice, 食材) 经 汤锅 煮成生米锅, - 计时煮熟, 木碗盛出为碗装米饭(bowlofrice), 才可用于做寿司。见 汤锅转化关系.txt 37~39 +说明: +- 正文全部用中文方块名, 英文id见文末【方块清单】 +- 【饭团来源·逻辑严谨】寿司用"饭团": 大米(brownrice) 经 汤锅 煮成生米锅, + 计时煮熟为熟米饭, 空手右键(不用碗)捏成饭团, 才可用于做寿司。见 汤锅转化关系.txt 37~39 竹筒饭用生大米(见 面食.甜食 竹筒饭组), 二者不要混淆 -- 制作规律: 海苔 -> 加米饭 -> 加鱼 -> 卷制 -> 切块 -> 堆叠/手握; 饭团由手握裹海苔而成 -- 竹帘/菜刀: 卷制用 竹帘, 切块用 菜刀(cleaver, 厨具) -- 已归入禁用: 切寿司(cutsushi) -- 【饭团·新增】饭团(rice_balls) 由手握普通寿司裹海苔而成, 归 手握寿司组(sushi_05_nigiri) +- 制作规律: 海苔 -> 加饭团 -> 加鱼 -> 卷制; 卷制后: 切块(块组) 或 堆叠(堆组); 手握另起自 饭团 -> 手握普通寿司 -> 加鱼 +- 卷制: 空手右键(每卷一级, 共四级); 切块: 手持 菜刀(cleaver, 厨具) 右键两次 +- 已归入禁用: 切寿司(寿司_9) ======================================== 一、寿司·基础组 ======================================== -1. sushi_0(干海带/海苔) -> sushi_1(干海带加米饭) -转换条件:[手持 米饭(汤锅盛出的碗装米饭 bowlofrice) 右键, 消耗1个] -机制: 海苔上铺米饭(米饭来源见 汤锅转化关系.txt) +1. 干海带 -> 干海带(加饭团) [手持 饭团 右键, 消耗4个] +机制: 海苔上铺饭团(饭团来源见 汤锅转化关系.txt) ======================================== 二、鳕鱼寿司组 ======================================== -2. sushi_1 + 鳕鱼 -> codsushi_1(加鳕鱼) [手持 鳕鱼 右键, 消耗1个] -3. codsushi_1 -> codsushi_2 -> codsushi_3 -> codsushi_4 -> codsushi_5(卷制) - [手持 竹帘 右键, 逐级卷制] -4. codsushi_5 -> codsushi_6(切块/一个) -> codsushicubes_1(两个) -> codsushicubes_2(三个) - [手持 菜刀 右键切块, 再堆叠] -5. 递减: 三个 -> 两个 -> 块 [空手右键取走] +2. 干海带(加饭团) + 鳕鱼 -> 鳕鱼寿司(加鳕鱼) [手持 鳕鱼 右键, 消耗1个] +3. 鳕鱼寿司(加鳕鱼) -> 鳕鱼寿司(卷_1) -> 鳕鱼寿司(卷_2) -> 鳕鱼寿司(卷_3) -> 鳕鱼寿司(卷_4) + [空手右键, 逐级卷制] + 机制: 右键, 每卷一级, 共四级 +4. 鳕鱼寿司(卷_4) -> 鳕鱼寿司块(三个) + [手持 菜刀 右键, 逐级切块] + 机制: 手持菜刀右键, 两次 获得 鳕鱼寿司块(三个) + +5. 鳕鱼寿司块(三个) -> 鳕鱼寿司块(两个) -> 鳕鱼寿司块(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) + ======================================== 三、鲑鱼寿司组 ======================================== -6. sushi_1 + 鲑鱼 -> salmonsushi_1(加鲑鱼) [手持 鲑鱼 右键] -7. salmonsushi_1 -> salmonsushi_2~5(卷制) [手持 竹帘 右键] -8. salmonsushi_5 -> salmonsushi_6(切块) -> salmonsushicubes_1(两个) -> salmonsushicubes_2(三个) -9. 递减: 空手右键取走 +6. 干海带(加饭团) + 鲑鱼 -> 鲑鱼寿司(加鲑鱼) [手持 鲑鱼 右键] +7. 鲑鱼寿司(加鲑鱼) -> 鲑鱼寿司(卷_1) -> 鲑鱼寿司(卷_2) -> 鲑鱼寿司(卷_4) -> 鲑鱼寿司 + [空手右键, 逐级卷制] + 机制: 右键, 每卷一级, 共四级 + (注: 鲑鱼卷的游戏内卷序命名不整齐, 无"卷_3"标注; 链顺序以此为准) +8. 鲑鱼寿司 -> 鲑鱼寿司块(三个) + [手持 菜刀 右键, 逐级切块] + 机制: 手持菜刀右键, 两次 获得 鲑鱼寿司块(三个) + +9. 鲑鱼寿司块(三个) -> 鲑鱼寿司块(两个) -> 鲑鱼寿司块(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) ======================================== 四、热带鱼寿司组 ======================================== -10. sushi_1 + 热带鱼 -> fishsushi_1(加热带鱼) [手持 热带鱼 右键] -11. fishsushi_1 -> fishsushi_2~5(卷制) [手持 竹帘 右键] -12. fishsushi_5 -> fishsushicubes_1(两个) -> fishsushicubes_2(三个)(含 fishmonsushi_6 切块态) -13. 递减: 空手右键取走 +10. 干海带(加饭团) + 热带鱼 -> 热带鱼寿司(加热带鱼) [手持 热带鱼 右键] +11. 热带鱼寿司(加热带鱼) -> 热带鱼寿司(卷_1) -> 热带鱼寿司(卷_2) -> 热带鱼寿司(卷_3) -> 热带鱼寿司(卷_4) + [空手右键, 逐级卷制] + 机制: 右键, 每卷一级, 共四级 +12. 热带鱼寿司(卷_4) -> 热带鱼寿司块(三个) + [手持 菜刀 右键, 逐级切块] + 机制: 手持菜刀右键, 两次 获得 热带鱼寿司块(三个) + +13. 热带鱼寿司块(三个) -> 热带鱼寿司块(两个) -> 热带鱼寿司块(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) ======================================== 五、手握寿司组 ======================================== -(手握: sushi_1(加米饭) + 鱼 -> 手握一个 -> 两个 -> 三个; - 饭团(rice_balls) 亦归本组) -14. sushi_1 + 鳕鱼 -> nigirisushicod_2(一个) -> nigirisushicod_3(两个) - (nigirisushifishcod 为鳕鱼手握) -15. sushi_1 + 鲑鱼 -> nigirisushisalnom_2(一个) -> nigirisushisalnom_3(两个) - (nigirisushifishsalmon_1 为鲑鱼手握) -16. sushi_1 + 热带鱼 -> nigirisushifish_1(一个) -> nigirisushifish_2(两个) -> nigirisushifish_3(三个) -17. sushi_1 + 鱿鱼 -> squid_sushi(一个) -> squidsushi_2(两个) -> squidsushi_3(三个) -18. sushi_1 -> nigirisushi(手握普通寿司) [直接成型, 【待确认】] + +14. 手握普通寿司 + 鳕鱼 -> 手握鳕鱼寿司(一个) + [手持 鳕鱼 右键, 逐级堆叠] + 手握鳕鱼寿司(一个) -> 手握鳕鱼寿司(两个) -> 手握鳕鱼寿司(三个) + [手持 手握鳕鱼寿司(一个) 右键, 逐级堆叠] + 手握鳕鱼寿司(三个) -> 手握鳕鱼寿司(两个) -> 手握鳕鱼寿司(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) +15. 手握普通寿司 + 鲑鱼 -> 手握鲑鱼寿司(一个) + [手持 鲑鱼 右键, 逐级堆叠] + 手握鲑鱼寿司(一个) -> 手握鲑鱼寿司(两个) -> 手握鲑鱼寿司(三个) + [手持 手握鲑鱼寿司(一个) 右键, 逐级堆叠] + 手握鲑鱼寿司(三个) -> 手握鲑鱼寿司(两个) -> 手握鲑鱼寿司(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) +16. 手握普通寿司 + 热带鱼 -> 手握热带鱼寿司(一个) + [手持 热带鱼 右键, 逐级堆叠] + 手握热带鱼寿司(一个) -> 手握热带鱼寿司(两个) -> 手握热带鱼寿司(三个) + [手持 手握热带鱼寿司(一个) 右键, 逐级堆叠] + 手握热带鱼寿司(三个) -> 手握热带鱼寿司(两个) -> 手握热带鱼寿司(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) +17. 手握普通寿司 + 鱿鱼 -> 手握鱿鱼寿司(一个) + [手持 鱿鱼 右键, 逐级堆叠] + 手握鱿鱼寿司(一个) -> 手握鱿鱼寿司(两个) -> 手握鱿鱼寿司(三个) + [手持 手握鱿鱼寿司(一个) 右键, 逐级堆叠] + 手握鱿鱼寿司(三个) -> 手握鱿鱼寿司(两个) -> 手握鱿鱼寿司(一个) ->空 + todo 空手右键 吃 (吃的都 后续实现) +18. 饭团 -> 手握普通寿司 + todo 饭团 右键 方块 放置 变成普通寿司 ======================================== 六、寿司堆组 ======================================== -(寿司块 -> 寿司堆(两个) -> (三个); 递减空手取走) -19. codsushicubes 系列 -> sushipile_0~5(寿司堆各态) [手持 寿司块 右键堆叠] -20. 递减: 三个 -> 两个 -> 块 [空手右键取走] +19. 鳕鱼寿司(卷_4)-> 寿司堆(鳕鱼_两个) -> 寿司堆(鳕鱼_三个) + [手持 鳕鱼寿司(卷_4) 右键, 逐级堆叠] + 机制: 右键, 每堆一级, 共两级 +20. 鲑鱼寿司(成品卷) -> 寿司堆(鲑鱼_两个) -> 寿司堆(鲑鱼_三个) + [手持 鲑鱼寿司(成品卷) 右键, 逐级堆叠] + 机制: 右键, 每堆一级, 共两级 +21. 热带鱼寿司(卷_4) -> 寿司堆(热带鱼_两个) -> 寿司堆(热带鱼_三个) + [手持 热带鱼寿司(卷_4) 右键, 逐级堆叠] + 机制: 右键, 每堆一级, 共两级 +22. 递减: 寿司堆(XX_三个) -> 寿司堆(XX_两个) -> 寿司(卷_4/成品卷) + [空手右键, 逐级取走] + 机制: 空手右键, 每级取走一个, 共两级 (鳕鱼/鲑鱼/热带鱼 同规则) ======================================== 七、盘装寿司组 ======================================== -- plate_27: 盘装寿司(手握热带鱼三份+热带鱼寿司) -- plate_28: 盘装寿司(手握鳕鱼三份+鳕鱼寿司) -- plate_29: 盘装寿司(手握鲑鱼三份+鲑鱼寿司) -- plate_42: 盘装寿司(手握鱿鱼三份+热带鱼寿司) -机制: 成品摆盘方块, 由对应手握/卷寿司组合摆放而成, 无独立转换 +- 盘装寿司(手握热带鱼三份+热带鱼寿司) +- 盘装寿司(手握鳕鱼三份+鳕鱼寿司) +- 盘装寿司(手握鲑鱼三份+鲑鱼寿司) +- 盘装寿司(手握鱿鱼三份+热带鱼寿司) +机制: 成品摆盘方块 工作台合成 盘子 +手握 + 寿司卷(鳕鱼寿司(卷_4)/鲑鱼寿司(成品卷)/热带鱼寿司(卷_4)) ======================================== -八、饭团(新增) +八、饭团(来源) ======================================== -物品: rice_balls(饭团) -21. 手握普通寿司(nigirisushi) + 海苔(sushi_0 干海带) -> rice_balls(饭团) -转换条件:[手持 海苔(干海带 sushi_0) 右键, 消耗1个] -机制: 米饭手握(手握普通寿司)裹上海苔, 捏成三角饭团, 掉落/获得饭团物品 -(米饭来源见 汤锅转化关系.txt 米饭流程; 饭团归 手握寿司组 sushi_05_nigiri) \ No newline at end of file +物品: 饭团 +23. 汤锅(熟米饭) 形态 1/2/3 -> 饭团 [空手右键, 不用碗] +机制: 汤锅煮好的熟米饭, 不用碗盛出, 空手右键直接捏成饭团(饭团物品), 供寿司制作 +(米饭流程见 汤锅转化关系.txt 37~39; 饭团归 手握寿司组) + +======================================== +【方块清单】(中文 -> 英文id, 供实现对照) +======================================== +- 干海带: sushi_0 +- 干海带(加饭团): sushi_1 (游戏内名"干海带(加米)") +- 鳕鱼寿司(加鳕鱼): codsushi_1; 卷_1: codsushi_2; 卷_2: codsushi_3; 卷_3: codsushi_4; 卷_4: codsushi_5 +- 鳕鱼寿司块(一个): codsushicubes_1; (两个): codsushicubes_2; (三个): codsushi_6 +- 鲑鱼寿司(加鲑鱼): salmonsushi_1; 卷_1: salmonsushi_2; 卷_2: salmonsushi_3; 卷_4: salmonsushi_4; 成品卷: salmonsushi_5 +- 鲑鱼寿司块(一个): salmonsushicubes_1; (两个): salmonsushicubes_2; (三个): salmonsushi_6 +- 热带鱼寿司(加热带鱼): fishsushi_1; 卷_1: fishsushi_2; 卷_2: fishsushi_3; 卷_3: fishsushi_4; 卷_4: fishsushi_5 +- 热带鱼寿司块(一个): fishsushicubes_1; (两个): fishsushicubes_2; (三个): fishmonsushi_6 +- 手握普通寿司: nigirisushi +- 手握鳕鱼寿司(一个): nigirisushifishcod; (两个): nigirisushicod_2; (三个): nigirisushicod_3 +- 手握鲑鱼寿司(一个): nigirisushifishsalmon_1; (两个): nigirisushisalnom_2; (三个): nigirisushisalnom_3 +- 手握热带鱼寿司(一个): nigirisushifish_1; (两个): nigirisushifish_2; (三个): nigirisushifish_3 +- 手握鱿鱼寿司(一个): squid_sushi; (两个): squidsushi_2; (三个): squidsushi_3 +- 寿司堆(热带鱼_两个): sushipile_0; (热带鱼_三个): sushipile_1; (鳕鱼_两个): sushipile_2; + (鳕鱼_三个): sushipile_3; (鲑鱼_两个): sushipile_4; (鲑鱼_三个): sushipile_5 +- 盘装寿司(手握热带鱼三份+热带鱼寿司): plate_27; (手握鳕鱼三份+鳕鱼寿司): plate_28; + (手握鲑鱼三份+鲑鱼寿司): plate_29; (手握鱿鱼三份+热带鱼寿司): plate_42 +- 饭团: rice_balls; 切寿司(禁用): cutsushi diff --git a/tuilun/汤锅转化关系.txt b/tuilun/汤锅转化关系.txt index f680615..cfcdaa0 100644 --- a/tuilun/汤锅转化关系.txt +++ b/tuilun/汤锅转化关系.txt @@ -8,7 +8,7 @@ - 汤羹规律: XX(生_0) -> 四分熟_1 -> 八分熟_2 -> 熟_3, 计时约60秒一级 - 出锅: 手持 木碗(bowlasoup, 厨具) 右键, 消耗1个, 获得碗装成品(bowla*) - 米饭流程: 大米(brownrice, 乡野食材) -> rawricepot(生米锅) -> ricepot_1~3(熟米饭) - -> 木碗盛出 bowlofrice(碗装米饭), 再用于 寿司(见 寿司转化关系.txt)/蛋炒饭(炒锅) + -> 空手右键 捏成饭团(rice_balls, 供寿司); 或 木碗盛出 bowlofrice(碗装米饭, 供蛋炒饭) - 【鸡蛋·多用途联动】同一"鸡蛋"原料("鸡蛋堆 egg_pile"拆出或原版鸡蛋)贯穿三处: -> 汤锅: 蛋花汤(eggsoup) / 煮鸡蛋(raweggsoup -> cookedeggsoup -> 水煮蛋) -> 炒锅: 煎蛋(cookedegg, 炒锅转化关系.txt 第19条) @@ -75,10 +75,12 @@ 转换条件:[手持 大米(乡野食材, 生) 右键, 消耗1个] 38. rawricepot -> ricepot_1 -> ricepot_2 -> ricepot_3(熟米饭) 转换条件:[计时约60秒一级, 共三级变熟] -39. ricepot_3(熟米饭) + 木碗(bowlasoup) -> bowlofrice(碗装米饭) +39. ricepot_3(熟米饭) 空手右键 -> 饭团(rice_balls) +转换条件:[空手右键(不用碗)] +机制: 熟米饭直接捏成饭团, 供 寿司 干海带+饭团(寿司转化关系.txt) +39a. ricepot_3(熟米饭) + 木碗(bowlasoup) -> bowlofrice(碗装米饭) 转换条件:[手持 木碗 右键, 消耗1个木碗] -(碗装米饭 bowlofrice/bowlofrice_2/bowlofrice_3 用于: - 寿司 干海带+米饭(寿司转化关系.txt) / 炒锅 蛋炒饭(炒锅转化关系.txt)) +机制: 熟米饭木碗盛出为碗装米饭, 供 炒锅 蛋炒饭(炒锅转化关系.txt) ======================================== 五、煮鸡蛋组(新增独立分组 itemGroup.name.tangguo_boiledeggs) diff --git a/tuilun/面食.甜食转化关系.txt b/tuilun/面食.甜食转化关系.txt index a5aad18..f1c06d0 100644 --- a/tuilun/面食.甜食转化关系.txt +++ b/tuilun/面食.甜食转化关系.txt @@ -8,7 +8,8 @@ 加工中擀面杖会被消耗, 干完最后一步掉落返还(见 厨具转化关系.txt 七) - 【蛋液半成品】plate_34: 由 搅拌器(厨具) 鸡蛋牛奶流程 用盘子取出(见 厨具转化关系.txt 三) (鸡蛋同源: 另用于 汤锅 煮鸡蛋/蛋花汤、炒锅 煎蛋, 见 汤锅/炒锅转化关系.txt) -- 【米饭/大米区分】: 竹筒饭/生米锅用 生大米(brownrice); 蛋炒饭/寿司用 熟米饭(汤锅盛出) +- 【米饭/大米区分】: 竹筒饭/生米锅用 生大米(brownrice); 蛋炒饭用 碗装米饭(汤锅木碗盛出); + 寿司用 饭团(汤锅熟米饭空手右键捏成, 见 汤锅转化关系.txt 39/39a) - 【面团用途】: 面团(rawdough/dought 系列) 供 丸子机(厨具)/炒锅煎饼(炒锅) 使用 - 【生面】noodles: 供 汤锅生面汤/炒锅意面(见 汤锅/炒锅转化关系.txt) - 发酵/醒面/烘焙/蒸制 多为计时转换, 约60秒一级