def save_and_exit_settings(self): if self.browse_field.text() == "": SETTINGS.setValue("MinecraftDirectory", utils.get_default_minecraft_dir()) else: SETTINGS.setValue("MinecraftDirectory", self.browse_field.text()) SETTINGS.setValue("IGTTimer", int(self.igt_timer_check.isChecked())) SETTINGS.setValue("RTATimer", int(self.rta_timer_check.isChecked())) SETTINGS.setValue("ShowWorldName", int(self.world_name_check.isChecked())) SETTINGS.setValue("ShowHours", int(self.hours_check.isChecked())) SETTINGS.setValue("AutoStopTimers", int(self.auto_stop_check.isChecked())) SETTINGS.setValue("RTAHotkey", self.rta_hotkey) SETTINGS.setValue("RTAResetHotkey", self.rta_reset_hotkey) SETTINGS.setValue("Opacity", self.opacity_slider.value() / 100) if self.dark_theme_button.isChecked(): SETTINGS.setValue("Theme", "dark") elif self.light_theme_button.isChecked(): SETTINGS.setValue("Theme", "light") self.close() self.new = TimerWindow() self.new.show()
def get_last_played_level(): mc_dir = SETTINGS.value("MinecraftDirectory", utils.get_default_minecraft_dir()) mc_saves = os.path.join(mc_dir, "saves") worlds_recently_modified = sorted( [os.path.join(mc_saves, s) for s in os.listdir(mc_saves)], key=os.path.getmtime, reverse=True) for world in worlds_recently_modified: try: level = NBTFile(os.path.join(world, "level.dat")) with open( os.path.join( world, "advancements", os.listdir(os.path.join(world, "advancements"))[0])) as f: advancements = dict(json.load(f)) break except: continue data = { "name": str(level["Data"]["LevelName"]), "version": str(level["Data"]["Version"]["Name"]), "dataversion": int(str(level["Data"]["DataVersion"])), "adv": advancements } return data
def get_last_played_level(): mc_dir = SETTINGS.value("MinecraftDirectory", utils.get_default_minecraft_dir()) mc_saves = os.path.join(mc_dir, "saves") worlds_recently_modified = sorted([os.path.join(mc_saves, s) for s in os.listdir(mc_saves)], key=os.path.getmtime, reverse=True) for w in worlds_recently_modified.copy()[:5]: try: world = w level = NBTFile(os.path.join(world, "level.dat")) if not int(str(level["Data"]["Time"])): continue else: break except: continue try: with open(os.path.join(world, "stats", os.listdir(os.path.join(world, "stats"))[0]), "r") as f: stats = json.load(f) except: #* If it's pre 1.7.2 stats = None try: seen_credits = bool(int(str(level["Data"]["Player"]["seenCredits"]))) except: #* If it's pre 1.12 OR a server seen_credits = None try: data = { "name": str(level["Data"]["LevelName"]), "version": str(level["Data"]["Version"]["Name"]), "igt": stats["stat.playOneMinute"] if int(str(level["Data"]["DataVersion"])) < 1451 else stats["stats"]["minecraft:custom"]["minecraft:play_one_minute"], "seen_credits": seen_credits, "pre17": False } except: #* If it's pre 1.9 try: data = { "name": str(level["Data"]["LevelName"]), "version": "Pre 1.9", "igt": stats["stat.playOneMinute"], "seen_credits": seen_credits, "pre17": False } except: #* If it's pre 1.7.2 data = { "name": str(level["Data"]["LevelName"]), "version": "Pre 1.7.2", "igt": utils.get_pre17_igt(mc_dir), "seen_credits": seen_credits, "pre17": True } return data
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) uic.loadUi(os.path.join(DIRECTORY, "SettingsWindow.ui"), self) self.setWindowFlag(Qt.WindowStaysOnTopHint) self.setWindowIcon(QIcon(os.path.join(DIRECTORY, "Resources", "icons.ico"))) self.author_text.linkActivated.connect(self.open_link) self.author_text.setText(f"By NinjaSnail1080\u3000|\u3000<a href='https://github.com/NinjaSnail1080/mc-universal-in-game-timer'>Github</a> (v{__version__})") self.browse_field.setText(SETTINGS.value("MinecraftDirectory", utils.get_default_minecraft_dir())) self.browse_field.setFocus() self.browse_button.clicked.connect(self.browse_for_mc_dir) if bool(int(SETTINGS.value("IGTTimer", 1))): self.igt_timer_check.setChecked(True) if bool(int(SETTINGS.value("RTATimer", 0))): self.rta_timer_check.setChecked(True) if bool(int(SETTINGS.value("ShowWorldName", 1))): self.world_name_check.setChecked(True) if bool(int(SETTINGS.value("ShowHours", 1))): self.hours_check.setChecked(True) if bool(int(SETTINGS.value("AutoStopTimers", 0))): self.auto_stop_check.setChecked(True) if SETTINGS.value("RTAHotkey", None) is None: self.rta_hotkey = None else: self.rta_hotkey = SETTINGS.value("RTAHotkey") self.set_rta_hotkey.setKeySequence(self.rta_hotkey) self.set_rta_hotkey.keySequenceChanged.connect(self.change_rta_hotkey) if SETTINGS.value("RTAResetHotkey", None) is None: self.rta_reset_hotkey = None else: self.rta_reset_hotkey = SETTINGS.value("RTAResetHotkey") self.set_rta_reset_hotkey.setKeySequence(self.rta_reset_hotkey) self.set_rta_reset_hotkey.keySequenceChanged.connect(self.change_rta_reset_hotkey) self.opacity_slider.setMinimum(10) self.opacity_slider.setMaximum(100) self.opacity_slider.setSingleStep(1) self.opacity_slider.setTickInterval(10) self.opacity_slider.setTickPosition(QSlider.TicksBothSides) self.opacity_slider.valueChanged.connect(self.change_opacity_percentage) self.opacity_slider.setValue(int(float(SETTINGS.value("Opacity", 0.5))*100)) if SETTINGS.value("Theme", "dark") == "dark": self.dark_theme_button.setChecked(True) else: self.light_theme_button.setChecked(True) if sys.platform == "darwin": self.continue_button.setText("Save (double-click)") #? idk why this bug exists else: self.continue_button.setText("Save") self.continue_button.clicked.connect(self.save_and_exit_settings) frame = self.frameGeometry() screen = QDesktopWidget().primaryScreen() screen_center = QDesktopWidget().screenGeometry(screen).center() frame.moveCenter(screen_center) self.move(frame.topLeft()) self.setFixedSize(430, 530) self.show()
import sys import os import time import utils try: DIRECTORY = sys._MEIPASS except: DIRECTORY = os.path.dirname(__file__) __version__ = open(os.path.join(DIRECTORY, "VERSION.txt")).read() SETTINGS = QSettings(QSettings.NativeFormat, QSettings.UserScope, "Minecraft Universal In-Game Timer") SETTINGS.setValue("ResetTime", utils.get_pre17_igt(SETTINGS.value("MinecraftDirectory", utils.get_default_minecraft_dir()))) #* Default Minecraft color codes (white and black omitted for obvious reasons) MC_COLORS = { "dark_red": "#AA0000", "red": "#FF5555", "gold": "#FFAA00", "yellow": "#FFFF55", "dark_green": "#00AA00", "green": "#55FF55", "aqua": "#55FFFF", "dark_aqua": "#00AAAA", "dark_blue": "#0000AA", "blue": "#5555FF", "light_purple": "#FF55FF", "dark_purple": "#AA00AA",
try: DIRECTORY = sys._MEIPASS except: DIRECTORY = os.path.dirname(__file__) with open(os.path.join(DIRECTORY, "VERSION.txt")) as f: __version__ = f.read() SETTINGS = QSettings(QSettings.NativeFormat, QSettings.UserScope, "Minecraft Universal In-Game Timer") SETTINGS.setValue( "ResetTime", utils.get_pre17_igt( SETTINGS.value("MinecraftDirectory", utils.get_default_minecraft_dir()))) #* Default Minecraft color codes (white and black omitted for obvious reasons) MC_COLORS = { "dark_red": "#AA0000", "red": "#FF5555", "gold": "#FFAA00", "yellow": "#FFFF55", "dark_green": "#00AA00", "green": "#55FF55", "aqua": "#55FFFF", "dark_aqua": "#00AAAA", "dark_blue": "#0000AA", "blue": "#5555FF", "light_purple": "#FF55FF", "dark_purple": "#AA00AA",