搬运了原版食材 原版锅铲贴图 去掉了旧版锅铲锅勺

This commit is contained in:
wenhe committed 2026-09-02 16:46:22 +08:00
1 parent 991239bc26
commit f00601f7ad
93 files changed
+1779 -1164

No files matched your search

@@ -0,0 +1,266 @@
# -*- coding: utf-8 -*-
"""
================================================================================
动物养殖·计时转换引擎(服务端)
================================================================================
只处理"动物养殖"(xy_animal) 分类下的【计时自动转换】:
饲料盆/饲料槽装满后,随时间逐级变空(如 满→半量→空)。
【与右键转换解耦】
同分类的"右键切换"(放蛋/取蛋/填充饲料/清理粪便)在 AnimalService。
本类只负责计时,两者通过 FeatureDispatcher 协作:
- AnimalService 填充完饲料发现计时源方块 → 调 FeatureDispatcher.startTimerFor
转发到本类的 startTimer 启动计时
- 服务器 tick(ServerBlockEntityTickEvent)由 FeatureDispatcher 按 timerOwner
路由到本类的 handleBlockEntityTick,到点即转换
【计时怎么做到"退出游戏继续计时"】
不做倒计时,只记"开始时刻":
- 启动时把 开始时间戳(rtdd_tstart)+总时长(rtdd_tdur) 写进方块实体数据
- 每帧 tick 判断 当前时间-开始时刻 >= 总时长 → 到点转换
- 时间戳是绝对时间(time.time()),服务器重启/玩家离线,真实时间仍在流逝,
回来后 tick 直接算差值,剩余时间自然准确(如烤了40秒退出,回来只剩20秒)
【事件监听在哪?】
本类【不】监听任何事件!
ServerBlockEntityTickEvent 由 FeatureDispatcher 统一监听,再按 timerOwner
路由到本类的 handleBlockEntityTick。
【本类怎么做(自上而下的方法系列)】
handleBlockEntityTick ← 入口:分发器转发 tick 事件
└─ _tickProcess ← 判断是否到点 / 放置自动补写计时(autoStart)
└─ _finishTimer ← 到点执行转换,链式续计时或结束提示
└─ _notifyIfOnline ← 完成提示(启动者在线才发)
startTimer ← 入口:AnimalService 转发过来启动计时
└─ _writeTimerData ← 写 开始时刻+时长+启动者 到方块实体
_clearTimerData ← 清理方块上的计时数据
================================================================================
"""
import time
import mod.server.extraServerApi as serverApi
# ---- 网易API基础对象 ----
ServerSystem = serverApi.GetServerSystemCls() # 服务端系统基类
comp = serverApi.GetEngineCompFactory() # 组件工厂
# ---- 继承 BlueFox 框架的系统基类 ----
from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
from ....BlueFoxTools.ToolsConfig import LevelId
# ---- 方块实体数据组件(计时持久化:把开始时间戳+时长写进方块,重启后继续计时) ----
blockEntityDataComp = comp.CreateBlockEntityData(LevelId)
# ---- 只导入动物养殖自己的数据库 ----
from ..AnimalData import ANIMAL_SWITCHES
# ---- 统一分发器(本类把自己注册进计时路由表,让分发器把 tick 事件转发过来) ----
from ...service.FeatureDispatcher import FeatureDispatcher
class AnimalTimerService(BlueFoxServerSystem):
"""
动物养殖·计时转换引擎
【核心数据结构】
animalTimers = {计时源方块名: 规则dict} # 只收 type=="timer" 的规则
"""
def __init__(self, namespace, systemName):
"""
初始化:收集计时型规则,并注册到统一分发器的计时路由表。
"""
super(AnimalTimerService, self).__init__(namespace, systemName)
print "===== AnimalTimerService init ====="
# ---- 只收集计时型规则(source → 规则) ----
self.animalTimers = {}
for sw in ANIMAL_SWITCHES:
if sw.get("type") == "timer":
self.animalTimers[sw["source"]] = sw
# ---- 注册到分发器的计时路由表(tick 事件按方块名路由到这里) ----
FeatureDispatcher.registerTimer(self)
# ============================================================================
# 一、给 FeatureDispatcher 的接口
# ============================================================================
def getTimerBlocks(self):
"""
返回本功能的所有"计时源方块"集合。
FeatureDispatcher 靠它构建 方块名→本实例 的计时路由表(timerOwner)。
"""
return set(self.animalTimers.keys())
def handleBlockEntityTick(self, args):
"""
由 FeatureDispatcher 转发的计时方块 tick 入口。
只有 blockName 在计时路由表里才会被调用。
"""
dim = args.get("dimension")
pos = (args.get("posX"), args.get("posY"), args.get("posZ"))
blockName = args.get("blockName", "")
self._tickProcess(dim, pos, blockName)
# ============================================================================
# 二、计时启动(AnimalService 填充完饲料后转发调用 / 右键计时源方块)
# ============================================================================
def startTimer(self, dim, pos, blockName, playerId=None):
"""
启动计时:把 计时标识+开始时间戳+时长 写入方块实体数据。
- 已处于本规则计时中的方块不会重复重置时间(保持原剩余时间)
- 动物计时 autoStart 默认 True:放置/填充后自动开始(tick 也会自动补写)
"""
recipe = self.animalTimers.get(blockName)
if not recipe:
return
# 去重:如果该方块已经在本规则计时中,不重置(保持原剩余时间)
try:
data = blockEntityDataComp.GetBlockEntityData(dim, pos)
if data and data["rtdd_tid"] == blockName:
return
except Exception:
pass
self._writeTimerData(dim, pos, recipe, playerId)
# 计时开始提示
if playerId and recipe.get("startTip"):
comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["startTip"])
# ============================================================================
# 三、tick 检查与到点转换
# ============================================================================
def _tickProcess(self, dim, pos, blockName):
"""
tick 主逻辑:
1) 按事件自带的当前方块名判断是否计时源(创造直接放置也会进来)
2) 是计时源但没有计时数据 → 自动补写计时(放置即开始计时)
3) 有计时数据 → 到点执行转换(重启后时间戳照常生效)
方块被拆掉后 tick 停止、数据随方块消失,不会在原位置继续计时转换。
注意:GetBlockEntityData 返回的对象不支持 .get(),这里统一用 [] 读取。
"""
try:
recipe = self.animalTimers.get(blockName)
if not recipe:
return # 当前方块不是计时源(tick 只对计时源方块开启)
blockData = blockEntityDataComp.GetBlockEntityData(dim, pos)
if blockData is None:
return
# 读取计时标识;没有或与当前方块不符
try:
tid = blockData["rtdd_tid"]
except Exception:
tid = ""
if tid != blockName:
# 放置即自动计时:默认开启(动物饲料盆/饲料槽)
# 若某条规则 autoStart=False 则必须右键激活,这里不补写
if recipe.get("autoStart", True):
self._writeTimerData(dim, pos, recipe, None)
return
tstart = blockData["rtdd_tstart"]
tdur = blockData["rtdd_tdur"]
if time.time() - tstart >= tdur:
self._finishTimer(dim, pos, recipe, blockData)
except Exception:
pass
def _finishTimer(self, dim, pos, recipe, data):
"""
计时到点:确认方块仍是计时源后替换方块。
- 若新方块是下一级计时源 → 写入新计时数据继续(如 满→半量→空)
- 若整条链结束 → 清除计时数据,并给启动者发送完成提示
"""
try:
cur = comp.CreateBlockInfo(LevelId).GetBlockNew(pos, dim)
if cur and cur.get("name") != recipe["source"]:
# 方块已被玩家改变 → 清掉过期计时
self._clearTimerData(dim, pos)
return
# 替换方块
self.replaceBlock(pos, dim, recipe["target"], None)
nextRecipe = self.animalTimers.get(recipe["target"])
if nextRecipe:
# 下一级计时(换新的开始时间戳)
self._writeTimerData(dim, pos, nextRecipe, data["rtdd_tp"])
else:
# 整条链结束:清数据 + 完成提示
self._clearTimerData(dim, pos)
doneTip = recipe.get("doneTip")
if doneTip:
self._notifyIfOnline(data["rtdd_tp"], doneTip)
except Exception:
pass
# ============================================================================
# 四、计时数据读写(存在方块实体数据里,重启不丢)
# ============================================================================
def _writeTimerData(self, dim, pos, recipe, playerId=None):
"""把 计时标识+开始时刻+时长+启动者 写进方块实体数据"""
try:
blockData = blockEntityDataComp.GetBlockEntityData(dim, pos)
if blockData is None:
return
now = time.time()
blockData["rtdd_tid"] = recipe["source"]
blockData["rtdd_tstart"] = now
blockData["rtdd_tdur"] = recipe.get("time", 60)
blockData["rtdd_tp"] = playerId if playerId else ""
except Exception:
pass
def _clearTimerData(self, dim, pos):
"""清除方块上的计时数据"""
try:
blockData = blockEntityDataComp.GetBlockEntityData(dim, pos)
if blockData is None:
return
blockData["rtdd_tid"] = ""
blockData["rtdd_tstart"] = 0
blockData["rtdd_tdur"] = 0
blockData["rtdd_tp"] = ""
except Exception:
pass
# ============================================================================
# 五、工具方法:完成提示
# ============================================================================
def _notifyIfOnline(self, playerId, tip):
"""若启动者在线,发送完成提示(离线则跳过)"""
if not tip or not playerId:
return
try:
ids = comp.CreateGame(LevelId).GetAllPlayerIds()
if playerId in ids:
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
except Exception:
pass
# ============================================================================
# 六、工具方法:替换方块
# ============================================================================
def replaceBlock(self, pos, dim, newBlockName, playerId, aux=None):
"""
替换指定位置的方块。
newBlockName="minecraft:air" 表示清除该方块。
playerId 可为 None(计时回调时没有玩家),用 LevelId 创建组件。
"""
creator = playerId if playerId is not None else LevelId
if aux is None:
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)
@@ -0,0 +1,301 @@
# -*- coding: utf-8 -*-
"""
================================================================================
烧烤·计时转换引擎(服务端)
================================================================================
只处理"烧烤"(xy_barbecue) 分类下的【计时自动转换】:
烤鸡/烤乳猪/烤鳕鱼/烤鲑鱼 上杆后,下方放篝火,计时自动烤熟。
【与右键转换解耦】
同分类的"右键切换"(烧烤架点火/灭火、烤串翻烤、上杆、取下)在 BarbecueService。
本类只负责计时,两者通过 FeatureDispatcher 协作:
- BarbecueService 右键"计时源方块"(如烤鸡(生))→ 调 FeatureDispatcher.startTimerFor
转发到本类的 startTimer 启动烤制(下方篝火检查也在这里做)
- 服务器 tick(ServerBlockEntityTickEvent)由 FeatureDispatcher 按 timerOwner
路由到本类的 handleBlockEntityTick,到点即烤熟
【烤制规则】
- autoStart=False:上杆/放置后【不会】自动开始烤制,必须右键激活(startTimer)
- 启动前检查下方是否为篝火(minecraft:campfire),不是则拒绝并提示
- 烤制中若下方篝火被拿走 → 暂停(到点时不转换);篝火放回后继续
- 完成后清除计时数据,并给"启动烤制的玩家"发送"烤熟了"提示
【计时怎么做到"退出游戏继续计时"】
不做倒计时,只记"开始时刻":
- 启动时把 开始时间戳(rtdd_tstart)+总时长(rtdd_tdur) 写进方块实体数据
- 每帧 tick 判断 当前时间-开始时刻 >= 总时长 → 到点转换
- 时间戳是绝对时间(time.time()),服务器重启/玩家离线,真实时间仍在流逝,
回来后 tick 直接算差值,剩余时间自然准确(如烤了40秒退出,回来只剩20秒)
【事件监听在哪?】
本类【不】监听任何事件!
ServerBlockEntityTickEvent 由 FeatureDispatcher 统一监听,再按 timerOwner
路由到本类的 handleBlockEntityTick。
【本类怎么做(自上而下的方法系列)】
handleBlockEntityTick ← 入口:分发器转发 tick 事件
└─ _tickProcess ← 判断是否到点 / autoStart=False 不自动补写
└─ _finishTimer ← 到点执行转换(重新检查篝火,否则暂停)
└─ _notifyIfOnline ← 完成提示(启动者在线才发)
startTimer ← 入口:BarbecueService 转发过来启动烤制
├─ checkBelow ← 下方篝火检查(失败拒绝并提示)
└─ _writeTimerData ← 写 开始时刻+时长+启动者 到方块实体
_clearTimerData ← 清理方块上的计时数据
================================================================================
"""
import time
import mod.server.extraServerApi as serverApi
# ---- 网易API基础对象 ----
ServerSystem = serverApi.GetServerSystemCls() # 服务端系统基类
comp = serverApi.GetEngineCompFactory() # 组件工厂
# ---- 继承 BlueFox 框架的系统基类 ----
from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
from ....BlueFoxTools.ToolsConfig import LevelId
# ---- 方块实体数据组件(计时持久化:把开始时间戳+时长写进方块,重启后继续计时) ----
blockEntityDataComp = comp.CreateBlockEntityData(LevelId)
# ---- 只导入烧烤自己的数据库 ----
from ..BarbecueData import BARBECUE_SWITCHES
# ---- 统一分发器(本类把自己注册进计时路由表,让分发器把 tick 事件转发过来) ----
from ...service.FeatureDispatcher import FeatureDispatcher
class BarbecueTimerService(BlueFoxServerSystem):
"""
烧烤·计时转换引擎
【核心数据结构】
barbecueTimers = {计时源方块名: 规则dict} # 只收 type=="timer" 的规则
"""
def __init__(self, namespace, systemName):
"""
初始化:收集计时型规则,并注册到统一分发器的计时路由表。
"""
super(BarbecueTimerService, self).__init__(namespace, systemName)
print "===== BarbecueTimerService init ====="
# ---- 只收集计时型规则(source → 规则) ----
self.barbecueTimers = {}
for sw in BARBECUE_SWITCHES:
if sw.get("type") == "timer":
self.barbecueTimers[sw["source"]] = sw
# ---- 注册到分发器的计时路由表(tick 事件按方块名路由到这里) ----
FeatureDispatcher.registerTimer(self)
# ============================================================================
# 一、给 FeatureDispatcher 的接口
# ============================================================================
def getTimerBlocks(self):
"""
返回本功能的所有"计时源方块"集合。
FeatureDispatcher 靠它构建 方块名→本实例 的计时路由表(timerOwner)。
"""
return set(self.barbecueTimers.keys())
def handleBlockEntityTick(self, args):
"""
由 FeatureDispatcher 转发的计时方块 tick 入口。
只有 blockName 在计时路由表里才会被调用。
"""
dim = args.get("dimension")
pos = (args.get("posX"), args.get("posY"), args.get("posZ"))
blockName = args.get("blockName", "")
self._tickProcess(dim, pos, blockName)
# ============================================================================
# 二、烤制启动(BarbecueService 右键"计时源方块"后转发调用)
# ============================================================================
def startTimer(self, dim, pos, blockName, playerId=None):
"""
启动烤制计时:先检查下方篝火,通过后写 开始时间戳+时长 到方块实体数据。
- 启动前检查:下方不是篝火 → 拒绝并提示(烧烤必须右键激活,不会自动烤)
- 已在本规则计时中的方块不会重复重置时间(保持原剩余时间)
"""
recipe = self.barbecueTimers.get(blockName)
if not recipe:
return
# 启动前检查下方篝火(烧烤必须下方是篝火才能开始烤制)
if not self.checkBelow(recipe, dim, pos):
if playerId:
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§c支杆下方需要放一个篝火(营火)才能烤制!")
return
# 去重:如果该方块已经在本规则计时中,不重置(保持原剩余时间)
try:
data = blockEntityDataComp.GetBlockEntityData(dim, pos)
if data and data["rtdd_tid"] == blockName:
return
except Exception:
pass
self._writeTimerData(dim, pos, recipe, playerId)
# 烤制开始提示
if playerId and recipe.get("startTip"):
comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["startTip"])
# ============================================================================
# 三、tick 检查与到点转换
# ============================================================================
def _tickProcess(self, dim, pos, blockName):
"""
tick 主逻辑:
1) 按事件自带的当前方块名判断是否计时源(创造直接放置也会进来)
2) 是计时源但没有计时数据 → 只有 autoStart=True 才自动补写。
烧烤 autoStart=False:上杆后不会自动烤,必须右键激活,这里不补写
3) 有计时数据 → 到点执行转换(重启后时间戳照常生效)
方块被拆掉后 tick 停止、数据随方块消失,不会在原位置继续计时转换。
注意:GetBlockEntityData 返回的对象不支持 .get(),这里统一用 [] 读取。
"""
try:
recipe = self.barbecueTimers.get(blockName)
if not recipe:
return # 当前方块不是计时源(tick 只对计时源方块开启)
blockData = blockEntityDataComp.GetBlockEntityData(dim, pos)
if blockData is None:
return
# 读取计时标识;没有或与当前方块不符
try:
tid = blockData["rtdd_tid"]
except Exception:
tid = ""
if tid != blockName:
# 烧烤必须右键激活烤制:autoStart=False 时不自动补写计时
if recipe.get("autoStart", True):
self._writeTimerData(dim, pos, recipe, None)
return
tstart = blockData["rtdd_tstart"]
tdur = blockData["rtdd_tdur"]
if time.time() - tstart >= tdur:
self._finishTimer(dim, pos, recipe, blockData)
except Exception:
pass
def _finishTimer(self, dim, pos, recipe, data):
"""
计时到点:确认方块仍是计时源、下方仍有篝火,才执行转换。
- 篝火被拿走 → 暂停烤制(不转换),等篝火回来继续
- 烤熟后清除计时数据,并给启动者发送"烤熟了"提示
"""
try:
cur = comp.CreateBlockInfo(LevelId).GetBlockNew(pos, dim)
if cur and cur.get("name") != recipe["source"]:
# 方块已被玩家改变 → 清掉过期计时
self._clearTimerData(dim, pos)
return
if not self.checkBelow(recipe, dim, pos):
return # 篝火被拿走了,暂停烤制,等篝火回来继续
# 替换方块
self.replaceBlock(pos, dim, recipe["target"], None)
nextRecipe = self.barbecueTimers.get(recipe["target"])
if nextRecipe:
# 下一级计时(换新的开始时间戳)
self._writeTimerData(dim, pos, nextRecipe, data["rtdd_tp"])
else:
# 整条链结束:清数据 + 完成提示
self._clearTimerData(dim, pos)
doneTip = recipe.get("doneTip")
if doneTip:
self._notifyIfOnline(data["rtdd_tp"], doneTip)
except Exception:
pass
# ============================================================================
# 四、下方方块检查(计时烤制专用:下方必须是篝火)
# ============================================================================
def checkBelow(self, recipe, dim, pos):
"""
检查方块下方是否为 recipe["below"] 中指定的方块(如 minecraft:campfire)。
没写 below 字段 → 视为满足。
"""
below = recipe.get("below")
if not below:
return True
belowPos = (pos[0], pos[1] - 1, pos[2])
try:
b = comp.CreateBlockInfo(LevelId).GetBlockNew(belowPos, dim)
return b.get("name") in below
except Exception:
return False
# ============================================================================
# 五、计时数据读写(存在方块实体数据里,重启不丢)
# ============================================================================
def _writeTimerData(self, dim, pos, recipe, playerId=None):
"""把 计时标识+开始时刻+时长+启动者 写进方块实体数据"""
try:
blockData = blockEntityDataComp.GetBlockEntityData(dim, pos)
if blockData is None:
return
now = time.time()
blockData["rtdd_tid"] = recipe["source"]
blockData["rtdd_tstart"] = now
blockData["rtdd_tdur"] = recipe.get("time", 60)
blockData["rtdd_tp"] = playerId if playerId else ""
except Exception:
pass
def _clearTimerData(self, dim, pos):
"""清除方块上的计时数据"""
try:
blockData = blockEntityDataComp.GetBlockEntityData(dim, pos)
if blockData is None:
return
blockData["rtdd_tid"] = ""
blockData["rtdd_tstart"] = 0
blockData["rtdd_tdur"] = 0
blockData["rtdd_tp"] = ""
except Exception:
pass
# ============================================================================
# 六、工具方法:完成提示
# ============================================================================
def _notifyIfOnline(self, playerId, tip):
"""若启动者在线,发送完成提示(离线则跳过)"""
if not tip or not playerId:
return
try:
ids = comp.CreateGame(LevelId).GetAllPlayerIds()
if playerId in ids:
comp.CreateMsg(playerId).NotifyOneMessage(playerId, tip)
except Exception:
pass
# ============================================================================
# 七、工具方法:替换方块
# ============================================================================
def replaceBlock(self, pos, dim, newBlockName, playerId, aux=None):
"""
替换指定位置的方块。
newBlockName="minecraft:air" 表示清除该方块。
playerId 可为 None(计时回调时没有玩家),用 LevelId 创建组件。
"""
creator = playerId if playerId is not None else LevelId
if aux is None:
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)
@@ -1,55 +0,0 @@
{
"format_version": "1.10.0",
"minecraft:block": {
"components": {
"minecraft:block_light_absorption": {
"value": 0
},
"netease:aabb": {
"clip": {
"max": [
1,
0.25,
0.8
],
"min": [
0,
0,
0
]
},
"collision": {
"max": [
1,
0.25,
0.8
],
"min": [
0,
0,
0
]
}
},
"netease:block_entity": {
"client_tick": false,
"movable": false,
"tick": false
},
"netease:face_directional": {
"type": "direction"
},
"netease:render_layer": {
"value": "alpha"
},
"netease:solid": {
"value": false
}
},
"description": {
"category": "xy_kitchenware",
"identifier": "rtdd:potandspoon",
"register_to_creative_menu": true
}
}
}
@@ -1,55 +0,0 @@
{
"format_version": "1.10.0",
"minecraft:block": {
"description": {
"identifier": "rtdd:spatula",
"register_to_creative_menu": true,
"category": "xy_kitchenware"
},
"components": {
"netease:aabb": {
"collision": {
"min": [
0,
0,
0
],
"max": [
1,
0.1,
0.9
]
},
"clip": {
"min": [
0,
0,
0
],
"max": [
1,
0.1,
0.9
]
}
},
"minecraft:block_light_absorption": {
"value": 0
},
"netease:render_layer": {
"value": "alpha"
},
"netease:solid": {
"value": false
},
"netease:face_directional": {
"type": "direction"
},
"netease:block_entity": {
"client_tick": false,
"movable": false,
"tick": false
}
}
}
}
@@ -26,14 +26,34 @@
},
{
"group_name": "itemGroup.name.ingr_03_meat",
"icon": "rtdd:rawmeatball_0",
"icon": "rtdd:legsleep",
"list": [
"rtdd:legsleep",
"rtdd:sheeploins",
"rtdd:sheepracks",
"rtdd:beef_tenderloin",
"rtdd:legcow",
"rtdd:porkloins",
"rtdd:porkrib",
"rtdd:ham",
"rtdd:crushedmeat",
"rtdd:rawmeatball_0",
"rtdd:rawmeatball_1",
"rtdd:rawmeatball_2",
"rtdd:rawmeatball_3",
"rtdd:rawmeatball_3"
]
},
{
"group_name": "itemGroup.name.ingr_05_fish",
"icon": "rtdd:crab",
"list": [
"rtdd:salmon_pile",
"rtdd:cod_pile"
"rtdd:cod_pile",
"rtdd:rawsquidwhiskersr",
"rtdd:crab",
"rtdd:lobster",
"rtdd:sashimi",
"rtdd:thedriedfish"
]
},
{
@@ -46,12 +66,31 @@
"rtdd:peachpile_0",
"rtdd:orangepile_0",
"rtdd:apple_pile",
"rtdd:cutgarlic",
"rtdd:bread_pile",
"rtdd:egg_pile",
"rtdd:egg_pile"
]
},
{
"group_name": "itemGroup.name.ingr_06_seasoning",
"icon": "rtdd:cutgarlic",
"list": [
"rtdd:cutgarlic",
"rtdd:crushedgarlic",
"rtdd:garlicskewers",
"rtdd:chiliskewer"
"rtdd:chiliskewer",
"rtdd:beancurd"
]
},
{
"group_name": "itemGroup.name.ingr_07_coated",
"icon": "rtdd:oiltempura",
"list": [
"rtdd:oiltempura",
"rtdd:oilfish_0",
"rtdd:oilpork",
"rtdd:oil_chickennuggets",
"rtdd:oilfrenchfries"
]
}
]
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:beancurd",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 4,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:beef_tenderloin",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,17 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:cleaver",
"category": "xy_kitchenware"
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:hand_equipped": true,
"minecraft:damage": 4,
"minecraft:durability": {
"max_durability": 200
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:crab",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,12 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:crushedgarlic",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:crushedmeat",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 4,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:ham",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:legcow",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:legsleep",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:lobster",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oil_chickennuggets",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oilfish_0",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oilfrenchfries",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oilpork",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oiltempura",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:porkloins",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:porkrib",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,13 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:potandspoon",
"category": "xy_kitchenware"
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:hand_equipped": true
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:rawsquidwhiskersr",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 4,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:sashimi",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 4,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:sheeploins",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:sheepracks",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -0,0 +1,13 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:spatula",
"category": "xy_kitchenware"
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:hand_equipped": true
}
}
}
@@ -0,0 +1,14 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:spatula_oil",
"category": "xy_kitchenware"
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:hand_equipped": true,
"minecraft:foil": true
}
}
}
@@ -0,0 +1,18 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:thedriedfish",
"category": "xy_ingredients"
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:use_animation": "eat",
"minecraft:use_duration": 1.6,
"minecraft:food": {
"nutrition": 5,
"saturation_modifier": "normal"
}
}
}
}
@@ -8,7 +8,10 @@
"groups": [
"itemGroup.name.ingr_02_veg",
"itemGroup.name.ingr_03_meat",
"itemGroup.name.ingr_04_crop"
"itemGroup.name.ingr_05_fish",
"itemGroup.name.ingr_04_crop",
"itemGroup.name.ingr_06_seasoning",
"itemGroup.name.ingr_07_coated"
]
}
]
-16
View File
@@ -4064,17 +4064,6 @@
"sound": "wood",
"textures": "rtdd_blocks_fruit_juice3"
},
"rtdd:potandspoon": {
"client_entity": {
"block_icon": "CXpdileX",
"destoryed_textures": "CXpdileX",
"hand_model_use_client_entity": false,
"identifier": ""
},
"netease_model": "rtdd:potandspoon",
"sound": "wood",
"textures": "rtdd_blocks_spoon_and_knife"
},
"rtdd:potato_pile": {
"netease_model": "rtdd:potato_pile",
"sound": "wood",
@@ -4660,11 +4649,6 @@
"sound": "wood",
"textures": "rtdd_blocks_souffle"
},
"rtdd:spatula": {
"netease_model": "rtdd:spatula",
"sound": "wood",
"textures": "rtdd_blocks_spoon_and_knife"
},
"rtdd:spicy_fish_0": {
"netease_model": "rtdd:spicy_fish_0",
"sound": "wood",
@@ -1,594 +0,0 @@
{
"format_version": "1.13.0",
"netease:block_geometry": {
"description": {
"identifier": "rtdd:potandspoon",
"textures": [
"rtdd_blocks_spoon_and_knife"
],
"textures_descriptions": [
{
"width": 16,
"length": 16
}
],
"use_ao": true
},
"bones": [
{
"name": "root",
"pivot": [
0,
0,
0
],
"cubes": [
{
"origin": [
-9,
0,
12
],
"size": [
2,
3,
1
],
"uv": {
"north": {
"uv": [
3,
6
],
"uv_size": [
-2,
3
],
"texture": 0,
"rot": 180
},
"east": {
"uv": [
12,
2
],
"uv_size": [
-4,
1
],
"texture": 0,
"rot": 90
},
"south": {
"uv": [
3,
5
],
"uv_size": [
-2,
3
],
"texture": 0
},
"west": {
"uv": [
8,
8
],
"uv_size": [
-4,
1
],
"texture": 0,
"rot": 270
},
"up": {
"uv": [
12,
3
],
"uv_size": [
-4,
1
],
"texture": 0
},
"down": {
"uv": [
4,
8
],
"uv_size": [
-4,
1
],
"texture": 0,
"rot": 180
}
}
},
{
"origin": [
-9,
0,
0
],
"size": [
2,
1,
4
],
"uv": {
"north": {
"uv": [
10,
6
],
"uv_size": [
-2,
1
],
"texture": 0
},
"east": {
"uv": [
12,
4
],
"uv_size": [
-4,
1
],
"texture": 0
},
"south": {
"uv": [
10,
7
],
"uv_size": [
-2,
1
],
"texture": 0
},
"west": {
"uv": [
12,
5
],
"uv_size": [
-4,
1
],
"texture": 0
},
"up": {
"uv": [
4,
4
],
"uv_size": [
2,
-4
],
"texture": 0
},
"down": {
"uv": [
4,
4
],
"uv_size": [
2,
4
],
"texture": 0
}
}
},
{
"origin": [
-8.5,
0,
4
],
"size": [
1.0,
1,
6
],
"uv": {
"north": {
"uv": [
9,
8
],
"uv_size": [
-1,
1
],
"texture": 0
},
"east": {
"uv": [
12,
0
],
"uv_size": [
-6,
1
],
"texture": 0
},
"south": {
"uv": [
1,
9
],
"uv_size": [
-1,
1
],
"texture": 0
},
"west": {
"uv": [
12,
1
],
"uv_size": [
-6,
1
],
"texture": 0
},
"up": {
"uv": [
6,
8
],
"uv_size": [
1,
-6
],
"texture": 0
},
"down": {
"uv": [
7,
2
],
"uv_size": [
1,
6
],
"texture": 0
}
}
},
{
"origin": [
-7,
0,
10
],
"size": [
1,
4,
2
],
"uv": {
"north": {
"uv": [
1,
0
],
"uv_size": [
-1,
4
],
"texture": 0
},
"east": {
"uv": [
2,
0
],
"uv_size": [
-2,
4
],
"texture": 0
},
"south": {
"uv": [
1,
0
],
"uv_size": [
-1,
4
],
"texture": 0
},
"west": {
"uv": [
2,
0
],
"uv_size": [
-2,
4
],
"texture": 0
},
"up": {
"uv": [
1,
0
],
"uv_size": [
-1,
2
],
"texture": 0
},
"down": {
"uv": [
1,
0
],
"uv_size": [
-1,
2
],
"texture": 0
}
}
},
{
"origin": [
-9,
3,
10
],
"size": [
2,
1,
2
],
"uv": {
"north": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"east": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"south": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"west": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"up": {
"uv": [
2,
0
],
"uv_size": [
-2,
2
],
"texture": 0
},
"down": {
"uv": [
2,
0
],
"uv_size": [
-2,
2
],
"texture": 0
}
}
},
{
"origin": [
-10,
0,
10
],
"size": [
1,
4,
2
],
"uv": {
"north": {
"uv": [
1,
0
],
"uv_size": [
-1,
4
],
"texture": 0
},
"east": {
"uv": [
2,
0
],
"uv_size": [
-2,
4
],
"texture": 0
},
"south": {
"uv": [
1,
0
],
"uv_size": [
-1,
4
],
"texture": 0
},
"west": {
"uv": [
2,
0
],
"uv_size": [
-2,
4
],
"texture": 0
},
"up": {
"uv": [
1,
0
],
"uv_size": [
-1,
2
],
"texture": 0
},
"down": {
"uv": [
1,
0
],
"uv_size": [
-1,
2
],
"texture": 0
}
}
},
{
"origin": [
-9,
0,
10
],
"size": [
2,
1,
2
],
"uv": {
"north": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"east": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"south": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"west": {
"uv": [
2,
0
],
"uv_size": [
-2,
1
],
"texture": 0
},
"up": {
"uv": [
2,
0
],
"uv_size": [
-2,
2
],
"texture": 0
},
"down": {
"uv": [
2,
0
],
"uv_size": [
-2,
2
],
"texture": 0
}
}
}
]
}
]
}
}
@@ -1,270 +0,0 @@
{
"format_version": "1.13.0",
"netease:block_geometry": {
"description": {
"identifier": "rtdd:spatula",
"textures": [
"rtdd_blocks_spoon_and_knife"
],
"textures_descriptions": [
{
"width": 16,
"length": 16
}
],
"use_ao": true
},
"bones": [
{
"name": "root",
"pivot": [
0,
0,
0
],
"cubes": [
{
"origin": [
-10,
0,
10
],
"size": [
4,
1,
4
],
"uv": {
"north": {
"uv": [
4,
8
],
"uv_size": [
-4,
1
],
"texture": 0
},
"east": {
"uv": [
12,
2
],
"uv_size": [
-4,
1
],
"texture": 0
},
"south": {
"uv": [
12,
3
],
"uv_size": [
-4,
1
],
"texture": 0
},
"west": {
"uv": [
8,
8
],
"uv_size": [
-4,
1
],
"texture": 0
},
"up": {
"uv": [
0,
4
],
"uv_size": [
4,
-4
],
"texture": 0
},
"down": {
"uv": [
0,
4
],
"uv_size": [
4,
4
],
"texture": 0
}
}
},
{
"origin": [
-9,
0,
0
],
"size": [
2,
1,
4
],
"uv": {
"north": {
"uv": [
10,
6
],
"uv_size": [
-2,
1
],
"texture": 0
},
"east": {
"uv": [
12,
4
],
"uv_size": [
-4,
1
],
"texture": 0
},
"south": {
"uv": [
10,
7
],
"uv_size": [
-2,
1
],
"texture": 0
},
"west": {
"uv": [
12,
5
],
"uv_size": [
-4,
1
],
"texture": 0
},
"up": {
"uv": [
4,
4
],
"uv_size": [
2,
-4
],
"texture": 0
},
"down": {
"uv": [
4,
4
],
"uv_size": [
2,
4
],
"texture": 0
}
}
},
{
"origin": [
-8.5,
0,
4
],
"size": [
1.0,
1,
6
],
"uv": {
"north": {
"uv": [
9,
8
],
"uv_size": [
-1,
1
],
"texture": 0
},
"east": {
"uv": [
12,
0
],
"uv_size": [
-6,
1
],
"texture": 0
},
"south": {
"uv": [
1,
9
],
"uv_size": [
-1,
1
],
"texture": 0
},
"west": {
"uv": [
12,
1
],
"uv_size": [
-6,
1
],
"texture": 0
},
"up": {
"uv": [
6,
8
],
"uv_size": [
1,
-6
],
"texture": 0
},
"down": {
"uv": [
7,
2
],
"uv_size": [
1,
6
],
"texture": 0
}
}
}
]
}
]
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:beancurd"
},
"components": {
"minecraft:icon": "beancurd"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:beef_tenderloin"
},
"components": {
"minecraft:icon": "beef_tenderloin"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:cleaver"
},
"components": {
"minecraft:icon": "cleaver"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:crab"
},
"components": {
"minecraft:icon": "crab"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:crushedgarlic"
},
"components": {
"minecraft:icon": "crushedgarlic"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:crushedmeat"
},
"components": {
"minecraft:icon": "crushedmeat"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:ham"
},
"components": {
"minecraft:icon": "ham"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:legcow"
},
"components": {
"minecraft:icon": "legcow"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:legsleep"
},
"components": {
"minecraft:icon": "legsleep"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:lobster"
},
"components": {
"minecraft:icon": "lobster"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oil_chickennuggets"
},
"components": {
"minecraft:icon": "oil_chickennuggets"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oilfish_0"
},
"components": {
"minecraft:icon": "oilfish_0"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oilfrenchfries"
},
"components": {
"minecraft:icon": "oilfrenchfries"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oilpork"
},
"components": {
"minecraft:icon": "oilpork"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:oiltempura"
},
"components": {
"minecraft:icon": "oiltempura"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:porkloins"
},
"components": {
"minecraft:icon": "porkloins"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:porkrib"
},
"components": {
"minecraft:icon": "porkrib"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:potandspoon"
},
"components": {
"minecraft:icon": "potandspoon"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:rawsquidwhiskersr"
},
"components": {
"minecraft:icon": "rawsquidwhiskersr"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:sashimi"
},
"components": {
"minecraft:icon": "sashimi"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:sheeploins"
},
"components": {
"minecraft:icon": "sheeploins"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:sheepracks"
},
"components": {
"minecraft:icon": "sheepracks"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:spatula"
},
"components": {
"minecraft:icon": "spatula"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:spatula_oil"
},
"components": {
"minecraft:icon": "spatula_oil"
}
}
}
@@ -0,0 +1,11 @@
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "rtdd:thedriedfish"
},
"components": {
"minecraft:icon": "thedriedfish"
}
}
}
+30 -4
View File
@@ -152,7 +152,7 @@ tile.rtdd:sushipile_4.name=寿司堆(鲑鱼寿司_两个)
tile.rtdd:cookingrabbit.name=炒锅_49(辣炒兔肉_生)
tile.rtdd:sushipile_5.name=寿司堆(鲑鱼寿司_三个)
tile.rtdd:sushipile_2.name=寿司堆(鳕鱼_两个)
tile.rtdd:spatula.name=锅铲
item.rtdd:spatula.name=锅铲
tile.rtdd:sushipile_3.name=寿司堆(鳕鱼_三个)
tile.rtdd:copperingotpile.name=铜锭堆_禁用
tile.rtdd:beefkebabs_0.name=牛肉串(半熟)
@@ -366,7 +366,7 @@ tile.rtdd:plate_33a.name=炒蟹(半份)
tile.rtdd:vegetableleanbroth_3.name=汤锅_105(蔬菜瘦肉汤_熟)
tile.rtdd:vegetableleanbroth_2.name=汤锅_104(蔬菜瘦肉汤_八分熟)
tile.rtdd:vegetableleanbroth_1.name=汤锅_103(蔬菜瘦肉汤_四分熟)
tile.rtdd:potandspoon.name=锅勺
item.rtdd:potandspoon.name=锅勺
tile.rtdd:dryingrack_2.name=晾干架_3(晾干架3)禁用
tile.rtdd:b_111.name=吧台
tile.rtdd:b_110.name=纺纱机_1(制作)_禁用
@@ -1169,8 +1169,11 @@ itemGroup.name.drink_02_glass=酒杯
itemGroup.name.drink_03_popsicle=冰棍
itemGroup.name.drink_04_icebox=冰棍盒·炒冰盒
itemGroup.name.ingr_02_veg=蔬菜·切配
itemGroup.name.ingr_03_meat=肉·鱼·海鲜
itemGroup.name.ingr_03_meat=肉类·肉馅
itemGroup.name.ingr_05_fish=鱼·海鲜
itemGroup.name.ingr_04_crop=蔬果·堆类
itemGroup.name.ingr_06_seasoning=调味·佐料
itemGroup.name.ingr_07_coated=裹粉半成品
itemGroup.name.mar_03_box=条箱
itemGroup.name.mar_04_barrel=货桶
itemGroup.name.mar_01_salesbox=售卖盒
@@ -1199,4 +1202,27 @@ itemGroup.name.sushi_03_salmon=鲑鱼寿司
itemGroup.name.sushi_04_tropical=热带鱼寿司
itemGroup.name.sushi_05_nigiri=手握寿司
itemGroup.name.sushi_06_pile=寿司堆
itemGroup.name.sushi_07_plate=盘装寿司
itemGroup.name.sushi_07_plate=盘装寿司
item.rtdd:cleaver.name=刀
item.rtdd:legsleep.name=羊腿
item.rtdd:sheeploins.name=羊里脊
item.rtdd:sheepracks.name=羊小排
item.rtdd:beef_tenderloin.name=牛里脊
item.rtdd:legcow.name=牛腿肉
item.rtdd:porkloins.name=五花肉
item.rtdd:porkrib.name=猪肋排
item.rtdd:ham.name=猪蹄
item.rtdd:crushedmeat.name=碎肉
item.rtdd:rawsquidwhiskersr.name=鱿鱼须
item.rtdd:crab.name=螃蟹
item.rtdd:lobster.name=龙虾
item.rtdd:sashimi.name=生鱼片
item.rtdd:thedriedfish.name=鱼干
item.rtdd:beancurd.name=豆腐
item.rtdd:crushedgarlic.name=蒜末
item.rtdd:oiltempura.name=裹粉的天妇罗
item.rtdd:oilfish_0.name=裹粉的鱼
item.rtdd:oilpork.name=裹粉的猪肉
item.rtdd:oil_chickennuggets.name=裹粉的鸡块
item.rtdd:oilfrenchfries.name=裹粉的薯条
item.rtdd:spatula_oil.name=带油锅铲
@@ -0,0 +1,80 @@
{
"resource_pack_name": "rtdd",
"texture_data": {
"cleaver": {
"textures": "textures/items/cleaver"
},
"legsleep": {
"textures": "textures/items/legsleep"
},
"sheeploins": {
"textures": "textures/items/sheeploins"
},
"sheepracks": {
"textures": "textures/items/sheepracks"
},
"beef_tenderloin": {
"textures": "textures/items/beef_tenderloin"
},
"legcow": {
"textures": "textures/items/legcow"
},
"porkloins": {
"textures": "textures/items/porkloins"
},
"porkrib": {
"textures": "textures/items/porkrib"
},
"ham": {
"textures": "textures/items/ham"
},
"crushedmeat": {
"textures": "textures/items/crushedmeat"
},
"rawsquidwhiskersr": {
"textures": "textures/items/rawsquidwhiskersr"
},
"crab": {
"textures": "textures/items/crab"
},
"lobster": {
"textures": "textures/items/lobster"
},
"sashimi": {
"textures": "textures/items/sashimi"
},
"thedriedfish": {
"textures": "textures/items/thedriedfish"
},
"beancurd": {
"textures": "textures/items/beancurd"
},
"crushedgarlic": {
"textures": "textures/items/crushedgarlic"
},
"oiltempura": {
"textures": "textures/items/oiltempura"
},
"oilfish_0": {
"textures": "textures/items/oilfish_0"
},
"oilpork": {
"textures": "textures/items/oilpork"
},
"oil_chickennuggets": {
"textures": "textures/items/oil_chickennuggets"
},
"oilfrenchfries": {
"textures": "textures/items/oilfrenchfries"
},
"spatula": {
"textures": "textures/items/guo_chan_"
},
"spatula_oil": {
"textures": "textures/items/guo_chan_"
},
"potandspoon": {
"textures": "textures/items/pot_and_spoon"
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

+69 -14
View File
@@ -2,8 +2,9 @@
【乡野食材】(xy_ingredients) 转化关系
========================================
说明:
- 分为3个分组: 蔬菜·切配 / 肉·鱼·海鲜 / 蔬果·堆类
- 分为6个分组: 蔬菜·切配 / 肉类·肉馅 / 鱼·海鲜 / 蔬果·堆类 / 调味·佐料 / 裹粉半成品
- 切配类食材可用菜刀切分,肉馅可按压
- 油锅炸物需先裹面粉: 生食材裹粉后成为"裹粉半成品"(见第六节),再下油锅
- 【待确认】表示该步骤所需的具体操作尚未最终确定
========================================
@@ -26,7 +27,7 @@
机制: 手持菜刀右键切葱,逐级切分
========================================
二、肉·鱼·海鲜
二、肉类·肉馅
========================================
5. 生猪肉馅 -> 生猪肉馅(按压)
转换条件:[右键 进行转换(按压成型)]
@@ -36,25 +37,79 @@
转换条件:[右键 进行转换(按压成型)]
机制: 空手右键,按压成型
7. 鲑鱼堆 / 鳕鱼堆
7. 羊腿/羊里脊/羊小排/牛里脊/牛腿肉/五花肉/猪肋排/猪蹄/碎肉(静态食材)
转换条件:[静态食材,无独立转换](本次由Java版迁入)
========================================
三、鱼·海鲜
========================================
8. 鲑鱼堆 / 鳕鱼堆
转换条件:[静态堆叠食材,无独立转换]
9. 鱿鱼须/螃蟹/龙虾/生鱼片/鱼干(静态食材)
转换条件:[静态食材,无独立转换](本次由Java版迁入)
========================================
四、蔬果·堆类
========================================
10. 土豆堆 / 胡萝卜堆(b_40) / 桃子堆 / 橙子堆 / 苹果堆 / 面包堆 / 鸡蛋堆
转换条件:[静态堆叠食材,无独立转换]
========================================
三、蔬果·堆类
五、调味·佐料
========================================
8. 土豆堆 / 胡萝卜堆(b_40) / 桃子堆 / 橙子堆 / 苹果堆 / 面包堆 / 鸡蛋堆
转换条件:[静态堆叠食材,无独立转换]
9. 大蒜(cutgarlic)
11. 大蒜(cutgarlic)
转换条件:[静态切配食材,无独立转换]
10. 大蒜串 / 辣椒串
12. 蒜末(crushedgarlic)
转换条件:[静态切配食材,无独立转换](本次由Java版迁入)
13. 大蒜串 / 辣椒串
转换条件:[静态串类食材,无独立转换](注:辣椒串原属烧烤分类,已迁至此分组)
14. 豆腐(beancurd)
转换条件:[静态食材,无独立转换](本次由Java版迁入)
========================================
四、方块清单
六、裹粉半成品(油锅炸物前置,由生食材裹面粉而来)
========================================
cutcarrot_0~4(切胡萝卜)、cutpotato_0~4(切土豆)、cutvegetable_0~3(切青菜)、cutscallions_1~4(葱花)、
rawmeatball_0~3(生肉馅)、salmon_pile(鲑鱼堆)、cod_pile(鳕鱼堆)、potato_pile(土豆堆)、carrot_pile(胡萝卜堆)、
b_40(胡萝卜堆)、peachpile_0(桃子堆)、orangepile_0(橙子堆)、apple_pile(苹果堆)、cutgarlic(大蒜)、
bread_pile(面包堆)、egg_pile(鸡蛋堆)、garlicskewers(大蒜串)、chiliskewer(辣椒串)
15. 生鱼片 -> 裹粉的鱼
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
机制: 生鱼片裹面粉,变为裹粉的鱼,供油锅炸鱼块
16. 龙虾 -> 裹粉的天妇罗
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
机制: 龙虾裹面粉,变为裹粉的天妇罗,供油锅炸天妇罗(天妇罗炸虾成品即由此而来)
17. 猪肉 -> 裹粉的猪肉
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
机制: 猪肉裹面粉,变为裹粉的猪肉,供油锅炸猪排
18. 鸡块 -> 裹粉的鸡块
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
机制: 鸡块裹面粉,变为裹粉的鸡块,供油锅炸鸡块
19. 土豆条 -> 裹粉的薯条
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
机制: 土豆条裹面粉,变为裹粉的薯条,供油锅炸薯条
========================================
七、方块/物品清单(按6分组)
========================================
【蔬菜·切配】cutcarrot_0~4(切胡萝卜)、cutpotato_0~4(切土豆)、cutvegetable_0~3(切青菜)、cutscallions_1~4(葱花)
【肉类·肉馅】rawmeatball_0~3(生肉馅)、legsleep(羊腿)、sheeploins(羊里脊)、sheepracks(羊小排)、
beef_tenderloin(牛里脊)、legcow(牛腿肉)、porkloins(五花肉)、porkrib(猪肋排)、ham(猪蹄)、crushedmeat(碎肉)
【鱼·海鲜】salmon_pile(鲑鱼堆)、cod_pile(鳕鱼堆)、rawsquidwhiskersr(鱿鱼须)、crab(螃蟹)、
lobster(龙虾)、sashimi(生鱼片)、thedriedfish(鱼干)
【蔬果·堆类】potato_pile(土豆堆)、carrot_pile(胡萝卜堆)、b_40(胡萝卜堆)、peachpile_0(桃子堆)、
orangepile_0(橙子堆)、apple_pile(苹果堆)、bread_pile(面包堆)、egg_pile(鸡蛋堆)
【调味·佐料】cutgarlic(大蒜)、crushedgarlic(蒜末)、garlicskewers(大蒜串)、chiliskewer(辣椒串)、beancurd(豆腐)
【裹粉半成品】oiltempura(裹粉的天妇罗)、oilfish_0(裹粉的鱼)、oilpork(裹粉的猪肉)、
oil_chickennuggets(裹粉的鸡块)、oilfrenchfries(裹粉的薯条)
注: 菜刀(cleaver)属厨具分类,不在此清单
+90
View File
@@ -0,0 +1,90 @@
========================================
全部功能 - 已实现功能记录
(汇总所有功能分类的"做了什么",按分类分节)
========================================
说明:
- 本文件汇总全部功能分类的已实现内容
- 每节对应一个功能分类(如 动物养殖 / 烧烤),后续新分类在此追加
- 各分类的详细转换流程见 tuilun 下对应的《XX转化关系.txt》
########################################
【动物养殖】(xy_animal)
########################################
一、鸡窝(产蛋) —— 低级机制
- 放蛋: 手持鸡蛋右键鸡窝逐级放置递增 (0蛋→1蛋→…→5蛋), 每次消耗1个鸡蛋,
提示 "鸡蛋已放入鸡窝 (N/5)" [已实现]
- 取蛋: 空手右键取走对应数量鸡蛋, 以掉落物形式获得, 回到0蛋形态,
提示 "取走了 N 个鸡蛋" (5/4/3/2/1蛋均可取) [已实现]
二、鸡饲料盆 (chickenmanger_0/1)
- 填充: 手持种子右键, 消耗16个种子 → 满, 提示 "鸡饲料已加满" [已实现]
- 计时变空: 满盆计时60秒 → 自动变空, 开始提示 "鸡饲料已加满,鸡正在进食…",
完成提示 "鸡饲料已吃完" [已实现]
三、饲料槽-小麦 (manger_0/3/2/1)
- 填充: 手持小麦右键, 消耗32个小麦 → 满, 提示 "小麦饲料已加满" [已实现]
- 计时逐级变空: 满→半量→少量→空, 每级计时60秒, 吃完提示 "小麦饲料已吃完" [已实现]
四、饲料槽-水 (manger_0/mangerwater)
- 加水: 手持水桶右键 → 水槽, 消耗水桶返还空桶, 提示 "已给饲料槽加水" [已实现]
五、饲料槽-胡萝卜 (manger_0/pigmanger_1/2)
- 填充: 手持胡萝卜右键, 消耗32个胡萝卜 → 满, 提示 "胡萝卜饲料已加满" [已实现]
- 计时逐级变空: 满→半量→空, 每级计时60秒, 吃完提示 "胡萝卜饲料已吃完" [已实现]
六、粪便 (feces_3/2/1)
- 清理: 空手右键逐级清理 (一坨→半坨→仅痕迹→消失), 提示 "清理了粪便" [已实现]
########################################
【烧烤】(xy_barbecue)
########################################
一、烧烤架 (barbecuegrill_0/1)
- 点火: 无火烧烤架_1 + 打火石 → 点燃烧烤架_2 (打火石不消耗) [已实现]
- 点火: 无火烧烤架_1 + 烈焰弹 → 点燃烧烤架_2 (消耗1个烈焰弹) [已实现]
- 灭火: 点燃烧烤架_2 + 水桶 → 无火烧烤架_1 (消耗水桶,返还空桶) [已实现]
二、烤串 (放烧烤架上,右键2次转换,不计时,需下方点燃烧烤炉)
- 牛肉串: beefkebabs_1(生) → beefkebabs_0(半熟) → beefkebabs_3(熟) [已实现]
- 羊肉串: lambkebabs_1(生) → lambkebabs_0(半熟) → lambkebabs_3(熟) [已实现]
- 烤蔬菜串: roasted_vegetables_0(生) → _1(半熟) → _3(熟) [已实现]
- 烤香菇串: roastedmushrooms_0(生) → _1(半熟) → _3(熟) [已实现]
- 失败提示: 下方不是点燃的烧烤炉 → "§c下方不是点燃的烧烤炉,无法翻烤!" [已实现]
三、上杆 (手持生食材右键 支杆b_34)
- 生鸡肉(放置后) roastchickenplace_0 → 烤鸡(上烤架_生) roastchicken_0 [已实现]
- 死猪 dead_pig → 烤乳猪(生) roastpig_0 [已实现]
- 鳕鱼 minecraft:cod → 烤鳕鱼(生) grilledcod_0 [已实现]
- 鲑鱼 minecraft:salmon → 烤鲑鱼(生) grilled_fish [已实现]
四、计时烤制 (支杆下方篝火 campfire,约60秒,右键激活 autoStart=False)
- 烤鸡: roastchicken_0(生) → roastchicken_1(熟) [已实现]
- 烤乳猪: roastpig_0(生) → roastpig_1(熟) [已实现]
- 烤鳕鱼: grilledcod_0(生) → grilledcod_1(熟) [已实现]
- 烤鲑鱼: grilled_fish(生) → grilled_salmon(熟) [已实现]
- 开始提示 "§e开始烤制烤X,约60秒…" / 完成提示 "§e烤X烤熟了!" [已实现]
- 下方无篝火: 拒绝开始 "§c支杆下方需要放一个篝火(营火)才能烤制!" [已实现]
- 烤制中拿走篝火: 暂停,篝火放回继续 (保持原时间戳) [已实现]
- 退出/重启游戏: 继续计时 (绝对时间戳写入方块实体数据持久化) [已实现]
五、取下 (空手右键烤熟方块,以掉落物形式获得整只)
- 烤鸡(熟) roastchicken_1 → b_34 + 掉落 烤鸡整只 roast_chickenplace_1,
提示 "§a取下了烤鸡(整只)" [已实现]
- 烤乳猪(熟) roastpig_1 → b_34 + 掉落 烤乳猪整只 roastpignew_1,
提示 "§a取下了烤乳猪(整只)" [已实现]
六、手持物品右键方块表面 (ServerItemUseOnEvent)
- 手持原版生鸡肉 minecraft:chicken 右键任意方块表面 → 生成 生鸡肉(放置后)
roastchickenplace_0, 消耗1个, 提示 "已放置生鸡肉,可右键支杆上杆烤制" [已实现]
########################################
【通用架构】
########################################
- 右键转换与计时转换已拆分为两个独立类 (XxxService / XxxTimerService), 解耦 [已实现]
- 事件由 FeatureDispatcher 统一监听路由 (blockOwner/itemUseOnOwner/timerOwner) [已实现]
- 右键服务通过 FeatureDispatcher.startTimerFor 把计时启动转发给计时服务 [已实现]
- 计时用绝对时间戳写入方块实体数据, 支持退出/重启后继续计时 [已实现]
+50
View File
@@ -0,0 +1,50 @@
========================================
全部功能 - 未实现功能记录 (含原因)
(汇总所有功能分类的"没做什么",按分类分节)
========================================
说明:
- 本文件汇总全部功能分类中"未实现/暂缓"的内容, 每条注明原因
- 各分类的详细转换流程见 tuilun 下对应的《XX转化关系.txt》
- 统一的"总食用功能"尚未开发: 所有"吃"相关转换统一留待其实现, 避免重复
########################################
【动物养殖】(xy_animal)
########################################
一、鸡窝-高级机制(范围内鸡自动产蛋)
- 设想: 鸡窝5x5范围内有鸡下蛋 → 鸡窝自动改变形态逐级到5蛋, 同时地上的鸡蛋消失
- 未做原因: 转化文档标注【待定】, 当前仅实现"低级机制"——手持鸡蛋右键放置递增。
高级机制等机制确定后再做 (转化文档 todo 已注明"先实现这个")
二、粪便-食用
- 设想: 粪便(一坨/半坨/仅痕迹) 可食用
- 未做原因: 食用部分由统一的"总食用功能"汇总实现, 本次不实现 (转化文档已用 todo 标注)
########################################
【烧烤】(xy_barbecue)
########################################
一、烤鸡分食 (吃东西逐级分食)
- 方块: roast_chickenplace_1(整只) → roast_chickenplace_2(3/4只) →
roast_chickenplace_3(半只) → roast_chickenplace_4(1/4只) → 吃完消失
- 未做原因: 食用部分由统一的"总食用功能"汇总实现, 本次不实现 (转化文档已用 todo 标注)
二、烤乳猪分食 (剩余份数递减)
- 方块: roastpignew_1(整只) → roastpignew_2(5/6) → … → roastpignew_6(1/6) → 吃完消失
- 未做原因: 食用部分由统一的"总食用功能"汇总实现, 本次不实现 (转化文档已用 todo 标注)
三、烤鳕鱼(熟) 直接右键食用
- 方块: grilledcod_1(烤鳕鱼熟)
- 未做原因: 设计为"直接右键食用", 食用部分由统一的"总食用功能"实现
- 说明: 因设计为直接食用, 故【不设"取下"规则】→ 空手右键烤熟的烤鳕鱼
不会出现"取下"成功提示。这是设计如此, 不是遗漏。
烤熟时已有完成提示 "§e烤鳕鱼烤熟了!"
四、烤鲑鱼(熟) 直接右键食用
- 方块: grilled_salmon(烤鲑鱼熟)
- 未做原因: 设计为"直接右键食用", 食用部分由统一的"总食用功能"实现
- 说明: 因设计为直接食用, 故【不设"取下"规则】→ 空手右键烤熟的烤鲑鱼
不会出现"取下"成功提示。这是设计如此, 不是遗漏。
烤熟时已有完成提示 "§e烤鲑鱼烤熟了!"
+19 -3
View File
@@ -3,6 +3,7 @@
========================================
说明:
- 厨具分类无分组,按标识自动排序
- 锅铲/锅勺/带油锅铲为手持物品(由原方块版改为物品,原方块已删除)
- 部分厨具有交互转换(炉灶/丸子机/搅拌器/蒸笼/盘子)
- 其余为静态工具方块
- 【待确认】表示该步骤所需的具体操作或食材尚未最终确定
@@ -88,8 +89,23 @@
机制: 用盘子吃完食物后,盘子变为脏盘子
========================================
六、静态工具方块(无转换)
六、手持厨具物品(由原方块版改为物品)
========================================
spatula(锅铲)、potandspoon(锅勺)、oilcan(油罐)、rollingpin(擀面杖)、stonemill(石磨)、
oven(烤炉)、b_34(支杆)、bowlasoup(木碗)、platepile(盘子堆)
19. 锅铲(rtdd:spatula)
转换条件:[手持 右键 进行翻炒]
机制: 手持锅铲右键炒锅食材,每3次升一级(配合炒锅烹饪)
20. 带油锅铲(rtdd:spatula_oil,附魔光效)
转换条件:[手持 右键 炒锅 进行上油]
机制: 手持带油锅铲右键炒锅,炒锅+带油锅铲→炒锅(添油)(rtdd:oilpan),不消耗
21. 锅勺(rtdd:potandspoon)
转换条件:[静态手持物品]
机制: 手持物品,无独立转换
========================================
七、静态工具方块(无转换)
========================================
oilcan(油罐)、rollingpin(擀面杖)、stonemill(石磨)、oven(烤炉)、b_34(支杆)、
bowlasoup(木碗)、platepile(盘子堆)
以上为工具/器皿方块,用于配合各食物分类的烹饪流程,无独立转换
+3
View File
@@ -9,3 +9,6 @@
方块清单(均无转化关系)
========================================
balance(天平)、fishingnet(网(渔网))、magnifyingglass(放大镜)
todo 渔网
高级机制: 放在水中 一段时间后自动捕鱼 鱼以凋落物的形式 出现在 渔网上方 (后续实现)
+36 -36
View File
@@ -19,20 +19,20 @@
机制: 未开始切割时,空手右键可取下退回死牛(切后不可逆)
3. 挂肉钩(整只牛) -> 挂肉钩(牛_去头去皮)
转换条件:[手持 剑 右键 进行转换,掉落牛肉]
机制: 手持剑右键,掉落1份牛肉
转换条件:[手持 菜刀 右键 进行转换,掉落牛肉]
机制: 手持菜刀右键,掉落1份牛肉
4. 挂肉钩(牛_去头去皮) -> 挂肉钩(牛_去四肢)
转换条件:[手持 剑 右键 进行转换,掉落牛肉]
机制: 手持剑右键,掉落1份牛肉
转换条件:[手持 菜刀 右键 进行转换,掉落牛肉]
机制: 手持菜刀右键,掉落1份牛肉
5. 挂肉钩(牛_去四肢) -> 挂肉钩(牛_去肉)
转换条件:[手持 剑 右键 进行转换,掉落牛肉]
机制: 手持剑右键,掉落1份牛肉
转换条件:[手持 菜刀 右键 进行转换,掉落牛肉]
机制: 手持菜刀右键,掉落1份牛肉
6. 挂肉钩(牛_去肉) -> 挂肉钩(空钩)
转换条件:[手持 剑 右键 进行转换,掉落牛肉]
机制: 手持剑右键,掉落1份牛肉,钩子清空
转换条件:[手持 菜刀 右键 进行转换,掉落牛肉]
机制: 手持菜刀右键,掉落1份牛肉,钩子清空
========================================
二、挂肉钩 - 猪
@@ -46,20 +46,20 @@
机制: 未开始切割时,空手右键可取下退回死猪(切后不可逆)
9. 挂肉钩(整只猪) -> 挂肉钩(猪_去皮)
转换条件:[手持 剑 右键 进行转换,掉落生猪排]
机制: 手持剑右键,掉落1份生猪排
转换条件:[手持 菜刀 右键 进行转换,掉落生猪排]
机制: 手持菜刀右键,掉落1份生猪排
10. 挂肉钩(猪_去皮) -> 挂肉钩(猪_去四肢)
转换条件:[手持 剑 右键 进行转换,掉落生猪排]
机制: 手持剑右键,掉落1份生猪排
转换条件:[手持 菜刀 右键 进行转换,掉落生猪排]
机制: 手持菜刀右键,掉落1份生猪排
11. 挂肉钩(猪_去四肢) -> 挂肉钩(猪_去肉)
转换条件:[手持 剑 右键 进行转换,掉落生猪排]
机制: 手持剑右键,掉落1份生猪排
转换条件:[手持 菜刀 右键 进行转换,掉落生猪排]
机制: 手持菜刀右键,掉落1份生猪排
12. 挂肉钩(猪_去肉) -> 挂肉钩(空钩)
转换条件:[手持 剑 右键 进行转换,掉落生猪排]
机制: 手持剑右键,掉落1份生猪排,钩子清空
转换条件:[手持 菜刀 右键 进行转换,掉落生猪排]
机制: 手持菜刀右键,掉落1份生猪排,钩子清空
========================================
三、挂肉钩 - 羊
@@ -73,20 +73,20 @@
机制: 未开始切割时,空手右键可取下退回死羊(切后不可逆)
15. 挂肉钩(整只羊) -> 挂肉钩(羊_去皮)
转换条件:[手持 剑 右键 进行转换,掉落生羊肉]
机制: 手持剑右键,掉落1份生羊肉
转换条件:[手持 菜刀 右键 进行转换,掉落生羊肉]
机制: 手持菜刀右键,掉落1份生羊肉
16. 挂肉钩(羊_去皮) -> 挂肉钩(羊_去四肢)
转换条件:[手持 剑 右键 进行转换,掉落生羊肉]
机制: 手持剑右键,掉落1份生羊肉
转换条件:[手持 菜刀 右键 进行转换,掉落生羊肉]
机制: 手持菜刀右键,掉落1份生羊肉
17. 挂肉钩(羊_去四肢) -> 挂肉钩(羊_去肉)
转换条件:[手持 剑 右键 进行转换,掉落生羊肉]
机制: 手持剑右键,掉落1份生羊肉
转换条件:[手持 菜刀 右键 进行转换,掉落生羊肉]
机制: 手持菜刀右键,掉落1份生羊肉
18. 挂肉钩(羊_去肉) -> 挂肉钩(空钩)
转换条件:[手持 剑 右键 进行转换,掉落生羊肉]
机制: 手持剑右键,掉落1份生羊肉,钩子清空
转换条件:[手持 菜刀 右键 进行转换,掉落生羊肉]
机制: 手持菜刀右键,掉落1份生羊肉,钩子清空
========================================
四、挂肉钩 - 鲑鱼晾晒(单向)
@@ -108,12 +108,12 @@
机制: 计时晾干,约300秒自动变为干鲑鱼
23. 鲑鱼干挂肉钩(一条) -> 挂肉钩(空钩)
转换条件:[右键 进行转换,获得鲑鱼干]
机制: 空手右键,获得1份鲑鱼干,钩子清空
转换条件:[右键 进行转换,获得鱼干]
机制: 空手右键,获得1份鱼干,钩子清空
24. 鲑鱼干挂肉钩(两条) -> 鲑鱼干挂肉钩(一条)
转换条件:[右键 进行转换,获得鲑鱼干]
机制: 空手右键,获得1份鲑鱼干,剩一条
转换条件:[右键 进行转换,获得鱼干]
机制: 空手右键,获得1份鱼干,剩一条
========================================
五、挂肉钩 - 鳕鱼晾晒(单向)
@@ -131,8 +131,8 @@
机制: 计时晾干,约300秒自动变为干鳕鱼
28. 鳕鱼干挂肉钩(两条) -> 挂肉钩(空钩)
转换条件:[右键 进行转换,获得熟鳕鱼]
机制: 空手右键,获得1份熟鳕鱼,钩子清空
转换条件:[右键 进行转换,获得鱼干]
机制: 空手右键,获得1份鱼干,钩子清空
========================================
六、挂肉钩 - 生鱼(挂肉钩_5/6,当前禁用)(单向)
@@ -153,14 +153,14 @@
========================================
七、死鱼/死鱿鱼 处理
========================================
32. 死鲑鱼 -> 死鲑鱼(切一刀) -> 死鲑鱼(切两刀) -> 死鲑鱼(切三刀)
32. 死鲑鱼 -> 死鲑鱼(切一刀) -> 死鲑鱼(切两刀) -> 死鲑鱼(切三刀)->空
转换条件:[手持 菜刀 右键 依次切割]
机制: 手持菜刀右键,每刀切一级,共四刀
todo : 每刀切一级,共四刀,获得4份生鱼片
33. 死鳕鱼 -> 死鳕鱼(切一刀) -> 死鳕鱼(切两刀)->空
转换条件:[手持 菜刀 右键 依次切割]
机制: 手持菜刀右键,每刀切一级,共三刀
33. 死鳕鱼 -> 死鳕鱼(切一刀) -> 死鳕鱼(切两刀)
转换条件:[手持 菜刀 右键 依次切割]
机制: 手持菜刀右键,每刀切一级,共两刀
todo : 每刀切一级,共三刀,获得3份生鱼片
34. 死鱿鱼 -> 死鱿鱼(切掉鱿鱼须)
转换条件:[手持 菜刀 右键 进行转换]
机制: 手持菜刀右键,切掉鱿鱼须,获得鱿鱼须
+9 -9
View File
@@ -108,9 +108,9 @@
转换条件:[计时自动转换]
机制: 计时约60秒升一级,共三级变熟
24. 蔬菜汤 + 瘦肉 -> 蔬菜瘦肉汤_生
转换条件:[手持 瘦肉 右键 进行转换,消耗1个]
机制: 手持瘦肉右键,消耗1个,变为蔬菜瘦肉汤_生
24. 蔬菜汤 + 碎肉 -> 蔬菜瘦肉汤_生
转换条件:[手持 碎肉 右键 进行转换,消耗1个]
机制: 手持碎肉右键,消耗1个,变为蔬菜瘦肉汤_生(菜名保留,食材用碎肉替代瘦肉)
25. 蔬菜瘦肉汤_生 -> 蔬菜瘦肉汤_四分熟 -> 蔬菜瘦肉汤_八分熟 -> 蔬菜瘦肉汤_熟
转换条件:[计时自动转换]
@@ -124,9 +124,9 @@
转换条件:[计时自动转换]
机制: 计时约60秒升一级,共三级变熟
28. 胡萝卜土豆汤 + 牛骨 -> 胡萝卜土豆牛骨汤_生
转换条件:[手持 牛骨(食材分类) 右键 进行转换,消耗1个]
机制: 手持牛骨右键,消耗1个,变为胡萝卜土豆牛骨汤_生
28. 胡萝卜土豆汤 + 牛腿 -> 胡萝卜土豆牛骨汤_生
转换条件:[手持 牛腿(食材分类) 右键 进行转换,消耗1个]
机制: 手持牛腿右键,消耗1个,变为胡萝卜土豆牛骨汤_生(菜名保留,食材用牛腿替代牛骨)
29. 胡萝卜土豆牛骨汤_生 -> 胡萝卜土豆牛骨汤_四分熟 -> 胡萝卜土豆牛骨汤_八分熟 -> 胡萝卜土豆牛骨汤_熟
转换条件:[计时自动转换]
@@ -142,7 +142,7 @@
32. 胡萝卜土豆汤 + 羊排 -> 胡萝卜土豆羊排汤_生
转换条件:[手持 羊排 右键 进行转换,消耗1个]
机制: 手持羊排右键,消耗1个,变为胡萝卜土豆羊排汤_生(羊排食材后续补充)
机制: 手持羊排右键,消耗1个,变为胡萝卜土豆羊排汤_生
33. 胡萝卜土豆羊排汤_生 -> 胡萝卜土豆羊排汤_三分熟 -> 胡萝卜土豆羊排汤_七分熟 -> 胡萝卜土豆羊排汤_熟
转换条件:[计时自动转换]
@@ -174,7 +174,7 @@
40. 瘦肉蛋花汤底 + 鸡蛋 -> 瘦肉蛋花汤_生
转换条件:[手持 鸡蛋 右键 进行转换,消耗1个]
机制: 手持鸡蛋右键,消耗1个,变为瘦肉蛋花汤_生(汤底来源后续确认)
机制: 手持鸡蛋右键,消耗1个,变为瘦肉蛋花汤_生(瘦肉蛋花汤底由碎肉制成,菜名保留)
41. 瘦肉蛋花汤_生 -> 瘦肉蛋花汤_三分熟 -> 瘦肉蛋花汤_七分熟 -> 瘦肉蛋花汤_全熟 -> 瘦肉蛋花汤_熟
转换条件:[计时自动转换]
@@ -210,7 +210,7 @@
49. 汤锅(加水) + 猪蹄 -> 猪蹄汤_生
转换条件:[手持 猪蹄 右键 进行转换,消耗1个]
机制: 手持猪蹄右键,消耗1个,变为猪蹄汤_生(猪蹄食材后续补充)
机制: 手持猪蹄右键,消耗1个,变为猪蹄汤_生
50. 猪蹄汤_生 -> 猪蹄汤_三分熟 -> 猪蹄汤_七分熟 -> 猪蹄汤_全熟 -> 猪蹄汤_熟
转换条件:[计时自动转换]
+17 -16
View File
@@ -2,7 +2,8 @@
【油锅】(xy_youguo) 转化关系
========================================
说明:
- 油锅烹饪规律: 空锅 -> 满油 -> 加食材(生) -> 半熟 -> 熟 -> 出锅成品
- 油锅烹饪规律: 空锅 -> 满油 -> 加裹粉半成品(生) -> 半熟 -> 熟 -> 出锅成品
- 油锅炸物需先裹面粉: 生食材 -> 裹粉半成品(乡野食材分类) -> 下油锅
- 阶段转换统一为: 计时自动转换,每级约60秒(可右键提前,具体待定)
- 出锅统一为: 手持盘子右键,消耗1个,获得成品
@@ -13,41 +14,41 @@
转换条件:[手持 食用油(油罐) 右键 进行转换,消耗1个]
机制: 手持油罐右键空锅,消耗1罐油,变为满油锅
2. 油锅(满油) + 鸡块 -> 炸鸡块_生
转换条件:[手持 鸡块(食材分类) 右键 进行转换,消耗1个]
机制: 手持鸡块右键,消耗1个,变为炸鸡块_生
2. 油锅(满油) + 裹粉的鸡块 -> 炸鸡块_生
转换条件:[手持 裹粉的鸡块(食材分类) 右键 进行转换,消耗1个]
机制: 手持裹粉的鸡块右键,消耗1个,变为炸鸡块_生
3. 炸鸡块_生 -> 炸鸡块_半熟 -> 炸鸡块_熟
转换条件:[计时自动转换]
机制: 计时约60秒升一级,共两级变熟
4. 油锅(满油) + 猪排 -> 炸猪排_生
转换条件:[手持 猪排 右键 进行转换,消耗1个]
机制: 手持猪排右键,消耗1个,变为炸猪排_生
4. 油锅(满油) + 裹粉的猪肉 -> 炸猪排_生
转换条件:[手持 裹粉的猪肉(食材分类) 右键 进行转换,消耗1个]
机制: 手持裹粉的猪肉右键,消耗1个,变为炸猪排_生
5. 炸猪排_生 -> 炸猪排_半熟 -> 炸猪排_熟
转换条件:[计时自动转换]
机制: 计时约60秒升一级,共两级变熟
6. 油锅(满油) + 土豆 -> 炸薯条_生
转换条件:[手持 土豆(食材分类) 右键 进行转换,消耗1个]
机制: 手持土豆右键,消耗1个,变为炸薯条_生
6. 油锅(满油) + 裹粉的薯条 -> 炸薯条_生
转换条件:[手持 裹粉的薯条(食材分类) 右键 进行转换,消耗1个]
机制: 手持裹粉的薯条右键,消耗1个,变为炸薯条_生
7. 炸薯条_生 -> 炸薯条_半熟 -> 炸薯条_熟
转换条件:[计时自动转换]
机制: 计时约60秒升一级,共两级变熟
8. 油锅(满油) + 鱼块 -> 炸鱼块_生
转换条件:[手持 鱼(食材分类) 右键 进行转换,消耗1个]
机制: 手持鱼块右键,消耗1个,变为炸鱼块_生
8. 油锅(满油) + 裹粉的鱼 -> 炸鱼块_生
转换条件:[手持 裹粉的鱼(食材分类) 右键 进行转换,消耗1个]
机制: 手持裹粉的鱼右键,消耗1个,变为炸鱼块_生(裹粉的鱼由生鱼片裹粉而来)
9. 炸鱼块_生 -> 炸鱼块_半熟 -> 炸鱼块_熟
转换条件:[计时自动转换]
机制: 计时约60秒升一级,共两级变熟
10. 油锅(满油) + 天妇罗食材 -> 炸天妇罗_生
转换条件:[手持 天妇罗食材(虾等) 右键 进行转换,消耗1个]
机制: 手持天妇罗食材右键,消耗1个,变为炸天妇罗_生
10. 油锅(满油) + 裹粉的天妇罗 -> 炸天妇罗_生
转换条件:[手持 裹粉的天妇罗(食材分类) 右键 进行转换,消耗1个]
机制: 手持裹粉的天妇罗右键,消耗1个,变为炸天妇罗_生(裹粉的天妇罗由龙虾裹粉而来)
11. 炸天妇罗_生 -> 炸天妇罗_熟
转换条件:[计时自动转换]
+5 -5
View File
@@ -3,7 +3,7 @@
========================================
说明:
- 炒锅烹饪基本都需要"灶台"底座(灶台基础款/炉灶点燃态)
- 菜名即食材: 即使当前缺少某食材方块(如羊腿),转换依然按菜名写该食材,缺失的后续补充
- 菜名即食材: 转换按菜名写该食材; 羊腿/羊里脊/羊排/牛里脊/牛腿/五花肉/猪排骨/猪蹄等肉类食材已迁入乡野食材分类
- 翻炒统一为: 手持锅铲右键,每3次升一级,冷却约1.5秒
- 出锅统一为: 手持盘子/碗右键,消耗1个,获得成品菜
@@ -130,7 +130,7 @@
29. 炒胡萝卜_熟 + 羊腿 -> 胡萝卜羊腿_生
转换条件:[手持 羊腿 右键 进行转换,消耗1个]
机制: 手持羊腿右键,消耗1个,变为胡萝卜羊腿_生(羊腿食材后续补充)
机制: 手持羊腿右键,消耗1个,变为胡萝卜羊腿_生
30. 胡萝卜羊腿_生 -> 胡萝卜羊腿_熟
转换条件:[手持 锅铲 翻炒3次,进行转换]
@@ -234,7 +234,7 @@
55. 炒胡萝卜_熟 + 羊里脊 -> 胡萝卜炒羊里脊_生
转换条件:[手持 羊里脊 右键 进行转换,消耗1个]
机制: 手持羊里脊右键,消耗1个,变为胡萝卜炒羊里脊_生(羊里脊食材后续补充)
机制: 手持羊里脊右键,消耗1个,变为胡萝卜炒羊里脊_生
56. 胡萝卜炒羊里脊_生 -> 胡萝卜炒羊里脊_熟
转换条件:[手持 锅铲 翻炒3次,进行转换]
@@ -242,7 +242,7 @@
57. 炒胡萝卜_熟 + 羊排 -> 胡萝卜炒羊排_生
转换条件:[手持 羊排 右键 进行转换,消耗1个]
机制: 手持羊排右键,消耗1个,变为胡萝卜炒羊排_生(羊排食材后续补充)
机制: 手持羊排右键,消耗1个,变为胡萝卜炒羊排_生
58. 胡萝卜炒羊排_生 -> 胡萝卜炒羊排_熟
转换条件:[手持 锅铲 翻炒3次,进行转换]
@@ -278,7 +278,7 @@
66. 炒胡萝卜_熟 + 牛里脊 -> 胡萝卜牛里脊_生
转换条件:[手持 牛里脊 右键 进行转换,消耗1个]
机制: 手持牛里脊右键,消耗1个,变为胡萝卜牛里脊_生(牛里脊食材后续补充)
机制: 手持牛里脊右键,消耗1个,变为胡萝卜牛里脊_生
67. 胡萝卜牛里脊_生 -> 胡萝卜牛里脊_熟
转换条件:[手持 锅铲 翻炒3次,进行转换]
+50 -79
View File
@@ -1,95 +1,66 @@
========================================
【跨分类食材汇总】(待补充部分)
【跨分类食材汇总】(按实现进度记录)
========================================
说明:
- 本文汇总各分类转换关系中"用到其他分类方块/物品"的情况
- 跨分类引用按"被引用的食材/物品 -> 来源分类 -> 在哪个分类被使用"整理
- 具体消耗数量、投放顺序等细节在各分类txt的机制中已尽量写明,剩余待确认项见第六节
- 本文汇总各功能分类"实际实现功能时"用到的其他分类方块/物品
- 做到哪写到哪: 只记录【已实现】分类的跨分类引用, 新分类实现后再追加
- 当前已实现分类: 动物养殖、烧烤
- 2026-09-02: 从Java版乡野mod迁移一批食材/工具到基岩版(见第三节), 原"缺失食材"清单已结清
========================================
一、食材类(乡野食材 xy_ingredients)
一、动物养殖 (xy_animal)
========================================
胡萝卜: 用于 炒锅(炒胡萝卜/各菜式)、汤锅(各汤底/汤羹)、动物养殖(猪饲料)
土豆: 用于 炒锅(炒土豆/土豆炒猪肉)、汤锅(土豆汤/炖菜)、油锅(炸薯条)
辣椒: 用于 炒锅(辣椒锅底/辣子鸡丁/辣炒鲑鱼/辣椒炒牛肉)、烧烤(辣椒串)
大蒜: 用于 炒锅(加大蒜)
香菜: 用于 炒锅(香菜锅底)
碎肉/肉馅: 用于 炒锅(炒碎肉)、面食(饺子馅/包子馅)、厨具(丸子机)
蔬菜: 用于 炒锅(炒时蔬)、汤锅(蔬菜汤)、烧烤(烤蔬菜串)、面食(饺子馅/煎饼)
大米: 用于 汤锅(煮米饭)、寿司(海带加米)、面食(竹筒饭)、炒锅(蛋炒饭)
鸡蛋: 用于 炒锅(煎蛋/蛋炒饭)、汤锅(蛋花汤)、面包甜点(蛋液/蛋糕)、厨具(搅拌器)、面食(和面)
葱: 用于 炒锅(加葱)、汤锅(豆腐汤加葱花)
各类水果: 用于 乡野饮料(榨汁/冰棍/炒冰)、酒水酿造(酿造原料)
- 鸡蛋(minecraft:egg) : 鸡窝放蛋(消耗1)/取蛋(掉落对应数量)
- 小麦种子(minecraft:wheat_seeds) : 鸡饲料盆填充(消耗16个)
- 小麦(minecraft:wheat) : 饲料槽填充(消耗32个)
- 胡萝卜(minecraft:carrot) : 饲料槽填充(消耗32个)
- 水桶(minecraft:water_bucket) : 饲料槽加水(消耗水桶, 返还空桶)
→ 空桶(minecraft:bucket)
========================================
二、肉类/鱼类(部分属死亡生物 xy_deadmob / 食材分类)
二、烧烤 (xy_barbecue)
========================================
死牛/死猪/死羊: 用于 死亡生物(挂肉钩挂放切肉)、厨具/食材(加工)
生牛肉: 用于 炒锅(黑椒牛排等)、汤锅(牛肉汤)、烧烤(牛肉串)
生猪肉/猪排:用于 炒锅(清炒猪排等)、汤锅(猪杂汤)、油锅(炸猪排)、烧烤(烤乳猪)
羊肉: 用于 炒锅(清炒羊肉等)、汤锅(羊肉汤)、烧烤(羊肉串)
牛排骨/猪排骨:用于 炒锅(胡萝卜牛排骨/猪排骨)、汤锅(胡萝卜排骨汤)
牛腿/牛里脊/羊腿/羊里脊/羊排: 用于 炒锅(各菜式)(注:羊腿/羊里脊/羊排/牛里脊等食材方块缺失,后续补充)
牛骨: 用于 汤锅(胡萝卜土豆牛骨汤)
鸡/鸡肉: 用于 炒锅(小炒鸡肉/辣子鸡丁等)、汤锅(蘑菇炖鸡)、油锅(炸鸡块)、烧烤(烤鸡)
兔肉: 用于 炒锅(辣炒兔肉)
鳕鱼: 用于 炒锅(胡萝卜炒鳕鱼)、汤锅(鳕鱼汤/胡萝卜鳕鱼汤)、油锅(炸鱼块)、烧烤(烤鳕鱼)、死亡生物(挂鳕鱼)、寿司(鳕鱼寿司)
鲑鱼: 用于 炒锅(煎鲑鱼/胡萝卜鲑鱼等)、汤锅(鲑鱼汤等)、烧烤(烤鲑鱼)、市场(售卖盒换鲑鱼箱)、死亡生物(鲑鱼晾晒)、寿司(鲑鱼寿司)
鱿鱼: 用于 炒锅(炒鱿鱼/炒鱿鱼须)、汤锅(鱿鱼汤)、厨具(丸子机)、寿司(手握鱿鱼寿司)
螃蟹: 用于 炒锅(炒蟹)
热带鱼: 用于 寿司(热带鱼寿司)
鱼肉: 用于 汤锅(蔬菜鱼片汤)、油锅(炸鱼块)
- 打火石(minecraft:flint_and_steel): 烧烤架点火(不消耗)
- 烈焰弹(minecraft:fire_charge) : 烧烤架点火(消耗1个)
- 水桶(minecraft:water_bucket) : 烧烤架灭火(消耗水桶, 返还空桶)
→ 空桶(minecraft:bucket)
- 生鸡肉(minecraft:chicken) : 手持右键方块表面 → 生成"生鸡肉(放置后)"
roastchickenplace_0(消耗1个)
- 生鸡肉(放置后)(rtdd:roastchickenplace_0): 上杆烤鸡(消耗1个)
- 死猪(rtdd:dead_pig) : 上杆烤乳猪(消耗1个)
- 鳕鱼(minecraft:cod) : 上杆烤鳕鱼(消耗1个)
- 鲑鱼(minecraft:salmon) : 上杆烤鲑鱼(消耗1个)
- 篝火(minecraft:campfire) : 支杆下方烤制底座(烤鸡/烤乳猪/烤鱼计时烤制需在下方)
========================================
三、面食类(面食 xy_mianshi)
三、本次新迁移食材/工具(来自Java版 乡野1.20.1-8.2)
========================================
面团: 用于 炒锅(煎面饼/煎馍/煎饼/煎葱油饼/煎酱香饼)、厨具(丸子机)、面包甜点(胚料)
面条: 用于 炒锅(意面)、汤锅(煮面汤)
饺子: 用于 汤锅(饺子汤)、油锅(炸饺子)、面食(蒸饺子)
馍: 用于 汤锅(羊肉泡馍汤)
包子: 用于 汤锅/面包甜点(蒸笼系列)
竹筒: 用于 面食(竹筒饭)
说明: 从Java版找到并迁移到基岩版, 均已落到具体分类
- 工具: 菜刀(rtdd:cleaver) → 厨具分类(xy_kitchenware), 用于切肉/切鱼/切寿司等
- 肉类(→乡野食材): 羊腿(legsleep)、羊里脊(sheeploins)、羊小排(sheepracks)、
牛里脊(beef_tenderloin)、牛腿肉(legcow)、五花肉(porkloins)、猪肋排(porkrib)、
猪蹄(ham)、碎肉(crushedmeat)
- 鱼/海鲜(→乡野食材): 鱿鱼须(rawsquidwhiskersr)、螃蟹(crab)、龙虾(lobster)、
生鱼片(sashimi)、鱼干(thedriedfish)
- 蔬菜/调料(→乡野食材): 豆腐(beancurd)、蒜末(crushedgarlic)
- 裹粉半成品(→乡野食材, 油锅炸物前置): 裹粉的天妇罗(oiltempura)、裹粉的鱼(oilfish)、
裹粉的猪肉(oilpork)、裹粉的鸡块(oil_chickennuggets)、裹粉的薯条(oilfrenchfries)
========================================
四、厨具类(厨具 xy_kitchenware)
四、已放弃食材(不迁移, 采用替代方案)
========================================
盘子: 用于 炒锅(出锅装盘)、油锅(出锅)、家具(盘子架)
木碗: 用于 汤锅(盛汤)
蒸笼: 用于 面食(蒸饺子/蒸包子/竹筒饭)、面包甜点(蒸牛奶鸡蛋)
锅铲: 用于 炒锅(翻炒)
擀面杖: 用于 面食(擀面)
带油锅铲: 用于 炒锅(上油)
食用油: 用于 油锅(加油)
菜刀: 用于 死亡生物(切肉)、乡野食材(切菜)、面包甜点(切蛋糕)、面食(切面饼)、烧烤(切烤物)、寿司(切寿司)
说明: 以下食材放弃单独制作, 配方中使用替代品(菜名均保留)
========================================
五、其他跨分类引用
========================================
书/附魔书(原版): 用于 家具(书柜)
唱片(原版): 用于 家具(古式唱片机)
水桶/桶(原版): 用于 家具(水槽取水)、吊锅(加水)、烧烤(灭火)、动物养殖(饲料槽水槽)、汤锅(加水)、面食(和面加水)
打火石/烈焰弹(原版):用于 厨具(炉灶点火)、烧烤(烧烤架点火)、家具(壁炉)
小麦(原版): 用于 动物养殖(饲料槽)
箭(原版): 用于 家具(箭桶)
药水(原版): 用于 药物系统(药水架)
药材: 用于 药物系统(药罐)、面包甜点(蛋糕口味)
豆腐/香菇/番茄等: 用于 炒锅(麻婆豆腐/意面)、汤锅(豆腐汤/蘑菇汤)
竹帘: 用于 寿司(卷制)
========================================
六、后续待确认清单(汇总)
========================================
1. 炒锅各菜式"生->熟"翻炒次数(默认3次,部分可调整)
2. 汤锅各汤羹"生->熟"触发方式(默认计时约60秒一级)
3. 油锅"生->半熟->熟"触发方式(默认计时约60秒一级)
4. 蒸笼蒸制(饺子/包子/竹筒饭/牛奶鸡蛋)触发方式(默认计时约60秒)
5. 蛋糕/面包/布丁/舒芙蕾烘焙方式与时间(默认烤炉计时约60秒)
6. 酒水酿造酒桶升级顺序与原料(待确认)
7. 吊锅炖煮配方(后续补充)
8. 寿司卷制/切块的竹帘与菜刀操作方式(待确认)
9. 条箱/货桶放入物品机制(静态或可交互,待确认)
10. 鸡窝产蛋、饲料槽进食、粪便产生计时机制(动物养殖已给出:鸡窝低级手持鸡蛋放置/高级5x5范围产蛋,饲料消耗种子16/小麦32/胡萝卜32,计时3分钟)
11. 果树结果、水稻生长计时机制(默认计时约60秒一级,可调整)
12. 搅拌器各阶段搅打完成后的用途(待确认)
13. 药罐制药药材与配方(待确认)
14. 缺失食材方块: 羊腿/羊里脊/羊排/牛里脊/猪蹄 等按菜名写入转换,后续需补充对应食材方块
- 牛骨 → 用牛腿替代(如"胡萝卜土豆牛骨汤"仍叫此名, 食材放牛腿)
- 瘦肉 → 用碎肉替代(如"蔬菜瘦肉汤/瘦肉蛋花汤"食材用碎肉)
- 鳕鱼块/鲑鱼块/鱼肉/鱼块 → 统一用生鱼片替代(死鱼切割产物=生鱼片)
- 虾 → 用龙虾做裹粉天妇罗的原料
- 番茄 → 放弃(无独立番茄食材)
- 香菇 → 用原版蘑菇替代
- 裹粉的南瓜卷 / 裹粉的鸡米花 → 放弃
- 铁锯 → 放弃(仅保留菜刀作为刀具)