60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
from ...BlueFoxTools.SystemTools import SystemTools
|
|
from ...BlueFoxTools.ModConfig import *
|
|
from ...BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
|
from ...BlueFoxTools.EventFilter import BlueFoxFilterEnum as eF
|
|
from ...Function import *
|
|
from ...BlueFoxTools.SpecialFunciton.BlockBlock import GetLoadedBlockBlock, GetLoadedBlockBlockByPosDim
|
|
from ...Function import GetBaseBlock
|
|
|
|
|
|
class MainServer(BlueFoxServerSystem):
|
|
systemTools = SystemTools.GetTools('MainServer')
|
|
mcListener = systemTools.ListenForEvent()
|
|
blockUse = systemTools.FilterListener('ServerBlockUseEvent')
|
|
|
|
def __init__(self, *args):
|
|
super(MainServer, self).__init__(*args)
|
|
self.systemTools.Binding(self)
|
|
|
|
@mcListener
|
|
def ServerEntityTryPlaceBlockEvent(self, args):
|
|
blockName = args['fullName']
|
|
cls = blockIndex.get(blockName)
|
|
if cls:
|
|
posDim = (args['x'], args['y'], args['z'], args['dimensionId'])
|
|
args['cancel'] = not cls.Able(posDim, args['auxData'])
|
|
|
|
@mcListener
|
|
def EntityPlaceBlockAfterServerEvent(self, args):
|
|
print args
|
|
blockName = args['fullName']
|
|
cls = blockIndex.get(blockName)
|
|
if cls:
|
|
posDim = (args['x'], args['y'], args['z'], args['dimensionId'])
|
|
cls.getInstance(posDim)
|
|
|
|
@blockUse(eF.ServerEvent.NormalEvent.NotInCd('main.blockUse', 0.2))
|
|
def BlockUseEventNotIn02(self, args):
|
|
posDim = (args['x'], args['y'], args['z'], args['dimensionId'])
|
|
instance = GetBaseBlock(posDim)
|
|
if instance:
|
|
playerId = args['playerId']
|
|
carriedItem = serverCompFactory.CreateItem(playerId).GetPlayerItem(
|
|
serverApi.GetMinecraftEnum().ItemPosType.CARRIED, getUserData=True
|
|
)
|
|
if carriedItem is None: carriedItem = {}
|
|
instance.BlockUse(playerId, carriedItem)
|
|
|
|
@mcListener
|
|
def ServerPlayerTryDestroyBlockEvent(self, args):
|
|
posDim = (args['x'], args['y'], args['z'], args['dimensionId'])
|
|
fullName = args['fullName']
|
|
instance = GetBaseBlock(posDim)
|
|
if instance: instance.Destroy(1)
|
|
|
|
@mcListener
|
|
def ChunkLoadedServerEvent(self, args):
|
|
blockEntities = args['blockEntities']
|
|
for blockEntity in blockEntities:
|
|
pass
|