稻谷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

@@ -39,11 +39,11 @@ ARROWBARREL_RULES = [
{"source": "rtdd:arrowbarrel_0", "item": "*arrow",
"target": "rtdd:arrowbarrel_1", "arrowMode": "store",
"record": "count", "maxCount": 32,
"tip": "§a已存入箭"},
"tip": None},
{"source": "rtdd:arrowbarrel_1", "item": None,
"target": "rtdd:arrowbarrel_0", "arrowMode": "retrieve",
"record": "count",
"tip": "§a取回了箭"},
"tip": None},
]
# ============================================================
@@ -56,31 +56,31 @@ ARROWBARREL_RULES = [
FLUME_RULES = [
# 加水/取水
{"source": "rtdd:flume_0", "item": None,
"target": "rtdd:flume_1", "tip": "§a水槽加满了水"},
"target": "rtdd:flume_1", "tip": None},
{"source": "rtdd:flume_1", "item": "minecraft:bucket",
"target": "rtdd:flume_0", "consume": 1,
"giveItem": "minecraft:water_bucket", "tip": "§a取走了水, 水桶装满水"},
"giveItem": "minecraft:water_bucket", "tip": None},
# 满水空手右键 -> 直接放空(倒掉水)
{"source": "rtdd:flume_1", "item": None,
"target": "rtdd:flume_0", "tip": "§a水槽已放空"},
"target": "rtdd:flume_0", "tip": None},
# 放脏盘子(需满水)
{"source": "rtdd:flume_1", "item": "rtdd:plate_0a",
"target": "rtdd:flume_2", "consume": 1, "tip": "§a放入1个脏盘子"},
"target": "rtdd:flume_2", "consume": 1, "tip": None},
{"source": "rtdd:flume_2", "item": "rtdd:plate_0a",
"target": "rtdd:flume_3", "consume": 1, "tip": "§a放入1个脏盘子"},
"target": "rtdd:flume_3", "consume": 1, "tip": None},
{"source": "rtdd:flume_3", "item": "rtdd:plate_0a",
"target": "rtdd:flume_4", "consume": 1, "tip": "§a放入1个脏盘子"},
"target": "rtdd:flume_4", "consume": 1, "tip": None},
{"source": "rtdd:flume_4", "item": "rtdd:plate_0a",
"target": "rtdd:flume_5", "consume": 1, "tip": "§a放入1个脏盘子"},
"target": "rtdd:flume_5", "consume": 1, "tip": None},
# 取脏盘子(洗好取出的是 盘子 rtdd:plate_0)
{"source": "rtdd:flume_5", "item": None,
"target": "rtdd:flume_4", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:flume_4", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:flume_4", "item": None,
"target": "rtdd:flume_3", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:flume_3", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:flume_3", "item": None,
"target": "rtdd:flume_2", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:flume_2", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:flume_2", "item": None,
"target": "rtdd:flume_0", "giveItem": "rtdd:plate_0", "tip": "§a取回最后1个盘子"},
"target": "rtdd:flume_0", "giveItem": "rtdd:plate_0", "tip": None},
]
# ============================================================
@@ -90,25 +90,25 @@ FLUME_RULES = [
# ============================================================
TRAYRACKS_RULES = [
{"source": "rtdd:trayracks_1", "item": "rtdd:plate_0",
"target": "rtdd:trayracks_2", "consume": 1, "tip": "§a放上1个盘子"},
"target": "rtdd:trayracks_2", "consume": 1, "tip": None},
{"source": "rtdd:trayracks_2", "item": "rtdd:plate_0",
"target": "rtdd:trayracks_3", "consume": 1, "tip": "§a放上1个盘子"},
"target": "rtdd:trayracks_3", "consume": 1, "tip": None},
{"source": "rtdd:trayracks_3", "item": "rtdd:plate_0",
"target": "rtdd:trayracks_4", "consume": 1, "tip": "§a放上1个盘子"},
"target": "rtdd:trayracks_4", "consume": 1, "tip": None},
{"source": "rtdd:trayracks_4", "item": "rtdd:plate_0",
"target": "rtdd:trayracks_5", "consume": 1, "tip": "§a放上1个盘子"},
"target": "rtdd:trayracks_5", "consume": 1, "tip": None},
{"source": "rtdd:trayracks_5", "item": "rtdd:plate_0",
"target": "rtdd:trayracks_6", "consume": 1, "tip": "§a放上1个盘子"},
"target": "rtdd:trayracks_6", "consume": 1, "tip": None},
{"source": "rtdd:trayracks_6", "item": None,
"target": "rtdd:trayracks_5", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:trayracks_5", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:trayracks_5", "item": None,
"target": "rtdd:trayracks_4", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:trayracks_4", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:trayracks_4", "item": None,
"target": "rtdd:trayracks_3", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:trayracks_3", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:trayracks_3", "item": None,
"target": "rtdd:trayracks_2", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:trayracks_2", "giveItem": "rtdd:plate_0", "tip": None},
{"source": "rtdd:trayracks_2", "item": None,
"target": "rtdd:trayracks_1", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"},
"target": "rtdd:trayracks_1", "giveItem": "rtdd:plate_0", "tip": None},
]
# ============================================================
@@ -118,22 +118,22 @@ TRAYRACKS_RULES = [
# ============================================================
CUPBOARD_RULES = [
{"source": "rtdd:cupboard_0", "item": "rtdd:bowlasoup",
"target": "rtdd:cupboard_1", "consume": 1, "tip": "§a放入1个木碗"},
"target": "rtdd:cupboard_1", "consume": 1, "tip": None},
{"source": "rtdd:cupboard_1", "item": "rtdd:bowlasoup",
"target": "rtdd:cupboard_2", "consume": 1, "tip": "§a放入1个木碗"},
"target": "rtdd:cupboard_2", "consume": 1, "tip": None},
{"source": "rtdd:cupboard_2", "item": "rtdd:bowlasoup",
"target": "rtdd:cupboard_3", "consume": 1, "tip": "§a放入1个木碗"},
"target": "rtdd:cupboard_3", "consume": 1, "tip": None},
{"source": "rtdd:cupboard_3", "item": "rtdd:bowlasoup",
"tip": "§c碗柜已满!"},
{"source": "rtdd:cupboard_3", "item": None,
"target": "rtdd:cupboard_2", "dropItem": [{"name": "rtdd:bowlasoup", "count": 1}],
"tip": "§a取回1个木碗"},
"tip": None},
{"source": "rtdd:cupboard_2", "item": None,
"target": "rtdd:cupboard_1", "dropItem": [{"name": "rtdd:bowlasoup", "count": 1}],
"tip": "§a取回1个木碗"},
"tip": None},
{"source": "rtdd:cupboard_1", "item": None,
"target": "rtdd:cupboard_0", "dropItem": [{"name": "rtdd:bowlasoup", "count": 1}],
"tip": "§a取回最后1个木碗"},
"tip": None},
]
# ============================================================
@@ -171,19 +171,19 @@ for _i in range(len(_BOOKCASE_CHAIN) - 1):
BOOKCASE_RULES.append({
"source": _src, "item": "minecraft:book", "target": _dst,
"consume": 1, "record": "stack", "maxCount": 13,
"tip": "§a放入1本书",
"tip": None,
})
BOOKCASE_RULES.append({
"source": _src, "item": "minecraft:enchanted_book", "target": _dst,
"consume": 1, "record": "stack", "maxCount": 13,
"tip": "§a放入1本附魔书",
"tip": None,
})
# 取回: 第 i 级 -> 第 i-1 级, 空手, 后放先取
for _i in range(len(_BOOKCASE_CHAIN) - 1, 0, -1):
_src, _dst = _BOOKCASE_CHAIN[_i], _BOOKCASE_CHAIN[_i - 1]
BOOKCASE_RULES.append({
"source": _src, "item": None, "target": _dst,
"record": "stack", "tip": "§a取回了书",
"record": "stack", "tip": None,
})
# ============================================================
@@ -208,14 +208,14 @@ for _i in range(len(_POTIONRACK_CHAIN) - 1):
POTIONRACK_RULES.append({
"source": _src, "item": "*potion", "target": _dst,
"consume": 1, "record": "stack", "maxCount": 3,
"tip": "§a放入1瓶药水",
"tip": None,
})
# 取回: 第 i 级 -> 第 i-1 级, 空手, 后放先取
for _i in range(len(_POTIONRACK_CHAIN) - 1, 0, -1):
_src, _dst = _POTIONRACK_CHAIN[_i], _POTIONRACK_CHAIN[_i - 1]
POTIONRACK_RULES.append({
"source": _src, "item": None, "target": _dst,
"record": "stack", "tip": "§a取回了1瓶药水",
"record": "stack", "tip": None,
})
# 满架: 手持药水右键三瓶满的药水架 -> 提示已满, 拦截默认行为(防止误喝药水)
POTIONRACK_RULES.append({
@@ -292,10 +292,10 @@ KITCHENRACK_BLOCK_ITEMS = {
RECORDPLAYER_RULES = [
{"source": "rtdd:b_108", "item": "*music_disc",
"target": "rtdd:b_109", "consume": 1, "discPut": True,
"tip": "§a放入了唱片"},
"tip": None},
{"source": "rtdd:b_109", "item": None,
"target": "rtdd:b_108", "discGet": True,
"tip": "§a取回了唱片"},
"tip": None},
]
# ============================================================
@@ -306,17 +306,17 @@ RECORDPLAYER_RULES = [
# ============================================================
TRASHBIN_RULES = [
{"source": "rtdd:storage_buckets", "item": None,
"target": "rtdd:rubbish_bin_2", "tip": "§a垃圾桶已打开"},
"target": "rtdd:rubbish_bin_2", "tip": None},
{"source": "rtdd:storage_buckets", "item": "*any",
"target": "rtdd:rubbish_bin_2", "tip": "§a垃圾桶已打开"},
"target": "rtdd:rubbish_bin_2", "tip": None},
{"source": "rtdd:rubbish_bin_2", "item": None,
"target": "rtdd:storage_buckets", "tip": "§a垃圾桶已关闭"},
"target": "rtdd:storage_buckets", "tip": None},
{"source": "rtdd:rubbish_bin_2", "item": "*any",
"target": "rtdd:b_160", "clearHand": True, "tip": "§a已丢入垃圾桶"},
"target": "rtdd:b_160", "clearHand": True, "tip": None},
{"source": "rtdd:b_160", "item": None,
"target": "rtdd:storage_buckets", "tip": "§a垃圾桶已关闭"},
"target": "rtdd:storage_buckets", "tip": None},
{"source": "rtdd:b_160", "item": "*any",
"target": "rtdd:storage_buckets", "tip": "§a垃圾桶已关闭"},
"target": "rtdd:storage_buckets", "tip": None},
]
# ============================================================
@@ -326,11 +326,11 @@ TRASHBIN_RULES = [
# ============================================================
FIREPLACE_RULES = [
{"source": "rtdd:b_88", "item": "rtdd:b_15",
"target": "rtdd:b_89", "consume": 4, "tip": "§a壁炉加好了柴火"},
"target": "rtdd:b_89", "consume": 4, "tip": None},
{"source": "rtdd:b_89", "item": "minecraft:flint_and_steel",
"target": "rtdd:b_90", "tip": "§a壁炉点燃了"},
"target": "rtdd:b_90", "tip": None},
{"source": "rtdd:b_89", "item": "minecraft:fire_charge",
"target": "rtdd:b_90", "consume": 1, "tip": "§a壁炉点燃了"},
"target": "rtdd:b_90", "consume": 1, "tip": None},
]
# ============================================================
@@ -317,10 +317,6 @@ class FurnitureService(BlueFoxServerSystem):
# 保存记录到新方块(延迟兜底)
self._saveRecordDelayed(pos, dim, record)
if recipe.get("tip"):
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a存入了 %d 只箭 (共%d/32)" % (storeCount, record["count"]))
elif mode == "retrieve":
# ---- 取箭 ----
record = self._loadRecord(pos, dim)
@@ -330,9 +326,11 @@ class FurnitureService(BlueFoxServerSystem):
retCount = record["count"]
retItemName = record["itemName"]
retAux = record.get("aux", 0)
retUserData = record.get("userData")
# 掉落物形式返回箭(根因C)
self._dropItemDict(dim, pos, {"itemName": retItemName, "count": retCount, "auxValue": retAux})
# 掉落物形式返回箭(根因C); 药水箭带 userData 还原药水效果
self._dropItemDict(dim, pos, {"itemName": retItemName, "count": retCount,
"aux": retAux, "userData": retUserData})
# 替换方块
if recipe.get("target"):
@@ -341,10 +339,6 @@ class FurnitureService(BlueFoxServerSystem):
# 清空记录
self._clearRecord(pos, dim)
if recipe.get("tip"):
comp.CreateMsg(playerId).NotifyOneMessage(
playerId, "§a取回了 %d 只箭" % retCount)
# ============================================================================
# 四、厨具架通用逻辑(组合由 stack 记录计算, 与放入顺序无关, 取回后放先取)
# ============================================================================
@@ -382,7 +376,6 @@ class FurnitureService(BlueFoxServerSystem):
self._saveRecordDelayed(pos, dim, {"stack": self._namesToObjs(stackNames)})
else:
self._clearRecord(pos, dim)
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a取回了厨具")
return
# ---- 放入: 手持厨具 ----
@@ -402,7 +395,6 @@ class FurnitureService(BlueFoxServerSystem):
stackNames.append(itemName)
self.replaceBlock(pos, dim, target, playerId)
self._saveRecordDelayed(pos, dim, {"stack": self._namesToObjs(stackNames)})
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a放上了厨具")
def _rackTarget(self, itemNames):
"""根据厨具物品名列表计算厨具架目标方块(0件=空, 1件=单件, 2件=组合, 顺序无关)"""
@@ -488,10 +480,6 @@ class FurnitureService(BlueFoxServerSystem):
self._dropItemDict(dim, pos,
{"itemName": _gItem, "count": recipe.get("giveCount", 1), "auxValue": 0})
# ---- 转换成功提示 ----
if recipe.get("tip"):
comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"])
# ============================================================================
# 五、方块记录:count/stack 读写(箭桶/书柜, 字段 rtdd_sw*)
# ============================================================================
@@ -669,13 +657,16 @@ class FurnitureService(BlueFoxServerSystem):
pass
def _dropItemDict(self, dim, pos, itemDict):
"""以掉落物形式生成一个物品(唱片取回)"""
"""以掉落物形式生成一个物品(唱片取回 / 箭桶取回等)"""
try:
self.CreateEngineItemEntity(
{"itemName": itemDict["itemName"],
"count": 1,
"auxValue": itemDict.get("aux", 0)},
dim, (pos[0], pos[1] + 0.5, pos[2]))
outDict = {"itemName": itemDict["itemName"],
"count": itemDict.get("count", 1),
# 兼容两种 key: 调用处既有用 aux 也有用 auxValue
"auxValue": itemDict.get("aux", itemDict.get("auxValue", 0))}
# 药水箭等带 userData(item额外数据, 如药水NBT)的物品: 一并重建到掉落物
if itemDict.get("userData"):
outDict["userData"] = itemDict["userData"]
self.CreateEngineItemEntity(outDict, dim, (pos[0], pos[1] + 0.5, pos[2]))
except Exception:
pass