ceshi 2 bug处理ok

This commit is contained in:
wenhe committed 2026-09-23 16:58:44 +08:00
1 parent b768ff1555
commit faa3a22631
8 files changed
+314 -52

No files matched your search

@@ -348,22 +348,22 @@ ITEM_USE_ON_RULES = [
"replace": "rtdd:steamerdumplings_0", "consume": 4,
"startTimer": "rtdd:steamerdumplings_0",
"needBelow": LIT_STOVE, "belowTip": "§c蒸笼需要放在点燃的炉灶上",
"tip": "§a四个生饺子放进蒸笼, 开始蒸制(共60秒); 计时结束变成 熟饺子"},
"tip": "§a四个生饺子放进蒸笼, 开始蒸制; 计时结束变成 熟饺子"},
{"item": "rtdd:roubaozi_3", "surface": STEAMER,
"replace": "rtdd:baozilong_1", "consume": 3,
"startTimer": "rtdd:baozilong_1",
"needBelow": LIT_STOVE, "belowTip": "§c蒸笼需要放在点燃的炉灶上",
"tip": "§a三个生肉包子放进蒸笼, 开始蒸制(共60秒); 计时结束变成 熟包子"},
"tip": "§a三个生肉包子放进蒸笼, 开始蒸制; 计时结束变成 熟包子"},
{"item": "rtdd:bamboo_4", "surface": STEAMER,
"replace": "rtdd:bamboo_6", "consume": 1,
"startTimer": "rtdd:bamboo_6",
"needBelow": LIT_STOVE, "belowTip": "§c蒸笼需要放在点燃的炉灶上",
"tip": "§a竹筒饭放进蒸笼, 开始蒸制(共60秒); 计时结束变成 熟竹筒饭"},
"tip": "§a竹筒饭放进蒸笼, 开始蒸制; 计时结束变成 熟竹筒饭"},
{"item": "rtdd:plate_34", "surface": STEAMER,
"replace": "rtdd:steamermilkandegg", "consume": 1,
"startTimer": "rtdd:steamermilkandegg",
"needBelow": LIT_STOVE, "belowTip": "§c蒸笼需要放在点燃的炉灶上",
"tip": "§a蛋液半成品放进蒸笼, 开始蒸制(共60秒); 计时结束变成 蒸牛奶鸡蛋"},
"tip": "§a蛋液半成品放进蒸笼, 开始蒸制; 计时结束变成 蒸牛奶鸡蛋"},
]
# ============================================================================
@@ -372,34 +372,34 @@ ITEM_USE_ON_RULES = [
# ============================================================================
TIMER_RULES = [
# 发酵(60秒, autoStart)
{"source": "rtdd:rawdough_4", "target": "rtdd:dough_0", "time": 60,
{"source": "rtdd:rawdough_4", "target": "rtdd:dough_0", "time": 2,
"autoStart": True, "doneTip": "§e面团发酵好了"},
{"source": "rtdd:breaddough_1", "target": "rtdd:breaddough_1a", "time": 60,
{"source": "rtdd:breaddough_1", "target": "rtdd:breaddough_1a", "time": 2,
"autoStart": True, "doneTip": "§e法棍面胚发好了"},
# 蒸笼: 手持生食右键蒸笼 -> 蒸X_生(见 ITEM_USE_ON_RULES); 蒸X_生下方是
# 点燃的炉灶(stove_2)才计时, 60秒蒸熟
{"source": "rtdd:steamerdumplings_0", "target": "rtdd:steamerdumplings_1", "time": 60,
{"source": "rtdd:steamerdumplings_0", "target": "rtdd:steamerdumplings_1", "time": 2,
"below": [LIT_STOVE], "autoStart": True, "doneTip": "§e饺子蒸好了"},
{"source": "rtdd:baozilong_1", "target": "rtdd:baozilong_2", "time": 60,
{"source": "rtdd:baozilong_1", "target": "rtdd:baozilong_2", "time": 2,
"below": [LIT_STOVE], "autoStart": True, "doneTip": "§e包子蒸好了"},
{"source": "rtdd:bamboo_6", "target": "rtdd:bamboo_7", "time": 60,
{"source": "rtdd:bamboo_6", "target": "rtdd:bamboo_7", "time": 2,
"below": [LIT_STOVE], "autoStart": True, "doneTip": "§e竹筒饭蒸好了"},
{"source": "rtdd:steamermilkandegg", "target": "rtdd:steamermilkandegg_1", "time": 60,
{"source": "rtdd:steamermilkandegg", "target": "rtdd:steamermilkandegg_1", "time": 2,
"below": [LIT_STOVE], "autoStart": True, "doneTip": "§e蒸牛奶鸡蛋好了"},
# 烤炉烘焙(60秒, 下方判定烤炉; 烤炉被打碎 -> 该方块掉落+提示)
{"source": "rtdd:breaddough_1a", "target": "rtdd:bread_1", "time": 60,
{"source": "rtdd:breaddough_1a", "target": "rtdd:bread_1", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e法棍烤好了"},
{"source": "rtdd:breaddough_2", "target": "rtdd:bread_2", "time": 60,
{"source": "rtdd:breaddough_2", "target": "rtdd:bread_2", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e吐司烤好了"},
{"source": "rtdd:breaddough_4d", "target": "rtdd:bread_4c", "time": 60,
{"source": "rtdd:breaddough_4d", "target": "rtdd:bread_4c", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e甜甜圈胚烤好了"},
{"source": "rtdd:dought_9", "target": "rtdd:bread_3", "time": 60,
{"source": "rtdd:dought_9", "target": "rtdd:bread_3", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e可颂烤好了"},
{"source": "rtdd:cakebatterblock_0", "target": "rtdd:cakebatterblock", "time": 60,
{"source": "rtdd:cakebatterblock_0", "target": "rtdd:cakebatterblock", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e蛋糕面糊烤好了"},
{"source": "rtdd:plate_34", "target": "rtdd:plate_35", "time": 60,
{"source": "rtdd:plate_34", "target": "rtdd:plate_35", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e布丁半成品好了"},
{"source": "rtdd:creampastry_0", "target": "rtdd:souffle_0", "time": 60,
{"source": "rtdd:creampastry_0", "target": "rtdd:souffle_0", "time": 2,
"below": [OVEN], "autoStart": True, "dropOnBreak": True, "doneTip": "§e舒芙蕾烤好了"},
]
@@ -105,10 +105,9 @@ class MianshiService(BlueFoxServerSystem):
self.timerSources.add(src)
self.featureBlocks.add(src)
if src not in self.startTimerTips:
sec = r.get("time", 60)
tgt = NAME_MAP.get(r["target"], r["target"])
self.startTimerTips[src] = "§a开始蒸制: 还需%d秒, 计时结束变成 %s" % (sec, tgt)
self.timingTips[src] = "§e正在蒸制中: 还需%d秒, 计时结束变成 %s" % (sec, tgt)
self.startTimerTips[src] = "§a开始蒸制, 计时结束变成 %s" % tgt
self.timingTips[src] = "§e正在蒸制中, 计时结束变成 %s" % tgt
# ---- 结果方块/物品 -> "下一步"可读提示(供转换/入笼提示追加) ----
# 例子: 饺子皮 -> "加入 猪肉馅、青菜碎"; 可颂面胚 -> "放在烤炉上等计时(60秒)结束变成 可颂"
@@ -140,9 +139,9 @@ class MianshiService(BlueFoxServerSystem):
sec = r.get("time", 60)
tgt = NAME_MAP.get(r["target"], r["target"])
if r.get("below") == [OVEN]:
_addTip(src, "放在烤炉上等计时(%d秒)结束变成 %s" % (sec, tgt))
_addTip(src, "放在烤炉上等计时结束变成 %s" % tgt)
else:
_addTip(src, "等计时(%d秒)结束变成 %s" % (sec, tgt))
_addTip(src, "等计时结束变成 %s" % tgt)
# ---- 计时源方块 -> 计时结束后的成品名(烤炉固定开始烤制提示用) ----
self.timerTargetName = {}
@@ -191,13 +190,11 @@ class MianshiService(BlueFoxServerSystem):
if blockName in KNEAD_COUNTERS and (not itemName or itemName == "minecraft:air"):
return self._handleKnead(blockName, playerId, pos, dim, key)
# ---- 烤炉固定: 胚/面糊/蛋液等放在烤炉上 -> 禁止右键转换, 固定开始烤制 ----
if blockName in OVEN_FIX_BLOCKS and self._belowIs(dim, pos, OVEN):
FeatureDispatcher.startTimerFor(blockName, dim, pos, playerId)
if self.checkCooldown(key, 0.4):
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a已启动计时(共60秒)")
return True
# ---- 烤炉固定: 胚/面糊/蛋液等放在烤炉上 → 不再通过右键启动计时。
# 【根因D】计时改自动开始: MianshiTimerService 的 tick 会按下方是否为烤炉
# 自动启动计时(OVEN_FIX_BLOCKS 的 autoStart, 参照烤乳猪机制)。这里不再拦截
# 右键启动, 也不挡玩家正常放置。空手右键成品取走逻辑保留在下方。
# (移除了原"startTimerFor + 提示已启动计时"分支)
# ---- 烤制成品取走: 空手右键成品(下方是烤炉) -> 成品掉落物, 烤炉不动 ----
if blockName in OVEN_RESULT_BLOCKS and self._belowIs(dim, pos, OVEN) \
@@ -210,12 +207,8 @@ class MianshiService(BlueFoxServerSystem):
playerId, "§a取走" + self._nameOf(blockName))
return True
# ---- 空手右键"蒸笼计时源"(蒸X_生): 下方是点燃炉灶 -> 开始/继续计时 ----
if (not itemName or itemName == "minecraft:air") and blockName in self.timerSources:
if not self.checkCooldown(key, 0.4):
return True
self._handleStartTimer(blockName, playerId, pos, dim)
return True
# ---- 空手右键"蒸笼计时源"(蒸X_生): 计时已改自动(tick 判定下方点燃炉灶),
# 不再通过空手右键启动; 此处不再拦截, 避免空手右键被吞影响后续操作。----
# ---- 常规转换 ----
recipe = self.findRecipe(blockName, itemDict)