added BlockBrakeEvent
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
#pylint: disable=F0401
|
#pylint: disable=F0401
|
||||||
import org.bukkit.event.block.BlockPlaceEvent as BlockPlaceEvent
|
import org.bukkit.event.block.BlockPlaceEvent as BlockPlaceEvent
|
||||||
|
import org.bukkit.event.block.BlockBrakeEvent as BlockBrakeEvent
|
||||||
from helpers import *
|
from helpers import *
|
||||||
|
|
||||||
tilehelpers = [
|
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 = {
|
dirmap = {
|
||||||
# [x, y, z]
|
# [x, y, z]
|
||||||
@@ -18,16 +19,7 @@ dirmap = {
|
|||||||
# FIXME: disallow multiple regions by single person.
|
# FIXME: disallow multiple regions by single person.
|
||||||
# FIXME: could lead to two regions updating each other forever -> server freezes
|
# FIXME: could lead to two regions updating each other forever -> server freezes
|
||||||
|
|
||||||
lastevent = None
|
@hook.event("block.BlockPlaceEvent", "low")
|
||||||
|
|
||||||
@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")
|
|
||||||
def onPlaceBlockInRegion(event):
|
def onPlaceBlockInRegion(event):
|
||||||
if not event.isCancelled():
|
if not event.isCancelled():
|
||||||
player = event.getPlayer()
|
player = event.getPlayer()
|
||||||
@@ -64,7 +56,37 @@ def onPlaceBlockInRegion(event):
|
|||||||
|
|
||||||
event = BlockPlaceEvent(newstate.getBlock(), newblock.getState(), newagainst, event.getItemInHand(), player, event.canBuild())
|
event = BlockPlaceEvent(newstate.getBlock(), newblock.getState(), newagainst, event.getItemInHand(), player, event.canBuild())
|
||||||
server.getPluginManager().callEvent(event)
|
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():
|
if not event.isCancelled():
|
||||||
newblock.setType(block.getType())
|
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)
|
||||||
Reference in New Issue
Block a user