19 Commits
master ... dev

Author SHA1 Message Date
psrcek
347f6969bf Teleport the player twice to fix #50 2016-09-11 19:25:45 +02:00
psrcek
6e497a2662 Fix for bug, where you can use cg without logging in
https://redstoner.com/forums/threads/3653-chatgroup-bug
2016-08-04 13:13:56 +02:00
psrcek
94accc238a Delete plotter.py
We have https://github.com/RedstonerServer/Parcels now.
2016-08-03 23:48:15 +02:00
psrcek
2b803e8de8 Added psrcek to pythoners 2016-08-03 21:57:40 +02:00
Dico
f02fd2aae5 Merge pull request #48 from RedstonerServer/loginsecurity-patch-1
Patch buggy movement blocking when logging in
2016-06-25 08:25:38 +02:00
Dico
f6cb9ade9d Merge pull request #47 from psrcek/patch-2
Added max page number
2016-06-25 08:23:34 +02:00
Dico
fd368a8aac Patch buggy movement blocking when logging in
Added a separate event handler for PlayerMoveEvent which instead of cancelling the event, sets the new position to the old one.
This should fix the buggy, flashy screen you get when you move your cursor while not yet logged in.
2016-06-23 05:21:24 +02:00
psrcek
a2daa5c0b6 removed unnecesarry str calls 2016-06-22 15:48:20 +02:00
psrcek
5da7180bfd derp... integer division 2016-06-22 15:35:52 +02:00
psrcek
ae44dade80 fixed derp, should use math.ceil instead of +1 2016-06-22 15:21:28 +02:00
psrcek
5788cd0b3e Fixed page showing 1 page too little 2016-06-22 15:13:35 +02:00
Dico
bfcb22f650 Merge pull request #46 from psrcek/patch-1
Fix for bug, where you can shift click and toggle levers
2016-06-21 22:35:53 +02:00
psrcek
00e936532a Added max page number 2016-06-21 22:12:13 +02:00
psrcek
1602ad2185 Fix for bug, where you can shift click and toggle levers 2016-06-21 21:46:48 +02:00
Dico200
cebdb90d60 Fix cycle for 1.10 (will break in 1.8 now..) 2016-06-12 20:02:06 +02:00
Dico200
6320d78a37 Mysql update tweak 2016-06-12 18:13:42 +02:00
Dico
47a0a92225 Merge pull request #45 from psrcek/dev
Fixed typo
2016-06-12 18:09:40 +02:00
Dico200
a6ea05a459 made /check display email not confirmed warning 2016-06-12 18:04:17 +02:00
psrcek
f5c51645d2 Fixed typo 2016-06-12 13:34:33 +02:00
11 changed files with 26 additions and 46 deletions

View File

@@ -185,7 +185,7 @@ def toggle_command(sender, command, label, args):
return " &cAlready disabled: " + details[1] return " &cAlready disabled: " + details[1]
if arglen == 2 and not arg2.isdigit(): if arglen == 2 and not arg2.isdigit():
return " &cArgument '%s' was not recognized. \nUse &o/toggle %s details &cfor more detailsrmation." % (arg2, setting) return " &cArgument '%s' was not recognized. \nUse &o/toggle %s info &cfor more information." % (arg2, setting)
if not enabled: if not enabled:
values[uuid] = {} values[uuid] = {}

View File

@@ -6,6 +6,7 @@ import org.bukkit as bukkit
from org.bukkit import * from org.bukkit import *
from helpers import * from helpers import *
# Version number and requirements # Version number and requirements
alias_version = "2.1.0" alias_version = "2.1.0"
@@ -131,7 +132,7 @@ def on_alias_command(sender, cmd, label, args):
return return
if args[0].lower() != "player" and not is_player(sender): if args[0].lower() != "player" and not is_player(sender):
msg(sender, "&cThe console cannot have aliases") msg(sender, "&cThe console cannot have aliases")
return return True
subcommands[args[0].lower()](sender, args[1:]) subcommands[args[0].lower()](sender, args[1:])
except: except:
subcommands["help"](sender, "1") subcommands["help"](sender, "1")
@@ -381,9 +382,8 @@ def save_data(uuid):
def save_data_thread(uuid): def save_data_thread(uuid):
conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver") conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
curs = conn.cursor() curs = conn.cursor()
value = json_dumps(data[uuid]) curs.execute("INSERT INTO `chatalias` (`uuid`, `alias`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `alias` = VALUES(`alias`);",
curs.execute("INSERT INTO `chatalias` VALUES (?, ?) ON DUPLICATE KEY UPDATE `alias` = ?;", (uuid, json_dumps(data[uuid])))
(uuid, value, value))
conn.commit() conn.commit()
curs.close() curs.close()
conn.close() conn.close()

View File

@@ -102,8 +102,9 @@ def save_groups():
@hook.event("player.AsyncPlayerChatEvent", "normal") @hook.event("player.AsyncPlayerChatEvent", "normal")
def on_chat(event): def on_chat(event):
sender = event.getPlayer() sender = event.getPlayer()
user = get_py_player(sender)
msge = event.getMessage() msge = event.getMessage()
if not event.isCancelled(): if (not user.logging_in) and (not event.isCancelled()):
sender_id = uid(sender) sender_id = uid(sender)
key = get_key(sender_id) key = get_key(sender_id)
keylen = len(key) keylen = len(key)

View File

@@ -35,11 +35,11 @@ def get_website_data(player):
conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver") conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
curs = conn.cursor() curs = conn.cursor()
uuid = str(uid(player)).replace("-", "") uuid = str(uid(player)).replace("-", "")
curs.execute("SELECT DISTINCT `id`, `email` FROM users WHERE `uuid` = ? LIMIT 1", (uuid,)) curs.execute("SELECT DISTINCT `id`, `email`, `confirmed` FROM users WHERE `uuid` = ? LIMIT 1", (uuid,))
results = curs.fetchall() results = curs.fetchall()
curs.close() curs.close()
conn.close() conn.close()
return ("http://redstoner.com/users/%s" % results[0][0], results[0][1]) if results else (None, None) return ("http://redstoner.com/users/%s" % results[0][0], results[0][1], False if results[0][2] == 0 else True) if results else (None, None, True)
# receive country based on the user's IP # receive country based on the user's IP
@@ -68,6 +68,8 @@ def get_all_data(sender, player):
website = get_website_data(player) website = get_website_data(player)
msg(sender, "&6> Website account: &e%s" % website[0]) msg(sender, "&6> Website account: &e%s" % website[0])
msg(sender, "&6> email: &e%s" % website[1]) msg(sender, "&6> email: &e%s" % website[1])
if not website[2]:
msg(sender, "&6> &cEmail NOT Confirmed!")
msg(sender, "&7 -- Data provided by ipinfo.io") msg(sender, "&7 -- Data provided by ipinfo.io")
msg(sender, "&6> Country: &e%s" % get_country(data)) msg(sender, "&6> Country: &e%s" % get_country(data))
msg(sender, "&7 -- Data provided by Mojang") msg(sender, "&7 -- Data provided by Mojang")

View File

@@ -56,7 +56,7 @@ def on_slot_change(event):
def do_cycle(player, down): def do_cycle(player, down):
inv = player.getInventory() inv = player.getInventory()
items = inv.getContents() items = inv.getStorageContents()
shift = -9 if down else 9 shift = -9 if down else 9
shift = shift % len(items) shift = shift % len(items)
for _ in range(4): for _ in range(4):
@@ -64,7 +64,7 @@ def do_cycle(player, down):
uniq_items = sorted(set(list(items)[:9])) # get unique inventory uniq_items = sorted(set(list(items)[:9])) # get unique inventory
if uniq_items != [None]: # row not empty if uniq_items != [None]: # row not empty
break break
inv.setContents(items) inv.setStorageContents(items)
def save_cyclers(): def save_cyclers():
save_json_file("cycle", no_cyclers) save_json_file("cycle", no_cyclers)

View File

@@ -173,8 +173,6 @@ def on_block_break(event):
def on_interact(event): def on_interact(event):
if (str(event.getAction()) == "RIGHT_CLICK_BLOCK") and not event.isCancelled(): if (str(event.getAction()) == "RIGHT_CLICK_BLOCK") and not event.isCancelled():
sender = event.getPlayer() sender = event.getPlayer()
if sender.isSneaking():
return
block = event.getClickedBlock() block = event.getClickedBlock()
pos_str = location_str(block) pos_str = location_str(block)
data = inputs.get(pos_str) data = inputs.get(pos_str)

View File

@@ -12,7 +12,7 @@ from player import get_py_player, py_players
wait_time = 30 #seconds wait_time = 30 #seconds
admin_perm = "utils.loginsecurity.admin" admin_perm = "utils.loginsecurity.admin"
min_pass_length = 8 min_pass_length = 8
blocked_events = ["block.BlockBreakEvent", "block.BlockPlaceEvent", "player.PlayerMoveEvent","player.AsyncPlayerChatEvent"] blocked_events = ["block.BlockBreakEvent", "block.BlockPlaceEvent", "player.AsyncPlayerChatEvent"]
@@ -273,4 +273,10 @@ def pre_command_proccess(event):
args = event.getMessage().split(" ") args = event.getMessage().split(" ")
if not args[0].lower() == "/login": if not args[0].lower() == "/login":
msg(player.player, "&4You need to login before you do that!") msg(player.player, "&4You need to login before you do that!")
event.setCancelled(True) event.setCancelled(True)
@hook.event("player.PlayerMoveEvent","normal")
def player_move(event):
user = get_py_player(event.getPlayer())
if user.logging_in:
event.setTo(event.getFrom())

View File

@@ -216,7 +216,8 @@ pythoners = (
"e452e012-2c82-456d-853b-3ac8e6b581f5", # Nemes "e452e012-2c82-456d-853b-3ac8e6b581f5", # Nemes
"ae795aa8-6327-408e-92ab-25c8a59f3ba1", # jomo "ae795aa8-6327-408e-92ab-25c8a59f3ba1", # jomo
"d2693e91-93e1-4e3f-929f-f38e1ce8df03", # Pepich1851 "d2693e91-93e1-4e3f-929f-f38e1ce8df03", # Pepich1851
"51f2ad3c-6cc8-40ea-aa2b-f25970316921" # Dico200 "51f2ad3c-6cc8-40ea-aa2b-f25970316921", # Dico200
"15ad0e60-8691-4e29-9de9-2d6b538bf56d" # psrcek
) )
@simplecommand("pyeval", @simplecommand("pyeval",

View File

@@ -1,30 +0,0 @@
#!/usr/bin/python
"""
*Very basic* start of a custom plot-plugin like PlotMe
on hold because the PlotMe developer continued to develop PlotMe
"""
import sys
x_plot_size = 3
z_plot_size = 3
padding = 1
def base_coords(x, z):
pid = plot_id(x, z)
return [pid[0] * (x_plot_size + padding), pid[1] * (z_plot_size + padding)]
def bounds(x, z):
base = base_coords(x, z)
return [base, [base[0] + x_plot_size, base[1] + z_plot_size]]
def plot_id(x, z):
return [x // (x_plot_size + padding), z // (z_plot_size + padding)]
x = int(sys.argv[1])
z = int(sys.argv[2])
print "id: %s" % plot_id(x, z)
print "base: %s" % base_coords(x, z)
print "bounds: %s" % bounds(x, z)

View File

@@ -55,6 +55,7 @@ class Slave(object):
def update(self): def update(self):
self.blocks -= 1 self.blocks -= 1
if self.blocks <= 0: if self.blocks <= 0:
server.getPlayer(juuid(self.get_uuid())).teleport(server.getWorld(spawn_world).getSpawnLocation())
server.getPlayer(juuid(self.get_uuid())).teleport(server.getWorld(spawn_world).getSpawnLocation()) server.getPlayer(juuid(self.get_uuid())).teleport(server.getWorld(spawn_world).getSpawnLocation())
slaves.remove(self) slaves.remove(self)
save_slaves() save_slaves()

View File

@@ -1,6 +1,7 @@
from time import time from time import time
from helpers import * from helpers import *
from random import randrange from random import randrange
import math
lols = open_json_file("lol", []) lols = open_json_file("lol", [])
timeout = 15 timeout = 15
@@ -83,7 +84,7 @@ def on_lol_command(sender, command, label, args):
if offset > len(lols): if offset > len(lols):
msg(sender, "&cNot a valid page (too high).") msg(sender, "&cNot a valid page (too high).")
return True return True
msg(sender, " &9&nLol list page %s" % str(arg1 + 1)) #"\t" symbol displays weirdly, hence the 4 spaces msg(sender, " &9&nLol list page %s/%s" % (arg1 + 1, int(math.ceil(len(lols) / float(list_limit))))) #"\t" symbol displays weirdly, hence the 4 spaces
for i in range(offset, min(offset + list_limit, len(lols))): for i in range(offset, min(offset + list_limit, len(lols))):
msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lols[i])) msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lols[i]))
msg(sender, "") msg(sender, "")