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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#pylint: disable=F0401
from helpers import *
import simplejson as json
spam_filename = "plugins/redstoner-utils.py.dir/files/damnspam.json"
inputs = []
accepted_inputs = ["WOOD_BUTTON", "STONE_BUTTON"]
try:
inputs = json.loads(open(spam_filename).read())
except Exception, e:
error("Failed to load buttons and levers: %s" % e)
@hook.command("damnspam")
def onTimeoutCommand(sender, args):
global inputs
try:
plugHeader(sender, "DamnSpam")
if len(args) == 1:
timeout = args[0]
if not timeout.isdigit():
msg(sender, "&cThe timeout has to be a digit.")
return True
tB = sender.getTargetBlock(None, 10)
if str(tB.getType()) not in accepted_inputs:
msg(sender, "&cPlease look at a button/lever while executing this command!")
return True
data = {
"type": str(tB.getType()),
"creator": str(sender.getUniqueId()),
"timeout": int(args[0]),
"x": int(tB.getX()),
"y": int(tB.getY()),
"z": int(tB.getZ()),
"next": 'NULL',
"last": 'NULL'
}
inputs.append(data)
saveInputs()
msg(sender, "&eSuccessfully set a timeout for this button")
return True
else:
msg(sender, "&c/timeout <seconds>")
except Exception, e:
error(e)
def saveInputs():
try:
spam_file = open(spam_filename, "w")
spam_file.write(json.dumps(inputs))
spam_file.close()
except Exception, e:
error("Failed to save buttons and levers: " + str(e))
@hook.event("block.BlockBreakEvent", "normal")
def onBreak(event):
try:
sender = event.getPlayer()
block = event.getBlock()
if str(block.getType()) in accepted_inputs:
for entry in inputs:
posX = int(entry["x"])
posY = int(entry["y"])
posZ = int(entry["z"])
posX2 = block.getX()
posY2 = block.getY()
posZ2 = block.getZ()
if posX == posX2 and posY == posY2 and posZ == posZ2:
if sender.isSneaking():
inputs.remove(entry)
saveInputs()
msg(sender, "&eSuccessfully removed the input!")
return True
else:
event.setCancelled(True)
msg(sender, "&cYou cannot destroy this input!")
msg(sender, "&7&lSneak&7 and break if you want to remove it.")
return True
break
except Exception, e:
error("BlockBreakEvent failed: " + str(e))
|