onClientEvent method
Implementation
void onClientEvent(NetworkerPacket<WorldEvent> packet,
{bool force = false}) async {
final data = packet.data;
ServerResponse? process;
try {
process = processClientEvent(
data is UserJoined ? null : data,
packet.channel,
state,
assetManager: assetManager,
allowServerEvents: packet.isServer,
);
} catch (e) {
server.log('Error processing event: $e', level: LogLevel.error);
}
if (process == null) return;
final event = Event(
serverEvent: process.main.data,
target: process.main.channel,
clientEvent: data,
source: packet.channel,
needsUpdate: process.needsUpdate,
worldName: worldName,
);
if (!force) {
server.defaultEventSystem.fire(event);
if (event.cancelled) return;
server.log(
'Processing event by ${event.source}: ${limitOutput(event.clientEvent)}, answered with ${limitOutput(event.serverEvent)}',
level: LogLevel.verbose);
}
switch (packet.data) {
case MessageRequest data:
server.log("Message by ${packet.channel}: ${data.message}",
level: LogLevel.info);
default:
}
server.sendEvent(event.serverEvent,
target: event.target, worldName: worldName);
final updatePackets = process.buildUpdatePacketsFor(
state, server.channels, event.needsUpdate);
for (final packet in updatePackets) {
sendEvent(packet.data, target: packet.channel);
}
}