summaryrefslogtreecommitdiff
path: root/tilehelper.py
diff options
context:
space:
mode:
authorjomo <github@jomo.tv>2014-06-10 04:45:01 +0200
committerjomo <github@jomo.tv>2014-06-10 04:45:01 +0200
commitd205c096da449c1ef37c23595ebb2505ba4e0d0a (patch)
tree65a6c22111c721f536f17a9e43f8101254494826 /tilehelper.py
parentcd346f9e60e05551a14cf32c19ff78df68817a6c (diff)
added BlockBrakeEvent
Diffstat (limited to 'tilehelper.py')
-rw-r--r--tilehelper.py50
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