summaryrefslogtreecommitdiff
path: root/damnspam.py
blob: ba3867e068ffde8d63ddc51b6ce7a151a0a1d291 (plain)
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))