-
Notifications
You must be signed in to change notification settings - Fork 0
/
resetpos.py
51 lines (46 loc) · 2.01 KB
/
resetpos.py
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
import argparse
import nbtlib
import utils, os
from nbtlib import Compound, Byte, String, Short, Int
def checkNode(value):
strvalue = str(value)
if strvalue.lower() not in ["london", "canada", "germany"]:
raise argparse.ArgumentTypeError("%s is an invalid value!" % value)
return strvalue
def checkServer(value):
strvalue = str(value)
if strvalue not in utils.ids.keys():
raise argparse.ArgumentTypeError("%s is an invalid value!" % value)
return strvalue
parser = argparse.ArgumentParser(description='Edit the position of the player.')
parser.add_argument("node", nargs=1, type=checkNode)
parser.add_argument("server", nargs=1, type=checkServer)
parser.add_argument("player", nargs=1, type=str)
parser.add_argument("xCoord", nargs=1, type=float)
parser.add_argument("yCoord", nargs=1, type=float)
parser.add_argument("zCoord", nargs=1, type=float)
parser.add_argument("dim", nargs=1, type=int)
args = parser.parse_args()
if args.node[0] == "london":
serverid = utils.londonids[args.server[0]]
elif args.node[0] == "canada":
serverid = utils.canadaids[args.server[0]]
elif args.node[0] == "germany":
serverid = utils.germanyids[args.server[0]]
uuid = utils.getUUID(args.player[0])
if uuid:
url = serverid + "/world/playerdata/" + uuid + ".dat"
print("Downloading " + url + "...")
utils.download(url, uuid + ".dat", args.node[0])
dir_path = cwd = os.getcwd()
nbtfile = nbtlib.load(dir_path + "/" + uuid + ".dat")
print("Resetting " + args.player[0] + "\'s coordinates to " + str(args.xCoord[0]) + "," + str(args.yCoord[0]) + "," + str(args.zCoord[0]) + "...")
nbtfile.root["Pos"][0] = args.xCoord[0]
nbtfile.root["Pos"][1] = args.yCoord[0]
nbtfile.root["Pos"][2] = args.zCoord[0]
nbtfile.root["Dimension"] = Int(args.dim[0])
nbtfile.save()
print("Uploading to server...")
utils.upload(dir_path + "/" + uuid + ".dat", serverid + "/world/playerdata/" + uuid + ".dat", args.node[0])
print("Uploaded!")
os.unlink(dir_path + "/" + uuid + ".dat")