diff options
author | jomo <github@jomo.tv> | 2014-06-10 04:45:01 +0200 |
---|---|---|
committer | jomo <github@jomo.tv> | 2014-06-10 04:45:01 +0200 |
commit | d205c096da449c1ef37c23595ebb2505ba4e0d0a (patch) | |
tree | 65a6c22111c721f536f17a9e43f8101254494826 /tilehelper.py | |
parent | cd346f9e60e05551a14cf32c19ff78df68817a6c (diff) |
added BlockBrakeEvent
Diffstat (limited to 'tilehelper.py')
-rw-r--r-- | tilehelper.py | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/tilehelper.py b/tilehelper.py index dd654c3..463fcee 100644 --- a/tilehelper.py +++ b/tilehelper.py @@ -1,9 +1,10 @@ #pylint: disable=F0401 import org.bukkit.event.block.BlockPlaceEvent as BlockPlaceEvent +import org.bukkit.event.block.BlockBrakeEvent as BlockBrakeEvent from helpers import * tilehelpers = [ - {"owner": "ae795aa8-6327-408e-92ab-25c8a59f3ba1", "area": [[90, 90], [70, 70], [90, 90]], "world": "b0385345-4803-4522-a06a-75fbd692928d", "directions": "n"} + {"owner": "ae795aa8-6327-408e-92ab-25c8a59f3ba1", "area": [[90, 95], [70, 72], [90, 95]], "world": "b0385345-4803-4522-a06a-75fbd692928d", "directions": "neswud"} ] dirmap = { # [x, y, z] @@ -18,16 +19,7 @@ dirmap = { # FIXME: disallow multiple regions by single person. # FIXME: could lead to two regions updating each other forever -> server freezes -lastevent = None - -@hook.event("block.BlockPlaceEvent", "monitor") -def onBlockPlaceDebug(event): - global lastevent - lastevent = event - msg(event.getPlayer(), event.getBlockPlaced(), basecolor = "a") - msg(event.getPlayer(), event.getBlockReplacedState().getBlock(), basecolor = "a") - -@hook.event("block.BlockPlaceEvent", "high") +@hook.event("block.BlockPlaceEvent", "low") def onPlaceBlockInRegion(event): if not event.isCancelled(): player = event.getPlayer() @@ -64,7 +56,37 @@ def onPlaceBlockInRegion(event): event = BlockPlaceEvent(newstate.getBlock(), newblock.getState(), newagainst, event.getItemInHand(), player, event.canBuild()) server.getPluginManager().callEvent(event) - msg(player, "Direction %s: %s" % (direction, not event.isCancelled())) - msg(player, "Position before: %s -- after: %s" % ([block.getX(), block.getY(), block.getZ()], [newstate.getX(), newstate.getY(), newstate.getZ()])) if not event.isCancelled(): - newblock.setType(block.getType())
\ No newline at end of file + newblock.setType(block.getType()) + + +@hook.event("block.BlockBrakeEvent", "low") +def onPlaceBlockInRegion(event): + if not event.isCancelled(): + player = event.getPlayer() + block = event.getBlockPlaced() + for th in tilehelpers: + area = th.get("area") + if th.get("owner") == str(player.getUniqueId()) and str(block.getWorld().getUID()) == th.get("world") and block.getX() in range(area[0][0], area[0][1]+1) and block.getY() in range(area[1][0], area[1][1]+1) and block.getZ() in range(area[2][0], area[2][1]+1) and event.canBuild(): + + # stack block in directions + msg(player, "&abroke block in region") + + for direction in th.get("directions"): + directions = dirmap[direction] + size = [ + 1 + abs(area[0][1] - area[0][0]), + 1 + abs(area[1][1] - area[1][0]), + 1 + abs(area[2][1] - area[2][0]) + ] + + newblock = block.getWorld().getBlockAt( + block.getX() + size[0] * directions[0], + block.getY() + size[1] * directions[1], + block.getZ() + size[2] * directions[2] + ) + + event = BlockBrakeEvent(newblock, player) + server.getPluginManager().callEvent(event) + if not event.isCancelled(): + newblock.setTypeId(0)
\ No newline at end of file |