/
extension_minecraft.py
44 lines (37 loc) · 1.22 KB
/
extension_minecraft.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import serial
import time
import json
import threading
import multiprocessing as mp
from guizero import error
from codelab_adapter.utils import find_microbit
from codelab_adapter.core_extension import Extension
from craft import MineCraft
class MineCraftProxy(Extension):
'''
继承 Extension 之后你将获得:
self.actuator_sub
self.sensor_pub
self.logger
'''
def __init__(self):
name = type(self).__name__ # class name
super().__init__(name)
self.mc = None
def run(self):
while True:
message = self.read()
topic = message.get('topic')
data = message.get("payload")
if topic == 'init':
self.mc = MineCraft(data)
self.publish({"id": 'minecraft', "topic": "sensor", "is_connected": True})
if self.mc:
fn = self.mc.match().get(topic)
if fn:
res = fn(data)
if res.get('topic') == 'sensor':
self.publish(res)
else:
self.publish({"id": 'minecraft', "topic": "sensor", "is_connected": False})
export = MineCraftProxy # 最后声明