[tools] Add simple python script to entirely reset End dimension generated before and get fresh one, improved (but please stop server & backup world before)

This commit is contained in:
kay27 2021-04-05 04:54:58 +04:00
parent a6f0ad13a0
commit 5fc3bb11ef

46
tools/remove_end.py Normal file

@ -0,0 +1,46 @@
world_name = "world"
path_to_map_sqlite = "../../../worlds/" + world_name + "/map.sqlite"
import sqlite3, sys
try:
conn = sqlite3.connect(path_to_map_sqlite)
except Error as e:
print(e)
sys.exit()
def unsignedToSigned(i, max_positive):
if i < max_positive:
return i
else:
return i - 2*max_positive
cursor = conn.cursor()
cursor.execute("SELECT pos FROM blocks")
poses = cursor.fetchall()
end_blocks = []
for i0 in (poses):
i = int(i0[0])
blockpos = i
x = unsignedToSigned(i % 4096, 2048)
i = int((i - x) / 4096)
y = unsignedToSigned(i % 4096, 2048)
i = int((i - y) / 4096)
z = unsignedToSigned(i % 4096, 2048)
node_pos_y = y * 16
if node_pos_y > -28811 and node_pos_y + 15 < -67:
end_blocks.append(blockpos)
if len(end_blocks) < 1:
print ("End blocks not found")
sys.exit()
counter = 0
for blockpos in end_blocks:
print("Deleting ", blockpos)
cursor.execute("DELETE FROM blocks WHERE pos=" + str(blockpos))
counter += 1
conn.commit()
print(counter, " block(s) deleted")