乡野食材 功能实现 1
This commit is contained in:
1 parent
b947847def
commit
098290c6b6
21 files changed
+697
-1583
No files matched your search
@@ -16,6 +16,7 @@ from xiangyemod.chuju.service.ChujuService import ChujuService
|
||||
from xiangyemod.chuju.service.ChujuTimerService import ChujuTimerService
|
||||
from xiangyemod.ziran.service.NaturalService import NaturalService
|
||||
from xiangyemod.ziran.service.NaturalTimerService import NaturalTimerService
|
||||
from xiangyemod.shicai.service.ShicaiService import ShicaiService
|
||||
|
||||
if not serverApi.IsInServer():
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
================================================================================
|
||||
乡野食材(xy_ingredients)·切配与裹粉 规则数据
|
||||
================================================================================
|
||||
统一管理"食材切配"(菜刀切分 / 蒜末) 与 "裹粉半成品" 的规则常量。
|
||||
只被 ShicaiService 读取,FeatureDispatcher 通过方块名 O(1) 路由到服务。
|
||||
|
||||
【一、菜刀切分】(CHOP_CHAINS)
|
||||
手持 菜刀(rtdd:cleaver) 右键"摆放地上"的切配方块, 逐级切分;
|
||||
切到最后一级再切 -> 掉落对应"碎"(数量见 drop) 并把方块变空气。
|
||||
|
||||
【二、蒜末】(GARLIC)
|
||||
手持 菜刀 右键 大蒜(rtdd:cutgarlic) 三次 -> 掉落 16 个蒜末并消失。
|
||||
|
||||
【三、裹粉】(COATING_RULES)
|
||||
手持生食材右键 面粉块(rtdd:farineblock_3) -> 消耗若干生食材 + 面粉块(变空气),
|
||||
掉落对应的裹粉半成品物品(供油锅炸物)。
|
||||
================================================================================
|
||||
"""
|
||||
|
||||
# 菜刀
|
||||
CLEAVER_ITEM = "rtdd:cleaver"
|
||||
|
||||
# 切分链: blocks 为逐级方块序列, 切到最后一级继续切 -> 掉 drop 并变空气
|
||||
CHOP_CHAINS = [
|
||||
{
|
||||
"blocks": [
|
||||
"rtdd:cutcarrot_0", "rtdd:cutcarrot_1", "rtdd:cutcarrot_2",
|
||||
"rtdd:cutcarrot_3", "rtdd:cutcarrot_4",
|
||||
],
|
||||
"drop": {"name": "rtdd:crushed_carrots", "count": 3},
|
||||
"tip": "§a切出了胡萝卜碎",
|
||||
},
|
||||
{
|
||||
"blocks": [
|
||||
"rtdd:cutpotato_0", "rtdd:cutpotato_1", "rtdd:cutpotato_2",
|
||||
"rtdd:cutpotato_3", "rtdd:cutpotato_4",
|
||||
],
|
||||
"drop": {"name": "rtdd:potato_wedges", "count": 3},
|
||||
"tip": "§a切出了土豆块",
|
||||
},
|
||||
{
|
||||
"blocks": [
|
||||
"rtdd:cutvegetable_0", "rtdd:cutvegetable_1",
|
||||
"rtdd:cutvegetable_2", "rtdd:cutvegetable_3",
|
||||
],
|
||||
"drop": {"name": "rtdd:vegetable", "count": 3},
|
||||
"tip": "§a切出了青菜碎",
|
||||
},
|
||||
{
|
||||
"blocks": [
|
||||
"rtdd:cutscallions_1", "rtdd:cutscallions_2",
|
||||
"rtdd:cutscallions_3", "rtdd:cutscallions_4",
|
||||
],
|
||||
"drop": {"name": "rtdd:crushed_scallions", "count": 3},
|
||||
"tip": "§a切出了葱花碎",
|
||||
},
|
||||
]
|
||||
|
||||
# ---- 蒜末: 大蒜 + 菜刀右键 GARLIC_CHOP_COUNT 次 -> 掉落 GARLIC_DROP ----
|
||||
GARLIC_BLOCK = "rtdd:cutgarlic"
|
||||
GARLIC_CHOP_COUNT = 3
|
||||
GARLIC_DROP = {"name": "rtdd:crushedgarlic", "count": 16}
|
||||
|
||||
# ---- 裹粉: 面粉块 + 生食材 -> 掉落裹粉半成品 ----
|
||||
FLOUR_BLOCK = "rtdd:farineblock_3"
|
||||
COATING_RULES = [
|
||||
{"item": "rtdd:sashimi", "count": 6,
|
||||
"drop": {"name": "rtdd:oilfish_0", "count": 1}},
|
||||
{"item": "rtdd:lobster", "count": 2,
|
||||
"drop": {"name": "rtdd:oiltempura", "count": 1}},
|
||||
{"item": "minecraft:porkchop", "count": 1,
|
||||
"drop": {"name": "rtdd:oilpork", "count": 1}},
|
||||
{"item": "minecraft:chicken", "count": 1,
|
||||
"drop": {"name": "rtdd:oil_chickennuggets", "count": 6}},
|
||||
{"item": "minecraft:potato", "count": 1,
|
||||
"drop": {"name": "rtdd:oilfrenchfries", "count": 10}},
|
||||
]
|
||||
|
||||
# ---- 左键破坏掉落: 摆在地上的切配方块 -> 原版食材(相对"切配态"的原版不切物品) ----
|
||||
DESTROY_DROP = {
|
||||
"rtdd:cutcarrot_0": "minecraft:carrot",
|
||||
"rtdd:cutcarrot_1": "minecraft:carrot",
|
||||
"rtdd:cutcarrot_2": "minecraft:carrot",
|
||||
"rtdd:cutcarrot_3": "minecraft:carrot",
|
||||
"rtdd:cutcarrot_4": "minecraft:carrot",
|
||||
"rtdd:cutpotato_0": "minecraft:potato",
|
||||
"rtdd:cutpotato_1": "minecraft:potato",
|
||||
"rtdd:cutpotato_2": "minecraft:potato",
|
||||
"rtdd:cutpotato_3": "minecraft:potato",
|
||||
"rtdd:cutpotato_4": "minecraft:potato",
|
||||
"rtdd:cutvegetable_0": "rtdd:qingcai",
|
||||
"rtdd:cutvegetable_1": "rtdd:qingcai",
|
||||
"rtdd:cutvegetable_2": "rtdd:qingcai",
|
||||
"rtdd:cutvegetable_3": "rtdd:qingcai",
|
||||
"rtdd:cutscallions_1": "rtdd:scallions",
|
||||
"rtdd:cutscallions_2": "rtdd:scallions",
|
||||
"rtdd:cutscallions_3": "rtdd:scallions",
|
||||
"rtdd:cutscallions_4": "rtdd:scallions",
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
+292
@@ -0,0 +1,292 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
================================================================================
|
||||
乡野食材·切配与裹粉 右键转换引擎(服务端)
|
||||
================================================================================
|
||||
处理"乡野食材"(xy_ingredients) 分类下的右键转换:
|
||||
菜刀切分配(胡萝卜/土豆/青菜/葱花 逐级切 + 切碎掉落)、
|
||||
蒜末(大蒜+菜刀右键三次)、裹粉半成品(生食材+面粉块)。
|
||||
|
||||
【事件监听在哪?】
|
||||
本类【不】监听任何事件!
|
||||
所有事件由 FeatureDispatcher 统一监听,按 blockOwner 路由到本类 handleBlockUse。
|
||||
|
||||
【本类怎么做】
|
||||
handleBlockUse ← 入口:分发器转发右键方块事件
|
||||
├─ _handleChop ← 菜刀切分(切配方块逐级推进 / 最后一刀掉碎)
|
||||
├─ _handleGarlic ← 蒜末(菜刀右键大蒜计数)
|
||||
└─ _handleCoating ← 裹粉(生食材右键面粉块)
|
||||
(通用工具) getCarriedItem / consumeItem / dropItems / replaceBlock /
|
||||
clearBlock / checkCooldown
|
||||
================================================================================
|
||||
"""
|
||||
import time
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
# ---- 网易API基础对象 ----
|
||||
ServerSystem = serverApi.GetServerSystemCls() # 服务端系统基类
|
||||
comp = serverApi.GetEngineCompFactory() # 组件工厂
|
||||
|
||||
# ---- 继承 BlueFox 框架的系统基类(提供 CreateEngineItemEntity 等方法) ----
|
||||
from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
||||
from ....BlueFoxTools.ToolsConfig import LevelId
|
||||
|
||||
# ---- 只导入乡野食材自己的数据库 ----
|
||||
from ..ShicaiData import (
|
||||
CLEAVER_ITEM, CHOP_CHAINS, GARLIC_BLOCK, GARLIC_CHOP_COUNT,
|
||||
GARLIC_DROP, FLOUR_BLOCK, COATING_RULES, DESTROY_DROP,
|
||||
)
|
||||
|
||||
# ---- 统一分发器 ----
|
||||
from ...service.FeatureDispatcher import FeatureDispatcher
|
||||
|
||||
|
||||
class ShicaiService(BlueFoxServerSystem):
|
||||
"""
|
||||
乡野食材·切配与裹粉 右键转换引擎
|
||||
"""
|
||||
|
||||
def __init__(self, namespace, systemName):
|
||||
super(ShicaiService, self).__init__(namespace, systemName)
|
||||
print "===== ShicaiService init ====="
|
||||
|
||||
# ---- 切分链映射: 方块名 -> (链, 索引) O(1) ----
|
||||
self.chopMap = {}
|
||||
self.featureBlocks = set()
|
||||
for chain in CHOP_CHAINS:
|
||||
for i, b in enumerate(chain["blocks"]):
|
||||
self.chopMap[b] = (chain, i)
|
||||
self.featureBlocks.add(b)
|
||||
|
||||
# ---- 蒜末方块 + 面粉块 ----
|
||||
self.featureBlocks.add(GARLIC_BLOCK)
|
||||
self.featureBlocks.add(FLOUR_BLOCK)
|
||||
|
||||
# ---- 裹粉规则映射: 手持物品名 -> 规则 ----
|
||||
self.coatingMap = {}
|
||||
for r in COATING_RULES:
|
||||
self.coatingMap[r["item"]] = r
|
||||
|
||||
# ---- 蒜末切菜计数 {(dim,x,y,z): n} ----
|
||||
self.garlicChop = {}
|
||||
|
||||
# ---- 右键冷却表 ----
|
||||
self.cooldown = {}
|
||||
|
||||
# ---- 注册到统一分发器 ----
|
||||
FeatureDispatcher.register(self)
|
||||
|
||||
# ============================================================================
|
||||
# 一、给 FeatureDispatcher 的接口
|
||||
# ============================================================================
|
||||
|
||||
def getFeatureBlocks(self):
|
||||
"""返回本功能管辖的所有右键方块名集合"""
|
||||
return self.featureBlocks
|
||||
|
||||
def getItemUseOnRules(self):
|
||||
"""手持物品右键方块表面不需要单独路由, 返回空"""
|
||||
return {}
|
||||
|
||||
def handleDestroy(self, args):
|
||||
"""由 FeatureDispatcher 转发的"玩家左键破坏方块"入口。
|
||||
摆在地上的切配方块(切胡萝卜/切土豆/切青菜/葱花) 被左键打碎 ->
|
||||
掉落对应的原版食材(胡萝卜/土豆/青菜/葱), 并清空方块。
|
||||
返回 True=处理了; False=不属本功能管。"""
|
||||
blockName = args.get("fullName") or args.get("blockName")
|
||||
itemName = DESTROY_DROP.get(blockName)
|
||||
if not itemName:
|
||||
return False
|
||||
playerId = args.get("playerId")
|
||||
x, y, z = args.get("x"), args.get("y"), args.get("z")
|
||||
dim = comp.CreateDimension(playerId).GetEntityDimensionId()
|
||||
|
||||
# 取消默认破坏+默认掉落(不让切配方块本身掉出来)
|
||||
args['cancel'] = True
|
||||
args['spawnResources'] = False
|
||||
|
||||
# 清空方块为空气(aux 强制 0, 保证定向变体正常清除)
|
||||
try:
|
||||
comp.CreateBlockInfo(LevelId).SetBlockNew(
|
||||
(x, y, z), blockDict={"name": "minecraft:air", "aux": 0},
|
||||
oldBlockHandling=0, dimensionId=dim)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# 掉落原版食材
|
||||
try:
|
||||
self.CreateEngineItemEntity(
|
||||
{"itemName": itemName, "count": 1, "auxValue": 0},
|
||||
dim, (x, y + 0.5, z))
|
||||
except Exception:
|
||||
pass
|
||||
return True
|
||||
|
||||
def handleBlockUse(self, args):
|
||||
"""由 FeatureDispatcher 转发的右键方块入口"""
|
||||
blockName = args.get("blockName")
|
||||
playerId = args.get("playerId")
|
||||
x, y, z = args.get("x"), args.get("y"), args.get("z")
|
||||
pos = (x, y, z)
|
||||
dim = comp.CreateDimension(playerId).GetEntityDimensionId()
|
||||
key = (dim, x, y, z)
|
||||
|
||||
itemDict = self.getCarriedItem(playerId)
|
||||
itemName = itemDict.get("newItemName") if itemDict else None
|
||||
|
||||
# ---- 菜刀切分 ----
|
||||
if blockName in self.chopMap:
|
||||
return self._handleChop(blockName, playerId, pos, dim, itemDict, itemName, key)
|
||||
|
||||
# ---- 蒜末 ----
|
||||
if blockName == GARLIC_BLOCK:
|
||||
return self._handleGarlic(playerId, pos, dim, itemDict, itemName, key)
|
||||
|
||||
# ---- 裹粉 ----
|
||||
if blockName == FLOUR_BLOCK:
|
||||
return self._handleCoating(playerId, pos, dim, itemDict, itemName, key)
|
||||
|
||||
return False
|
||||
|
||||
# ============================================================================
|
||||
# 二、菜刀切分配
|
||||
# ============================================================================
|
||||
|
||||
def _handleChop(self, blockName, playerId, pos, dim, itemDict, itemName, key):
|
||||
if itemName != CLEAVER_ITEM:
|
||||
return False
|
||||
chain, idx = self.chopMap[blockName]
|
||||
blocks = chain["blocks"]
|
||||
if not self.checkCooldown(key, 0.3):
|
||||
return True
|
||||
if idx < len(blocks) - 1:
|
||||
# 逐级推进到下一刀
|
||||
self.replaceBlock(pos, dim, blocks[idx + 1], playerId)
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a继续切配…")
|
||||
else:
|
||||
# 最后一级再切 -> 掉碎 + 变空气
|
||||
self.clearBlock(pos, dim)
|
||||
self.dropItems(dim, pos, [chain["drop"]])
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||
playerId, chain.get("tip", "§a切好了"))
|
||||
return True
|
||||
|
||||
# ============================================================================
|
||||
# 三、蒜末(大蒜 + 菜刀右键三次 -> 掉 16 蒜末)
|
||||
# ============================================================================
|
||||
|
||||
def _handleGarlic(self, playerId, pos, dim, itemDict, itemName, key):
|
||||
if itemName != CLEAVER_ITEM:
|
||||
return False
|
||||
if not self.checkCooldown(key, 0.3):
|
||||
return True
|
||||
gkey = (dim, pos[0], pos[1], pos[2])
|
||||
n = self.garlicChop.get(gkey, 0) + 1
|
||||
if n >= GARLIC_CHOP_COUNT:
|
||||
self.clearBlock(pos, dim)
|
||||
self.dropItems(dim, pos, [GARLIC_DROP])
|
||||
self.garlicChop.pop(gkey, None)
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a切好了蒜末")
|
||||
else:
|
||||
self.garlicChop[gkey] = n
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||
playerId, "§a切大蒜中…(%d/%d)" % (n, GARLIC_CHOP_COUNT))
|
||||
return True
|
||||
|
||||
# ============================================================================
|
||||
# 四、裹粉(生食材右键面粉块 -> 掉裹粉物品)
|
||||
# ============================================================================
|
||||
|
||||
def _handleCoating(self, playerId, pos, dim, itemDict, itemName, key):
|
||||
rule = self.coatingMap.get(itemName)
|
||||
if not rule:
|
||||
return False
|
||||
need = rule.get("count", 1)
|
||||
if itemDict is not None and (itemDict.get("count") or 0) < need:
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||
playerId, "§c数量不足,需要 %d 个" % need)
|
||||
return True
|
||||
if not self.checkCooldown(key, 0.5):
|
||||
return True
|
||||
self.consumeItem(playerId, itemDict, need)
|
||||
self.clearBlock(pos, dim)
|
||||
self.dropItems(dim, pos, [rule["drop"]])
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a裹粉完成")
|
||||
return True
|
||||
|
||||
# ============================================================================
|
||||
# 五、工具方法:获取玩家主手物品
|
||||
# ============================================================================
|
||||
|
||||
def getCarriedItem(self, playerId):
|
||||
itemComp = comp.CreateItem(playerId)
|
||||
return itemComp.GetPlayerItem(
|
||||
serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
|
||||
|
||||
# ============================================================================
|
||||
# 六、工具方法:消耗物品
|
||||
# ============================================================================
|
||||
|
||||
def consumeItem(self, playerId, itemDict, amount=1):
|
||||
if itemDict is None:
|
||||
return
|
||||
count = itemDict.get("count", 0)
|
||||
if count <= amount:
|
||||
comp.CreateItem(playerId).SetEntityItem(
|
||||
serverApi.GetMinecraftEnum().ItemPosType.CARRIED,
|
||||
{"itemName": "minecraft:air", "count": 0, "auxValue": 0})
|
||||
else:
|
||||
itemDict["count"] = count - amount
|
||||
comp.CreateItem(playerId).SetEntityItem(
|
||||
serverApi.GetMinecraftEnum().ItemPosType.CARRIED,
|
||||
{"itemName": itemDict["newItemName"],
|
||||
"count": itemDict["count"],
|
||||
"auxValue": itemDict.get("newAuxValue", 0),
|
||||
"userData": itemDict.get("userData", {})})
|
||||
|
||||
# ============================================================================
|
||||
# 七、工具方法:替换方块 / 清空方块
|
||||
# ============================================================================
|
||||
|
||||
def replaceBlock(self, pos, dim, newBlockName, playerId=None):
|
||||
creator = playerId if playerId is not None else LevelId
|
||||
aux = 0
|
||||
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)
|
||||
|
||||
def clearBlock(self, pos, dim):
|
||||
"""把方块清空为空气(切完拿碎/裹粉耗掉面粉块)"""
|
||||
comp.CreateBlockInfo(LevelId).SetBlockNew(
|
||||
pos, blockDict={"name": "minecraft:air", "aux": 0},
|
||||
oldBlockHandling=0, dimensionId=dim)
|
||||
|
||||
# ============================================================================
|
||||
# 八、工具方法:以掉落物形式生成物品
|
||||
# ============================================================================
|
||||
|
||||
def dropItems(self, dim, pos, dropList):
|
||||
for d in dropList:
|
||||
itemDict = {
|
||||
"itemName": d["name"],
|
||||
"count": d.get("count", 1),
|
||||
"auxValue": d.get("aux", 0),
|
||||
}
|
||||
self.CreateEngineItemEntity(itemDict, dim, (pos[0], pos[1] + 0.5, pos[2]))
|
||||
|
||||
# ============================================================================
|
||||
# 九、工具方法:冷却检查
|
||||
# ============================================================================
|
||||
|
||||
def checkCooldown(self, key, cd=0.5):
|
||||
now = time.time()
|
||||
last = self.cooldown.get(key, 0)
|
||||
if now - last < cd:
|
||||
return False
|
||||
self.cooldown[key] = now
|
||||
return True
|
||||
+1
@@ -0,0 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
+25
@@ -53,6 +53,31 @@ ITEM_USE_ON_RULES = [
|
||||
"consume": 1,
|
||||
"tip": "§a已放置死鳕鱼",
|
||||
},
|
||||
# ---- 蔬菜·切配: 原版食材右键放置 -> 摆放地上的切配方块 ----
|
||||
{
|
||||
"item": "minecraft:carrot", # 原版胡萝卜
|
||||
"target": "rtdd:cutcarrot_0", # 切胡萝卜(摆放地上)
|
||||
"consume": 1,
|
||||
"tip": "§a已放置胡萝卜,可手持菜刀切配",
|
||||
},
|
||||
{
|
||||
"item": "minecraft:potato", # 原版土豆
|
||||
"target": "rtdd:cutpotato_0", # 切土豆(摆放地上)
|
||||
"consume": 1,
|
||||
"tip": "§a已放置土豆,可手持菜刀切配",
|
||||
},
|
||||
{
|
||||
"item": "rtdd:qingcai", # 青菜(整颗)
|
||||
"target": "rtdd:cutvegetable_0", # 切青菜(摆放地上)
|
||||
"consume": 1,
|
||||
"tip": "§a已放置青菜,可手持菜刀切配",
|
||||
},
|
||||
{
|
||||
"item": "rtdd:scallions", # 葱
|
||||
"target": "rtdd:cutscallions_1", # 葱花_1
|
||||
"consume": 1,
|
||||
"tip": "§a已放置葱,可手持菜刀切分",
|
||||
},
|
||||
]
|
||||
|
||||
# ---- 二、盘子转换: 手持原版食物右键 空盘子(plate_0), 盘子变为对应成品盘 ----
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "rtdd:plantvegetables",
|
||||
"register_to_creative_menu": true,
|
||||
"category": "xy_ingredients"
|
||||
},
|
||||
"components": {
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0.1
|
||||
],
|
||||
"max": [
|
||||
1,
|
||||
0.15,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0.1
|
||||
],
|
||||
"max": [
|
||||
1,
|
||||
0.15,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"rtdd:cutscallions_3",
|
||||
"rtdd:cutscallions_4",
|
||||
"rtdd:scallions",
|
||||
"rtdd:plantvegetables",
|
||||
"rtdd:qingcai",
|
||||
"rtdd:vegetable",
|
||||
"rtdd:crushed_carrots",
|
||||
"rtdd:crushed_scallions",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"format_version": "1.10",
|
||||
"minecraft:item": {
|
||||
"components": {
|
||||
"minecraft:max_stack_size": 64
|
||||
},
|
||||
"description": {
|
||||
"category": "xy_ingredients",
|
||||
"identifier": "rtdd:qingcai"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"format_version": "1.12",
|
||||
"minecraft:recipe_shaped": {
|
||||
"key": {
|
||||
"P": {
|
||||
"item": "rtdd:pepper",
|
||||
"data": 0
|
||||
},
|
||||
"R": {
|
||||
"item": "rtdd:b_34",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"identifier": "rtdd:xy_chiliskewer"
|
||||
},
|
||||
"pattern": [
|
||||
"PPP",
|
||||
"PRP",
|
||||
"PRP"
|
||||
],
|
||||
"result": {
|
||||
"data": 0,
|
||||
"item": "rtdd:chiliskewer",
|
||||
"count": 1
|
||||
},
|
||||
"tags": [
|
||||
"crafting_table"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"format_version": "1.12",
|
||||
"minecraft:recipe_shaped": {
|
||||
"key": {
|
||||
"G": {
|
||||
"item": "rtdd:cutgarlic",
|
||||
"data": 0
|
||||
},
|
||||
"R": {
|
||||
"item": "rtdd:b_34",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"identifier": "rtdd:xy_garlicskewers"
|
||||
},
|
||||
"pattern": [
|
||||
"GGG",
|
||||
"GRG",
|
||||
"GRG"
|
||||
],
|
||||
"result": {
|
||||
"data": 0,
|
||||
"item": "rtdd:garlicskewers",
|
||||
"count": 1
|
||||
},
|
||||
"tags": [
|
||||
"crafting_table"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"format_version": "1.12",
|
||||
"minecraft:recipe_shaped": {
|
||||
"key": {
|
||||
"0": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"1": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"2": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"3": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"4": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"5": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"6": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"7": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
},
|
||||
"8": {
|
||||
"item": "rtdd:orange",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"identifier": "rtdd:xy_orangepile_0"
|
||||
},
|
||||
"pattern": [
|
||||
"012",
|
||||
"345",
|
||||
"678"
|
||||
],
|
||||
"result": {
|
||||
"data": 0,
|
||||
"item": "rtdd:orangepile_0",
|
||||
"count": 1
|
||||
},
|
||||
"tags": [
|
||||
"crafting_table"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"format_version": "1.12",
|
||||
"minecraft:recipe_shaped": {
|
||||
"key": {
|
||||
"0": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"1": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"2": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"3": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"4": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"5": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"6": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"7": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
},
|
||||
"8": {
|
||||
"item": "rtdd:peach",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"identifier": "rtdd:xy_peachpile_0"
|
||||
},
|
||||
"pattern": [
|
||||
"012",
|
||||
"345",
|
||||
"678"
|
||||
],
|
||||
"result": {
|
||||
"data": 0,
|
||||
"item": "rtdd:peachpile_0",
|
||||
"count": 1
|
||||
},
|
||||
"tags": [
|
||||
"crafting_table"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2149,11 +2149,6 @@
|
||||
"sound": "wood",
|
||||
"textures": "rtdd_blocks_vegetables"
|
||||
},
|
||||
"rtdd:plantvegetables": {
|
||||
"netease_model": "rtdd:plantvegetables",
|
||||
"sound": "grass",
|
||||
"textures": "rtdd_blocks_vegetables"
|
||||
},
|
||||
"rtdd:cutvegetable_1": {
|
||||
"netease_model": "rtdd:cutvegetable_1",
|
||||
"sound": "wood",
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -161,8 +161,6 @@ tile.rtdd:beefkebabs_3.name=牛肉串(熟)
|
||||
tile.rtdd:cookingmeat_1.name=炒锅_45(炒碎肉_熟)
|
||||
tile.rtdd:cookingcookedporkloin.name=炒锅_30(小炒五花肉_生)
|
||||
tile.rtdd:crushed_copper_ore_1.name=铜矿(碎铜矿_1)_禁用
|
||||
tile.rtdd:plantvegetables_1.name=青菜_6(青菜_1)
|
||||
tile.rtdd:plantvegetables_3.name=青菜_7(青菜_3)
|
||||
tile.rtdd:carrotcodsoup.name=汤锅_13(胡萝卜鳕鱼汤_生)
|
||||
tile.rtdd:dumplingssoup.name=饺子_碗装
|
||||
tile.rtdd:plate_17.name=生鱼片
|
||||
@@ -249,7 +247,6 @@ tile.rtdd:b_108.name=古式唱片机(无碟)
|
||||
tile.rtdd:balance.name=天平
|
||||
tile.rtdd:b_109.name=古式唱片机(有碟)
|
||||
tile.rtdd:plate_53.name=胡萝卜炒猪肉
|
||||
tile.rtdd:plantvegetables.name=青菜_5(青菜)
|
||||
tile.rtdd:plate_54.name=香菇滑鸡
|
||||
tile.rtdd:plate_51.name=炸饺子
|
||||
tile.rtdd:plate_52.name=土豆炒猪肉
|
||||
@@ -846,7 +843,6 @@ tile.rtdd:cutvegetable_1.name=切青菜(切一刀)
|
||||
tile.rtdd:b_269.name=橘木
|
||||
tile.rtdd:bowlavegetablebeefsoup.name=清汤羊肉
|
||||
tile.rtdd:cutvegetable_0.name=切青菜(摆放地上)
|
||||
tile.rtdd:plantvegetables.name=青菜
|
||||
tile.rtdd:garlicskewers.name=大蒜串
|
||||
tile.rtdd:cookingcookedporkribs.name=炒锅_32(胡萝卜炒猪排骨_生)
|
||||
tile.rtdd:fish_2.name=挂肉钩_6(鱼_2(禁用))
|
||||
@@ -1243,6 +1239,7 @@ item.rtdd:crushed_scallions.name=葱花碎
|
||||
item.rtdd:potato_wedges.name=土豆块
|
||||
item.rtdd:cream_0.name=奶油
|
||||
item.rtdd:rice_seeds.name=稻谷
|
||||
item.rtdd:vegetable.name=青菜
|
||||
item.rtdd:vegetable.name=青菜碎
|
||||
item.rtdd:qingcai.name=青菜
|
||||
item.rtdd:rice_balls.name=饭团
|
||||
item.rtdd:boiled_egg.name=水煮蛋
|
||||
@@ -129,6 +129,9 @@
|
||||
},
|
||||
"vegetable": {
|
||||
"textures": "textures/items/vegetable"
|
||||
},
|
||||
"qingcai": {
|
||||
"textures": "textures/items/meiqiedeqingcai"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 634 B |
+31
-33
@@ -17,37 +17,40 @@
|
||||
【原版放置】手持原版食材右键地面/方块表面, 消耗1个, 生成"摆放地上"形态:
|
||||
- 原版胡萝卜(minecraft:carrot) 右键放置 -> 切胡萝卜(摆放地上 cutcarrot_0)
|
||||
- 原版土豆(minecraft:potato) 右键放置 -> 切土豆(摆放地上 cutpotato_0)
|
||||
- 原版青菜(rtdd:vegetable, 青菜) 右键放置 -> 切青菜(摆放地上 cutvegetable_0)
|
||||
|
||||
- 原版青菜(rtdd:qingcai, 青菜) 右键放置 -> 切青菜(摆放地上 cutvegetable_0)
|
||||
- 原版葱(rtdd:scallions, 葱) 右键放置 -> 葱花_1(cutscallions_1)
|
||||
- 摆在地上的切配方块(切胡萝卜/切土豆/切青菜/葱花) 左键打碎 -> 掉落 原版食材(胡萝卜/土豆/青菜/葱)
|
||||
1. 切胡萝卜(摆放地上) -> 切胡萝卜(切一块) -> 切胡萝卜(切两块) -> 切胡萝卜(切三块) -> 切胡萝卜(切四块)
|
||||
转换条件:[手持 菜刀 右键 依次切割]
|
||||
机制: 手持菜刀右键,每刀切一级,共四刀
|
||||
1a. 切胡萝卜(切四块) -> 胡萝卜碎(crushed_carrots)
|
||||
转换条件:[右键 进行转换(进一步切碎)]
|
||||
机制: 切到四块后继续切, 变为 胡萝卜碎(切配半成品)【待确认: 具体切法】
|
||||
转换条件:[手持 菜刀 右键 进行转换(进一步切碎)]
|
||||
机制: 切到四块后继续切, 掉落 3个 胡萝卜碎
|
||||
|
||||
2. 切土豆(摆放地上) -> 切土豆(去皮) -> 切土豆(切一块) -> 切土豆(切两块) -> 切土豆(切三块)
|
||||
转换条件:[手持 菜刀 右键 依次切割]
|
||||
机制: 手持菜刀右键,先去皮再逐级切,共四刀
|
||||
2a. 切土豆(切三块) -> 土豆块(potato_wedges)
|
||||
转换条件:[右键 进行转换(切块)]
|
||||
机制: 切到三块后继续切, 变为 土豆块(切配半成品, 供油锅炸薯条)【待确认: 具体切法】
|
||||
转换条件:[手持 菜刀右键 进行转换(切块)]
|
||||
机制: 切到三块后继续切, 掉落 3个 土豆块(切配半成品, 供油锅炸薯条)
|
||||
|
||||
3. 切青菜(摆放地上) -> 切青菜(切一刀) -> 切青菜(切两刀) -> 切青菜(切三刀)
|
||||
转换条件:[手持 菜刀 右键 依次切割]
|
||||
机制: 手持菜刀右键,每刀切一级,共三刀
|
||||
3a. 切青菜(切三刀) -> 青菜碎(rtdd:vegetable)
|
||||
转换条件:[手持 菜刀 右键 进行转换(进一步切碎)]
|
||||
机制: 切到三刀后继续切, 掉落 3个 青菜碎(切配半成品)
|
||||
|
||||
4. 葱花_1 -> 葱花_2 -> 葱花_3 -> 葱花_4
|
||||
转换条件:[手持 菜刀 右键 依次切分葱]
|
||||
机制: 手持菜刀右键切葱,逐级切分
|
||||
4a. 葱花_4 -> 葱花碎(crushed_scallions)
|
||||
转换条件:[右键 进行转换(进一步切碎)]
|
||||
机制: 切到葱花_4后继续切, 变为 葱花碎(切配半成品)【待确认: 具体切法】
|
||||
|
||||
转换条件:[手持 菜刀 右键 进行转换(进一步切碎)]
|
||||
机制: 切到葱花_4后继续切, 掉落 3个 葱花碎(切配半成品)
|
||||
5. 葱(scallions)
|
||||
转换条件:[静态食材,无独立转换](本次由Java版迁入,用于炒锅加葱/葱花锅底)
|
||||
|
||||
5a. 青菜(原版, plantvegetables/vegetable)
|
||||
放置: 手持葱右键 -> 葱花_1(cutscallions_1)
|
||||
5a. 青菜(qingcai)
|
||||
转换条件:[静态食材,无独立转换]
|
||||
机制: 原版不切状态, 手持右键放置后成为切青菜(摆放地上), 再菜刀切分 [已从Java版迁入]
|
||||
|
||||
@@ -75,11 +78,9 @@
|
||||
========================================
|
||||
四、食材堆(各类堆叠食材集中分组)
|
||||
========================================
|
||||
10. 土豆堆 / 胡萝卜堆(b_40) / 桃子堆 / 橙子堆 / 苹果堆 / 鸡蛋堆 / 鲑鱼堆 / 鳕鱼堆 / 面包堆
|
||||
10. 土豆堆 / 胡萝卜堆/ 桃子堆 / 橙子堆 / 苹果堆 / 鸡蛋堆 / 鲑鱼堆 / 鳕鱼堆 / 面包堆
|
||||
转换条件:[静态堆叠食材,无独立转换]
|
||||
说明: 各类"XX堆"集中到本组"食材堆"(含原鱼·海鲜的鲑鱼堆/鳕鱼堆、原谷物·米面的面包堆)
|
||||
- 鸡蛋堆(egg_pile)仍属食材堆, 供鸡窝/蛋液/汤锅煮鸡蛋(raweggsoup)/蛋花汤(eggsoup)/炒锅煎蛋(cookedegg)等使用
|
||||
|
||||
配方(工作台): 九个对应食材 合成 堆; 堆 放工作台 分解成 九个对应食材
|
||||
========================================
|
||||
五、蔬果·水果(单个水果, 供榨汁/冰棍/炒冰)
|
||||
========================================
|
||||
@@ -93,9 +94,6 @@
|
||||
转换条件:[静态食材,无独立转换](本次由Java版迁入,用于生米锅/米饭/竹筒饭/蛋炒饭;
|
||||
米饭需先经 汤锅 煮熟盛出, 再做寿司(含饭团 rice_balls)/蛋炒饭等)
|
||||
|
||||
13. 生面(noodles)
|
||||
转换条件:[静态食材,无独立转换](本次由Java版迁入,归本组,用作汤锅生面汤/炒锅意面的面条食材)
|
||||
|
||||
========================================
|
||||
七、调味·佐料
|
||||
========================================
|
||||
@@ -103,10 +101,10 @@
|
||||
转换条件:[静态切配食材,无独立转换]
|
||||
|
||||
16. 蒜末(crushedgarlic)
|
||||
转换条件:[静态切配食材,无独立转换](本次由Java版迁入)
|
||||
转换条件: 手持菜刀 右键 大蒜 需要右键三次 掉落 16个 蒜末(切配半成品)
|
||||
|
||||
17. 大蒜串 / 辣椒串
|
||||
转换条件:[静态串类食材,无独立转换](注:辣椒串原属烧烤分类,已迁至此分组)
|
||||
配方(工作台): 大蒜x7 + 支杆x2 -> 大蒜串(garlicskewers); 辣椒x7 + 支杆x2 -> 辣椒串(chiliskewer)
|
||||
|
||||
18. 豆腐(beancurd)
|
||||
转换条件:[静态食材,无独立转换](本次由Java版迁入)
|
||||
@@ -118,30 +116,30 @@
|
||||
八、裹粉半成品(油锅炸物前置,由生食材裹面粉而来)
|
||||
========================================
|
||||
20. 生鱼片 -> 裹粉的鱼
|
||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
||||
机制: 生鱼片裹面粉,变为裹粉的鱼,供油锅炸鱼块
|
||||
转换条件:[手持 生鱼片 右键 面粉块 进行裹粉]
|
||||
机制: 消耗6个生鱼片, 获得 1个 裹粉的鱼(oilfish_0), 供油锅炸鱼块
|
||||
|
||||
21. 龙虾 -> 裹粉的天妇罗
|
||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
||||
机制: 龙虾裹面粉,变为裹粉的天妇罗,供油锅炸天妇罗(天妇罗炸虾成品即由此而来)
|
||||
转换条件:[手持 龙虾 右键 面粉块 进行裹粉]
|
||||
机制: 消耗2个龙虾, 获得 1个 裹粉的天妇罗(oiltempura), 供油锅炸天妇罗(天妇罗炸虾成品即由此而来)
|
||||
|
||||
22. 猪肉 -> 裹粉的猪肉
|
||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
||||
机制: 猪肉裹面粉,变为裹粉的猪肉,供油锅炸猪排
|
||||
转换条件:[手持 原版猪肉 右键 面粉块 进行裹粉]
|
||||
机制: 消耗1个猪肉, 获得 1个 裹粉的猪肉(oilpork), 供油锅炸猪排
|
||||
|
||||
23. 鸡块 -> 裹粉的鸡块
|
||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
||||
机制: 鸡块裹面粉,变为裹粉的鸡块,供油锅炸鸡块
|
||||
23. 鸡肉 -> 裹粉的鸡块
|
||||
转换条件:[手持 原版生鸡肉 右键 面粉块 进行裹粉]
|
||||
机制: 消耗1个鸡肉, 获得 6个 裹粉的鸡块(oil_chickennuggets), 供油锅炸鸡块
|
||||
|
||||
24. 土豆条 -> 裹粉的薯条
|
||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
||||
机制: 土豆条裹面粉,变为裹粉的薯条,供油锅炸薯条
|
||||
24. 土豆 -> 裹粉的薯条
|
||||
转换条件:[手持 土豆 右键 面粉块 进行裹粉]
|
||||
机制: 消耗1个土豆, 获得 10个 裹粉的薯条(oilfrenchfries), 供油锅炸薯条
|
||||
|
||||
========================================
|
||||
九、方块/物品清单(按8分组)
|
||||
========================================
|
||||
【蔬菜·切配】cutcarrot_0~4(切胡萝卜)、cutpotato_0~4(切土豆)、cutvegetable_0~3(切青菜)、
|
||||
cutscallions_1~4(葱花)、scallions(葱)、plantvegetables(青菜)、vegetable(青菜物品)、
|
||||
cutscallions_1~4(葱花)、scallions(葱)、qingcai(青菜)、vegetable(青菜碎)、
|
||||
crushed_carrots(胡萝卜碎)、crushed_scallions(葱花碎)、potato_wedges(土豆块)
|
||||
|
||||
【肉类·肉馅】rawmeatball_0~3(生肉馅)、legsleep(羊腿)、sheeploins(羊里脊)、sheepracks(羊小排)、
|
||||
|
||||
+46
-4
@@ -324,10 +324,11 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
【缺失食材·已创建】(对比Java版, 已迁入基岩版行为包)
|
||||
- 物品类(8个, 均归乡野食材/成品分类, 贴图/JSON/item_texture/lang 齐全):
|
||||
胡萝卜碎(crushed_carrots)、葱花碎(crushed_scallions)、土豆块(potato_wedges)、
|
||||
奶油(cream_0)、稻谷(rice_seeds)、青菜物品(vegetable)、
|
||||
奶油(cream_0)、稻谷(rice_seeds)、青菜(qingcai)、青菜碎(vegetable)、
|
||||
饭团(rice_balls,乡野食物)、水煮蛋(boiled_egg,乡野食物)
|
||||
- 青菜方块(plantvegetables): 已创建(参照切青菜模型), 归乡野食材/蔬菜·切配组,
|
||||
与原版放置衔接(手持青菜物品右键放置→切青菜摆放地上) [已创建]
|
||||
- 青菜物品(qingcai): 整颗未切青菜, 贴图 meiqiedeqingcai.png, 与原版放置衔接
|
||||
(手持青菜物品右键放置→切青菜摆放地上); 原 vegetable 物品改名"青菜碎" [已调整]
|
||||
- 青菜方块(plantvegetables): 已删除(不再使用原版态放置方块) [已删除]
|
||||
|
||||
【已放弃·不创建】(用户确认不迁入)
|
||||
- 鸡腿(raw_chicken_thighs)、鸡翅(raw_chicken_wings)、大饼(bannock) —— 已删除已建文件
|
||||
@@ -337,7 +338,7 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
【食材分组·已落地】(ingredients_groups.json / xy_Ingredients.json / lang 三处同步)
|
||||
- 新建"食材堆"分组(ingr_09_pile): 土豆堆/胡萝卜堆/桃子堆/橙子堆/苹果堆/鸡蛋堆/鲑鱼堆/鳕鱼堆/面包堆 集中
|
||||
- 原"蔬果·堆类"(ingr_04_crop) 改名"蔬果·水果": 只留 葡萄/桃子/橙子(单个水果)
|
||||
- 新食材归组: 胡萝卜碎/葱花碎/土豆块/青菜/青菜方块→蔬菜·切配; 稻谷→谷物·米面; 奶油→调味·佐料 [已调整]
|
||||
- 新食材归组: 胡萝卜碎/葱花碎/土豆块/青菜/青菜碎→蔬菜·切配; 稻谷→谷物·米面; 奶油→调味·佐料 [已调整]
|
||||
- 乡野食材转化关系.txt 重写纳入新食材(8分组+新食材+稻谷/奶油/切配半成品) [已整理]
|
||||
- 关联补充: 稻谷→水稻种植(乡野自然)、土豆块→裹粉薯条(油锅) [已整理]
|
||||
|
||||
@@ -430,3 +431,44 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
|
||||
【留后】果树"树苗成长"机制 见 全部功能没做什么.txt 乡野自然节
|
||||
|
||||
|
||||
########################################
|
||||
【乡野食材·切配与裹粉】(xy_ingredients) 2026-09-08
|
||||
########################################
|
||||
实现于 xiangyemod/shicai (ShicaiData + ShicaiService, 注册到 FeatureDispatcher)
|
||||
+ 原版放置扩展 (yuanbanfangzhi/YuanbanData)
|
||||
|
||||
一、原版放置(手持原版食材右键方块表面, 放置成"摆放地上"切配方块)
|
||||
- 胡萝卜(minecraft:carrot) -> 切胡萝卜(摆放地上 cutcarrot_0) [已实现]
|
||||
- 土豆(minecraft:potato) -> 切土豆(摆放地上 cutpotato_0) [已实现]
|
||||
- 青菜(rtdd:qingcai) -> 切青菜(摆放地上 cutvegetable_0) [已实现]
|
||||
- 葱(rtdd:scallions) -> 葱花_1(cutscallions_1) [已实现]
|
||||
|
||||
二、菜刀切分(手持 菜刀cleaver 右键, 逐级切, 最后一级再切掉碎)
|
||||
- 切胡萝卜: cutcarrot_0 -> _1 -> _2 -> _3 -> _4, 再切 -> 掉3胡萝卜碎 + 变空气 [已实现]
|
||||
- 切土豆: cutpotato_0 -> _1 -> _2 -> _3 -> _4, 再切 -> 掉3土豆块 + 变空气 [已实现]
|
||||
- 切青菜: cutvegetable_0 -> _1 -> _2 -> _3, 再切 -> 掉3青菜碎(vegetable) + 变空气 [已实现]
|
||||
- 葱花: cutscallions_1 -> _2 -> _3 -> _4, 再切 -> 掉3葱花碎 + 变空气 [已实现]
|
||||
|
||||
三、左键打碎切配方块 -> 掉原版食材(ShicaiService.handleDestroy)
|
||||
- cutcarrot_0~4 -> 原版胡萝卜; cutpotato_0~4 -> 原版土豆 [已实现]
|
||||
- cutvegetable_0~3 -> 青菜(qingcai); cutscallions_1~4 -> 葱(scallions) [已实现]
|
||||
|
||||
四、蒜末(手持 菜刀 右键 大蒜cutgarlic, 3次)
|
||||
- 大蒜 -> 掉16蒜末(crushedgarlic) + 变空气 [已实现]
|
||||
|
||||
五、裹粉半成品(手持生食材右键 面粉块farineblock_3, 消耗面粉块变空气 + 掉落产物)
|
||||
- 生鱼片(sashimi) x6 -> 裹粉的鱼(oilfish_0) x1 [已实现]
|
||||
- 龙虾(lobster) x2 -> 裹粉的天妇罗(oiltempura) x1 [已实现]
|
||||
- 原版猪肉 x1 -> 裹粉的猪肉(oilpork) x1 [已实现]
|
||||
- 原版生鸡肉 x1 -> 裹粉的鸡块(oil_chickennuggets) x6 [已实现]
|
||||
- 原版土豆 x1 -> 裹粉的薯条(oilfrenchfries) x10 [已实现]
|
||||
|
||||
六、工作台配方(netease_recipes)
|
||||
- 大蒜串: 大蒜x7 + 支杆(b_34)x2 -> garlicskewers (xy_garlicskewers) [已实现]
|
||||
- 辣椒串: 辣椒(pepper)x7 + 支杆x2 -> chiliskewer (xy_chiliskewer) [已实现]
|
||||
- 桃子堆: 桃子(peach)x9 -> peachpile_0 (xy_peachpile_0) [已实现]
|
||||
- 橙子堆: 橙子(orange)x9 -> orangepile_0 (xy_orangepile_0) [已实现]
|
||||
(注: 苹果/面包/胡萝卜/鳕鱼/土豆/鲑鱼堆 为既有 8合1(中间空) 配方; 鸡蛋堆为 9满格;
|
||||
分解配方待确认后补充, 见 全部功能没做什么.txt)
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
- 设想: 床, 但是可以两个人一起睡
|
||||
- 未做原因: 未实现 (家具家私转化关系.txt 静态段 todo 已标注)
|
||||
|
||||
厨具架 通过指针 所在 碰撞箱位置 取物品 比如左锅 右刀 指向哪个取哪个
|
||||
|
||||
########################################
|
||||
【乡野食物】(xy_food)
|
||||
|
||||
Reference in new issue
Block a user