diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py index 176114f..b05d299 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py @@ -180,6 +180,15 @@ try: except Exception: pass +# ---- 乡野自然(种葡萄: 手持葡萄右键支杆): NaturalData.GRAPE_PLANT ---- +# 葡萄是食物(eat 动画), 右键支杆会被原版当"吃/使用"前摇, 需纳入 BLOCKUse 取消消闪, +# 机制与烧烤上杆(cod/salmon 同为食物右键支杆)完全一致。 +try: + from ..ziran.NaturalData import GRAPE_PLANT as NATURAL_GRAPE_PLANT + _BLOCK_USE_TABLES.append(NATURAL_GRAPE_PLANT) +except Exception: + pass + # ---- 原版放置/盘子转换 (itemUseOn, surface=相邻放置 / source=盘子) ---- try: from ..yuanbanfangzhi.YuanbanData import ( @@ -352,9 +361,12 @@ ITEM_USE_ON_CANCEL = AUTO_CANCEL | SUSHI_CANCEL | COATING_CANCEL # 七、纯手持物品取消: 只看手持item (不做方块匹配) # ============================================================================ -# ---- 原版相邻放置(YuanbanService ITEM_USE_ON_RULES) + 水稻种植(Natural RICE_PLANT) ---- -# 手持这些"非方块食品/种子"右键任意方块表面, 都在相邻空位摆放对应切配方块。 -# 它们本身不是可放置方块物品(放的是另一块), 但右键时会默认"吃/用", 需取消。 +# ---- 原版相邻放置(YuanbanService ITEM_USE_ON_RULES) ---- +# 手持这些"非方块食品"右键任意方块表面, 都在相邻空位摆放对应切配方块。 +# 他们本身不是可放置方块物品(放的是另一块), 但右键时会默认"吃/用", 需取消。 +# 注: 稻谷(rtdd:rice_seeds)不在此列 —— 它已改用物品 JSON 的 minecraft:seed 组件 +# 由引擎原生种植(plant_at=farmland, crop_result=riceseedlingsb), 客户端不拦截, +# 否则会吞掉引擎的原生种植行为。 PLACE_ITEMS = { "minecraft:chicken", "minecraft:salmon", @@ -364,7 +376,6 @@ PLACE_ITEMS = { "minecraft:potato", "rtdd:qingcai", "rtdd:scallions", - "rtdd:rice_seeds", # 稻谷: 右键耕地相邻放置水稻苗(RICE_PLANT) } # ---- 总食用 手持直接吃 (Shiyongfood TRY_USE_RULES) ---- diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py index d765f34..6db42a8 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py @@ -51,6 +51,12 @@ GRAPE_HARVEST = { "tip": "§a取出了3个葡萄", } +# 葡萄种植: 手持葡萄右键支杆 -> 葡萄藤_1(之后按原版 tick 随机生长, 无提示) +GRAPE_PLANT = { + "source": "rtdd:b_34", "item": "rtdd:grape", + "target": "rtdd:grapebushes_1", "consume": 1, +} + # ============================================================================ # 三、水稻收获(左键破坏掉落, 类似原版作物) # 水稻方块被左键破坏 -> 掉落稻谷; 成熟(riceseedlingsd)额外掉大米 @@ -63,13 +69,19 @@ RICE_BLOCKS = [ RICE_SEED_ITEM = "rtdd:rice_seeds" # 破坏掉落稻谷 RICE_CROP_ITEM = "rtdd:brownrice" # 成熟额外掉落大米 -# 水稻生长: 改用"原版 tick 概率生长"(每 block tick 一定概率长大一级) + 骨粉右键 -# RICE_BLOCKS 顺序即生长阶段: [0]刚种 -> [1]生长中 -> [2]成熟 -RICE_GROW_PROB = 0.001 # 每 block tick 生长一级的概率(原版随机式; 实测约20tick/秒, 每级≈50秒, 满熟≈1分40秒) -BONE_MEAL = "minecraft:bone_meal" # 骨粉(右键概率增加生长) +# 水稻/葡萄藤 生长: 都用"原版 tick 概率生长"(每 block tick 一定概率长大一级) + 骨粉右键 +# 葡萄藤生长: 走"原版 tick 概率生长"代码(每 block tick 一定概率长大一级) + 骨粉右键。 +# 稻谷(rice_seeds)已改用物品 JSON 的 minecraft:seed + 方块 base_block=custom_crop_block +# 的 netease:transform 由原版随机刻驱动生长(见 netease_blocks/riceseedlingsb,c.json), +# 不在此代码生长链里, 避免双重驱动。 +GROW_CHAIN = { + "rtdd:grapebushes_1": "rtdd:grapebushes_2", # 葡萄藤_1 -> _2 +} # 生长链: 当前方块 -> 长大一级后的方块, 供代码 tick 概率生长 + 骨粉催熟 +GROW_PROB = 0.0003 # 每 block tick 长大一级的概率(原版随机式; 每级≈3分钟, 满熟数分钟~十来分钟) +BONE_MEAL = "minecraft:bone_meal" # 骨粉(右键对生长链方块催熟1级) # 汇总: 乡野自然右键切换规则 -NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST] +NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST, GRAPE_PLANT] # ============================================================================ # 四、计时转换 (果树结果 / 葡萄藤生长 / 水稻生长, 均 autoStart 自动生长) @@ -92,19 +104,12 @@ NATURAL_TIMERS = [ "time": 60, "autoStart": True}, {"source": "rtdd:tangerine_1", "target": "rtdd:tangerine_2", "time": 60, "autoStart": True, "doneTip": "§e橘子熟了"}, - # 葡萄藤: 藤_1 -> 藤_2 - {"source": "rtdd:grapebushes_1", "target": "rtdd:grapebushes_2", - "time": 180, "autoStart": True, "doneTip": "§e葡萄熟了"}, - # 水稻已改用"原版 tick 概率生长(每block tick随机长大一级)+骨粉", 见 NaturalTimerService._riceTickProcess, - # 不再走这里的秒式时长计时, 故从 NATURAL_TIMERS 移除 + # 水稻/葡萄藤 已改用"原版 tick 概率生长(每block tick随机长大一级)+骨粉", + # 见 NaturalTimerService._growBlockProcess / GROW_CHAIN, 不再走这里的秒式时长, 故都不在此 ] # ============================================================================ -# 五、水稻种植(手持稻谷右键耕地, 在耕地上方放置水稻刚种下) -# ============================================================================ -RICE_PLANT = { - "item": "rtdd:rice_seeds", # 稻谷(手持) - "surface": "minecraft:farmland", # 必须右键原版耕地 - "target": "rtdd:riceseedlingsb", # 放置水稻刚种下 - "consume": 1, -} \ No newline at end of file +# 五、水稻种植:已交由物品定义 JSON 的 minecraft:seed 组件处理 +# (netease_items_beh/rtdd_rice_seeds.json: plant_at=[farmland], +# crop_result=rtdd:riceseedlingsb)。引擎原生支持"手持稻谷右键耕地"种植。 +# ============================================================================ \ No newline at end of file diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py index b1f3d41..c59239c 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py @@ -33,7 +33,7 @@ from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem from ....BlueFoxTools.ToolsConfig import LevelId # ---- 只导入乡野自然自己的数据库 ---- -from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT, RICE_BLOCKS, RICE_SEED_ITEM, RICE_CROP_ITEM, BONE_MEAL +from ..NaturalData import NATURAL_SWITCHES, RICE_BLOCKS, RICE_SEED_ITEM, RICE_CROP_ITEM, BONE_MEAL, GROW_CHAIN # ---- 统一分发器 ---- from ...service.FeatureDispatcher import FeatureDispatcher @@ -54,9 +54,13 @@ class NaturalService(BlueFoxServerSystem): for r in NATURAL_SWITCHES: self.switchRecipes[(r["source"], r.get("item"))] = r self.featureBlocks.add(r["source"]) - # 水稻方块: 只为接收"左键破坏掉落"事件注册(右键无规则, handleBlockUse 会返回 False) + # 水稻方块: 只为接收"左键破坏掉落"事件注册; 右键无规则(返回 False), + # 其生长/骨粉由原版 base_block=custom_crop_block 的 transform 处理。 for b in RICE_BLOCKS: self.featureBlocks.add(b) + # 葡萄藤_1: 供"手持骨粉右键催熟"路由进来(走代码 GROW_CHAIN)。 + for b in GROW_CHAIN.keys(): + self.featureBlocks.add(b) # ---- 右键冷却表 ---- self.cooldown = {} @@ -72,10 +76,6 @@ class NaturalService(BlueFoxServerSystem): """返回本功能管辖的所有右键方块名集合(右键路由用)""" return self.featureBlocks - def getItemUseOnRules(self): - """返回"手持物品右键方块表面"的规则: 稻谷(rice_seeds) → 种植水稻""" - return {RICE_PLANT["item"]: True} - def handleBlockUse(self, args): """由 FeatureDispatcher 转发的右键方块入口(柴火/葡萄收获/水稻收获)""" blockName = args.get("blockName") @@ -90,8 +90,9 @@ class NaturalService(BlueFoxServerSystem): recipe = self.findRecipe(blockName, itemDict) if not recipe: - # 骨粉右键水稻 -> 概率催熟(还原原版农作物施肥) - if itemName == BONE_MEAL and blockName in RICE_BLOCKS: + # 骨粉右键葡萄藤 -> 催熟一级(葡萄藤走代码 GROW_CHAIN)。 + # 稻谷走原版 transform(引擎自带骨粉加速), 由 findRecipe 无规则则交给原版, 不在此拦。 + if itemName == BONE_MEAL and blockName in GROW_CHAIN: if self.checkCooldown(key, 0.3): self._applyBoneMeal(playerId, pos, dim, blockName, itemDict) return True @@ -144,48 +145,6 @@ class NaturalService(BlueFoxServerSystem): pass return True - def handleItemUseOn(self, args): - """由 FeatureDispatcher 转发的"手持物品右键方块表面"入口(稻谷种水稻)""" - itemName = args.get("itemName") - 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() - - if itemName != RICE_PLANT["item"]: - return False - - # 被点方块必须是原版耕地 - try: - cur = comp.CreateBlockInfo(LevelId).GetBlockNew((x, y, z), dim) - if not cur or cur.get("name") != RICE_PLANT["surface"]: - 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, RICE_PLANT.get("consume", 1)) - - # 放置水稻刚种下 - self.replaceBlock(targetPos, dim, RICE_PLANT["target"], playerId) - return True - # ============================================================================ # 二、规则匹配(精确 + 空手 fallback) # ============================================================================ @@ -221,13 +180,14 @@ class NaturalService(BlueFoxServerSystem): comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"]) def _applyBoneMeal(self, playerId, pos, dim, blockName, itemDict): - """骨粉催熟水稻: 消耗1个骨粉, 让水稻长大一级(不越级, 到成熟为止), 无提示""" + """骨粉催熟葡萄藤: 消耗1个骨粉, 沿 GROW_CHAIN 长大一级(不越级), 无提示。 + 稻谷骨粉由原版 transform 处理, 不经此。""" try: - if blockName == RICE_BLOCKS[-1]: - return # 已成熟, 不再消耗 - index = RICE_BLOCKS.index(blockName) + target = GROW_CHAIN.get(blockName) + if not target: + return # 不在生长链上(已是最终形态), 不消耗 self.consumeItem(playerId, itemDict, 1) - self.replaceBlock(pos, dim, RICE_BLOCKS[index + 1], playerId) + self.replaceBlock(pos, dim, target, playerId) except Exception: pass diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalTimerService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalTimerService.py index 0cb45ee..0fc8dc8 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalTimerService.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalTimerService.py @@ -38,7 +38,7 @@ from ....BlueFoxTools.ToolsConfig import LevelId blockEntityDataComp = comp.CreateBlockEntityData(LevelId) # ---- 只导入乡野自然自己的数据库 ---- -from ..NaturalData import NATURAL_TIMERS, RICE_BLOCKS, RICE_GROW_PROB +from ..NaturalData import NATURAL_TIMERS, GROW_CHAIN, GROW_PROB # ---- 统一分发器 ---- from ...service.FeatureDispatcher import FeatureDispatcher @@ -66,7 +66,7 @@ class NaturalTimerService(BlueFoxServerSystem): def getTimerBlocks(self): """返回本功能的所有"计时源方块"集合(tick 路由用)""" blocks = set(self.naturalTimers.keys()) - blocks.update(RICE_BLOCKS) # 水稻 tick 概率生长也要路由进来 + blocks.update(GROW_CHAIN.keys()) # 葡萄藤 tick 概率生长路由进来(稻谷已改用原版 transform) return blocks def handleBlockEntityTick(self, args): @@ -99,9 +99,9 @@ class NaturalTimerService(BlueFoxServerSystem): def _tickProcess(self, dim, pos, blockName): try: - # 水稻: 走"原版 tick 概率生长"(不是秒式时长) - if blockName in RICE_BLOCKS: - self._riceTickProcess(dim, pos, blockName) + # 水稻/葡萄藤: 走"原版 tick 概率生长"(不是秒式时长) + if blockName in GROW_CHAIN: + self._growBlockProcess(dim, pos, blockName) return recipe = self.naturalTimers.get(blockName) if not recipe: @@ -129,14 +129,14 @@ class NaturalTimerService(BlueFoxServerSystem): except Exception: pass - def _riceTickProcess(self, dim, pos, blockName): - """水稻原版式 tick 生长: 每个 block tick 以 RICE_GROW_PROB 概率长大一级(到成熟为止)""" + def _growBlockProcess(self, dim, pos, blockName): + """水稻/葡萄藤 原版式 tick 生长: 每个 block tick 以 GROW_PROB 概率沿 GROW_CHAIN 长大一级""" try: - index = RICE_BLOCKS.index(blockName) - if index >= len(RICE_BLOCKS) - 1: - return # 已成熟 - if random.random() < RICE_GROW_PROB: - self.replaceBlock(pos, dim, RICE_BLOCKS[index + 1], None) + target = GROW_CHAIN.get(blockName) + if not target: + return + if random.random() < GROW_PROB: + self.replaceBlock(pos, dim, target, None) except Exception: pass diff --git a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json index 01be514..078af28 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json @@ -3,8 +3,9 @@ "minecraft:block": { "description": { "identifier": "rtdd:riceseedlingsb", - "register_to_creative_menu": true, - "category": "xy_natural" + "register_to_creative_menu": false, + "category": "xy_natural", + "base_block": "custom_crop_block" }, "components": { "netease:aabb": { @@ -33,10 +34,17 @@ "netease:face_directional": { "type": "direction" }, - "netease:block_entity": { - "client_tick": false, - "movable": false, - "tick": true + "netease:transform": { + "conditions": { + "brightness": { + "min": 9, + "max": 15 + }, + "random_tick_count": { + "value": 3 + } + }, + "result": "rtdd:riceseedlingsc" } } } diff --git a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json index 5055c46..10ed04f 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json @@ -3,8 +3,9 @@ "minecraft:block": { "description": { "identifier": "rtdd:riceseedlingsc", - "register_to_creative_menu": true, - "category": "xy_natural" + "register_to_creative_menu": false, + "category": "xy_natural", + "base_block": "custom_crop_block" }, "components": { "netease:aabb": { @@ -33,10 +34,17 @@ "netease:face_directional": { "type": "direction" }, - "netease:block_entity": { - "client_tick": false, - "movable": false, - "tick": true + "netease:transform": { + "conditions": { + "brightness": { + "min": 9, + "max": 15 + }, + "random_tick_count": { + "value": 3 + } + }, + "result": "rtdd:riceseedlingsd" } } } diff --git a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json index f78a73b..d7c5bbe 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json @@ -3,8 +3,9 @@ "minecraft:block": { "description": { "identifier": "rtdd:riceseedlingsd", - "register_to_creative_menu": true, - "category": "xy_natural" + "register_to_creative_menu": false, + "category": "xy_natural", + "base_block": "custom_crop_block" }, "components": { "netease:aabb": { @@ -32,11 +33,6 @@ }, "netease:face_directional": { "type": "direction" - }, - "netease:block_entity": { - "client_tick": false, - "movable": false, - "tick": false } } } diff --git a/behavior_pack_v8jz0zSR/netease_items_beh/rtdd_rice_seeds.json b/behavior_pack_v8jz0zSR/netease_items_beh/rtdd_rice_seeds.json index 5f38d81..a869dd8 100644 --- a/behavior_pack_v8jz0zSR/netease_items_beh/rtdd_rice_seeds.json +++ b/behavior_pack_v8jz0zSR/netease_items_beh/rtdd_rice_seeds.json @@ -2,7 +2,11 @@ "format_version": "1.10", "minecraft:item": { "components": { - "minecraft:max_stack_size": 64 + "minecraft:max_stack_size": 64, + "minecraft:seed": { + "crop_result": "rtdd:riceseedlingsb", + "plant_at": ["minecraft:farmland"] + } }, "description": { "category": "xy_natural", diff --git a/tuilun/ok/乡野自然转化关系.txt b/tuilun/ok/乡野自然转化关系.txt index 47682eb..ae7b504 100644 --- a/tuilun/ok/乡野自然转化关系.txt +++ b/tuilun/ok/乡野自然转化关系.txt @@ -3,7 +3,7 @@ ======================================== 说明: - 分为3个分组: 果树·树叶 / 藤蔓·柴火 / 水稻·作物 -- 果树结果、作物生长为计时产出 +- 果树结果为计时产出; 水稻为原版随机刻生长(custom_crop_block+transform); 葡萄藤为代码tick概率生长; 均可骨粉催熟 - 产出的水果/大米等均进入 乡野食材分类, 供榨汁/炒冰/汤锅等使用 @@ -33,9 +33,11 @@ todo 后续实现 ======================================== 二、藤蔓·柴火 ======================================== +支杆->葡萄藤_1 +手持葡萄右键支杆 4. 葡萄藤_1 -> 葡萄藤_2 -转换条件:[葡萄藤生长计时] -机制: 计时约180秒生长 +转换条件:[代码tick概率生长] +机制: 每block tick以低概率随机长大一级(约3分钟一级); 可手持骨粉右键催熟一级(不越级,无提示) (成熟葡萄(grape)供榨汁/冰棍/炒冰, 见 乡野饮料) 4a. 葡萄藤_2 -> 葡萄藤_1 @@ -59,14 +61,15 @@ todo 后续实现 三、水稻·作物 ======================================== 6. 稻谷 -> 水稻(刚种下) -转换条件:[手持 稻谷(rtdd:rice_seeds, 乡野自然) 右键 进行种植] -机制: 手持稻谷右键耕地, 消耗1个, 种下水稻(稻谷已从乡野食材移入乡野自然/水稻·作物) +转换条件:[手持 稻谷(rtdd:rice_seeds, 乡野自然) 右键耕地, 官方 minecraft:seed 组件原生种植] +机制: 手持稻谷右键原版耕地, 消耗1个, 引擎自动在耕地上方种下水稻(稻谷已从乡野食材移入乡野自然/水稻·作物) 首次获取: 傻子职业村民交易 1绿宝石 -> 3稻谷(见 全部功能做了什么.txt 村民交易节); 之后靠 打碎水稻 返还稻谷自给(见7a)。 7. 水稻(刚种下) -> 水稻(生长中) -> 水稻(成熟) -转换条件:[水稻生长计时,逐级变化] -机制: 计时生长,约120秒升一级,共两级成熟 +转换条件:[原版随机刻(netease:transform 的 random_tick_count),光照≥9] +机制: 方块 base_block=custom_crop_block + netease:transform, 随机刻满3次自动升一级; + 由 gamerule randomTickSpeed 控制快慢; 骨粉由引擎原生催熟 7a. 水稻(各状态) 左键破坏 -> 掉落稻谷; 成熟额外掉大米 转换条件:[左键 破坏方块] diff --git a/tuilun/配方整理汇总.txt b/tuilun/配方整理汇总.txt index fd5bc30..afb779b 100644 --- a/tuilun/配方整理汇总.txt +++ b/tuilun/配方整理汇总.txt @@ -18,7 +18,7 @@ 任意原版木头 任意原版木头 任意原版木头 任意原版木头 任意原版木头 任意原版木头 -● 柴火堆_2(firewood_2) x9【有序】 +● 柴火堆_2(firewood_2) x9【有序】 todo 删掉 【空】 【空】 任意原版木头 【空】 任意原版木头 任意原版木头 任意原版木头 任意原版木头 任意原版木头 @@ -40,33 +40,29 @@ 【空】 【空】 【空】 【空】 【空】 【空】 (面包堆/鳕鱼堆/鸡蛋堆/土豆堆/鲑鱼堆/桃子堆/橙子堆:放入对应堆 -> 得 9 个对应食材) - -【食材堆 - 8 取用】(堆 -> 8 个对应食材)【无序】 - (苹果堆/面包堆/鳕鱼堆/土豆堆/鲑鱼堆 任意摆放 -> 得 8 个对应食材) - 【串】 -● 大蒜串(garlicskewers)【有序】 +● 大蒜串(garlicskewers)【有序】todo 修改 大蒜 大蒜 大蒜 - 大蒜 支杆 大蒜 - 大蒜 支杆 大蒜 + 大蒜 木棍 大蒜 + 大蒜 木棍 大蒜 (支杆=rtdd:b_34) -● 辣椒串(chiliskewer)【有序】 +● 辣椒串(chiliskewer)【有序】todo 修改 辣椒 辣椒 辣椒 - 辣椒 支杆 辣椒 - 辣椒 支杆 辣椒 + 辣椒 木棍 辣椒 + 辣椒 木棍 辣椒 ######################################################################## 三、死亡生物 (xy_deadmob) ######################################################################## -● 骨头(minecraft:bone)【有序 · 单格】 +● 骨头(minecraft:bone)【有序 · 单格】todo 删掉 牛头骨 【空】 【空】 【空】 【空】 【空】 【空】 【空】 【空】 -● 挂肉钩(meathook)【有序】 - 支撑杆 - 铁锭 - (支杆=rtdd:support_rod) +● 挂肉钩(meathook)【有序】todo 修改 这里的支杆是没有禁用的支杆!后面所有的支杆都是没禁用的支杆! + 支杆支杆支杆 + 铁锭[空]铁锭 + ######################################################################## 四、厨具 (xy_kitchenware) @@ -77,15 +73,15 @@ 【空】 【空】 【空】 ● 丸子机(meatballmaker_0)【有序】 - 支撑杆 铁锭 铁锭 + 支杆 铁锭 铁锭 ● 擀面杖(rollingpin) x4【有序】 - 支撑杆 任意原版木板 + 支杆 任意原版木板 ● 锅铲(spatula)【有序】 【空】 【空】 铁锭 - 【空】 支撑杆 【空】 - 支撑杆 【空】 【空】 + 【空】 支杆 【空】 + 支杆 【空】 【空】 ● 蒸笼(steamer)【有序】 竹子 竹子 竹子 @@ -93,25 +89,29 @@ ● 石磨(stonemill)【有序】 石头 【空】 【空】 - 石头 支撑杆 【空】 + 石头 支杆 【空】 石头 【空】 【空】 ● 盘子(plate_0) x6【有序】 任意原版木板 任意原版木头台阶 任意原版木板 -● 盘子堆(platepile)【有序】 +● 盘子堆(platepile)【有序】todo 获得九个盘子,而不是一个 盘子 盘子 盘子 盘子 盘子 盘子 盘子 盘子 盘子 -● 盘子(plate_0) = 盘子堆 x1【有序 · 单格】 - 盘子堆 【空】 【空】 - 【空】 【空】 【空】 - 【空】 【空】 【空】 - ● 玻璃罐(medicinetank)【有序】 任意原版木板 玻璃 +todo 补充 + 刀: + 【空】 铁锭 【空】 + 木棍 【空】 【空】 + 石头 【空】 【空】 + 支杆: + 【空】 【空】 【空】 + 木棍 木棍 木棍 + 空 【空】 【空】 ######################################################################## 五、动物养殖 (xy_animal) @@ -211,7 +211,7 @@ 木板条 木板条 木板条 木板条 【空】 木板条 ● 厨具架(kitchenwarerack) 配方2【有序】 - 木板条 支撑杆 木板条 + 木板条 支杆 木板条 ● 药水架(lotion_0) x4【有序】 【空】 【空】 任意原版木头 【空】 木板条 任意原版木头 @@ -220,7 +220,7 @@ 云杉活板门 【空】 【空】 云杉活板门 ● 调料架(seasoningrack)【有序】 - 支撑杆 木板条 支撑杆 + 支杆 木板条 支杆 ● 垃圾桶(storage_buckets)【有序】 任意原版木板 任意原版木头台阶 任意原版木板 任意原版木板 【空】 任意原版木板 @@ -268,12 +268,12 @@ 车轮 【空】 车轮 ● 风车叶(fanblades)【有序】 木板条 任意原版羊毛 木板条 - 任意原版羊毛 支撑杆 任意原版羊毛 + 任意原版羊毛 支杆 任意原版羊毛 木板条 任意原版羊毛 木板条 ● 支撑柱(prop_up) x2【有序】 - 支撑杆 【空】 支撑杆 - 【空】 支撑杆 【空】 - 支撑杆 【空】 支撑杆 + 支杆 【空】 支杆 + 【空】 支杆 【空】 + 支杆 【空】 支杆 ● 车轮(wheel)【有序】 【空】 木棍 【空】 木棍 木棍 木棍 @@ -282,14 +282,12 @@ ######################################################################## 十五、药物系统 (xy_medicine) ######################################################################## -● 石臼(mortar) 配方1【有序】(骨头) - 【空】 骨头 【空】 - 【空】 骨头 【空】 - (首行 0/2 + 中行 4 共 3 骨头) -● 石臼(mortar) 配方2【有序】(圆石) - 【空】 圆石 【空】 - 【空】 圆石 【空】 - (3 圆石) +● 石臼(mortar) 配方1【有序】(骨头3) + 骨头 【空】 骨头 + 【空】 骨头 【空】 +● 石臼(mortar) 配方2【有序】(圆石3) + 圆石 【空】 圆石 + 【空】 圆石 【空】 ######################################################################## 十六、酿造 (xy_brewing) @@ -314,15 +312,15 @@ 【旗】(x4)【有序】 ● 旗(flag) - 支撑杆 支撑杆 支撑杆 + 支杆 支杆 支杆 绿布 【空】 黄布 ● 斜纹蓝绿旗(flag_blue_lime_oblique) - 蓝布 【空】 【空】 - 支撑杆 蓝布 【空】 - 【空】 绿布 支撑杆 + 支杆 【空】 【空】 + 蓝布 支杆 【空】 + 【空】 绿布 支杆 -【阳伞】(支撑杆 + 对应布)【有序】 - 支撑杆 +【阳伞】(支杆 + 对应布)【有序】 + 支杆 对应布 (蓝阳伞=蓝布 / 紫阳伞=紫布 / 红阳伞=红布 / 黄阳伞=黄布 / 绿阳伞=绿布) @@ -356,36 +354,36 @@ 【空】 铁锭 铁锭 铁锭 铁锭 铁锭 ● 晾干架(dryingrack) x2【有序】 - 支撑杆 木棍 支撑杆 - 支撑杆 木棍 支撑杆 + 支杆 木棍 支杆 + 支杆 木棍 支杆 ● 铸造台(casting_table)【有序】 铁粒 铁粒 高炉 砖 ● 鱼缸(fishtank)【有序】 玻璃 石头 ● 梯子(ladder)【有序】 - 支撑杆 木棍 支撑杆 - 支撑杆 木棍 支撑杆 - 支撑杆 木棍 支撑杆 + 支杆 木棍 支杆 + 支杆 木棍 支杆 + 支杆 木棍 支杆 ● 钳子(pinchers)【有序】 【空】 铁锭 【空】 【空】 铁锭 铁锭 皮革 【空】 【空】 ● 纺纱机(spinner)【有序】 【空】 【空】 车轮 - 支撑杆 线 线 - 支撑杆 【空】 支撑杆 + 支杆 线 线 + 支杆 支杆 支杆 ● 帐篷(tent) x8【有序】 - 任意原版羊毛 【空】 任意原版羊毛 - 木板条 任意原版羊毛 【空】 - 任意原版羊毛 【空】 【空】 -● 支撑杆(support_rod) 配方1【有序】(3 木棍) + 任意原版羊毛 【空】 【空】 + 任意原版羊毛 木板条 【空】 + 任意原版羊毛 【空】 【空】 +● 支杆(support_rod) 配方1【有序】(3 木棍) 木棍 木棍 木棍 -● 支撑杆(support_rod) 配方2【有序】(6 木板条) +● 支杆(support_rod) 配方2【有序】(6 木板条) 木板条 木板条 木板条 木板条 木板条 木板条 -● 支撑杆(support_rod) x2 配方3【有序】(3 木板条) +● 支杆(rsupport_rod) x2 配方3【有序】(3 木板条) 木板条 木板条 木板条 ########################################################################