乡野食材 功能实现 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.chuju.service.ChujuTimerService import ChujuTimerService
|
||||||
from xiangyemod.ziran.service.NaturalService import NaturalService
|
from xiangyemod.ziran.service.NaturalService import NaturalService
|
||||||
from xiangyemod.ziran.service.NaturalTimerService import NaturalTimerService
|
from xiangyemod.ziran.service.NaturalTimerService import NaturalTimerService
|
||||||
|
from xiangyemod.shicai.service.ShicaiService import ShicaiService
|
||||||
|
|
||||||
if not serverApi.IsInServer():
|
if not serverApi.IsInServer():
|
||||||
pass
|
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,
|
"consume": 1,
|
||||||
"tip": "§a已放置死鳕鱼",
|
"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), 盘子变为对应成品盘 ----
|
# ---- 二、盘子转换: 手持原版食物右键 空盘子(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_3",
|
||||||
"rtdd:cutscallions_4",
|
"rtdd:cutscallions_4",
|
||||||
"rtdd:scallions",
|
"rtdd:scallions",
|
||||||
"rtdd:plantvegetables",
|
"rtdd:qingcai",
|
||||||
"rtdd:vegetable",
|
"rtdd:vegetable",
|
||||||
"rtdd:crushed_carrots",
|
"rtdd:crushed_carrots",
|
||||||
"rtdd:crushed_scallions",
|
"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",
|
"sound": "wood",
|
||||||
"textures": "rtdd_blocks_vegetables"
|
"textures": "rtdd_blocks_vegetables"
|
||||||
},
|
},
|
||||||
"rtdd:plantvegetables": {
|
|
||||||
"netease_model": "rtdd:plantvegetables",
|
|
||||||
"sound": "grass",
|
|
||||||
"textures": "rtdd_blocks_vegetables"
|
|
||||||
},
|
|
||||||
"rtdd:cutvegetable_1": {
|
"rtdd:cutvegetable_1": {
|
||||||
"netease_model": "rtdd:cutvegetable_1",
|
"netease_model": "rtdd:cutvegetable_1",
|
||||||
"sound": "wood",
|
"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:cookingmeat_1.name=炒锅_45(炒碎肉_熟)
|
||||||
tile.rtdd:cookingcookedporkloin.name=炒锅_30(小炒五花肉_生)
|
tile.rtdd:cookingcookedporkloin.name=炒锅_30(小炒五花肉_生)
|
||||||
tile.rtdd:crushed_copper_ore_1.name=铜矿(碎铜矿_1)_禁用
|
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:carrotcodsoup.name=汤锅_13(胡萝卜鳕鱼汤_生)
|
||||||
tile.rtdd:dumplingssoup.name=饺子_碗装
|
tile.rtdd:dumplingssoup.name=饺子_碗装
|
||||||
tile.rtdd:plate_17.name=生鱼片
|
tile.rtdd:plate_17.name=生鱼片
|
||||||
@@ -249,7 +247,6 @@ tile.rtdd:b_108.name=古式唱片机(无碟)
|
|||||||
tile.rtdd:balance.name=天平
|
tile.rtdd:balance.name=天平
|
||||||
tile.rtdd:b_109.name=古式唱片机(有碟)
|
tile.rtdd:b_109.name=古式唱片机(有碟)
|
||||||
tile.rtdd:plate_53.name=胡萝卜炒猪肉
|
tile.rtdd:plate_53.name=胡萝卜炒猪肉
|
||||||
tile.rtdd:plantvegetables.name=青菜_5(青菜)
|
|
||||||
tile.rtdd:plate_54.name=香菇滑鸡
|
tile.rtdd:plate_54.name=香菇滑鸡
|
||||||
tile.rtdd:plate_51.name=炸饺子
|
tile.rtdd:plate_51.name=炸饺子
|
||||||
tile.rtdd:plate_52.name=土豆炒猪肉
|
tile.rtdd:plate_52.name=土豆炒猪肉
|
||||||
@@ -846,7 +843,6 @@ tile.rtdd:cutvegetable_1.name=切青菜(切一刀)
|
|||||||
tile.rtdd:b_269.name=橘木
|
tile.rtdd:b_269.name=橘木
|
||||||
tile.rtdd:bowlavegetablebeefsoup.name=清汤羊肉
|
tile.rtdd:bowlavegetablebeefsoup.name=清汤羊肉
|
||||||
tile.rtdd:cutvegetable_0.name=切青菜(摆放地上)
|
tile.rtdd:cutvegetable_0.name=切青菜(摆放地上)
|
||||||
tile.rtdd:plantvegetables.name=青菜
|
|
||||||
tile.rtdd:garlicskewers.name=大蒜串
|
tile.rtdd:garlicskewers.name=大蒜串
|
||||||
tile.rtdd:cookingcookedporkribs.name=炒锅_32(胡萝卜炒猪排骨_生)
|
tile.rtdd:cookingcookedporkribs.name=炒锅_32(胡萝卜炒猪排骨_生)
|
||||||
tile.rtdd:fish_2.name=挂肉钩_6(鱼_2(禁用))
|
tile.rtdd:fish_2.name=挂肉钩_6(鱼_2(禁用))
|
||||||
@@ -1243,6 +1239,7 @@ item.rtdd:crushed_scallions.name=葱花碎
|
|||||||
item.rtdd:potato_wedges.name=土豆块
|
item.rtdd:potato_wedges.name=土豆块
|
||||||
item.rtdd:cream_0.name=奶油
|
item.rtdd:cream_0.name=奶油
|
||||||
item.rtdd:rice_seeds.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:rice_balls.name=饭团
|
||||||
item.rtdd:boiled_egg.name=水煮蛋
|
item.rtdd:boiled_egg.name=水煮蛋
|
||||||
@@ -129,6 +129,9 @@
|
|||||||
},
|
},
|
||||||
"vegetable": {
|
"vegetable": {
|
||||||
"textures": "textures/items/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个, 生成"摆放地上"形态:
|
【原版放置】手持原版食材右键地面/方块表面, 消耗1个, 生成"摆放地上"形态:
|
||||||
- 原版胡萝卜(minecraft:carrot) 右键放置 -> 切胡萝卜(摆放地上 cutcarrot_0)
|
- 原版胡萝卜(minecraft:carrot) 右键放置 -> 切胡萝卜(摆放地上 cutcarrot_0)
|
||||||
- 原版土豆(minecraft:potato) 右键放置 -> 切土豆(摆放地上 cutpotato_0)
|
- 原版土豆(minecraft:potato) 右键放置 -> 切土豆(摆放地上 cutpotato_0)
|
||||||
- 原版青菜(rtdd:vegetable, 青菜) 右键放置 -> 切青菜(摆放地上 cutvegetable_0)
|
- 原版青菜(rtdd:qingcai, 青菜) 右键放置 -> 切青菜(摆放地上 cutvegetable_0)
|
||||||
|
- 原版葱(rtdd:scallions, 葱) 右键放置 -> 葱花_1(cutscallions_1)
|
||||||
|
- 摆在地上的切配方块(切胡萝卜/切土豆/切青菜/葱花) 左键打碎 -> 掉落 原版食材(胡萝卜/土豆/青菜/葱)
|
||||||
1. 切胡萝卜(摆放地上) -> 切胡萝卜(切一块) -> 切胡萝卜(切两块) -> 切胡萝卜(切三块) -> 切胡萝卜(切四块)
|
1. 切胡萝卜(摆放地上) -> 切胡萝卜(切一块) -> 切胡萝卜(切两块) -> 切胡萝卜(切三块) -> 切胡萝卜(切四块)
|
||||||
转换条件:[手持 菜刀 右键 依次切割]
|
转换条件:[手持 菜刀 右键 依次切割]
|
||||||
机制: 手持菜刀右键,每刀切一级,共四刀
|
机制: 手持菜刀右键,每刀切一级,共四刀
|
||||||
1a. 切胡萝卜(切四块) -> 胡萝卜碎(crushed_carrots)
|
1a. 切胡萝卜(切四块) -> 胡萝卜碎(crushed_carrots)
|
||||||
转换条件:[右键 进行转换(进一步切碎)]
|
转换条件:[手持 菜刀 右键 进行转换(进一步切碎)]
|
||||||
机制: 切到四块后继续切, 变为 胡萝卜碎(切配半成品)【待确认: 具体切法】
|
机制: 切到四块后继续切, 掉落 3个 胡萝卜碎
|
||||||
|
|
||||||
2. 切土豆(摆放地上) -> 切土豆(去皮) -> 切土豆(切一块) -> 切土豆(切两块) -> 切土豆(切三块)
|
2. 切土豆(摆放地上) -> 切土豆(去皮) -> 切土豆(切一块) -> 切土豆(切两块) -> 切土豆(切三块)
|
||||||
转换条件:[手持 菜刀 右键 依次切割]
|
转换条件:[手持 菜刀 右键 依次切割]
|
||||||
机制: 手持菜刀右键,先去皮再逐级切,共四刀
|
机制: 手持菜刀右键,先去皮再逐级切,共四刀
|
||||||
2a. 切土豆(切三块) -> 土豆块(potato_wedges)
|
2a. 切土豆(切三块) -> 土豆块(potato_wedges)
|
||||||
转换条件:[右键 进行转换(切块)]
|
转换条件:[手持 菜刀右键 进行转换(切块)]
|
||||||
机制: 切到三块后继续切, 变为 土豆块(切配半成品, 供油锅炸薯条)【待确认: 具体切法】
|
机制: 切到三块后继续切, 掉落 3个 土豆块(切配半成品, 供油锅炸薯条)
|
||||||
|
|
||||||
3. 切青菜(摆放地上) -> 切青菜(切一刀) -> 切青菜(切两刀) -> 切青菜(切三刀)
|
3. 切青菜(摆放地上) -> 切青菜(切一刀) -> 切青菜(切两刀) -> 切青菜(切三刀)
|
||||||
转换条件:[手持 菜刀 右键 依次切割]
|
转换条件:[手持 菜刀 右键 依次切割]
|
||||||
机制: 手持菜刀右键,每刀切一级,共三刀
|
机制: 手持菜刀右键,每刀切一级,共三刀
|
||||||
|
3a. 切青菜(切三刀) -> 青菜碎(rtdd:vegetable)
|
||||||
|
转换条件:[手持 菜刀 右键 进行转换(进一步切碎)]
|
||||||
|
机制: 切到三刀后继续切, 掉落 3个 青菜碎(切配半成品)
|
||||||
|
|
||||||
4. 葱花_1 -> 葱花_2 -> 葱花_3 -> 葱花_4
|
4. 葱花_1 -> 葱花_2 -> 葱花_3 -> 葱花_4
|
||||||
转换条件:[手持 菜刀 右键 依次切分葱]
|
转换条件:[手持 菜刀 右键 依次切分葱]
|
||||||
机制: 手持菜刀右键切葱,逐级切分
|
机制: 手持菜刀右键切葱,逐级切分
|
||||||
4a. 葱花_4 -> 葱花碎(crushed_scallions)
|
4a. 葱花_4 -> 葱花碎(crushed_scallions)
|
||||||
转换条件:[右键 进行转换(进一步切碎)]
|
转换条件:[手持 菜刀 右键 进行转换(进一步切碎)]
|
||||||
机制: 切到葱花_4后继续切, 变为 葱花碎(切配半成品)【待确认: 具体切法】
|
机制: 切到葱花_4后继续切, 掉落 3个 葱花碎(切配半成品)
|
||||||
|
|
||||||
5. 葱(scallions)
|
5. 葱(scallions)
|
||||||
转换条件:[静态食材,无独立转换](本次由Java版迁入,用于炒锅加葱/葱花锅底)
|
转换条件:[静态食材,无独立转换](本次由Java版迁入,用于炒锅加葱/葱花锅底)
|
||||||
|
放置: 手持葱右键 -> 葱花_1(cutscallions_1)
|
||||||
5a. 青菜(原版, plantvegetables/vegetable)
|
5a. 青菜(qingcai)
|
||||||
转换条件:[静态食材,无独立转换]
|
转换条件:[静态食材,无独立转换]
|
||||||
机制: 原版不切状态, 手持右键放置后成为切青菜(摆放地上), 再菜刀切分 [已从Java版迁入]
|
机制: 原版不切状态, 手持右键放置后成为切青菜(摆放地上), 再菜刀切分 [已从Java版迁入]
|
||||||
|
|
||||||
@@ -75,11 +78,9 @@
|
|||||||
========================================
|
========================================
|
||||||
四、食材堆(各类堆叠食材集中分组)
|
四、食材堆(各类堆叠食材集中分组)
|
||||||
========================================
|
========================================
|
||||||
10. 土豆堆 / 胡萝卜堆(b_40) / 桃子堆 / 橙子堆 / 苹果堆 / 鸡蛋堆 / 鲑鱼堆 / 鳕鱼堆 / 面包堆
|
10. 土豆堆 / 胡萝卜堆/ 桃子堆 / 橙子堆 / 苹果堆 / 鸡蛋堆 / 鲑鱼堆 / 鳕鱼堆 / 面包堆
|
||||||
转换条件:[静态堆叠食材,无独立转换]
|
转换条件:[静态堆叠食材,无独立转换]
|
||||||
说明: 各类"XX堆"集中到本组"食材堆"(含原鱼·海鲜的鲑鱼堆/鳕鱼堆、原谷物·米面的面包堆)
|
配方(工作台): 九个对应食材 合成 堆; 堆 放工作台 分解成 九个对应食材
|
||||||
- 鸡蛋堆(egg_pile)仍属食材堆, 供鸡窝/蛋液/汤锅煮鸡蛋(raweggsoup)/蛋花汤(eggsoup)/炒锅煎蛋(cookedegg)等使用
|
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
五、蔬果·水果(单个水果, 供榨汁/冰棍/炒冰)
|
五、蔬果·水果(单个水果, 供榨汁/冰棍/炒冰)
|
||||||
========================================
|
========================================
|
||||||
@@ -93,9 +94,6 @@
|
|||||||
转换条件:[静态食材,无独立转换](本次由Java版迁入,用于生米锅/米饭/竹筒饭/蛋炒饭;
|
转换条件:[静态食材,无独立转换](本次由Java版迁入,用于生米锅/米饭/竹筒饭/蛋炒饭;
|
||||||
米饭需先经 汤锅 煮熟盛出, 再做寿司(含饭团 rice_balls)/蛋炒饭等)
|
米饭需先经 汤锅 煮熟盛出, 再做寿司(含饭团 rice_balls)/蛋炒饭等)
|
||||||
|
|
||||||
13. 生面(noodles)
|
|
||||||
转换条件:[静态食材,无独立转换](本次由Java版迁入,归本组,用作汤锅生面汤/炒锅意面的面条食材)
|
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
七、调味·佐料
|
七、调味·佐料
|
||||||
========================================
|
========================================
|
||||||
@@ -103,10 +101,10 @@
|
|||||||
转换条件:[静态切配食材,无独立转换]
|
转换条件:[静态切配食材,无独立转换]
|
||||||
|
|
||||||
16. 蒜末(crushedgarlic)
|
16. 蒜末(crushedgarlic)
|
||||||
转换条件:[静态切配食材,无独立转换](本次由Java版迁入)
|
转换条件: 手持菜刀 右键 大蒜 需要右键三次 掉落 16个 蒜末(切配半成品)
|
||||||
|
|
||||||
17. 大蒜串 / 辣椒串
|
17. 大蒜串 / 辣椒串
|
||||||
转换条件:[静态串类食材,无独立转换](注:辣椒串原属烧烤分类,已迁至此分组)
|
配方(工作台): 大蒜x7 + 支杆x2 -> 大蒜串(garlicskewers); 辣椒x7 + 支杆x2 -> 辣椒串(chiliskewer)
|
||||||
|
|
||||||
18. 豆腐(beancurd)
|
18. 豆腐(beancurd)
|
||||||
转换条件:[静态食材,无独立转换](本次由Java版迁入)
|
转换条件:[静态食材,无独立转换](本次由Java版迁入)
|
||||||
@@ -118,30 +116,30 @@
|
|||||||
八、裹粉半成品(油锅炸物前置,由生食材裹面粉而来)
|
八、裹粉半成品(油锅炸物前置,由生食材裹面粉而来)
|
||||||
========================================
|
========================================
|
||||||
20. 生鱼片 -> 裹粉的鱼
|
20. 生鱼片 -> 裹粉的鱼
|
||||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
转换条件:[手持 生鱼片 右键 面粉块 进行裹粉]
|
||||||
机制: 生鱼片裹面粉,变为裹粉的鱼,供油锅炸鱼块
|
机制: 消耗6个生鱼片, 获得 1个 裹粉的鱼(oilfish_0), 供油锅炸鱼块
|
||||||
|
|
||||||
21. 龙虾 -> 裹粉的天妇罗
|
21. 龙虾 -> 裹粉的天妇罗
|
||||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
转换条件:[手持 龙虾 右键 面粉块 进行裹粉]
|
||||||
机制: 龙虾裹面粉,变为裹粉的天妇罗,供油锅炸天妇罗(天妇罗炸虾成品即由此而来)
|
机制: 消耗2个龙虾, 获得 1个 裹粉的天妇罗(oiltempura), 供油锅炸天妇罗(天妇罗炸虾成品即由此而来)
|
||||||
|
|
||||||
22. 猪肉 -> 裹粉的猪肉
|
22. 猪肉 -> 裹粉的猪肉
|
||||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
转换条件:[手持 原版猪肉 右键 面粉块 进行裹粉]
|
||||||
机制: 猪肉裹面粉,变为裹粉的猪肉,供油锅炸猪排
|
机制: 消耗1个猪肉, 获得 1个 裹粉的猪肉(oilpork), 供油锅炸猪排
|
||||||
|
|
||||||
23. 鸡块 -> 裹粉的鸡块
|
23. 鸡肉 -> 裹粉的鸡块
|
||||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
转换条件:[手持 原版生鸡肉 右键 面粉块 进行裹粉]
|
||||||
机制: 鸡块裹面粉,变为裹粉的鸡块,供油锅炸鸡块
|
机制: 消耗1个鸡肉, 获得 6个 裹粉的鸡块(oil_chickennuggets), 供油锅炸鸡块
|
||||||
|
|
||||||
24. 土豆条 -> 裹粉的薯条
|
24. 土豆 -> 裹粉的薯条
|
||||||
转换条件:[手持 面粉 右键 进行裹粉](【待确认】)
|
转换条件:[手持 土豆 右键 面粉块 进行裹粉]
|
||||||
机制: 土豆条裹面粉,变为裹粉的薯条,供油锅炸薯条
|
机制: 消耗1个土豆, 获得 10个 裹粉的薯条(oilfrenchfries), 供油锅炸薯条
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
九、方块/物品清单(按8分组)
|
九、方块/物品清单(按8分组)
|
||||||
========================================
|
========================================
|
||||||
【蔬菜·切配】cutcarrot_0~4(切胡萝卜)、cutpotato_0~4(切土豆)、cutvegetable_0~3(切青菜)、
|
【蔬菜·切配】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(土豆块)
|
crushed_carrots(胡萝卜碎)、crushed_scallions(葱花碎)、potato_wedges(土豆块)
|
||||||
|
|
||||||
【肉类·肉馅】rawmeatball_0~3(生肉馅)、legsleep(羊腿)、sheeploins(羊里脊)、sheepracks(羊小排)、
|
【肉类·肉馅】rawmeatball_0~3(生肉馅)、legsleep(羊腿)、sheeploins(羊里脊)、sheepracks(羊小排)、
|
||||||
|
|||||||
+46
-4
@@ -324,10 +324,11 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
|||||||
【缺失食材·已创建】(对比Java版, 已迁入基岩版行为包)
|
【缺失食材·已创建】(对比Java版, 已迁入基岩版行为包)
|
||||||
- 物品类(8个, 均归乡野食材/成品分类, 贴图/JSON/item_texture/lang 齐全):
|
- 物品类(8个, 均归乡野食材/成品分类, 贴图/JSON/item_texture/lang 齐全):
|
||||||
胡萝卜碎(crushed_carrots)、葱花碎(crushed_scallions)、土豆块(potato_wedges)、
|
胡萝卜碎(crushed_carrots)、葱花碎(crushed_scallions)、土豆块(potato_wedges)、
|
||||||
奶油(cream_0)、稻谷(rice_seeds)、青菜物品(vegetable)、
|
奶油(cream_0)、稻谷(rice_seeds)、青菜(qingcai)、青菜碎(vegetable)、
|
||||||
饭团(rice_balls,乡野食物)、水煮蛋(boiled_egg,乡野食物)
|
饭团(rice_balls,乡野食物)、水煮蛋(boiled_egg,乡野食物)
|
||||||
- 青菜方块(plantvegetables): 已创建(参照切青菜模型), 归乡野食材/蔬菜·切配组,
|
- 青菜物品(qingcai): 整颗未切青菜, 贴图 meiqiedeqingcai.png, 与原版放置衔接
|
||||||
与原版放置衔接(手持青菜物品右键放置→切青菜摆放地上) [已创建]
|
(手持青菜物品右键放置→切青菜摆放地上); 原 vegetable 物品改名"青菜碎" [已调整]
|
||||||
|
- 青菜方块(plantvegetables): 已删除(不再使用原版态放置方块) [已删除]
|
||||||
|
|
||||||
【已放弃·不创建】(用户确认不迁入)
|
【已放弃·不创建】(用户确认不迁入)
|
||||||
- 鸡腿(raw_chicken_thighs)、鸡翅(raw_chicken_wings)、大饼(bannock) —— 已删除已建文件
|
- 鸡腿(raw_chicken_thighs)、鸡翅(raw_chicken_wings)、大饼(bannock) —— 已删除已建文件
|
||||||
@@ -337,7 +338,7 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
|||||||
【食材分组·已落地】(ingredients_groups.json / xy_Ingredients.json / lang 三处同步)
|
【食材分组·已落地】(ingredients_groups.json / xy_Ingredients.json / lang 三处同步)
|
||||||
- 新建"食材堆"分组(ingr_09_pile): 土豆堆/胡萝卜堆/桃子堆/橙子堆/苹果堆/鸡蛋堆/鲑鱼堆/鳕鱼堆/面包堆 集中
|
- 新建"食材堆"分组(ingr_09_pile): 土豆堆/胡萝卜堆/桃子堆/橙子堆/苹果堆/鸡蛋堆/鲑鱼堆/鳕鱼堆/面包堆 集中
|
||||||
- 原"蔬果·堆类"(ingr_04_crop) 改名"蔬果·水果": 只留 葡萄/桃子/橙子(单个水果)
|
- 原"蔬果·堆类"(ingr_04_crop) 改名"蔬果·水果": 只留 葡萄/桃子/橙子(单个水果)
|
||||||
- 新食材归组: 胡萝卜碎/葱花碎/土豆块/青菜/青菜方块→蔬菜·切配; 稻谷→谷物·米面; 奶油→调味·佐料 [已调整]
|
- 新食材归组: 胡萝卜碎/葱花碎/土豆块/青菜/青菜碎→蔬菜·切配; 稻谷→谷物·米面; 奶油→调味·佐料 [已调整]
|
||||||
- 乡野食材转化关系.txt 重写纳入新食材(8分组+新食材+稻谷/奶油/切配半成品) [已整理]
|
- 乡野食材转化关系.txt 重写纳入新食材(8分组+新食材+稻谷/奶油/切配半成品) [已整理]
|
||||||
- 关联补充: 稻谷→水稻种植(乡野自然)、土豆块→裹粉薯条(油锅) [已整理]
|
- 关联补充: 稻谷→水稻种植(乡野自然)、土豆块→裹粉薯条(油锅) [已整理]
|
||||||
|
|
||||||
@@ -430,3 +431,44 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
|||||||
|
|
||||||
【留后】果树"树苗成长"机制 见 全部功能没做什么.txt 乡野自然节
|
【留后】果树"树苗成长"机制 见 全部功能没做什么.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 已标注)
|
- 未做原因: 未实现 (家具家私转化关系.txt 静态段 todo 已标注)
|
||||||
|
|
||||||
|
厨具架 通过指针 所在 碰撞箱位置 取物品 比如左锅 右刀 指向哪个取哪个
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
【乡野食物】(xy_food)
|
【乡野食物】(xy_food)
|
||||||
|
|||||||
Reference in new issue
Block a user