乡野自然实现 3
This commit is contained in:
1 parent
97da44ab18
commit
b947847def
9 files changed
+94
-83
No files matched your search
@@ -15,7 +15,7 @@ NaturalService / NaturalTimerService 读取,FeatureDispatcher 通过方块名/
|
|||||||
5) 柴火分解 (工作台配方): firewood -> 9个木条
|
5) 柴火分解 (工作台配方): firewood -> 9个木条
|
||||||
6) 水稻种植 (手持稻谷右键耕地): farmland -> 水稻刚种下
|
6) 水稻种植 (手持稻谷右键耕地): farmland -> 水稻刚种下
|
||||||
7) 水稻生长 (计时): riceseedlingsb -> c -> d
|
7) 水稻生长 (计时): riceseedlingsb -> c -> d
|
||||||
8) 水稻收获 (右键): 成熟水稻 -> 取16大米, 变回刚种下
|
8) 水稻收获 (左键破坏掉落): 水稻方块破坏掉稻谷, 成熟额外掉大米
|
||||||
|
|
||||||
【不实现(后续实现)】
|
【不实现(后续实现)】
|
||||||
- 果树"树苗成长"机制(树叶对应树苗, 像原版一样长成树): 后续实现, 本次跳过。
|
- 果树"树苗成长"机制(树叶对应树苗, 像原版一样长成树): 后续实现, 本次跳过。
|
||||||
@@ -28,14 +28,14 @@ NaturalService / NaturalTimerService 读取,FeatureDispatcher 通过方块名/
|
|||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# 一、柴火堆叠/取用(右键)
|
# 一、柴火堆叠/取用(右键)
|
||||||
# firewood(柴火_1) + 手持柴火 -> firewood_2(柴火_2 堆放)
|
# firewood_2(柴火_2) + 手持柴火 -> firewood(柴火_1 堆放)
|
||||||
# firewood_2 空手右键 -> firewood + 给1个柴火
|
# firewood(堆放) 空手右键 -> firewood_2 + 给1个柴火
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
FIREWOOD_RULES = [
|
FIREWOOD_RULES = [
|
||||||
{"source": "rtdd:firewood", "item": "rtdd:firewood",
|
{"source": "rtdd:firewood_2", "item": "rtdd:firewood",
|
||||||
"target": "rtdd:firewood_2", "consume": 1, "tip": "§a堆放柴火"},
|
"target": "rtdd:firewood", "consume": 1, "tip": "§a堆放柴火"},
|
||||||
{"source": "rtdd:firewood_2", "item": None,
|
{"source": "rtdd:firewood", "item": None,
|
||||||
"target": "rtdd:firewood", "giveItem": "rtdd:firewood", "tip": "§a取走柴火"},
|
"target": "rtdd:firewood_2", "giveItem": "rtdd:firewood", "tip": "§a取走柴火"},
|
||||||
]
|
]
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -50,18 +50,19 @@ GRAPE_HARVEST = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# 三、水稻收获(右键)
|
# 三、水稻收获(左键破坏掉落, 类似原版作物)
|
||||||
# riceseedlingsd(成熟) 空手右键 -> riceseedlingsb + 掉落16个大米
|
# 水稻方块被左键破坏 -> 掉落稻谷; 成熟(riceseedlingsd)额外掉大米
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
RICE_HARVEST = {
|
RICE_BLOCKS = [
|
||||||
"source": "rtdd:riceseedlingsd", "item": None,
|
"rtdd:riceseedlingsb", # 刚种下
|
||||||
"target": "rtdd:riceseedlingsb",
|
"rtdd:riceseedlingsc", # 生长中
|
||||||
"dropItem": [{"name": "rtdd:brownrice", "count": 16}],
|
"rtdd:riceseedlingsd", # 成熟
|
||||||
"tip": "§a收获了16个大米",
|
]
|
||||||
}
|
RICE_SEED_ITEM = "rtdd:rice_seeds" # 破坏掉落稻谷
|
||||||
|
RICE_CROP_ITEM = "rtdd:brownrice" # 成熟额外掉落大米
|
||||||
|
|
||||||
# 汇总: 乡野自然右键切换规则
|
# 汇总: 乡野自然右键切换规则
|
||||||
NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST, RICE_HARVEST]
|
NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST]
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# 四、计时转换 (果树结果 / 葡萄藤生长 / 水稻生长, 均 autoStart 自动生长)
|
# 四、计时转换 (果树结果 / 葡萄藤生长 / 水稻生长, 均 autoStart 自动生长)
|
||||||
|
|||||||
+47
-1
@@ -32,7 +32,7 @@ from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
|||||||
from ....BlueFoxTools.ToolsConfig import LevelId
|
from ....BlueFoxTools.ToolsConfig import LevelId
|
||||||
|
|
||||||
# ---- 只导入乡野自然自己的数据库 ----
|
# ---- 只导入乡野自然自己的数据库 ----
|
||||||
from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT
|
from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT, RICE_BLOCKS, RICE_SEED_ITEM, RICE_CROP_ITEM
|
||||||
|
|
||||||
# ---- 统一分发器 ----
|
# ---- 统一分发器 ----
|
||||||
from ...service.FeatureDispatcher import FeatureDispatcher
|
from ...service.FeatureDispatcher import FeatureDispatcher
|
||||||
@@ -53,6 +53,9 @@ class NaturalService(BlueFoxServerSystem):
|
|||||||
for r in NATURAL_SWITCHES:
|
for r in NATURAL_SWITCHES:
|
||||||
self.switchRecipes[(r["source"], r.get("item"))] = r
|
self.switchRecipes[(r["source"], r.get("item"))] = r
|
||||||
self.featureBlocks.add(r["source"])
|
self.featureBlocks.add(r["source"])
|
||||||
|
# 水稻方块: 只为接收"左键破坏掉落"事件注册(右键无规则, handleBlockUse 会返回 False)
|
||||||
|
for b in RICE_BLOCKS:
|
||||||
|
self.featureBlocks.add(b)
|
||||||
|
|
||||||
# ---- 右键冷却表 ----
|
# ---- 右键冷却表 ----
|
||||||
self.cooldown = {}
|
self.cooldown = {}
|
||||||
@@ -92,6 +95,49 @@ class NaturalService(BlueFoxServerSystem):
|
|||||||
self.handleSwitch(recipe, playerId, pos, dim, itemDict, key)
|
self.handleSwitch(recipe, playerId, pos, dim, itemDict, key)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def handleDestroy(self, args):
|
||||||
|
"""由 FeatureDispatcher 转发的"玩家左键破坏方块"入口(水稻收获, 类似原版作物)。
|
||||||
|
水稻方块(刚种下/生长中/成熟)被左键破坏 -> 掉落稻谷(1个, 回收种子);
|
||||||
|
成熟(riceseedlingsd)额外掉落 16 个大米(brownrice)。
|
||||||
|
返回 True=处理了; False=不属本功能管。"""
|
||||||
|
blockName = args.get("fullName") or args.get("blockName")
|
||||||
|
if blockName not in RICE_BLOCKS:
|
||||||
|
return False
|
||||||
|
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()
|
||||||
|
|
||||||
|
# 取消默认破坏+默认掉落(不让水稻方块本身掉出来)
|
||||||
|
args['cancel'] = True
|
||||||
|
args['spawnResources'] = False
|
||||||
|
|
||||||
|
# 清空方块为空气
|
||||||
|
try:
|
||||||
|
comp.CreateBlockInfo(LevelId).SetBlockNew(
|
||||||
|
pos, blockDict={"name": "minecraft:air", "aux": 0},
|
||||||
|
oldBlockHandling=0, dimensionId=dim)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# 掉落稻谷(种子回收)
|
||||||
|
try:
|
||||||
|
self.CreateEngineItemEntity(
|
||||||
|
{"itemName": RICE_SEED_ITEM, "count": 1, "auxValue": 0},
|
||||||
|
dim, (x, y + 0.5, z))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# 成熟水稻额外掉落大米
|
||||||
|
if blockName == "rtdd:riceseedlingsd":
|
||||||
|
try:
|
||||||
|
self.CreateEngineItemEntity(
|
||||||
|
{"itemName": RICE_CROP_ITEM, "count": 16, "auxValue": 0},
|
||||||
|
dim, (x, y + 0.5, z))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return True
|
||||||
|
|
||||||
def handleItemUseOn(self, args):
|
def handleItemUseOn(self, args):
|
||||||
"""由 FeatureDispatcher 转发的"手持物品右键方块表面"入口(稻谷种水稻)"""
|
"""由 FeatureDispatcher 转发的"手持物品右键方块表面"入口(稻谷种水稻)"""
|
||||||
itemName = args.get("itemName")
|
itemName = args.get("itemName")
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"netease:aabb": {
|
"netease:aabb": {
|
||||||
"collision": {
|
"collision": {
|
||||||
"min": [
|
"min": [
|
||||||
-0.4375,
|
0,
|
||||||
-0.625,
|
-0.625,
|
||||||
0.1875
|
0.1875
|
||||||
],
|
],
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
},
|
},
|
||||||
"clip": {
|
"clip": {
|
||||||
"min": [
|
"min": [
|
||||||
-0.4375,
|
0,
|
||||||
-0.625,
|
-0.625,
|
||||||
0.1875
|
0.1875
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"netease:aabb": {
|
"netease:aabb": {
|
||||||
"collision": {
|
"collision": {
|
||||||
"min": [
|
"min": [
|
||||||
-0.4375,
|
0,
|
||||||
-0.625,
|
-0.625,
|
||||||
-0.125
|
-0.125
|
||||||
],
|
],
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
},
|
},
|
||||||
"clip": {
|
"clip": {
|
||||||
"min": [
|
"min": [
|
||||||
-0.4375,
|
0,
|
||||||
-0.625,
|
-0.625,
|
||||||
-0.125
|
-0.125
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -8,28 +8,16 @@
|
|||||||
},
|
},
|
||||||
"components": {
|
"components": {
|
||||||
"netease:aabb": {
|
"netease:aabb": {
|
||||||
"collision": {
|
|
||||||
"min": [
|
|
||||||
0.125,
|
|
||||||
0.0,
|
|
||||||
0.125
|
|
||||||
],
|
|
||||||
"max": [
|
|
||||||
0.875,
|
|
||||||
2.0,
|
|
||||||
1.1875
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"clip": {
|
"clip": {
|
||||||
"min": [
|
"min": [
|
||||||
0.125,
|
0,
|
||||||
0.0,
|
0.0,
|
||||||
0.125
|
0
|
||||||
],
|
],
|
||||||
"max": [
|
"max": [
|
||||||
0.875,
|
1,
|
||||||
2.0,
|
1.0,
|
||||||
1.1875
|
1
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,28 +8,16 @@
|
|||||||
},
|
},
|
||||||
"components": {
|
"components": {
|
||||||
"netease:aabb": {
|
"netease:aabb": {
|
||||||
"collision": {
|
|
||||||
"min": [
|
|
||||||
0.125,
|
|
||||||
0.0,
|
|
||||||
0.125
|
|
||||||
],
|
|
||||||
"max": [
|
|
||||||
0.875,
|
|
||||||
2.0,
|
|
||||||
1.1875
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"clip": {
|
"clip": {
|
||||||
"min": [
|
"min": [
|
||||||
0.125,
|
0,
|
||||||
0.0,
|
0.0,
|
||||||
0.125
|
0
|
||||||
],
|
],
|
||||||
"max": [
|
"max": [
|
||||||
0.875,
|
1,
|
||||||
2.0,
|
2.0,
|
||||||
1.1875
|
1
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,28 +8,16 @@
|
|||||||
},
|
},
|
||||||
"components": {
|
"components": {
|
||||||
"netease:aabb": {
|
"netease:aabb": {
|
||||||
"collision": {
|
|
||||||
"min": [
|
|
||||||
0.125,
|
|
||||||
0.0,
|
|
||||||
0.125
|
|
||||||
],
|
|
||||||
"max": [
|
|
||||||
0.875,
|
|
||||||
2.0,
|
|
||||||
1.1875
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"clip": {
|
"clip": {
|
||||||
"min": [
|
"min": [
|
||||||
0.125,
|
0,
|
||||||
0.0,
|
0.0,
|
||||||
0.125
|
0
|
||||||
],
|
],
|
||||||
"max": [
|
"max": [
|
||||||
0.875,
|
1,
|
||||||
2.0,
|
2.0,
|
||||||
1.1875
|
1
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -42,13 +42,13 @@ todo 后续实现
|
|||||||
转换条件:[空手 右键 取出]
|
转换条件:[空手 右键 取出]
|
||||||
机制: 成熟葡萄藤右键取出 3 个葡萄(grape), 变回葡萄藤_1
|
机制: 成熟葡萄藤右键取出 3 个葡萄(grape), 变回葡萄藤_1
|
||||||
|
|
||||||
5. 柴火_1(柴火) -> 柴火_2
|
5. 柴火_2 -> 柴火_1(堆放)
|
||||||
转换条件:[手持 柴火 右键 进行堆叠]
|
转换条件:[手持 柴火(rtdd:firewood) 右键 进行堆叠]
|
||||||
机制: 手持柴火右键,消耗1个,堆叠成柴火_2(堆放)
|
机制: 手持柴火右键柴火_2,消耗1个,堆叠成柴火_1(堆放)
|
||||||
|
|
||||||
5a. 柴火_2 -> 柴火_1(柴火)
|
5a. 柴火_1(堆放) -> 柴火_2
|
||||||
转换条件:[右键 进行转换,取走柴火]
|
转换条件:[空手 右键 进行转换,取走柴火]
|
||||||
机制: 空手右键,取走1个柴火,退回柴火_1(取用)
|
机制: 空手右键柴火_1,取走1个柴火,退回柴火_2(取用)
|
||||||
(柴火用于燃料; 注意: 壁炉加柴用的是 木条(rtdd:b_15), 不是柴火方块, 见 家具家私转化关系.txt 七b)
|
(柴火用于燃料; 注意: 壁炉加柴用的是 木条(rtdd:b_15), 不是柴火方块, 见 家具家私转化关系.txt 七b)
|
||||||
|
|
||||||
5b. 柴火_1 -> 9个木条
|
5b. 柴火_1 -> 9个木条
|
||||||
@@ -66,11 +66,11 @@ todo 后续实现
|
|||||||
转换条件:[水稻生长计时,逐级变化]
|
转换条件:[水稻生长计时,逐级变化]
|
||||||
机制: 计时生长,约120秒升一级,共两级成熟
|
机制: 计时生长,约120秒升一级,共两级成熟
|
||||||
|
|
||||||
7a. 水稻(成熟) -> 水稻(刚种下) + 16个大米
|
7a. 水稻(各状态) 左键破坏 -> 掉落稻谷; 成熟额外掉大米
|
||||||
转换条件:[空手 右键 收获]
|
转换条件:[左键 破坏方块]
|
||||||
机制: 成熟水稻右键获得 16 个大米(brownrice), 变回刚种下继续生长
|
机制: 破坏 刚种下/生长中 掉 1个稻谷(rice_seeds);
|
||||||
|
破坏 成熟(riceseedlingsd) 掉 1个稻谷(rice_seeds) + 16个大米(brownrice)
|
||||||
(大米进入 乡野食材/谷物·米面, 经 汤锅 煮饭盛出后供 寿司(含饭团 rice_balls)/蛋炒饭, 生米供 竹筒饭 等)
|
(大米进入 乡野食材/谷物·米面, 经 汤锅 煮饭盛出后供 寿司(含饭团 rice_balls)/蛋炒饭, 生米供 竹筒饭 等)
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
四、方块清单
|
四、方块清单
|
||||||
========================================
|
========================================
|
||||||
+3
-3
@@ -419,14 +419,14 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
|||||||
- 取葡萄: grapebushes_2 空手右键 -> 掉落3个葡萄(grape) + 变回 grapebushes_1 [已实现]
|
- 取葡萄: grapebushes_2 空手右键 -> 掉落3个葡萄(grape) + 变回 grapebushes_1 [已实现]
|
||||||
|
|
||||||
三、柴火 (堆叠/取用 + 工作台分解)
|
三、柴火 (堆叠/取用 + 工作台分解)
|
||||||
- 堆叠: firewood + 手持柴火右键 -> firewood_2(消耗1) [已实现]
|
- 堆叠: firewood_2(柴火_2) + 手持柴火右键 -> firewood(柴火_1 堆放, 消耗1) [已实现]
|
||||||
- 取用: firewood_2 空手右键 -> firewood + 返还1柴火 [已实现]
|
- 取用: firewood(堆放) 空手右键 -> firewood_2 + 返还1柴火 [已实现]
|
||||||
- 分解: firewood 工作台 -> 9个木条(b_15) (配方 xy_firewood_plank) [已实现]
|
- 分解: firewood 工作台 -> 9个木条(b_15) (配方 xy_firewood_plank) [已实现]
|
||||||
|
|
||||||
四、水稻 (种植 + 生长 + 收获)
|
四、水稻 (种植 + 生长 + 收获)
|
||||||
- 种植: 手持稻谷(rice_seeds) 右键原版耕地(farmland) -> 耕地上方放置 水稻刚种下(riceseedlingsb) [已实现]
|
- 种植: 手持稻谷(rice_seeds) 右键原版耕地(farmland) -> 耕地上方放置 水稻刚种下(riceseedlingsb) [已实现]
|
||||||
- 生长: riceseedlingsb 计时120秒 -> riceseedlingsc 计时120秒 -> riceseedlingsd [已实现]
|
- 生长: riceseedlingsb 计时120秒 -> riceseedlingsc 计时120秒 -> riceseedlingsd [已实现]
|
||||||
- 收获: riceseedlingsd 空手右键 -> 掉落16个大米(brownrice) + 变回 riceseedlingsb [已实现]
|
- 收获(左键破坏): 破坏 刚种下/生长中 -> 掉1稻谷(rice_seeds); 破坏成熟(riceseedlingsd) -> 掉1稻谷 + 16大米(brownrice) [已实现]
|
||||||
|
|
||||||
【留后】果树"树苗成长"机制 见 全部功能没做什么.txt 乡野自然节
|
【留后】果树"树苗成长"机制 见 全部功能没做什么.txt 乡野自然节
|
||||||
|
|
||||||
Reference in new issue
Block a user