Implement server kicks and updating the server time on the page according to heartbeats
This commit is contained in:
@@ -46,6 +46,19 @@ class PlayerDeathEvent(Event):
|
||||
super(PlayerDeathEvent, self).__init__(type='player-death',
|
||||
data={'player': player, 'message': message})
|
||||
|
||||
class ServerHeartbeatEvent(Event):
|
||||
def __init__(self, server, data):
|
||||
now = server.current_time()
|
||||
t = now.second+now.minute*60+now.hour*60*60
|
||||
super(ServerHeartbeatEvent, self).__init__(type='server-heartbeat',
|
||||
data={'server': server.id, 'heartbeat': data, 'time': t,
|
||||
'day-period': server.day_period()})
|
||||
|
||||
class KickEvent(Event):
|
||||
def __init__(self, user, message):
|
||||
super(KickEvent, self).__init__(type='player-kick',
|
||||
data={'player': user, 'message': message})
|
||||
|
||||
class PlayerMessageEvent(Event):
|
||||
def __init__(self, user, message):
|
||||
super(PlayerMessageEvent, self).__init__(type='player-message',
|
||||
|
@@ -2,7 +2,6 @@ from piston.handler import AnonymousBaseHandler, BaseHandler
|
||||
import time
|
||||
from django.core.cache import cache
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
import appversion
|
||||
from minecraft.models import MinecraftProfile
|
||||
from local.models import Quote
|
||||
@@ -13,7 +12,7 @@ from urllib2 import urlopen
|
||||
import json
|
||||
from datetime import datetime
|
||||
from models import cachePlayerList
|
||||
from events import server_queue, web_queue, chat, server_broadcast, send_web_event, QuitEvent, JoinEvent, PlayerDeathEvent
|
||||
from events import server_queue, web_queue, chat, server_broadcast, send_web_event, QuitEvent, JoinEvent, PlayerDeathEvent, ServerHeartbeatEvent
|
||||
from bounty.models import Bounty
|
||||
from vault.models import VaultSlot
|
||||
|
||||
@@ -116,6 +115,9 @@ class ServerEventHandler(BaseHandler):
|
||||
if evt['type'] == 'player-death':
|
||||
send_web_event(PlayerDeathEvent(evt['payload']['player'],
|
||||
evt['payload']['message']))
|
||||
if evt['type'] == 'heartbeat':
|
||||
cache.set('caminus-server-heartbeat-%s'%(request.server.id), evt['payload'], 86400)
|
||||
send_web_event(ServerHeartbeatEvent(request.server, evt['payload']))
|
||||
if evt['type'] == 'player-murder':
|
||||
bounties = Bounty.objects.filter(target__mc_username=evt['payload']['player'])
|
||||
killer = MinecraftProfile.objects.get(mc_username=evt['payload']['killer'])
|
||||
|
Reference in New Issue
Block a user