菜谱全部导入 水稻tick
This commit is contained in:
1 parent
b714900001
commit
c41a6d3665
13 files changed
+611
-98
No files matched your search
+11
-14
@@ -38,9 +38,9 @@ PLATE = "rtdd:plate_0" # 盘子(厨具)
|
||||
# 二、锅底/调料中间态
|
||||
# ============================================================================
|
||||
CARROT_POT_BASE = "rtdd:carrotpotbase" # 炒锅_15(辣椒锅底)
|
||||
VEGETABLE_POT_BASE = "rtdd:vegetablespotbase" # 炒锅_94(葱花锅底)
|
||||
VEGETABLE_POT_BASE = "rtdd:vegetablespotbase" # 炒锅_94(葱花锅底)【已禁用, 不再生成, 改由 cookingscallions 承担葱花锅底】
|
||||
COOKING_GARLIC = "rtdd:cookinggarlic" # 炒锅_43(加大蒜)
|
||||
COOKING_SCALLIONS = "rtdd:cookingscallions" # 炒锅_51(加葱)
|
||||
COOKING_SCALLIONS = "rtdd:cookingscallions" # 炒锅_51(葱花锅底)【新葱花锅底】(原炒锅_51加葱, 已改为葱花锅底)
|
||||
COOKED_EGG = "rtdd:cookedegg" # 炒锅_17(煎蛋)
|
||||
|
||||
# ============================================================================
|
||||
@@ -247,12 +247,12 @@ SWITCH_RULES = [
|
||||
"tip": "§a盖上锅盖, 炒锅变(盖锅); 空手右键可再掀开"},
|
||||
{"block": COVER_THE_PAN, "item": None, "target": WOK,
|
||||
"tip": "§a掀开锅盖, 炒锅变回(空)"},
|
||||
# 菜谱1 辣椒锅底 (炒锅(空) + 辣椒x2)
|
||||
{"block": WOK, "item": PEPPER, "target": CARROT_POT_BASE, "consume": 2,
|
||||
# 菜谱1 辣椒锅底 (炒锅(添油) + 辣椒x2)
|
||||
{"block": OIL_PAN, "item": PEPPER, "target": CARROT_POT_BASE, "consume": 2,
|
||||
"tip": "§a放入辣椒x2, 变成 炒锅_15(辣椒锅底); 可加肉做辣系菜"},
|
||||
# 菜谱2 葱花锅底 (炒锅(空) + 葱花碎x3)
|
||||
{"block": WOK, "item": CRUSHED_SCALLIONS, "target": VEGETABLE_POT_BASE, "consume": 3,
|
||||
"tip": "§a放入葱花碎x3, 变成 炒锅_94(葱花锅底); 可加羊肉/猪肉清炒"},
|
||||
# 菜谱2 葱花锅底 (炒锅(添油) + 葱花碎x3) -> 炒锅_51
|
||||
{"block": OIL_PAN, "item": CRUSHED_SCALLIONS, "target": COOKING_SCALLIONS, "consume": 3,
|
||||
"tip": "§a放入葱花碎x3, 变成 炒锅_51(葱花锅底); 可加羊肉/猪肉清炒"},
|
||||
|
||||
# ---------------- 二、放料(炒锅(添油) + 食材 -> 生态) ----------------
|
||||
# 菜谱3 炒猪肉
|
||||
@@ -261,9 +261,6 @@ SWITCH_RULES = [
|
||||
# 菜谱5 炒土豆
|
||||
{"block": OIL_PAN, "item": POTATO_WEDGES, "target": COOKING_POTATO, "consume": 1,
|
||||
"tip": "§a放入土豆块, 变成 炒锅_47(炒土豆_生); 拿锅铲翻炒4次"},
|
||||
# 菜谱6 加葱
|
||||
{"block": OIL_PAN, "item": CRUSHED_SCALLIONS, "target": COOKING_SCALLIONS, "consume": 3,
|
||||
"tip": "§a放入葱花碎x3, 变成 炒锅_51(加葱)"},
|
||||
# 菜谱7 加大蒜
|
||||
{"block": OIL_PAN, "item": CRUSHED_GARLIC, "target": COOKING_GARLIC, "consume": 3,
|
||||
"tip": "§a放入蒜末x3, 变成 炒锅_43(加大蒜); 可加螃蟹做炒蟹"},
|
||||
@@ -317,11 +314,11 @@ SWITCH_RULES = [
|
||||
# 菜谱17 胡萝卜牛排骨 (炒胡萝卜_熟 + 牛肋x2)
|
||||
{"block": COOKING_PEPPER, "item": COSTILLAVACAES, "target": CARROT_AND_BEEFRIBS, "consume": 2,
|
||||
"tip": "§a炒胡萝卜加牛肋x2, 变成 炒锅_3(胡萝卜牛排骨_生); 拿锅铲翻炒4次"},
|
||||
# 菜谱19 清炒羊肉 (葱花锅底 + 羊肉)
|
||||
{"block": VEGETABLE_POT_BASE, "item": MUTTON, "target": CARROT_AND_MUTTON, "consume": 1,
|
||||
# 菜谱19 清炒羊肉 (葱花锅底_51 + 羊肉)
|
||||
{"block": COOKING_SCALLIONS, "item": MUTTON, "target": CARROT_AND_MUTTON, "consume": 1,
|
||||
"tip": "§a葱花锅底加羊肉, 变成 炒锅_7(清炒羊肉_生); 拿锅铲翻炒4次"},
|
||||
# 菜谱20 清炒猪排 (葱花锅底 + 猪肉)
|
||||
{"block": VEGETABLE_POT_BASE, "item": PORKCHOP, "target": CARROT_AND_PORKCHOP, "consume": 1,
|
||||
# 菜谱20 清炒猪排 (葱花锅底_51 + 猪肉)
|
||||
{"block": COOKING_SCALLIONS, "item": PORKCHOP, "target": CARROT_AND_PORKCHOP, "consume": 1,
|
||||
"tip": "§a葱花锅底加猪肉, 变成 炒锅_9(清炒猪排_生); 拿锅铲翻炒4次"},
|
||||
# 菜谱21 胡萝卜鲑鱼 (炒胡萝卜_熟 + 鲑鱼)
|
||||
{"block": COOKING_PEPPER, "item": SALMON, "target": CARROT_AND_SALMON, "consume": 1,
|
||||
|
||||
+5
@@ -47,6 +47,9 @@ from ..ChaoguoData import (
|
||||
# ---- 统一分发器 ----
|
||||
from ...service.FeatureDispatcher import FeatureDispatcher
|
||||
|
||||
# ---- 炒锅翻炒音效(兹拉声 random.fizz) ----
|
||||
from ....ModUtil.ServerUtil import PlaySoundToAllClient
|
||||
|
||||
|
||||
class ChaoguoService(BlueFoxServerSystem):
|
||||
"""
|
||||
@@ -287,6 +290,8 @@ class ChaoguoService(BlueFoxServerSystem):
|
||||
times = recipe.get("times", 4)
|
||||
# 每次右键先旋转方块90度(aux+1 四方向, 照石磨 _rotateMill)
|
||||
self._rotateWok(pos, dim)
|
||||
# 翻炒时播放"兹拉"声(random.fizz, 速率1.1) —— 只炒锅, 所有炒锅翻炒都响
|
||||
PlaySoundToAllClient((pos[0], pos[1], pos[2], dim), "random.fizz", 1.1)
|
||||
cf = self._readFlag(dim, pos, "rtdd_cf") + 1
|
||||
if cf >= times:
|
||||
target = recipe.get("target")
|
||||
|
||||
@@ -63,6 +63,11 @@ RICE_BLOCKS = [
|
||||
RICE_SEED_ITEM = "rtdd:rice_seeds" # 破坏掉落稻谷
|
||||
RICE_CROP_ITEM = "rtdd:brownrice" # 成熟额外掉落大米
|
||||
|
||||
# 水稻生长: 改用"原版 tick 概率生长"(每 block tick 一定概率长大一级) + 骨粉右键
|
||||
# RICE_BLOCKS 顺序即生长阶段: [0]刚种 -> [1]生长中 -> [2]成熟
|
||||
RICE_GROW_PROB = 0.05 # 每 block tick 生长一级的概率(原版随机式, 可按需调)
|
||||
BONE_MEAL = "minecraft:bone_meal" # 骨粉(右键概率增加生长)
|
||||
|
||||
# 汇总: 乡野自然右键切换规则
|
||||
NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST]
|
||||
|
||||
@@ -90,11 +95,8 @@ NATURAL_TIMERS = [
|
||||
# 葡萄藤: 藤_1 -> 藤_2
|
||||
{"source": "rtdd:grapebushes_1", "target": "rtdd:grapebushes_2",
|
||||
"time": 180, "autoStart": True, "doneTip": "§e葡萄熟了"},
|
||||
# 水稻: 刚种下 -> 生长中 -> 成熟
|
||||
{"source": "rtdd:riceseedlingsb", "target": "rtdd:riceseedlingsc",
|
||||
"time": 120, "autoStart": True},
|
||||
{"source": "rtdd:riceseedlingsc", "target": "rtdd:riceseedlingsd",
|
||||
"time": 120, "autoStart": True, "doneTip": "§e水稻成熟了"},
|
||||
# 水稻已改用"原版 tick 概率生长(每block tick随机长大一级)+骨粉", 见 NaturalTimerService._riceTickProcess,
|
||||
# 不再走这里的秒式时长计时, 故从 NATURAL_TIMERS 移除
|
||||
]
|
||||
|
||||
# ============================================================================
|
||||
|
||||
+27
-1
@@ -21,6 +21,7 @@
|
||||
================================================================================
|
||||
"""
|
||||
import time
|
||||
import random
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
# ---- 网易API基础对象 ----
|
||||
@@ -32,7 +33,7 @@ from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
||||
from ....BlueFoxTools.ToolsConfig import LevelId
|
||||
|
||||
# ---- 只导入乡野自然自己的数据库 ----
|
||||
from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT, RICE_BLOCKS, RICE_SEED_ITEM, RICE_CROP_ITEM
|
||||
from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT, RICE_BLOCKS, RICE_SEED_ITEM, RICE_CROP_ITEM, BONE_MEAL
|
||||
|
||||
# ---- 统一分发器 ----
|
||||
from ...service.FeatureDispatcher import FeatureDispatcher
|
||||
@@ -89,6 +90,11 @@ class NaturalService(BlueFoxServerSystem):
|
||||
|
||||
recipe = self.findRecipe(blockName, itemDict)
|
||||
if not recipe:
|
||||
# 骨粉右键水稻 -> 概率催熟(还原原版农作物施肥)
|
||||
if itemName == BONE_MEAL and blockName in RICE_BLOCKS:
|
||||
if self.checkCooldown(key, 0.3):
|
||||
self._applyBoneMeal(playerId, pos, dim, blockName, itemDict)
|
||||
return True
|
||||
return False
|
||||
if not self.checkCooldown(key, 0.5):
|
||||
return True
|
||||
@@ -216,6 +222,26 @@ class NaturalService(BlueFoxServerSystem):
|
||||
if recipe.get("tip"):
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"])
|
||||
|
||||
def _applyBoneMeal(self, playerId, pos, dim, blockName, itemDict):
|
||||
"""骨粉催熟水稻: 消耗1个骨粉, 按原版概率一次长多级(无失败时2~3级), 封顶成熟"""
|
||||
try:
|
||||
if blockName == RICE_BLOCKS[-1]:
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§c水稻已成熟, 无需施肥")
|
||||
return
|
||||
index = RICE_BLOCKS.index(blockName)
|
||||
# 原版骨粉给作物有失败几率: 20% 无效消耗
|
||||
if random.random() < 0.2:
|
||||
self.consumeItem(playerId, itemDict, 1)
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§7施肥没有起效…")
|
||||
return
|
||||
add = random.choice([2, 3]) # 生长2级或3级(封顶到成熟)
|
||||
end = min(index + add, len(RICE_BLOCKS) - 1)
|
||||
self.consumeItem(playerId, itemDict, 1)
|
||||
self.replaceBlock(pos, dim, RICE_BLOCKS[end], playerId)
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a水稻长大了!")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ============================================================================
|
||||
# 四、工具方法:获取玩家主手物品
|
||||
# ============================================================================
|
||||
|
||||
+20
-2
@@ -23,6 +23,7 @@
|
||||
================================================================================
|
||||
"""
|
||||
import time
|
||||
import random
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
# ---- 网易API基础对象 ----
|
||||
@@ -37,7 +38,7 @@ from ....BlueFoxTools.ToolsConfig import LevelId
|
||||
blockEntityDataComp = comp.CreateBlockEntityData(LevelId)
|
||||
|
||||
# ---- 只导入乡野自然自己的数据库 ----
|
||||
from ..NaturalData import NATURAL_TIMERS
|
||||
from ..NaturalData import NATURAL_TIMERS, RICE_BLOCKS, RICE_GROW_PROB
|
||||
|
||||
# ---- 统一分发器 ----
|
||||
from ...service.FeatureDispatcher import FeatureDispatcher
|
||||
@@ -64,7 +65,9 @@ class NaturalTimerService(BlueFoxServerSystem):
|
||||
|
||||
def getTimerBlocks(self):
|
||||
"""返回本功能的所有"计时源方块"集合(tick 路由用)"""
|
||||
return set(self.naturalTimers.keys())
|
||||
blocks = set(self.naturalTimers.keys())
|
||||
blocks.update(RICE_BLOCKS) # 水稻 tick 概率生长也要路由进来
|
||||
return blocks
|
||||
|
||||
def handleBlockEntityTick(self, args):
|
||||
"""由 FeatureDispatcher 转发的计时方块 tick 入口"""
|
||||
@@ -96,6 +99,10 @@ class NaturalTimerService(BlueFoxServerSystem):
|
||||
|
||||
def _tickProcess(self, dim, pos, blockName):
|
||||
try:
|
||||
# 水稻: 走"原版 tick 概率生长"(不是秒式时长)
|
||||
if blockName in RICE_BLOCKS:
|
||||
self._riceTickProcess(dim, pos, blockName)
|
||||
return
|
||||
recipe = self.naturalTimers.get(blockName)
|
||||
if not recipe:
|
||||
return
|
||||
@@ -122,6 +129,17 @@ class NaturalTimerService(BlueFoxServerSystem):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _riceTickProcess(self, dim, pos, blockName):
|
||||
"""水稻原版式 tick 生长: 每个 block tick 以 RICE_GROW_PROB 概率长大一级(到成熟为止)"""
|
||||
try:
|
||||
index = RICE_BLOCKS.index(blockName)
|
||||
if index >= len(RICE_BLOCKS) - 1:
|
||||
return # 已成熟
|
||||
if random.random() < RICE_GROW_PROB:
|
||||
self.replaceBlock(pos, dim, RICE_BLOCKS[index + 1], None)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _finishTimer(self, dim, pos, recipe, data):
|
||||
try:
|
||||
cur = comp.CreateBlockInfo(LevelId).GetBlockNew(pos, dim)
|
||||
|
||||
Reference in new issue
Block a user