Format with Black
This commit is contained in:
parent
98ce32ff4d
commit
feb5093403
|
@ -59,6 +59,8 @@ from PyQt5.QtGui import *
|
|||
from PyQt5.QtWebEngine import *
|
||||
from PyQt5.QtWebEngineWidgets import *
|
||||
|
||||
from qtwidgets import AnimatedToggle
|
||||
|
||||
# Additional imports
|
||||
import qdarktheme # Dark style for PyQt5
|
||||
import pypresence # Discord RPC
|
||||
|
@ -246,7 +248,7 @@ class Planet(QMainWindow):
|
|||
"render_distance": "Short",
|
||||
"theme": theme,
|
||||
"discord_rpc": True,
|
||||
"version": "extended_2.3.2"
|
||||
"version": "extended_2.3.2",
|
||||
}
|
||||
|
||||
with open(
|
||||
|
@ -264,10 +266,10 @@ class Planet(QMainWindow):
|
|||
self.setWindowIcon(
|
||||
QIcon(f"{absolute_path}/assets/logo512.png")
|
||||
) # Set the window icon
|
||||
|
||||
|
||||
self.widget = QWidget()
|
||||
self.layout = QStackedLayout()
|
||||
|
||||
|
||||
tabs = QTabWidget() # Create the tabs
|
||||
tabs.setTabPosition(QTabWidget.North) # Select the tab position.
|
||||
tabs.setMovable(True) # Allow tab movement.
|
||||
|
@ -290,12 +292,10 @@ class Planet(QMainWindow):
|
|||
# mods_tab = tabs.addTab(self.custom_mods_tab(), "Mods")
|
||||
# tabs.setTabIcon(mods_tab, QIcon(f"{absolute_path}/assets/portal512.png"))
|
||||
settings_tab = tabs.addTab(self.settings_tab(), "Settings") # Changelog tab
|
||||
tabs.setTabIcon(
|
||||
settings_tab, QIcon(f"{absolute_path}/assets/wrench512.png")
|
||||
)
|
||||
|
||||
tabs.setTabIcon(settings_tab, QIcon(f"{absolute_path}/assets/wrench512.png"))
|
||||
|
||||
self.layout.addWidget(tabs)
|
||||
|
||||
|
||||
self.widget.setLayout(self.layout)
|
||||
|
||||
self.setCentralWidget(self.widget) # Set the central widget to the tabs
|
||||
|
@ -403,20 +403,20 @@ class Planet(QMainWindow):
|
|||
|
||||
self.versionbox = QComboBox()
|
||||
|
||||
#versions = json.loads(web.get_versions())["versions"]
|
||||
# versions = json.loads(web.get_versions())["versions"]
|
||||
|
||||
#version_list = list()
|
||||
# version_list = list()
|
||||
|
||||
#for version in versions:
|
||||
# version_list.append(versions[version])
|
||||
# for version in versions:
|
||||
# version_list.append(versions[version])
|
||||
|
||||
#version_name_list = list()
|
||||
# version_name_list = list()
|
||||
|
||||
#for version in version_list:
|
||||
# version_name_list.append(version["name"])
|
||||
# for version in version_list:
|
||||
# version_name_list.append(version["name"])
|
||||
|
||||
# self.versionbox.addItems(version_name_list) # Set the values
|
||||
#self.versionbox.setCurrentText("Short") # Set the default option
|
||||
# self.versionbox.addItems(version_name_list) # Set the values
|
||||
# self.versionbox.setCurrentText("Short") # Set the default option
|
||||
|
||||
self.playbutton = QPushButton("Play") # The most powerful button
|
||||
|
||||
|
@ -450,7 +450,7 @@ class Planet(QMainWindow):
|
|||
|
||||
layout.addWidget(self.showlauncher, 6, 4)
|
||||
|
||||
#layout.addWidget(self.versionbox, 8, 0, 1, 3)
|
||||
# layout.addWidget(self.versionbox, 8, 0, 1, 3)
|
||||
|
||||
layout.addWidget(self.playbutton, 8, 4, 1, 2)
|
||||
|
||||
|
@ -574,62 +574,60 @@ class Planet(QMainWindow):
|
|||
# TODO: Use two different tabs for the webview
|
||||
|
||||
return web_engine
|
||||
|
||||
|
||||
def settings_widget(self):
|
||||
widget = QWidget()
|
||||
|
||||
|
||||
layout = QGridLayout()
|
||||
|
||||
|
||||
skin_label = QLabel("Set the skin")
|
||||
|
||||
|
||||
self.skin_button = QPushButton("Select Skin")
|
||||
self.skin_button.clicked.connect(self.select_skin)
|
||||
|
||||
|
||||
config_label = QLabel("Reset config")
|
||||
|
||||
|
||||
self.delete_config_button = QPushButton("Delete config")
|
||||
self.delete_config_button.clicked.connect(self.delete_config)
|
||||
|
||||
|
||||
appimage_label = QLabel("Delete executable")
|
||||
|
||||
|
||||
self.delete_appimage_button = QPushButton("Delete")
|
||||
self.delete_appimage_button.clicked.connect(self.delete_appimage)
|
||||
|
||||
|
||||
|
||||
layout.addWidget(skin_label, 0, 0)
|
||||
layout.addWidget(self.skin_button, 0, 1)
|
||||
|
||||
|
||||
layout.addWidget(config_label, 1, 0)
|
||||
layout.addWidget(self.delete_config_button, 1, 1)
|
||||
|
||||
layout.addWidget(self.delete_config_button, 1, 1)
|
||||
|
||||
layout.addWidget(appimage_label, 2, 0)
|
||||
layout.addWidget(self.delete_appimage_button, 2, 1)
|
||||
|
||||
layout.addWidget(self.delete_appimage_button, 2, 1)
|
||||
|
||||
widget.setLayout(layout)
|
||||
|
||||
|
||||
return widget
|
||||
|
||||
|
||||
|
||||
def settings_tab(self):
|
||||
tabs = QTabWidget()
|
||||
tabs.setTabPosition(QTabWidget.South)
|
||||
|
||||
settings_tab = tabs.addTab(self.settings_widget(), "General")
|
||||
changelog_tab = tabs.addTab(self.changelog_widget(), "Changelog")
|
||||
editor_tab = tabs.addTab(mcpiedit.NBTEditor(), "MCPIEdit")
|
||||
|
||||
|
||||
settings_tab = tabs.addTab(self.settings_widget(), "General")
|
||||
changelog_tab = tabs.addTab(self.changelog_widget(), "Changelog")
|
||||
editor_tab = tabs.addTab(mcpiedit.NBTEditor(), "MCPIEdit")
|
||||
|
||||
tabs.setTabIcon(
|
||||
settings_tab, QIcon(f"{absolute_path}/assets/wrench512.png")
|
||||
) # Set the icon
|
||||
|
||||
|
||||
tabs.setTabIcon(
|
||||
changelog_tab, QIcon(f"{absolute_path}/assets/git.png")
|
||||
) # Set the icon
|
||||
|
||||
|
||||
tabs.setTabIcon(
|
||||
editor_tab, QIcon(f"{absolute_path}/assets/mcpiedit.png")
|
||||
) # Set the icon
|
||||
|
||||
|
||||
return tabs
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
|
@ -689,12 +687,12 @@ class Planet(QMainWindow):
|
|||
Image.open(filename[0]).crop((0, 0, 64, 32)).convert("RGBA").save(
|
||||
f"/home/{USER}/.minecraft-pi/overrides/images/mob/char.png"
|
||||
)
|
||||
|
||||
|
||||
def delete_config(self):
|
||||
os.remove(f"/home/{USER}/.planet-launcher/config.json")
|
||||
self.hide()
|
||||
sys.exit()
|
||||
|
||||
|
||||
def delete_appimage(self):
|
||||
os.remove(f"/home/{USER}/.planet-launcher/minecraft.AppImage")
|
||||
self.hide()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# MCPIEdit
|
||||
# This is a different editor from revival's MCPIedit!
|
||||
# This one is intended to work with Planet or it can work on its own
|
||||
# This one is intended to work with Planet but it can work on its own
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
@ -10,7 +10,10 @@ from PyQt5.QtCore import *
|
|||
from PyQt5.QtWidgets import *
|
||||
from PyQt5.QtGui import *
|
||||
|
||||
from qtwidgets import AnimatedToggle
|
||||
|
||||
import nbt
|
||||
|
||||
USER = os.getenv("USER") # Get the username, used for later
|
||||
|
||||
absolute_path = pathlib.Path(__file__).parent.absolute()
|
||||
|
@ -21,157 +24,155 @@ if str(absolute_path).startswith("/usr/bin"):
|
|||
sys.path.append(absolute_path)
|
||||
if os.path.exists("/usr/lib/planet-launcher/"):
|
||||
sys.path.append("/usr/lib/planet-launcher/")
|
||||
|
||||
|
||||
if not os.path.exists(f"/home/{USER}/.minecraft-pi/games/com.mojang/minecraftWorlds/"):
|
||||
os.makedirs(f"/home/{USER}/.minecraft-pi/games/com.mojang/minecraftWorlds/")
|
||||
|
||||
GAME_TYPES = {
|
||||
"Survival" : nbt.nbtlib.Int(0),
|
||||
"Creative" : nbt.nbtlib.Int(1),
|
||||
}
|
||||
|
||||
GAME_INTREGERS = {
|
||||
"0" : "Survival",
|
||||
"1" : "Creative"
|
||||
|
||||
}
|
||||
|
||||
GAME_TYPES = {"Survival": nbt.nbtlib.Int(0), "Creative": nbt.nbtlib.Int(1)}
|
||||
|
||||
GAME_INTREGERS = {"0": "Survival", "1": "Creative"}
|
||||
|
||||
BOOLEAN_INTREGERS = {0: False, 1: True}
|
||||
BOOLEAN_INTREGERS_REVERSED = {False: 0, True: 1}
|
||||
|
||||
|
||||
class FileSelectorTab(QWidget):
|
||||
def __init__(self):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
|
||||
layout = QGridLayout()
|
||||
|
||||
|
||||
self.load_button = QPushButton("Select NBT File")
|
||||
|
||||
layout.addWidget(self.load_button, 0, 0)
|
||||
|
||||
|
||||
layout.addWidget(self.load_button, 0, 0)
|
||||
|
||||
self.setLayout(layout)
|
||||
|
||||
|
||||
class EditorTab(QWidget):
|
||||
def __init__(self, filename):
|
||||
def __init__(self, filename):
|
||||
super().__init__()
|
||||
|
||||
|
||||
layout = QVBoxLayout()
|
||||
|
||||
self.nbt = nbt.load_nbt(filename, True)
|
||||
|
||||
|
||||
self.nbt = nbt.load_nbt(filename, True)
|
||||
|
||||
self.filename = filename
|
||||
|
||||
|
||||
self.tabs = QTabWidget()
|
||||
self.tabs.setTabPosition(QTabWidget.West)
|
||||
self.tabs.setMovable(True)
|
||||
|
||||
|
||||
|
||||
self.tabs.addTab(self.main_tab(), "World")
|
||||
|
||||
|
||||
self.name_edit.setText(str(self.nbt["LevelName"]))
|
||||
self.timestamp_box.setValue(int(self.nbt["LastPlayed"]))
|
||||
self.game_box.setCurrentText(GAME_INTREGERS[str(int(self.nbt["GameType"]))])
|
||||
self.seed_edit.setText(str(int(self.nbt["RandomSeed"])))
|
||||
|
||||
|
||||
layout.addWidget(self.tabs)
|
||||
|
||||
|
||||
self.setLayout(layout)
|
||||
|
||||
|
||||
|
||||
|
||||
def main_tab(self):
|
||||
|
||||
|
||||
widget = QWidget()
|
||||
|
||||
|
||||
layout = QGridLayout()
|
||||
|
||||
|
||||
self.name_label = QLabel("World name")
|
||||
|
||||
|
||||
self.name_edit = QLineEdit()
|
||||
self.name_edit.setPlaceholderText("OneChunk")
|
||||
|
||||
|
||||
self.seed_label = QLabel("World Seed")
|
||||
|
||||
|
||||
self.seed_edit = QLineEdit()
|
||||
self.seed_edit.setPlaceholderText("-121542953")
|
||||
self.seed_edit.setValidator(QIntValidator())
|
||||
|
||||
|
||||
self.timestamp_label = QLabel("Last Played Timestamp")
|
||||
|
||||
|
||||
self.timestamp_box = QSpinBox()
|
||||
self.timestamp_box.setMaximum(2147483647)
|
||||
|
||||
|
||||
self.game_label = QLabel("Game mode")
|
||||
|
||||
|
||||
self.game_box = QComboBox()
|
||||
self.game_box.addItems(
|
||||
[
|
||||
"Survival",
|
||||
"Creative"
|
||||
]
|
||||
self.game_box.addItems(["Survival", "Creative"])
|
||||
|
||||
self.mobs_toggle = AnimatedToggle(
|
||||
checked_color="#59b8e0",
|
||||
pulse_checked_color="#92cee8"
|
||||
)
|
||||
|
||||
|
||||
self.save_button = QPushButton("Save")
|
||||
self.save_button.clicked.connect(self.save)
|
||||
|
||||
layout.addWidget(self.name_label, 0, 0)
|
||||
layout.addWidget(self.name_edit, 0, 1)
|
||||
|
||||
layout.addWidget(self.seed_label, 1, 0)
|
||||
layout.addWidget(self.seed_edit, 1, 1)
|
||||
|
||||
layout.addWidget(self.timestamp_label, 2, 0)
|
||||
layout.addWidget(self.timestamp_box, 2, 1)
|
||||
|
||||
layout.addWidget(self.game_label, 3, 0)
|
||||
layout.addWidget(self.game_box, 3, 1)
|
||||
|
||||
layout.addWidget(self.name_label, 0, 0)
|
||||
layout.addWidget(self.name_edit, 0, 1)
|
||||
|
||||
layout.addWidget(self.seed_label, 1, 0)
|
||||
layout.addWidget(self.seed_edit, 1, 1)
|
||||
|
||||
layout.addWidget(self.timestamp_label, 2, 0)
|
||||
layout.addWidget(self.timestamp_box, 2, 1)
|
||||
|
||||
layout.addWidget(self.game_label, 3, 0)
|
||||
layout.addWidget(self.game_box, 3, 1)
|
||||
|
||||
|
||||
layout.addWidget(self.save_button, 4, 1)
|
||||
|
||||
layout.addWidget(self.mobs_toggle, 4, 1)
|
||||
|
||||
layout.addWidget(self.save_button, 5, 1)
|
||||
|
||||
widget.setLayout(layout)
|
||||
|
||||
|
||||
return widget
|
||||
|
||||
|
||||
|
||||
def save(self):
|
||||
self.nbt['LevelName'] = nbt.nbtlib.String(self.name_edit.text())
|
||||
self.nbt["LevelName"] = nbt.nbtlib.String(self.name_edit.text())
|
||||
self.nbt["LastPlayed"] = nbt.nbtlib.Long(self.timestamp_box.value())
|
||||
self.nbt["GameType"] = GAME_TYPES[self.game_box.currentText()]
|
||||
self.nbt["RandomSeed"] = nbt.nbtlib.Long(int(self.seed_edit.text()))
|
||||
|
||||
nbt.save_nbt(self.nbt, self.filename)
|
||||
|
||||
nbt.save_nbt(self.nbt, self.filename)
|
||||
|
||||
|
||||
class NBTEditor(QWidget):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.nbt_file = ""
|
||||
|
||||
|
||||
self.layout = QStackedLayout()
|
||||
|
||||
|
||||
selector = FileSelectorTab()
|
||||
selector.load_button.clicked.connect(self.load_nbt)
|
||||
|
||||
|
||||
self.layout.addWidget(selector)
|
||||
|
||||
|
||||
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
||||
|
||||
def load_nbt(self):
|
||||
print("Hellow, Cruel World!")
|
||||
fname = QFileDialog.getOpenFileName(self, 'Open NBT File', f'/home/{USER}/.minecraft-pi/games/com.mojang/minecraftWorlds/',"Minecraft Pi Level NBT (level.dat)")
|
||||
|
||||
fname = QFileDialog.getOpenFileName(
|
||||
self,
|
||||
"Open NBT File",
|
||||
f"/home/{USER}/.minecraft-pi/games/com.mojang/minecraftWorlds/",
|
||||
"Minecraft Pi Level NBT (level.dat)",
|
||||
)
|
||||
|
||||
self.layout.addWidget(EditorTab(fname[0]))
|
||||
self.layout.setCurrentIndex(1)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
|
||||
window = QMainWindow()
|
||||
window.setCentralWidget(NBTEditor())
|
||||
window.setWindowTitle("MCPIEdit")
|
||||
|
||||
window.setWindowIcon(QIcon(f"{absolute_path}/assets/mcpiedit.png"))
|
||||
|
||||
window.show()
|
||||
app.exec()
|
||||
|
|
|
@ -30,33 +30,36 @@ SOFTWARE.
|
|||
import nbtlib
|
||||
import subprocess
|
||||
|
||||
|
||||
def remove_header(filename: str):
|
||||
#with open(filename, "rb") as file:
|
||||
# with open(filename, "rb") as file:
|
||||
# data = file.read()
|
||||
#with open(filename, "wb") as write_file:
|
||||
# with open(filename, "wb") as write_file:
|
||||
# write_file.write(data[8:])
|
||||
# This is WIP code! Do not use!
|
||||
|
||||
return subprocess.Popen(["pi-nbt", "remove-header", filename, filename+"_temp.dat"]).wait()
|
||||
|
||||
return subprocess.Popen(
|
||||
["pi-nbt", "remove-header", filename, filename + "_temp.dat"]
|
||||
).wait()
|
||||
|
||||
|
||||
def add_header(filename: str):
|
||||
return subprocess.Popen(["pi-nbt", "add-header", filename+"_temp.dat", filename]).wait()
|
||||
return subprocess.Popen(
|
||||
["pi-nbt", "add-header", filename + "_temp.dat", filename]
|
||||
).wait()
|
||||
|
||||
|
||||
def load_nbt(filename: str, header=False):
|
||||
if header:
|
||||
remove_header(filename)
|
||||
|
||||
with nbtlib.load(filename=filename+"_temp.dat", gzipped=False, byteorder="little") as nbt:
|
||||
return nbt
|
||||
|
||||
|
||||
def save_nbt(nbt: nbtlib.File, filename: str, header=True):
|
||||
nbt.save(filename+"_temp.dat")
|
||||
def load_nbt(filename: str, header=False):
|
||||
if header:
|
||||
add_header(filename)
|
||||
|
||||
|
||||
remove_header(filename)
|
||||
|
||||
|
||||
|
||||
with nbtlib.load(
|
||||
filename=filename + "_temp.dat", gzipped=False, byteorder="little"
|
||||
) as nbt:
|
||||
return nbt
|
||||
|
||||
|
||||
def save_nbt(nbt: nbtlib.File, filename: str, header=True):
|
||||
nbt.save(filename + "_temp.dat")
|
||||
if header:
|
||||
add_header(filename)
|
||||
|
|
|
@ -41,6 +41,6 @@ SPLASHES = [
|
|||
"Now with multiplayer!",
|
||||
"RED EXE ENGINEER GAMING",
|
||||
"Play Minecraft Pi Edition, watch Red-Exe-Engineer, get PIG!",
|
||||
"Wat",
|
||||
"About the same size as Earth",
|
||||
"Wat",
|
||||
"About the same size as Earth",
|
||||
]
|
||||
|
|
|
@ -2,3 +2,5 @@ pyqt5
|
|||
pyqtdarktheme
|
||||
pypresence
|
||||
pillow
|
||||
qtwidgets
|
||||
darkdetect
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
pip3 install pyqtdarktheme pypresence pillow darkdetect
|
||||
pip3 install pyqtdarktheme pypresence pillow darkdetect qtwidgets
|
||||
link /usr/lib/planet-launcher/main.py /usr/bin/planet-launcher
|
||||
chmod 755 /usr/lib/planet-launcher/main.py
|
||||
link /usr/lib/planet-launcher/assets/planet-launcher.desktop /usr/share/applications/planet-launcher.desktop
|
||||
|
|
Loading…
Reference in New Issue