From 62016bce9f4682ccb362d12091ad2e58182aeab6 Mon Sep 17 00:00:00 2001 From: Dima YaFlay <93622229+YaFlay@users.noreply.github.com> Date: Sat, 6 Nov 2021 13:48:21 +0300 Subject: [PATCH] Added checking file before deleting, deleting javax64 and javax32 files, add backup --- minecraft.py | 244 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 215 insertions(+), 29 deletions(-) diff --git a/minecraft.py b/minecraft.py index f660e33..e6db869 100644 --- a/minecraft.py +++ b/minecraft.py @@ -3,15 +3,77 @@ # if u dont use Python 3, dont use this. urllib dont working in Python2 # if u seek some bug, write me in Telegram: @YaFlay # if u dont have C:/ disk, dont use this Python code, this crashed the code +# Version: 1.3.2! import os import urllib.request import datetime +import psutil +import time +import shutil from urllib.request import urlopen from tkinter import * from tkinter import Checkbutton from tkinter import messagebox # import modules +backup_text = ''' +# Back up file +import os +import datetime +import time +import shutil +from tkinter import * +from tkinter import Checkbutton +from distutils.dir_util import copy_tree + + +if os.path.isdir('C:/backup-minecraft-server'): + os.chdir('C:/minecraft/backup') +else: + dir = os.mkdir('C:/backup-minecraft-server/') + os.chdir(str(dir)) + +date1 = datetime.date.today() +clock = datetime.datetime.today +a = open('logs-'+str(date1)+'.txt', 'w+') +folder1 = 'C:/minecraft/' +folder2 = 'C:/backup-minecraft-server' +text_for_log = 'Folder or file '+ str(folder1)+' copied to '+str(folder2)+'. Date on this moment: '+ str(date1) +'. Time on this moment: '+str( clock('%H.%M.%S'))+'File:' + + +def log_button(): + directory = ('C:/backup-minecraft-server/world'+str(date1)) + if os.path.isdir(str(directory)): + print(directory) + else: os.mkdir(str(directory)) + + for folder_name in os.listdir('C:/minecraft/',): + path = 'C:/minecraft/' + folder_name + for folder_name in os.listdir(path): + copy_tree(path, str(directory)) + a = open('logs-'+str(date1)+'.txt', 'w+') + a.write( + str(text_for_log)+'World folder' + ) + a.close() + + +window = Tk() +window.title('Minecraft backup') +window.geometry('500x300') #500/\, 250> +# creating window +log = BooleanVar() +log.set(True) +log=Checkbutton(window, text='World folder copyed', var=log, command=log_button) +log.grid(column=1, row=1) + + + + +window.mainloop() + +''' +# backup.py text server_text = '''#Minecraft server properties #Time dont aviable @@ -64,29 +126,48 @@ allow-flight=false max-world-size=29999984 ''' # This is minecraft properties file + directory = os.getcwd() +print(directory) +os.chdir(str(directory)) +minecraft_py = os.path.isfile('minecraft_server_installer.py') +if minecraft_py: + minecraft_nam = str('minecraft_server_installer.py') + file = open('file_name.txt', 'w+') + file.write(str(minecraft_nam)) + file.close() +else: + minecraft_nam = str('minecraft_server_installer.exe') + file = open('file_name.txt', 'w+') + file.write(str(minecraft_nam)) + file.close() + print(minecraft_nam) +# creating file +file = open('file_name.txt', 'r') +minecraft_name = str(file.read()) +file.close() +print(minecraft_name) date = datetime.date.today() clock = datetime.datetime.today() -time = 'Date today: '+ str(date)+ ', time now '+str( clock.strftime('%H.%M.%S')) +time_user = 'Date today: '+ str(date)+ ', time now '+str( clock.strftime('%H.%M.%S')) # take time, date and directory -print(str(time)) +print(str(time_user)) print('Starting to create a server!') # Give hor user time # if directory in [G:/, D:/, F:/]: - +check_file = os.path.exists('C:/minecraft') +if check_file == False: + os.mkdir("C:/minecraft") + os.chdir('C:\minecraft') +else: os.chdir('C:/minecraft') # # # print(' ') def create_command(): + os.chdir('C:/minecraft') print('Create minecraft folder!') - check_file = os.path.exists('C:/minecraft') - if check_file == False: - os.mkdir("C:/minecraft") - os.chdir('C:\minecraft') - else: os.chdir('C:/minecraft') - print('Create Minecraft server folder...') print('EULA text create!') # downloading server files in folder @@ -105,20 +186,25 @@ eula=true messagebox.showinfo('EULA', 'EULA and folders create! Press OK for leave') def starting_server_button(): + os.chdir('C:/minecraft') + print('Creating .bat file') bat = open('mine.bat', 'w+') bat_text = ''' -java -Xmx1024M -Xms1024M -jar server.jar +java -Xmx1024M -Xms1024M -jar server.jar nogui ''' bat.write(str(bat_text)) bat.close() # crate bat file and downloading jar core - print('Create .bat file...') + print('Create .bat file!') + print('Downloading core...') url = 'https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar' urllib.request.urlretrieve(url, 'C:/minecraft/server.jar') + print('Core downloaded!') messagebox.showinfo('bat file created', '.bat file and core created Press OK for leave') # first checkbox command def server_properties_button(): + os.chdir('C:/minecraft') server_properties = open('server.properties', 'w+') server_properties.write(str(server_text)) print('Creating server.properties') @@ -126,19 +212,18 @@ def server_properties_button(): # second checkbox command def close_command_button(): - os.chdir(str(directory)) - print(directory) - py = open('minecraft.py', 'r') + print('Your directory'+directory) + py = open(str(minecraft_name), 'r') py.close() if directory in [ 'G:/, D:/, F:/' ]: - os.replace(str(directory)+'minecraft.py', 'C:/minecraft/minecraft.py') + os.replace(str(directory)+str(minecraft_name), 'C:/minecraft/'+str(minecraft_name)) os.chdir('C:/minecraft') else: print(' ') - os.replace(str(directory)+'/minecraft.py', 'C:/minecraft/minecraft.py') + os.replace(str(directory)+'/'+str(minecraft_name), 'C:/minecraft/'+str(minecraft_name)) os.chdir('C:/minecraft') - messagebox.showinfo('file deleted', 'minecraft.py closed and deleted! Press OK for leave') + messagebox.showinfo('file deleted', 'minecraft.exe closed and deleted! Press OK for leave') # third checkbox command def ok(): window.destroy() @@ -161,7 +246,22 @@ def java_windows(): urllib.request.urlretrieve(java, 'C:/minecraft/jre-8u311-windows-i586-iftw.exe') os.chdir('C:/minecraft') os.startfile(r'C:/minecraft/jre-8u311-windows-i586-iftw.exe') + for proce in psutil.process_iter(): + name = proce.name() + if name == 'jre-8u311-windows-i586-iftw.exe': + print('Wait...') + time.sleep(30) + named = proce.name() + if not named == 'jre-8u311-windows-i586-iftw.exe': + proce.kill() + os.remove('jre-8u311-windows-i586-iftw.exe') + print('Process has been eliminated!') + # if programm is closed, passing this part + pass + pass + os.remove('jre-8u311-windows-i586-iftw.exe') messagebox.showinfo('Java_32', 'Java has been downloaded! Press ok for leave') + # for downloading java 8u311 for windows def java_windows_64(): @@ -169,52 +269,138 @@ def java_windows_64(): urllib.request.urlretrieve(java_64, 'C:/minecraft/jre-8u311-windows-x64.exe') os.chdir('C:/minecraft/') os.startfile(r'C:/minecraft/jre-8u311-windows-x64.exe') + for proce_64 in psutil.process_iter(): + name_64 = proce_64.name() + if name_64 == 'jre-8u311-windows-x64.exe': + print('Wait...') + time.sleep(30) + named_64 = proce_64.name() + if not named_64 == 'jre-8u311-windows-x64.exe': + proce_64.kill() + print('Process has been eliminated!') + pass + pass + os.remove('jre-8u311-windows-x64.exe') messagebox.showinfo('Java_64','Java has been downloaded! Press ok for leave') -# java for x64 + +def delete_directory(): + os.chdir('C:/minecraft') + if os.path.isfile('eula.txt'): + os.remove('eula.txt') + # deleting eula + pass + if os.path.isfile('mine.bat'): + os.remove('mine.bat') + # deleting .bat file + if os.path.isfile('server.jar'): + os.remove('server.jar') + # deleting core + if os.path.isfile('server.properties'): + os.remove('server.properties') + # deleting server.properties + if os.path.isfile('banned-ips.json'): + os.remove('banned-ips.json') + # deleting banned-ips.json + if os.path.isfile('banned-players.json'): + os.remove('banned-players.json') + # deleting banned-players.json + if os.path.isfile('ops.json'): + os.remove('ops.json') + # deleting ops.json + if os.path.isfile('usercache.json'): + os.remove('usercache.json') + # deleting ops.json + if os.path.isfile('whitelist.json'): + os.remove('whitelist.json') + # deleting whitelist.json + + minecraft_files = os.path.isfile(minecraft_name) + if minecraft_files: + minecraft_exe = open(minecraft_name) + minecraft_exe.close() + os.remove(minecraft_name) + print('File deleted') + else: + print('File dont created') + # checking and deleting file + directory_file = os.listdir() + print(directory_file) + if directory_file == ['logs', 'world']: + os.chdir('C:/') + shutil.rmtree('C:/minecraft') + else: + os.chdir('C:/') + shutil.rmtree('C:/minecraft') + # delete directory with files + +def backup_button(): + if os.path.isdir('C:/minecraft/backup/') == True: + os.chdir('C:/minecraft/backup') + else: + os.mkdir('C:/minecraft/backup') + os.chdir('C:/minecraft/backup') + # create folder + if os.path.isfile('C:/minecraft/backup/backup.py'): + os.startfile('backup.py') + else: + back_up = open('backup.py', 'w+') + back_up.write(str(backup_text)) + os.startfile('backup.py', '') + + + # open folder # take def for checkboxes window = Tk() window.title('Minecraft server') -window.geometry('250x250') +window.geometry('500x300') #500/\, 250> # creating window create_server = BooleanVar() create_server.set(True) create_server=Checkbutton(window, text='1)Create server file amd folder', var=create_server, command=create_command) -create_server.grid(column=0, row=1) +create_server.grid(column=1, row=1) # 4rd checkbox start_server = BooleanVar() start_server.set(True) start_server = Checkbutton(window, text='2)Create .bat file and downloading core', var=start_server, command=starting_server_button) -start_server.grid(column=0, row=2) +start_server.grid(column=1, row=2) # first checkbox server_properties = BooleanVar() server_properties.set(True) server_properties = Checkbutton(window, text='3) Create server.properties', var=server_properties, command=server_properties_button) -server_properties.grid(column=0, row=3) +server_properties.grid(column=1, row=3) # second checkbox close_command = BooleanVar() close_command.set(True) close_command = Checkbutton(window, text='4) Close minecraft.py file', var=close_command, command=close_command_button) -close_command.grid(column=0, row=4) -# +close_command.grid(column=1, row=4) +# replace minecraft.py command open_folder = BooleanVar() open_folder.set(True) open_folder = Checkbutton(window, text='Open minecraft server folder', var=close_command, command=folder) -open_folder.grid(column=0, row=5) +open_folder.grid(column=1, row=5) # third checkbox button = Button(window, text='OK', command=ok) -button.grid(column=0, row=7) +button.grid(column=1, row=7) +# close program button starting_button = Button(window, text='Start server and open server.properties!', command=start) -starting_button.grid(column=0, row=6) +starting_button.grid(column=1, row=6) # starting server button +delete_button=Button(window, text='Delete folder and files', command=delete_directory) +delete_button.grid(column=1, row=10) +# delete folder button java_64=Button(window, text='Downloading Java for x64', command=java_windows_64) -java_64.grid(column=0, row=8) +java_64.grid(column=0, row=11) # java for x64 java_32=Button(window, text='Downloading Java for x32', command=java_windows) -java_32.grid(column=3, row=8) +java_32.grid(column=2, row=11) # java for x32 +backup=Button(window, text='Backup server', command=backup_button) +backup.grid(column=1, row=12) window.mainloop() +os.chdir(str(directory)) +os.remove('file_name.txt') # create window and button for start server