吃 3 功能 完整 正向药水效果 回复饱食度
This commit is contained in:
1 parent
fb817b5d34
commit
78b48516d0
5 files changed
+416
-1353
No files matched your search
+21
-11
@@ -11,8 +11,8 @@
|
||||
3. handleItemTryUse 手持 饭团/水煮蛋/豆腐 长按右键(空中使用) -> 直接吃(消耗1个)
|
||||
|
||||
【数值】
|
||||
- 饱食度: SetPlayerHunger(0~20), 1点 = 半个鸡腿(原版饥饿值)
|
||||
- 效果: AddEffectToEntity(effectName, 时长秒, amplifier)
|
||||
- 饱食度: CreatePlayer(玩家ID).GetPlayerHunger/SetPlayerHunger(0~20, PlayerCompServer), 1点 = 半个鸡腿
|
||||
- 效果: CreateEffect(玩家ID).AddEffectToEntity(effectName, 时长秒, amplifier, showParticles)
|
||||
amplifier = 等级-1 (效果I=0, 效果II=1, ...)
|
||||
- 冷却: 0.4 秒(防长按右键连吃刷屏)
|
||||
================================================================================
|
||||
@@ -23,8 +23,7 @@ import mod.server.extraServerApi as serverApi
|
||||
ServerSystem = serverApi.GetServerSystemCls() # 服务端系统基类
|
||||
comp = serverApi.GetEngineCompFactory() # 组件工厂
|
||||
|
||||
from ...BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
||||
from ...BlueFoxTools.ToolsConfig import LevelId
|
||||
from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
||||
from ..ShiyongfoodData import EAT_RULE_MAP, TRY_USE_RULES, EFFECT_CN
|
||||
|
||||
|
||||
@@ -144,23 +143,33 @@ class ShiyongfoodService(BlueFoxServerSystem):
|
||||
def _applyFood(self, playerId, hunger, effects):
|
||||
try:
|
||||
# 饱食度【在现有值上累加】(不是覆盖): 当前值 + 回复值, 上限20点
|
||||
attrComp = comp.CreateAttr(playerId)
|
||||
cur = attrComp.GetPlayerHunger()
|
||||
# 接口: CreatePlayer(玩家ID).GetPlayerHunger/SetPlayerHunger (PlayerCompServer)
|
||||
playerComp = comp.CreatePlayer(playerId)
|
||||
cur = playerComp.GetPlayerHunger()
|
||||
if cur is None:
|
||||
cur = 0
|
||||
newVal = max(0.0, min(float(cur) + float(hunger), 20.0))
|
||||
attrComp.SetPlayerHunger(newVal)
|
||||
playerComp.SetPlayerHunger(newVal)
|
||||
except Exception:
|
||||
pass
|
||||
if effects:
|
||||
try:
|
||||
effectComp = comp.CreateEffect(LevelId)
|
||||
for name, dur, lvl in effects:
|
||||
# 接口: CreateEffect(实体ID).AddEffectToEntity(effectName, duration, amplifier, showParticles)
|
||||
# 效果I -> amplifier 0, 效果II -> amplifier 1 ...
|
||||
effectComp.AddEffectToEntity(playerId, name, dur, lvl - 1, False)
|
||||
comp.CreateEffect(playerId).AddEffectToEntity(
|
||||
name, int(dur), max(0, min(int(lvl) - 1, 255)), False)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ====================================================================
|
||||
# 工具: 获取玩家主手物品
|
||||
# ====================================================================
|
||||
def getCarriedItem(self, playerId):
|
||||
itemComp = comp.CreateItem(playerId)
|
||||
return itemComp.GetPlayerItem(
|
||||
serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
|
||||
|
||||
# ====================================================================
|
||||
# 工具: 替换/清除方块
|
||||
# ====================================================================
|
||||
@@ -190,14 +199,15 @@ class ShiyongfoodService(BlueFoxServerSystem):
|
||||
def _notify(self, playerId, rule):
|
||||
try:
|
||||
hunger = rule.get("hunger", 0)
|
||||
msg = "\u00a7a回复 %d 点饱食度" % hunger
|
||||
# 用真正的 § 颜色符(与全模组一致), 不要写 "\u00a7" 转义(Py2 字节串不解释该转义, 会原样显示)
|
||||
msg = "§a回复 %d 点饱食度" % hunger
|
||||
effects = rule.get("effects", [])
|
||||
if effects:
|
||||
parts = []
|
||||
for name, dur, lvl in effects:
|
||||
cn = EFFECT_CN.get(name, name)
|
||||
parts.append("%s%s(%d秒)" % (cn, self._roman(lvl), dur))
|
||||
msg += ", 获得 " + " ".join(parts)
|
||||
msg += "§a,获得 " + "§e" + "§a".join(parts)
|
||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, msg)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
Reference in new issue
Block a user