寿司 功能实现 1

This commit is contained in:
wenhe committed 2026-09-09 16:06:45 +08:00
1 parent 51804de264
commit b82391c5c9
12 files changed
+692 -56

No files matched your search

@@ -17,6 +17,7 @@ from xiangyemod.chuju.service.ChujuTimerService import ChujuTimerService
from xiangyemod.ziran.service.NaturalService import NaturalService from xiangyemod.ziran.service.NaturalService import NaturalService
from xiangyemod.ziran.service.NaturalTimerService import NaturalTimerService from xiangyemod.ziran.service.NaturalTimerService import NaturalTimerService
from xiangyemod.shicai.service.ShicaiService import ShicaiService from xiangyemod.shicai.service.ShicaiService import ShicaiService
from xiangyemod.shousi.service.ShousiService import ShousiService
if not serverApi.IsInServer(): if not serverApi.IsInServer():
pass pass
@@ -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
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
@@ -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
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:qingcai"
},
"components": {
"minecraft:icon": "qingcai"
}
}
}
File renamed without changes.
+68
View File
@@ -480,3 +480,71 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
- 桃子堆/橙子堆: 9满格 (xy_peachpile_0 / xy_orangepile_0) [已实现] - 桃子堆/橙子堆: 9满格 (xy_peachpile_0 / xy_orangepile_0) [已实现]
- 食材堆分解(堆放工作台): 9个堆均新增分解配方 xy_*_pile_unpack -> 对应食材x9 [已实现] - 食材堆分解(堆放工作台): 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 寿司节
+23
View File
@@ -175,3 +175,26 @@
- 未做原因: 后续实现(用户明确标注被告知先跳过), 当前果树仍为"树叶->果实"简单计时结果 - 未做原因: 后续实现(用户明确标注被告知先跳过), 当前果树仍为"树叶->果实"简单计时结果
(乡野自然转化关系.txt 一、果树·树叶) (乡野自然转化关系.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)
- 未做原因: 属汤锅分类, 汤锅代码尚未实现; 本次寿司功能只用饭团物品本身
(寿司的饭团暂靠创造模式/后续汤锅功能获取)
+112 -51
View File
@@ -1,86 +1,147 @@
======================================== ========================================
【寿司】(xy_sushi) 转化关系 【寿司】(xy_sushi) 转化关系
======================================== ========================================
说明(基于行为包实际方块清单重写): 说明:
- 寿司方块: sushi_0(干海带/海苔)、sushi_1(干海带加米饭) - 正文全部用中文方块名, 英文id见文末【方块清单】
鳕鱼寿司(codsushi_1~6/codsushicubes_1/2)、鲑鱼寿司(salmonsushi_1~6/salmonsushicubes_1/2)、 - 【饭团来源·逻辑严谨】寿司用"饭团": 大米(brownrice) 经 汤锅 煮成生米锅,
热带鱼寿司(fishsushi_1~5/fishsushicubes_1/2/fishmonsushi_6)、 计时煮熟为熟米饭, 空手右键(不用碗)捏成饭团, 才可用于做寿司。见 汤锅转化关系.txt 37~39
手握(nigirisushi 系列)、寿司堆(sushipile_0~5)、盘装(plate_27/28/29/42)
- 【米饭来源·逻辑严谨】寿司用"米饭"是熟米饭: 大米(brownrice, 食材) 经 汤锅 煮成生米锅,
计时煮熟, 木碗盛出为碗装米饭(bowlofrice), 才可用于做寿司。见 汤锅转化关系.txt 37~39
竹筒饭用生大米(见 面食.甜食 竹筒饭组), 二者不要混淆 竹筒饭用生大米(见 面食.甜食 竹筒饭组), 二者不要混淆
- 制作规律: 海苔 -> 加米饭 -> 加鱼 -> 卷制 -> 切块 -> 堆叠/手握; 饭团由手握裹海苔而成 - 制作规律: 海苔 -> 加饭团 -> 加鱼 -> 卷制; 卷制后: 切块(块组) 或 堆叠(堆组); 手握另起自 饭团 -> 手握普通寿司 -> 加鱼
- 竹帘/菜刀: 卷制用 竹帘, 切块用 菜刀(cleaver, 厨具) - 卷制: 空手右键(每卷一级, 共四级); 切块: 手持 菜刀(cleaver, 厨具) 右键两次
- 已归入禁用: 切寿司(cutsushi) - 已归入禁用: 切寿司(寿司_9)
- 【饭团·新增】饭团(rice_balls) 由手握普通寿司裹海苔而成, 归 手握寿司组(sushi_05_nigiri)
======================================== ========================================
一、寿司·基础组 一、寿司·基础组
======================================== ========================================
1. sushi_0(干海带/海苔) -> sushi_1(干海带加米饭) 1. 干海带 -> 干海带(加饭团) [手持 饭团 右键, 消耗4个]
转换条件:[手持 米饭(汤锅盛出的碗装米饭 bowlofrice) 右键, 消耗1个] 机制: 海苔上铺饭团(饭团来源见 汤锅转化关系.txt)
机制: 海苔上铺米饭(米饭来源见 汤锅转化关系.txt)
======================================== ========================================
二、鳕鱼寿司组 二、鳕鱼寿司组
======================================== ========================================
2. sushi_1 + 鳕鱼 -> codsushi_1(加鳕鱼) [手持 鳕鱼 右键, 消耗1个] 2. 干海带(加饭团) + 鳕鱼 -> 鳕鱼寿司(加鳕鱼) [手持 鳕鱼 右键, 消耗1个]
3. codsushi_1 -> codsushi_2 -> codsushi_3 -> codsushi_4 -> codsushi_5(卷制) 3. 鳕鱼寿司(加鳕鱼) -> 鳕鱼寿司(卷_1) -> 鳕鱼寿司(卷_2) -> 鳕鱼寿司(卷_3) -> 鳕鱼寿司(卷_4)
[手持 竹帘 右键, 逐级卷制] [空手右键, 逐级卷制]
4. codsushi_5 -> codsushi_6(切块/一个) -> codsushicubes_1(两个) -> codsushicubes_2(三个) 机制: 右键, 每卷一级, 共四级
[手持 菜刀 右键切块, 再堆叠] 4. 鳕鱼寿司(卷_4) -> 鳕鱼寿司块(三个)
5. 递减: 三个 -> 两个 -> 块 [空手右键取走] [手持 菜刀 右键, 逐级切块]
机制: 手持菜刀右键, 两次 获得 鳕鱼寿司块(三个)
5. 鳕鱼寿司块(三个) -> 鳕鱼寿司块(两个) -> 鳕鱼寿司块(一个) ->空
todo 空手右键 吃 (吃的都 后续实现)
======================================== ========================================
三、鲑鱼寿司组 三、鲑鱼寿司组
======================================== ========================================
6. sushi_1 + 鲑鱼 -> salmonsushi_1(加鲑鱼) [手持 鲑鱼 右键] 6. 干海带(加饭团) + 鲑鱼 -> 鲑鱼寿司(加鲑鱼) [手持 鲑鱼 右键]
7. salmonsushi_1 -> salmonsushi_2~5(卷制) [手持 竹帘 右键] 7. 鲑鱼寿司(加鲑鱼) -> 鲑鱼寿司(卷_1) -> 鲑鱼寿司(卷_2) -> 鲑鱼寿司(卷_4) -> 鲑鱼寿司
8. salmonsushi_5 -> salmonsushi_6(切块) -> salmonsushicubes_1(两个) -> salmonsushicubes_2(三个) [空手右键, 逐级卷制]
9. 递减: 空手右键取走 机制: 右键, 每卷一级, 共四级
(注: 鲑鱼卷的游戏内卷序命名不整齐, 无"卷_3"标注; 链顺序以此为准)
8. 鲑鱼寿司 -> 鲑鱼寿司块(三个)
[手持 菜刀 右键, 逐级切块]
机制: 手持菜刀右键, 两次 获得 鲑鱼寿司块(三个)
9. 鲑鱼寿司块(三个) -> 鲑鱼寿司块(两个) -> 鲑鱼寿司块(一个) ->空
todo 空手右键 吃 (吃的都 后续实现)
======================================== ========================================
四、热带鱼寿司组 四、热带鱼寿司组
======================================== ========================================
10. sushi_1 + 热带鱼 -> fishsushi_1(加热带鱼) [手持 热带鱼 右键] 10. 干海带(加饭团) + 热带鱼 -> 热带鱼寿司(加热带鱼) [手持 热带鱼 右键]
11. fishsushi_1 -> fishsushi_2~5(卷制) [手持 竹帘 右键] 11. 热带鱼寿司(加热带鱼) -> 热带鱼寿司(卷_1) -> 热带鱼寿司(卷_2) -> 热带鱼寿司(卷_3) -> 热带鱼寿司(卷_4)
12. fishsushi_5 -> fishsushicubes_1(两个) -> fishsushicubes_2(三个)(含 fishmonsushi_6 切块态) [空手右键, 逐级卷制]
13. 递减: 空手右键取走 机制: 右键, 每卷一级, 共四级
12. 热带鱼寿司(卷_4) -> 热带鱼寿司块(三个)
[手持 菜刀 右键, 逐级切块]
机制: 手持菜刀右键, 两次 获得 热带鱼寿司块(三个)
13. 热带鱼寿司块(三个) -> 热带鱼寿司块(两个) -> 热带鱼寿司块(一个) ->空
todo 空手右键 吃 (吃的都 后续实现)
======================================== ========================================
五、手握寿司组 五、手握寿司组
======================================== ========================================
(手握: sushi_1(加米饭) + 鱼 -> 手握一个 -> 两个 -> 三个;
饭团(rice_balls) 亦归本组) 14. 手握普通寿司 + 鳕鱼 -> 手握鳕鱼寿司(一个)
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(三个) todo 空手右键 吃 (吃的都 后续实现)
17. sushi_1 + 鱿鱼 -> squid_sushi(一个) -> squidsushi_2(两个) -> squidsushi_3(三个) 15. 手握普通寿司 + 鲑鱼 -> 手握鲑鱼寿司(一个)
18. sushi_1 -> nigirisushi(手握普通寿司) [直接成型, 【待确认】] [手持 鲑鱼 右键, 逐级堆叠]
手握鲑鱼寿司(一个) -> 手握鲑鱼寿司(两个) -> 手握鲑鱼寿司(三个)
[手持 手握鲑鱼寿司(一个) 右键, 逐级堆叠]
手握鲑鱼寿司(三个) -> 手握鲑鱼寿司(两个) -> 手握鲑鱼寿司(一个) ->空
todo 空手右键 吃 (吃的都 后续实现)
16. 手握普通寿司 + 热带鱼 -> 手握热带鱼寿司(一个)
[手持 热带鱼 右键, 逐级堆叠]
手握热带鱼寿司(一个) -> 手握热带鱼寿司(两个) -> 手握热带鱼寿司(三个)
[手持 手握热带鱼寿司(一个) 右键, 逐级堆叠]
手握热带鱼寿司(三个) -> 手握热带鱼寿司(两个) -> 手握热带鱼寿司(一个) ->空
todo 空手右键 吃 (吃的都 后续实现)
17. 手握普通寿司 + 鱿鱼 -> 手握鱿鱼寿司(一个)
[手持 鱿鱼 右键, 逐级堆叠]
手握鱿鱼寿司(一个) -> 手握鱿鱼寿司(两个) -> 手握鱿鱼寿司(三个)
[手持 手握鱿鱼寿司(一个) 右键, 逐级堆叠]
手握鱿鱼寿司(三个) -> 手握鱿鱼寿司(两个) -> 手握鱿鱼寿司(一个) ->空
todo 空手右键 吃 (吃的都 后续实现)
18. 饭团 -> 手握普通寿司
todo 饭团 右键 方块 放置 变成普通寿司
======================================== ========================================
六、寿司堆组 六、寿司堆组
======================================== ========================================
(寿司块 -> 寿司堆(两个) -> (三个); 递减空手取走) 19. 鳕鱼寿司(卷_4)-> 寿司堆(鳕鱼_两个) -> 寿司堆(鳕鱼_三个)
19. codsushicubes 系列 -> sushipile_0~5(寿司堆各态) [手持 寿司块 右键堆叠] [手持 鳕鱼寿司(卷_4) 右键, 逐级堆叠]
20. 递减: 三个 -> 两个 -> 块 [空手右键取走] 机制: 右键, 每堆一级, 共两级
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(饭团) 23. 汤锅(熟米饭) 形态 1/2/3 -> 饭团 [空手右键, 不用碗]
转换条件:[手持 海苔(干海带 sushi_0) 右键, 消耗1个] 机制: 汤锅煮好的熟米饭, 不用碗盛出, 空手右键直接捏成饭团(饭团物品), 供寿司制作
机制: 米饭手握(手握普通寿司)裹上海苔, 捏成三角饭团, 掉落/获得饭团物品 (米饭流程见 汤锅转化关系.txt 37~39; 饭团归 手握寿司组)
(米饭来源见 汤锅转化关系.txt 米饭流程; 饭团归 手握寿司组 sushi_05_nigiri)
========================================
【方块清单】(中文 -> 英文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
+6 -4
View File
@@ -8,7 +8,7 @@
- 汤羹规律: XX(生_0) -> 四分熟_1 -> 八分熟_2 -> 熟_3, 计时约60秒一级 - 汤羹规律: XX(生_0) -> 四分熟_1 -> 八分熟_2 -> 熟_3, 计时约60秒一级
- 出锅: 手持 木碗(bowlasoup, 厨具) 右键, 消耗1个, 获得碗装成品(bowla*) - 出锅: 手持 木碗(bowlasoup, 厨具) 右键, 消耗1个, 获得碗装成品(bowla*)
- 米饭流程: 大米(brownrice, 乡野食材) -> rawricepot(生米锅) -> ricepot_1~3(熟米饭) - 米饭流程: 大米(brownrice, 乡野食材) -> rawricepot(生米锅) -> ricepot_1~3(熟米饭)
-> 木碗盛出 bowlofrice(碗装米饭), 再用于 寿司(见 寿司转化关系.txt)/蛋炒饭(炒锅) -> 空手右键 捏成饭团(rice_balls, 供寿司); 或 木碗盛出 bowlofrice(碗装米饭, 供蛋炒饭)
- 【鸡蛋·多用途联动】同一"鸡蛋"原料("鸡蛋堆 egg_pile"拆出或原版鸡蛋)贯穿三处: - 【鸡蛋·多用途联动】同一"鸡蛋"原料("鸡蛋堆 egg_pile"拆出或原版鸡蛋)贯穿三处:
-> 汤锅: 蛋花汤(eggsoup) / 煮鸡蛋(raweggsoup -> cookedeggsoup -> 水煮蛋) -> 汤锅: 蛋花汤(eggsoup) / 煮鸡蛋(raweggsoup -> cookedeggsoup -> 水煮蛋)
-> 炒锅: 煎蛋(cookedegg, 炒锅转化关系.txt 第19条) -> 炒锅: 煎蛋(cookedegg, 炒锅转化关系.txt 第19条)
@@ -75,10 +75,12 @@
转换条件:[手持 大米(乡野食材, 生) 右键, 消耗1个] 转换条件:[手持 大米(乡野食材, 生) 右键, 消耗1个]
38. rawricepot -> ricepot_1 -> ricepot_2 -> ricepot_3(熟米饭) 38. rawricepot -> ricepot_1 -> ricepot_2 -> ricepot_3(熟米饭)
转换条件:[计时约60秒一级, 共三级变熟] 转换条件:[计时约60秒一级, 共三级变熟]
39. ricepot_3(熟米饭) + 木碗(bowlasoup) -> bowlofrice(碗装米饭) 39. ricepot_3(熟米饭) 空手右键 -> 饭团(rice_balls)
转换条件:[空手右键(不用碗)]
机制: 熟米饭直接捏成饭团, 供 寿司 干海带+饭团(寿司转化关系.txt)
39a. ricepot_3(熟米饭) + 木碗(bowlasoup) -> bowlofrice(碗装米饭)
转换条件:[手持 木碗 右键, 消耗1个木碗] 转换条件:[手持 木碗 右键, 消耗1个木碗]
(碗装米饭 bowlofrice/bowlofrice_2/bowlofrice_3 用于: 机制: 熟米饭木碗盛出为碗装米饭, 供 炒锅 蛋炒饭(炒锅转化关系.txt)
寿司 干海带+米饭(寿司转化关系.txt) / 炒锅 蛋炒饭(炒锅转化关系.txt))
======================================== ========================================
五、煮鸡蛋组(新增独立分组 itemGroup.name.tangguo_boiledeggs) 五、煮鸡蛋组(新增独立分组 itemGroup.name.tangguo_boiledeggs)
+2 -1
View File
@@ -8,7 +8,8 @@
加工中擀面杖会被消耗, 干完最后一步掉落返还(见 厨具转化关系.txt 七) 加工中擀面杖会被消耗, 干完最后一步掉落返还(见 厨具转化关系.txt 七)
- 【蛋液半成品】plate_34: 由 搅拌器(厨具) 鸡蛋牛奶流程 用盘子取出(见 厨具转化关系.txt 三) - 【蛋液半成品】plate_34: 由 搅拌器(厨具) 鸡蛋牛奶流程 用盘子取出(见 厨具转化关系.txt 三)
(鸡蛋同源: 另用于 汤锅 煮鸡蛋/蛋花汤、炒锅 煎蛋, 见 汤锅/炒锅转化关系.txt) (鸡蛋同源: 另用于 汤锅 煮鸡蛋/蛋花汤、炒锅 煎蛋, 见 汤锅/炒锅转化关系.txt)
- 【米饭/大米区分】: 竹筒饭/生米锅用 生大米(brownrice); 蛋炒饭/寿司用 熟米饭(汤锅盛出) - 【米饭/大米区分】: 竹筒饭/生米锅用 生大米(brownrice); 蛋炒饭用 碗装米饭(汤锅木碗盛出);
寿司用 饭团(汤锅熟米饭空手右键捏成, 见 汤锅转化关系.txt 39/39a)
- 【面团用途】: 面团(rawdough/dought 系列) 供 丸子机(厨具)/炒锅煎饼(炒锅) 使用 - 【面团用途】: 面团(rawdough/dought 系列) 供 丸子机(厨具)/炒锅煎饼(炒锅) 使用
- 【生面】noodles: 供 汤锅生面汤/炒锅意面(见 汤锅/炒锅转化关系.txt) - 【生面】noodles: 供 汤锅生面汤/炒锅意面(见 汤锅/炒锅转化关系.txt)
- 发酵/醒面/烘焙/蒸制 多为计时转换, 约60秒一级 - 发酵/醒面/烘焙/蒸制 多为计时转换, 约60秒一级