Skip to content

Commit 2787cca

Browse files
committed
Merge pull request #215 from Gjum/new-event-world_chunk_update
New event: world_chunk_update
2 parents dc93384 + 92b4149 commit 2787cca

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

spockbot/plugins/helpers/world.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ def handle_new_dimension(self, name, packet):
6262
def handle_chunk_data(self, name, packet):
6363
"""Chunk Data - Update World state"""
6464
self.world.unpack_column(packet.data)
65+
location = packet.data['chunk_x'], packet.data['chunk_z']
66+
self.event.emit('world_chunk_update', {'location': location})
6567

6668
def handle_multi_block_change(self, name, packet):
6769
"""Multi Block Change - Update multiple blocks"""
@@ -71,26 +73,35 @@ def handle_multi_block_change(self, name, packet):
7173
x = block['x'] + chunk_x
7274
z = block['z'] + chunk_z
7375
y = block['y']
74-
self.world.set_block(x, y, z, data=block['block_data'])
76+
old_data = self.world.set_block(x, y, z, data=block['block_data'])
7577
self.event.emit('world_block_update', {
7678
'location': {
7779
'x': x,
7880
'y': y,
7981
'z': z,
8082
},
8183
'block_data': block['block_data'],
84+
'old_data': old_data,
8285
})
8386

8487
def handle_block_change(self, name, packet):
8588
"""Block Change - Update a single block"""
86-
p = packet.data['location']
89+
pos = packet.data['location']
8790
block_data = packet.data['block_data']
88-
self.world.set_block(p['x'], p['y'], p['z'], data=block_data)
89-
self.event.emit('world_block_update', packet.data)
91+
old_data = self.world.set_block(pos['x'], pos['y'], pos['z'],
92+
data=block_data)
93+
self.event.emit('world_block_update', {
94+
'location': pos,
95+
'block_data': block_data,
96+
'old_data': old_data,
97+
})
9098

9199
def handle_map_chunk_bulk(self, name, packet):
92100
"""Map Chunk Bulk - Update World state"""
93101
self.world.unpack_bulk(packet.data)
102+
for meta in packet.data['metadata']:
103+
location = meta['chunk_x'], meta['chunk_z']
104+
self.event.emit('world_chunk_update', {'location': location})
94105

95106
def handle_update_sign(self, event, packet):
96107
location = Vector3(packet.data['location'])

spockbot/plugins/tools/smpmap.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,10 @@ def set_block(self, pos_or_x, y=None, z=None,
256256

257257
if data is None:
258258
data = (block_id << 4) | (meta & 0x0F)
259+
260+
old_data = chunk.block_data.get(rx, ry, rz)
259261
chunk.block_data.set(rx, ry, rz, data)
262+
return old_data >> 4, old_data & 0x0F
260263

261264
def get_block_entity_data(self, pos_or_x, y=None, z=None):
262265
"""

0 commit comments

Comments
 (0)