搬运了原版食材 原版锅铲贴图 去掉了旧版锅铲锅勺
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"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 397 B |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 373 B |
|
After Width: | Height: | Size: 417 B |
|
After Width: | Height: | Size: 435 B |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 407 B |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 349 B |
|
After Width: | Height: | Size: 345 B |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 495 B |
@@ -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)属厨具分类,不在此清单
|
||||
@@ -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 把计时启动转发给计时服务 [已实现]
|
||||
- 计时用绝对时间戳写入方块实体数据, 支持退出/重启后继续计时 [已实现]
|
||||
@@ -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烤鲑鱼烤熟了!"
|
||||
@@ -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(盘子堆)
|
||||
以上为工具/器皿方块,用于配合各食物分类的烹饪流程,无独立转换
|
||||
@@ -9,3 +9,6 @@
|
||||
方块清单(均无转化关系)
|
||||
========================================
|
||||
balance(天平)、fishingnet(网(渔网))、magnifyingglass(放大镜)
|
||||
|
||||
todo 渔网
|
||||
高级机制: 放在水中 一段时间后自动捕鱼 鱼以凋落物的形式 出现在 渔网上方 (后续实现)
|
||||
@@ -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. 死鱿鱼 -> 死鱿鱼(切掉鱿鱼须)
|
||||
转换条件:[手持 菜刀 右键 进行转换]
|
||||
机制: 手持菜刀右键,切掉鱿鱼须,获得鱿鱼须
|
||||
|
||||
@@ -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. 猪蹄汤_生 -> 猪蹄汤_三分熟 -> 猪蹄汤_七分熟 -> 猪蹄汤_全熟 -> 猪蹄汤_熟
|
||||
转换条件:[计时自动转换]
|
||||
|
||||
@@ -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. 炸天妇罗_生 -> 炸天妇罗_熟
|
||||
转换条件:[计时自动转换]
|
||||
|
||||
@@ -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次,进行转换]
|
||||
|
||||
@@ -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. 缺失食材方块: 羊腿/羊里脊/羊排/牛里脊/猪蹄 等按菜名写入转换,后续需补充对应食材方块
|
||||
- 牛骨 → 用牛腿替代(如"胡萝卜土豆牛骨汤"仍叫此名, 食材放牛腿)
|
||||
- 瘦肉 → 用碎肉替代(如"蔬菜瘦肉汤/瘦肉蛋花汤"食材用碎肉)
|
||||
- 鳕鱼块/鲑鱼块/鱼肉/鱼块 → 统一用生鱼片替代(死鱼切割产物=生鱼片)
|
||||
- 虾 → 用龙虾做裹粉天妇罗的原料
|
||||
- 番茄 → 放弃(无独立番茄食材)
|
||||
- 香菇 → 用原版蘑菇替代
|
||||
- 裹粉的南瓜卷 / 裹粉的鸡米花 → 放弃
|
||||
- 铁锯 → 放弃(仅保留菜刀作为刀具)
|
||||