代码初始化
This commit is contained in:
1 parent
8160eca074
commit
dffebce01d
43 files changed
+6383
No files matched your search
@@ -0,0 +1,88 @@
|
||||
# coding=utf-8
|
||||
from ToolsConfig import serverCompFactory, clientCompFactory, serverApi, clientApi, LevelId
|
||||
from ItemTools import IsSameItem
|
||||
|
||||
|
||||
def DictFromBlockEntityData(blockEntityData, posDim):
|
||||
"""
|
||||
从方块实体中获取全部数据
|
||||
:param blockEntityData:方块实体自定义数据
|
||||
:param posDim:坐标维度
|
||||
:return:dict
|
||||
"""
|
||||
data = getattr(getattr(blockEntityData, '_BlockEntityData__exDataMgr'), 'mBlockEntityData')
|
||||
return data[posDim[3]][posDim[:3]]
|
||||
|
||||
|
||||
def SetBlockAir(posDim):
|
||||
"""
|
||||
设置某位置的方块为空,仅服务端可用
|
||||
"""
|
||||
return serverCompFactory.CreateBlockInfo(LevelId).SetBlockNew(
|
||||
posDim[:3], {'name': 'minecraft:air'}, dimensionId=posDim[3]
|
||||
)
|
||||
|
||||
|
||||
def GetEntityDim(entityId):
|
||||
"""
|
||||
获取实体维度,仅服务端可用
|
||||
"""
|
||||
return serverCompFactory.CreateDimension(entityId).GetEntityDimensionId()
|
||||
|
||||
|
||||
def DeclarePlayerInvItem(playerId, itemDict1, count=1):
|
||||
"""
|
||||
减少玩家背包内特定物品
|
||||
:param playerId:玩家ID
|
||||
:param count:减少数量
|
||||
:param itemDict1:需要检测的物品字典,必须包含newItemName字段
|
||||
:return:是否成功减少
|
||||
"""
|
||||
itemComp = serverCompFactory.CreateItem(playerId)
|
||||
itemDicts = itemComp.GetPlayerAllItems(0)
|
||||
for index in range(itemDicts.__len__()):
|
||||
itemDict = itemDicts[index]
|
||||
if itemDict and IsSameItem(itemDict, itemDict1):
|
||||
itemComp.SetInvItemNum(index, itemDict['count'] - count)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def GetEntityCarriedItem(entityId):
|
||||
"""
|
||||
获取玩家右手物品
|
||||
"""
|
||||
return serverCompFactory.CreateItem(entityId).GetEntityItem(2, 0, True)
|
||||
|
||||
|
||||
def GetEntityTypeComp(entityId):
|
||||
"""
|
||||
获取实体类型组件
|
||||
"""
|
||||
return serverCompFactory.CreateEngineType(entityId) or clientCompFactory.CreateEngineType(entityId)
|
||||
|
||||
|
||||
def IsPlayer(entityId):
|
||||
"""
|
||||
判断一个实体是否为玩家
|
||||
"""
|
||||
player = serverApi.GetMinecraftEnum().EntityType.Player
|
||||
return GetEntityTypeComp(entityId).GetEngineType() & player == player
|
||||
|
||||
|
||||
def GetEntityItemComp(entityId):
|
||||
"""
|
||||
获取实体类型组件
|
||||
"""
|
||||
return serverCompFactory.CreateItem(entityId) or clientCompFactory.CreateItem(entityId)
|
||||
|
||||
|
||||
def DeclarePlayerCarriedItem(playerId):
|
||||
"""
|
||||
减少玩家右手物品一个,仅服务端有效
|
||||
"""
|
||||
itemComp = GetEntityItemComp(playerId)
|
||||
itemDict = itemComp.GetPlayerItem(2, 0, True)
|
||||
if itemDict:
|
||||
itemDict['count'] -= 1
|
||||
return itemComp.SpawnItemToPlayerCarried(itemDict, playerId)
|
||||
Reference in new issue
Block a user