稻谷bug修复 提示删除

This commit is contained in:
wenhe committed 2026-09-29 16:25:50 +08:00
1 parent 344fad19ac
commit bd2ebfb154
43 files changed
+700 -846

No files matched your search

@@ -34,11 +34,11 @@ ChujuService / ChujuTimerService 读取,FeatureDispatcher 通过方块名/物
# ============================================================================
STOVE_RULES = [
{"source": "rtdd:stove", "item": "rtdd:b_15",
"target": "rtdd:stove_1", "consume": 4, "tip": "§a炉灶加好了木条"},
"target": "rtdd:stove_1", "consume": 4, "tip": None},
{"source": "rtdd:stove_1", "item": "minecraft:flint_and_steel",
"target": "rtdd:stove_2", "tip": "§a炉灶点燃了"},
"target": "rtdd:stove_2", "tip": None},
{"source": "rtdd:stove_1", "item": "minecraft:fire_charge",
"target": "rtdd:stove_2", "consume": 1, "tip": "§a炉灶点燃了"},
"target": "rtdd:stove_2", "consume": 1, "tip": None},
]
# ============================================================================
@@ -48,16 +48,16 @@ STOVE_RULES = [
# ============================================================================
MEATBALLMAKER_RULES = [
{"source": "rtdd:meatballmaker_0", "item": "rtdd:dough_0",
"target": "rtdd:meatballmaker_1", "consume": 1, "tip": "§a加入面团"},
"target": "rtdd:meatballmaker_1", "consume": 1, "tip": None},
{"source": "rtdd:meatballmaker_1", "item": "rtdd:rawsquidwhiskersr",
"target": "rtdd:meatballmaker_2", "consume": 4, "tip": "§a加入鱿鱼须"},
"target": "rtdd:meatballmaker_2", "consume": 4, "tip": None},
{"source": "rtdd:meatballmaker_2", "item": "*any",
"target": "rtdd:meatballmaker_3", "consume": 1,
"below": ["rtdd:stove_2"], "tip": "§a加入配料,开始烹制丸子"},
"below": ["rtdd:stove_2"], "tip": None},
{"source": "rtdd:meatballmaker_5", "item": "rtdd:plate_0",
"target": "rtdd:meatballmaker_0", "consume": 1,
"dropItem": [{"name": "rtdd:plate_40", "count": 1}],
"tip": "§a取出了章鱼小丸子"},
"tip": None},
]
# 丸子机计时: _3(加料完成) -> 30s -> _4(半熟) -> 30s -> _5(熟)
@@ -144,7 +144,7 @@ OIL_CAN_USES = 16 # 油罐方块初始可用次数(用完变玻
# ============================================================================
STEAMER_RULES = [
{"source": "rtdd:steamer", "item": None,
"target": "rtdd:steamercover", "tip": "§a蒸笼盖上了盖子"},
"target": "rtdd:steamercover", "tip": None},
{"source": "rtdd:steamercover", "item": None,
"target": "rtdd:steamer", "tip": "§a蒸笼掀开了盖子"},
"target": "rtdd:steamer", "tip": None},
]
@@ -97,12 +97,12 @@ class ChujuService(BlueFoxServerSystem):
self.featureBlocks.add(src)
if src not in self.startTimerTips:
if src == "rtdd:meatballmaker_3":
self.startTimerTips[src] = "§a开始烹制(第1级/共2级): 还需60秒(每级30秒), 手持盘子出锅"
self.timingTips[src] = "§e正在烹制中(第1级/共2级): 还需60秒(每级30秒), 等待出锅"
self.startTimerTips[src] = None
self.timingTips[src] = None
else:
sec = r.get("time", 60)
self.startTimerTips[src] = "§a开始烹制(第2级/共2级): 还需%d秒, 手持盘子出锅" % sec
self.timingTips[src] = "§e正在烹制中(第2级/共2级): 还需%d秒, 等待出锅" % sec
self.startTimerTips[src] = None
self.timingTips[src] = None
# ---- 右键冷却表 ----
self.cooldown = {}
@@ -210,12 +210,8 @@ class ChujuService(BlueFoxServerSystem):
if uses <= 0:
self._clearOilUses(dim, pos)
self.replaceBlock(pos, dim, GLASS_TANK_ITEM, playerId) # 油罐用完变玻璃罐
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a锅铲蘸了油, 变成带油锅铲; 油罐用完了, 变成了玻璃罐")
else:
self._writeOilUses(dim, pos, uses)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a锅铲蘸了油, 变成带油锅铲; 油罐剩余 " + str(uses) + " 次")
return True
def _returnOil(self, playerId, key, dim, pos):
@@ -224,13 +220,10 @@ class ChujuService(BlueFoxServerSystem):
return True
uses = self._readOilUses(dim, pos)
if uses >= OIL_CAN_USES:
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§e油罐是满的, 不用还油")
return True
self._setCarriedItem(playerId, SPATULA, False) # 替换手持为锅铲(去附魔)
uses += 1
self._writeOilUses(dim, pos, uses)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a油还回油罐, 变回锅铲; 油罐剩余 " + str(uses) + " 次")
return True
def _oilWok(self, playerId, key, dim, pos):
@@ -239,8 +232,6 @@ class ChujuService(BlueFoxServerSystem):
return True
self._setCarriedItem(playerId, SPATULA, False) # 替换手持为锅铲
self.replaceBlock(pos, dim, OIL_PAN, playerId)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a炒锅添了油, 变成 炒锅(添油); 带油锅铲变回锅铲")
return True
def _setCarriedItem(self, playerId, itemName, enchanted):
@@ -290,16 +281,11 @@ class ChujuService(BlueFoxServerSystem):
try:
data = blockEntityDataComp.GetBlockEntityData(dim, pos)
if data and data["rtdd_tid"] == blockName:
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, self.timingTips.get(blockName, "§e已经在计时中"))
return
except Exception:
pass
started = FeatureDispatcher.startTimerFor(blockName, dim, pos, playerId)
if started:
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, self.startTimerTips.get(blockName, "§a已启动计时"))
else:
if not started:
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§c丸子机需要放在点燃的炉灶上才能开始烹制")
@@ -360,10 +346,6 @@ class ChujuService(BlueFoxServerSystem):
if recipe.get("giveItem"):
self.giveItem(playerId, recipe["giveItem"])
# 提示
if recipe.get("tip"):
comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"])
# ============================================================================
# 四、搅拌器(肉/牛奶/蛋/鸡蛋牛奶/奶油/蛋液)
# ============================================================================
@@ -380,8 +362,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, 2)
self.replaceBlock(pos, dim, "rtdd:beatermeat_0", playerId)
self._writeMeat(dim, pos, itemName)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a放入肉,空手右键搅打")
return True
if itemName == MILK_ITEM:
if not self.checkCooldown(key, 0.5):
@@ -389,7 +369,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, 1)
self.giveItem(playerId, BUCKET_ITEM)
self.replaceBlock(pos, dim, "rtdd:beatermike_0", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a放入牛奶")
return True
if itemName == EGG_ITEM:
if (itemDict.get("count") or 0) < 3:
@@ -399,8 +378,6 @@ class ChujuService(BlueFoxServerSystem):
return True
self.consumeItem(playerId, itemDict, 3)
self.replaceBlock(pos, dim, "rtdd:beater_custard_0", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a放入鸡蛋,空手右键搅打")
return True
return False
@@ -412,8 +389,6 @@ class ChujuService(BlueFoxServerSystem):
meat = self._readMeat(pos, dim)
self.replaceBlock(pos, dim, "rtdd:beatermeat_1", playerId)
self._writeMeat(dim, pos, meat)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a搅打完成,空手取出肉馅")
return True
return False
@@ -426,7 +401,6 @@ class ChujuService(BlueFoxServerSystem):
if meatball:
self.dropItems(dim, pos, [{"name": meatball, "count": 1}])
self.replaceBlock(pos, dim, "rtdd:beater", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a取出了肉馅")
return True
return False
@@ -438,9 +412,6 @@ class ChujuService(BlueFoxServerSystem):
target = "rtdd:beatermike_1" if blockName == "rtdd:beatermike_0" \
else "rtdd:beatermike_2"
self.replaceBlock(pos, dim, target, playerId)
if target == "rtdd:beatermike_2":
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a牛奶搅打完成,加入鸡蛋做鸡蛋牛奶")
return True
return False
@@ -451,8 +422,6 @@ class ChujuService(BlueFoxServerSystem):
return True
self.consumeItem(playerId, itemDict, 1)
self.replaceBlock(pos, dim, "rtdd:beater_eggsandmilk_0", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a加入鸡蛋,空手搅打做鸡蛋牛奶")
return True
return False
@@ -464,9 +433,6 @@ class ChujuService(BlueFoxServerSystem):
target = "rtdd:beater_custard_1" if blockName == "rtdd:beater_custard_0" \
else "rtdd:beater_custard_2"
self.replaceBlock(pos, dim, target, playerId)
if target == "rtdd:beater_custard_2":
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a蛋搅打完成,可加木碗取奶油或加牛奶做鸡蛋牛奶")
return True
return False
@@ -478,7 +444,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, 1)
self.dropItems(dim, pos, [{"name": CREAM_ITEM, "count": 1}])
self.replaceBlock(pos, dim, "rtdd:beater", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a取出了奶油")
return True
if itemName == MILK_ITEM:
if not self.checkCooldown(key, 0.5):
@@ -486,8 +451,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, 1)
self.giveItem(playerId, BUCKET_ITEM)
self.replaceBlock(pos, dim, "rtdd:beater_eggsandmilk_0", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a加入牛奶,空手搅打做鸡蛋牛奶")
return True
return False
@@ -499,9 +462,6 @@ class ChujuService(BlueFoxServerSystem):
target = "rtdd:beater_eggsandmilk_1" \
if blockName == "rtdd:beater_eggsandmilk_0" else "rtdd:beater_eggsandmilk_2"
self.replaceBlock(pos, dim, target, playerId)
if target == "rtdd:beater_eggsandmilk_2":
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a鸡蛋牛奶完成,可加盘子取蛋液")
return True
return False
@@ -513,7 +473,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, 1)
self.dropItems(dim, pos, [{"name": EGG_CUSTARD_ITEM, "count": 1}])
self.replaceBlock(pos, dim, "rtdd:beater", playerId)
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a取出了蛋液半成品")
return True
return False
@@ -575,8 +534,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, WHEAT_COUNT)
self._writeMillMat(dim, pos, "wheat")
self._writeMill(dim, pos, 0)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a加入小麦,空手右键研磨")
return True
if itemName == SOYBEAN_ITEM:
if (itemDict.get("count") or 0) < SOYBEAN_COUNT:
@@ -588,8 +545,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, SOYBEAN_COUNT)
self._writeMillMat(dim, pos, "soybean")
self._writeMill(dim, pos, 0)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a加入黄豆,空手右键研磨")
return True
# 空磨 + 空手: 无操作(交还默认); 完成态 + 手持非材料(玻璃罐/空手取粉) 不在此拦住
if isEmpty and (not itemName or itemName == "minecraft:air"):
@@ -604,10 +559,6 @@ class ChujuService(BlueFoxServerSystem):
newProg = prog + 1
self._rotateMill(pos, dim)
self._writeMill(dim, pos, newProg)
if newProg >= STONEMILL_GRIND_COUNT:
tip = "§a研磨完成,可空手取出 面粉" if mat == "wheat" \
else "§a研磨完成,可加玻璃罐取油"
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
return True
# ---- 完成: 取成品 ----
@@ -620,8 +571,6 @@ class ChujuService(BlueFoxServerSystem):
return True
self.dropItems(dim, pos, [{"name": FLOUR_ITEM, "count": 1}])
self._clearMill(dim, pos)
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a取出了面粉")
return True
# 黄豆: + 玻璃罐 -> 油罐
if itemName == GLASS_TANK_ITEM:
@@ -630,7 +579,6 @@ class ChujuService(BlueFoxServerSystem):
self.consumeItem(playerId, itemDict, 1)
self.dropItems(dim, pos, [{"name": OIL_CAN_ITEM, "count": 1}])
self._clearMill(dim, pos)
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a取出了油罐")
return True
return False
@@ -144,8 +144,6 @@ class ChujuTimerService(BlueFoxServerSystem):
return
self.replaceBlock(pos, dim, recipe["target"], None)
self._clearTimerData(dim, pos)
if recipe.get("doneTip"):
self._notifyIfOnline(data["rtdd_tp"], recipe["doneTip"])
except Exception:
pass
@@ -201,6 +199,7 @@ class ChujuTimerService(BlueFoxServerSystem):
ids = comp.CreateGame(LevelId).GetAllPlayerIds()
if playerId in ids:
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
except Exception:
pass