Add more blocks into textureweaving index
This commit is contained in:
parent
9d174302c5
commit
9a7be48a19
|
@ -34,7 +34,7 @@ import json
|
||||||
import pathlib
|
import pathlib
|
||||||
import gettext
|
import gettext
|
||||||
|
|
||||||
LOCALE = os.getenv('LANG', 'en')
|
LOCALE = os.getenv("LANG", "en")
|
||||||
|
|
||||||
# Define the path used for later
|
# Define the path used for later
|
||||||
absolute_path = pathlib.Path(__file__).parent.absolute()
|
absolute_path = pathlib.Path(__file__).parent.absolute()
|
||||||
|
@ -49,7 +49,9 @@ if os.path.exists("/usr/lib/planet-launcher/"):
|
||||||
sys.path.append("/usr/lib/planet-launcher/")
|
sys.path.append("/usr/lib/planet-launcher/")
|
||||||
|
|
||||||
|
|
||||||
_ = gettext.translation('main', localedir=str(absolute_path)+"/assets/translations/", languages=[LOCALE]).gettext
|
_ = gettext.translation(
|
||||||
|
"main", localedir=str(absolute_path) + "/assets/translations/", languages=[LOCALE]
|
||||||
|
).gettext
|
||||||
|
|
||||||
# Local imports
|
# Local imports
|
||||||
import launcher
|
import launcher
|
||||||
|
@ -131,18 +133,20 @@ class ConfigPluto(QDialog):
|
||||||
titlewidget.setLayout(titlelayout) # Set the layout
|
titlewidget.setLayout(titlelayout) # Set the layout
|
||||||
|
|
||||||
# Label with information
|
# Label with information
|
||||||
info_label = QLabel(_(
|
info_label = QLabel(
|
||||||
'Please select the executable you downloaded.\nIf you installed a DEB, please select the "Link" option'
|
_(
|
||||||
))
|
'Please select the executable you downloaded.\nIf you installed a DEB, please select the "Link" option'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.executable_btn = QPushButton(_("Select executable")) # Button for AppImage
|
self.executable_btn = QPushButton(_("Select executable")) # Button for AppImage
|
||||||
self.executable_btn.clicked.connect(
|
self.executable_btn.clicked.connect(
|
||||||
self.get_appimage
|
self.get_appimage
|
||||||
) # Connect to the function
|
) # Connect to the function
|
||||||
|
|
||||||
self.premade_btn = QPushButton(_(
|
self.premade_btn = QPushButton(
|
||||||
"Link /usr/bin/minecraft-pi-reborn-client"
|
_("Link /usr/bin/minecraft-pi-reborn-client")
|
||||||
)) # Button for Pre-installed debs
|
) # Button for Pre-installed debs
|
||||||
self.premade_btn.clicked.connect(self.link_appimage) # Connect to the function
|
self.premade_btn.clicked.connect(self.link_appimage) # Connect to the function
|
||||||
|
|
||||||
self.flatpak_btn = QPushButton(_("Link flatpak")) # Button for linking flatpak
|
self.flatpak_btn = QPushButton(_("Link flatpak")) # Button for linking flatpak
|
||||||
|
@ -179,7 +183,10 @@ class ConfigPluto(QDialog):
|
||||||
self.hide() # Hide the dialog
|
self.hide() # Hide the dialog
|
||||||
# Open the file dialog
|
# Open the file dialog
|
||||||
self.filename = QFileDialog.getOpenFileName(
|
self.filename = QFileDialog.getOpenFileName(
|
||||||
self, _("Select executable"), "/", "Executable files (*.AppImage *.bin *.sh *)"
|
self,
|
||||||
|
_("Select executable"),
|
||||||
|
"/",
|
||||||
|
"Executable files (*.AppImage *.bin *.sh *)",
|
||||||
)
|
)
|
||||||
|
|
||||||
def link_appimage(self):
|
def link_appimage(self):
|
||||||
|
@ -297,7 +304,9 @@ class Planet(QMainWindow):
|
||||||
# mods_tab = tabs.addTab(self.custom_mods_tab(), "Mods")
|
# mods_tab = tabs.addTab(self.custom_mods_tab(), "Mods")
|
||||||
# tabs.setTabIcon(mods_tab, QIcon(f"{absolute_path}/assets/portal512.png"))
|
# tabs.setTabIcon(mods_tab, QIcon(f"{absolute_path}/assets/portal512.png"))
|
||||||
settings_tab = tabs.addTab(self.settings_tab(), _("Settings")) # Changelog tab
|
settings_tab = tabs.addTab(self.settings_tab(), _("Settings")) # Changelog tab
|
||||||
tabs.setTabIcon(settings_tab, QIcon(f"{absolute_path}/assets/img/full/wrench512.png"))
|
tabs.setTabIcon(
|
||||||
|
settings_tab, QIcon(f"{absolute_path}/assets/img/full/wrench512.png")
|
||||||
|
)
|
||||||
|
|
||||||
self.layout.addWidget(tabs)
|
self.layout.addWidget(tabs)
|
||||||
|
|
||||||
|
@ -375,7 +384,9 @@ class Planet(QMainWindow):
|
||||||
splashlabel.adjustSize() # Adjust the size just in case
|
splashlabel.adjustSize() # Adjust the size just in case
|
||||||
splashlabel.setAlignment(Qt.AlignHCenter) # Align the label
|
splashlabel.setAlignment(Qt.AlignHCenter) # Align the label
|
||||||
|
|
||||||
usernamelabel = QLabel(_("Username")) # Label that is used to direct the line edit
|
usernamelabel = QLabel(
|
||||||
|
_("Username")
|
||||||
|
) # Label that is used to direct the line edit
|
||||||
|
|
||||||
self.usernameedit = QLineEdit() # Line Edit for username
|
self.usernameedit = QLineEdit() # Line Edit for username
|
||||||
self.usernameedit.setPlaceholderText(_("StevePi")) # Set ghost value
|
self.usernameedit.setPlaceholderText(_("StevePi")) # Set ghost value
|
||||||
|
@ -388,7 +399,9 @@ class Planet(QMainWindow):
|
||||||
self.distancebox.addItems(["Far", "Normal", "Short", "Tiny"]) # Set the values
|
self.distancebox.addItems(["Far", "Normal", "Short", "Tiny"]) # Set the values
|
||||||
self.distancebox.setCurrentText("Short") # Set the default option
|
self.distancebox.setCurrentText("Short") # Set the default option
|
||||||
|
|
||||||
profilelabel = QLabel(_("Profile")) # Label that is used to direct the combo box
|
profilelabel = QLabel(
|
||||||
|
_("Profile")
|
||||||
|
) # Label that is used to direct the combo box
|
||||||
|
|
||||||
self.profilebox = QComboBox()
|
self.profilebox = QComboBox()
|
||||||
self.profilebox.addItems(
|
self.profilebox.addItems(
|
||||||
|
@ -532,7 +545,9 @@ class Planet(QMainWindow):
|
||||||
) # Set the text of the text editing area
|
) # Set the text of the text editing area
|
||||||
|
|
||||||
infolabel = QLabel( # Label with information about the server format
|
infolabel = QLabel( # Label with information about the server format
|
||||||
_('Servers are stored in the format of <font color="gold">IP: </font><font color="blue">Port</font>')
|
_(
|
||||||
|
'Servers are stored in the format of <font color="gold">IP: </font><font color="blue">Port</font>'
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
layout.addWidget(self.serversedit, 0, 0) # Add the widgets
|
layout.addWidget(self.serversedit, 0, 0) # Add the widgets
|
||||||
|
@ -718,7 +733,9 @@ class Planet(QMainWindow):
|
||||||
dialog = QMessageBox()
|
dialog = QMessageBox()
|
||||||
dialog.setWindowTitle(_("Are you sure you want to reset?"))
|
dialog.setWindowTitle(_("Are you sure you want to reset?"))
|
||||||
dialog.setText(
|
dialog.setText(
|
||||||
_("Are you sure you want to delete the config? This action is unrecoverable.")
|
_(
|
||||||
|
"Are you sure you want to delete the config? This action is unrecoverable."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
dialog.setStandardButtons(QMessageBox.Ok | QMessageBox.Abort)
|
dialog.setStandardButtons(QMessageBox.Ok | QMessageBox.Abort)
|
||||||
dialog.setIcon(QMessageBox.Warning)
|
dialog.setIcon(QMessageBox.Warning)
|
||||||
|
@ -735,7 +752,9 @@ class Planet(QMainWindow):
|
||||||
dialog = QMessageBox()
|
dialog = QMessageBox()
|
||||||
dialog.setWindowTitle(_("Are you sure you want to reset?"))
|
dialog.setWindowTitle(_("Are you sure you want to reset?"))
|
||||||
dialog.setText(
|
dialog.setText(
|
||||||
_("Are you sure you want to delete the AppImage? This action is unrecoverable.")
|
_(
|
||||||
|
"Are you sure you want to delete the AppImage? This action is unrecoverable."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
dialog.setStandardButtons(QMessageBox.Ok | QMessageBox.Abort)
|
dialog.setStandardButtons(QMessageBox.Ok | QMessageBox.Abort)
|
||||||
dialog.setIcon(QMessageBox.Warning)
|
dialog.setIcon(QMessageBox.Warning)
|
||||||
|
|
|
@ -26,7 +26,7 @@ import os
|
||||||
import pathlib
|
import pathlib
|
||||||
import gettext
|
import gettext
|
||||||
|
|
||||||
LOCALE = os.getenv('LANG')
|
LOCALE = os.getenv("LANG")
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtCore import *
|
||||||
from PyQt5.QtWidgets import *
|
from PyQt5.QtWidgets import *
|
||||||
|
@ -47,8 +47,12 @@ if os.path.exists("/usr/lib/planet-launcher/"):
|
||||||
|
|
||||||
if not os.path.exists(f"/home/{USER}/.minecraft-pi/games/com.mojang/minecraftWorlds/"):
|
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/")
|
os.makedirs(f"/home/{USER}/.minecraft-pi/games/com.mojang/minecraftWorlds/")
|
||||||
|
|
||||||
_ = gettext.translation('mcpiedit', localedir=str(absolute_path)+"/assets/translations/", languages=[LOCALE]).gettext
|
_ = gettext.translation(
|
||||||
|
"mcpiedit",
|
||||||
|
localedir=str(absolute_path) + "/assets/translations/",
|
||||||
|
languages=[LOCALE],
|
||||||
|
).gettext
|
||||||
|
|
||||||
GAME_TYPES = {"Survival": nbt.pynbt.TAG_Int(0), "Creative": nbt.pynbt.TAG_Int(1)}
|
GAME_TYPES = {"Survival": nbt.pynbt.TAG_Int(0), "Creative": nbt.pynbt.TAG_Int(1)}
|
||||||
|
|
||||||
|
@ -71,7 +75,9 @@ class AboutWindow(QWidget):
|
||||||
label.setFont(font) # Aplly the font onto the label
|
label.setFont(font) # Aplly the font onto the label
|
||||||
|
|
||||||
desc_label = QLabel(
|
desc_label = QLabel(
|
||||||
_("The default built-in NBT editor for Planet.\n\nMCPIedit makes use of Pi-NBT\n from the original MCPIedit project\nby TheBrokenRail, which is\nlicensed under the MIT license.")
|
_(
|
||||||
|
"The default built-in NBT editor for Planet.\n\nMCPIedit makes use of Pi-NBT\n from the original MCPIedit project\nby TheBrokenRail, which is\nlicensed under the MIT license."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
desc_label.setAlignment(Qt.AlignHCenter)
|
desc_label.setAlignment(Qt.AlignHCenter)
|
||||||
|
|
||||||
|
@ -88,7 +94,9 @@ class FileSelectorTab(QWidget):
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
|
|
||||||
info_label = QLabel(
|
info_label = QLabel(
|
||||||
_("NBT editors allow you to edit your world\nfiles to change game modes, time,\nand even the world name. Select an NBT\nfile to edit using the button below.")
|
_(
|
||||||
|
"NBT editors allow you to edit your world\nfiles to change game modes, time,\nand even the world name. Select an NBT\nfile to edit using the button below."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
info_label.setAlignment(Qt.AlignHCenter)
|
info_label.setAlignment(Qt.AlignHCenter)
|
||||||
|
|
||||||
|
@ -260,7 +268,9 @@ class EditorTab(QWidget):
|
||||||
layout.addWidget(player_z_label, 5, 0)
|
layout.addWidget(player_z_label, 5, 0)
|
||||||
|
|
||||||
note_label = QLabel(
|
note_label = QLabel(
|
||||||
_("Note:\nPlayer spawnpoints are very buggy!\nYou might spawn in the wrong\nplace or even outside the world!\nDo not use on valuable worlds.")
|
_(
|
||||||
|
"Note:\nPlayer spawnpoints are very buggy!\nYou might spawn in the wrong\nplace or even outside the world!\nDo not use on valuable worlds."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
layout.addWidget(self.spawn_x_box, 0, 1)
|
layout.addWidget(self.spawn_x_box, 0, 1)
|
||||||
|
|
|
@ -27,7 +27,7 @@ import shutil
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
|
||||||
USER = os.getenv("USER")
|
USER = os.getenv("USER")
|
||||||
|
|
||||||
INDEX = [
|
INDEX = [
|
||||||
# Armor
|
# Armor
|
||||||
|
@ -129,13 +129,15 @@ TEXTURE_PATHS = [
|
||||||
"mob/spider.png",
|
"mob/spider.png",
|
||||||
"mob/zombie.png",
|
"mob/zombie.png",
|
||||||
"particles.png",
|
"particles.png",
|
||||||
"terrain.png"
|
"terrain.png",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def pepack_install(zip_path):
|
def pepack_install(zip_path):
|
||||||
with ZipFile(zip_path) as zip_file:
|
with ZipFile(zip_path) as zip_file:
|
||||||
zip_file.extractall(path=f"/home/{USER}/.minecraft-pi/overrides/")
|
zip_file.extractall(path=f"/home/{USER}/.minecraft-pi/overrides/")
|
||||||
|
|
||||||
|
|
||||||
def mcpit_install(zip_path):
|
def mcpit_install(zip_path):
|
||||||
not_found = list()
|
not_found = list()
|
||||||
found = list()
|
found = list()
|
||||||
|
@ -145,23 +147,29 @@ def mcpit_install(zip_path):
|
||||||
found.append(file)
|
found.append(file)
|
||||||
else:
|
else:
|
||||||
not_found.append(file)
|
not_found.append(file)
|
||||||
|
|
||||||
for file in found:
|
for file in found:
|
||||||
zip_file.extract(file, path=f"/home/{USER}/.minecraft-pi/overrides/images/"+TEXTURE_PATHS[INDEX.index(file)][:-len(INDEX[INDEX.index(file)])])
|
zip_file.extract(
|
||||||
|
file,
|
||||||
if "changelog" in zip_file.namelist():
|
path=f"/home/{USER}/.minecraft-pi/overrides/images/"
|
||||||
|
+ TEXTURE_PATHS[INDEX.index(file)][: -len(INDEX[INDEX.index(file)])],
|
||||||
|
)
|
||||||
|
|
||||||
|
if "changelog" in zip_file.namelist():
|
||||||
with zip_file.open("changelog") as file:
|
with zip_file.open("changelog") as file:
|
||||||
click.echo(file.read())
|
click.echo(file.read())
|
||||||
if "credits" in zip_file.namelist():
|
if "credits" in zip_file.namelist():
|
||||||
with zip_file.open("credits") as file:
|
with zip_file.open("credits") as file:
|
||||||
click.echo(file.read())
|
click.echo(file.read())
|
||||||
|
|
||||||
def install_pack(zip_path, pack_format):
|
|
||||||
|
def install_pack(zip_path, pack_format):
|
||||||
if pack_format == "mcpit":
|
if pack_format == "mcpit":
|
||||||
mcpit_install(zip_path)
|
mcpit_install(zip_path)
|
||||||
elif pack_format == "pepack":
|
elif pack_format == "pepack":
|
||||||
pepack_install(zip_path)
|
pepack_install(zip_path)
|
||||||
|
|
||||||
|
|
||||||
def erase_pack():
|
def erase_pack():
|
||||||
shutil.rmtree(f"/home/{USER}/.minecraft-pi/overrides/images")
|
shutil.rmtree(f"/home/{USER}/.minecraft-pi/overrides/images")
|
||||||
|
|
||||||
|
@ -170,21 +178,40 @@ def erase_pack():
|
||||||
def main():
|
def main():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@main.command(help="Install a texture pack")
|
@main.command(help="Install a texture pack")
|
||||||
@click.argument("pack_path", type=click.Path(exists=True))
|
@click.argument("pack_path", type=click.Path(exists=True))
|
||||||
@click.option("--mcpit", "-m", "pack_format", is_flag=True, default=True, help="Use MCPiT format.", flag_value="mcpit")
|
@click.option(
|
||||||
@click.option("--pepack", "-p", "pack_format", is_flag=True, default=False, help="Use PEPack format.", flag_value="pepack")
|
"--mcpit",
|
||||||
def install(pack_path, pack_format):
|
"-m",
|
||||||
install_pack(pack_path, pack_format)
|
"pack_format",
|
||||||
|
is_flag=True,
|
||||||
|
default=True,
|
||||||
|
help="Use MCPiT format.",
|
||||||
|
flag_value="mcpit",
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
"--pepack",
|
||||||
|
"-p",
|
||||||
|
"pack_format",
|
||||||
|
is_flag=True,
|
||||||
|
default=False,
|
||||||
|
help="Use PEPack format.",
|
||||||
|
flag_value="pepack",
|
||||||
|
)
|
||||||
|
def install(pack_path, pack_format):
|
||||||
|
install_pack(pack_path, pack_format)
|
||||||
|
|
||||||
|
|
||||||
@main.command(help="Erase the pack files")
|
@main.command(help="Erase the pack files")
|
||||||
def erase():
|
def erase():
|
||||||
erase_pack()
|
erase_pack()
|
||||||
|
|
||||||
@main.command(help = "Show version and license")
|
|
||||||
|
@main.command(help="Show version and license")
|
||||||
def version():
|
def version():
|
||||||
click.echo(__doc__)
|
click.echo(__doc__)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -1,34 +1,137 @@
|
||||||
|
"""
|
||||||
|
This file is part of mcpit/Planet.
|
||||||
|
|
||||||
|
mcpit/Planet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
mcpit/Planet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License along with mcpit/Planet. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
"""
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
POSITIONS = {
|
POSITIONS = {
|
||||||
"grass_top" : (0, 0, 16, 16),
|
# Row 1
|
||||||
"stone": (16, 0, 32, 16),
|
"grass_carried": (0, 0, 16, 16),
|
||||||
|
"stone": (16, 0, 32, 16),
|
||||||
"dirt": (32, 0, 48, 16),
|
"dirt": (32, 0, 48, 16),
|
||||||
"grass_side_carried": (48, 0, 64, 16),
|
"grass_side_carried": (48, 0, 64, 16),
|
||||||
"planks_oak": (64, 0, 80, 16),
|
"planks_oak": (64, 0, 80, 16),
|
||||||
"stone_slab_side" : (80, 0, 96, 16),
|
"stone_slab_side": (80, 0, 96, 16),
|
||||||
"stone_slab_top":(96, 0, 112, 16),
|
"stone_slab_top": (96, 0, 112, 16),
|
||||||
"brick":(112, 0, 128, 16),
|
"brick": (112, 0, 128, 16),
|
||||||
"tnt_side":(128, 0, 144, 16),
|
"tnt_side": (128, 0, 144, 16),
|
||||||
"tnt_top":(144, 0, 160, 16),
|
"tnt_top": (144, 0, 160, 16),
|
||||||
"tnt_bottom":(160, 0, 176, 16),
|
"tnt_bottom": (160, 0, 176, 16),
|
||||||
"web": (176, 0, 192, 16),
|
"web": (176, 0, 192, 16),
|
||||||
"flower_rose":(192, 0, 208, 16),
|
"flower_rose": (192, 0, 208, 16),
|
||||||
"flower_dandelion":(208, 0, 224, 16),
|
"flower_dandelion": (208, 0, 224, 16),
|
||||||
"sapling_oak": (240, 0, 256, 16),
|
"sapling_oak": (240, 0, 256, 16),
|
||||||
"cobblestone": (0, 16, 16, 32),
|
# Row 2
|
||||||
"bedrock": (16, 16, 32, 32),
|
"cobblestone": (0, 16, 16, 32),
|
||||||
"sand":(32, 16, 48, 32), # I love these blocks
|
"bedrock": (16, 16, 32, 32),
|
||||||
"gravel":(48, 16, 64, 32),
|
"sand": (32, 16, 48, 32), # I love these blocks
|
||||||
"log_oak":(64, 16, 80, 32),
|
"gravel": (48, 16, 64, 32),
|
||||||
"log_oak_top":(80, 16, 96, 32),
|
"oak_log": (64, 16, 80, 32),
|
||||||
|
"oak_log_top": (80, 16, 96, 32),
|
||||||
|
"iron_block": (96, 16, 112, 32),
|
||||||
|
"gold_block": (112, 16, 128, 32),
|
||||||
|
"diamond_block": (128, 16, 144, 32),
|
||||||
|
"chest_top": (144, 16, 160, 32),
|
||||||
|
"chest_side": (160, 16, 176, 32),
|
||||||
|
"chest_front": (176, 16, 192, 32),
|
||||||
|
"mushroom_red": (192, 16, 208, 32),
|
||||||
|
"mushroom_brown": (208, 16, 224, 32),
|
||||||
|
"fire_0_placeholder": (240, 16, 256, 32),
|
||||||
|
# Row 3
|
||||||
|
"gold_ore": (0, 32, 16, 48),
|
||||||
|
"iron_ore": (16, 32, 32, 48),
|
||||||
|
"coal_ore": (32, 32, 48, 48),
|
||||||
|
"bookshelf": (48, 32, 64, 48),
|
||||||
|
"cobblestone_mossy": (64, 32, 80, 48),
|
||||||
|
"obsidian": (80, 32, 96, 48),
|
||||||
|
"grass_side": (96, 32, 112, 48),
|
||||||
|
"tallgrass": (112, 32, 128, 48),
|
||||||
|
"grass_top": (128, 32, 144, 48),
|
||||||
|
"crafting_table_top": (176, 32, 192, 48),
|
||||||
|
"furnace_front": (192, 32, 208, 48),
|
||||||
|
"furnace_side": (208, 32, 224, 48),
|
||||||
|
"fire_1_placeholder": (240, 32, 256, 48),
|
||||||
|
# Row 4
|
||||||
|
"glass": (16, 48, 32, 64),
|
||||||
|
"diamond_ore": (32, 48, 48, 64),
|
||||||
|
"redstone_ore": (48, 48, 64, 64),
|
||||||
|
"leaves_oak_carried": (64, 48, 80, 64),
|
||||||
|
"leaves_big_oak_carried": (80, 48, 96, 64),
|
||||||
|
"stonebrick": (96, 48, 112, 64),
|
||||||
|
"deadbush": (112, 48, 128, 64),
|
||||||
|
"shrub": (128, 48, 144, 64),
|
||||||
|
"crafting_table_side": (176, 48, 192, 64),
|
||||||
|
"crafting_table_front": (192, 48, 208, 64),
|
||||||
|
"furnace_front_on": (208, 48, 224, 64),
|
||||||
|
"furnace_top": (224, 48, 240, 64),
|
||||||
|
"spruce_sapling": (240, 48, 256, 64),
|
||||||
|
# Row 5
|
||||||
|
"white_wool": (0, 64, 16, 80),
|
||||||
|
"snow": (32, 64, 48, 80),
|
||||||
|
"ice": (48, 64, 64, 80),
|
||||||
|
"grass_block_snow": (64, 64, 80, 80),
|
||||||
|
"cactus_top": (80, 64, 96, 80),
|
||||||
|
"cactus_side": (96, 64, 112, 80),
|
||||||
|
"cactus_bottom": (112, 64, 128, 80),
|
||||||
|
"clay": (128, 64, 144, 80),
|
||||||
|
"sugarcane_extracted": (144, 64, 160, 80),
|
||||||
|
"birch_sapling": (240, 64, 256, 80),
|
||||||
|
# Row 6
|
||||||
|
"torch": (0, 80, 16, 96),
|
||||||
|
"oak_door_top": (16, 80, 32, 96),
|
||||||
|
"iron_door_top": (32, 80, 48, 96),
|
||||||
|
"ladder": (48, 80, 64, 96),
|
||||||
|
"oak_trapdoor": (64, 80, 80, 96),
|
||||||
|
"farmland_moist": (96, 80, 112, 96),
|
||||||
|
"farmland": (112, 80, 128, 96),
|
||||||
|
"wheat_stage0": (128, 80, 144, 96),
|
||||||
|
"wheat_stage1": (144, 80, 160, 96),
|
||||||
|
"wheat_stage2": (160, 80, 176, 96),
|
||||||
|
"wheat_stage3": (176, 80, 192, 96),
|
||||||
|
"wheat_stage4": (192, 80, 208, 96),
|
||||||
|
"wheat_stage5": (208, 80, 224, 96),
|
||||||
|
"wheat_stage6": (224, 80, 240, 96),
|
||||||
|
"wheat_stage7": (240, 80, 256, 96),
|
||||||
|
# Row 7
|
||||||
|
"oak_door_bottom": (16, 96, 32, 112),
|
||||||
|
"iron_door_bottom": (32, 96, 48, 112),
|
||||||
|
"mossy_stone_bricks": (48, 96, 64, 112),
|
||||||
|
"cracked_stone_bricks": (64, 96, 80, 112),
|
||||||
|
"netherrack": (96, 96, 112, 112),
|
||||||
|
"soul_sand": (112, 96, 128, 112),
|
||||||
|
"glowstone": (128, 96, 144, 112),
|
||||||
|
"melon_stem": (240, 96, 256, 112),
|
||||||
|
# Row 8
|
||||||
|
"black_wool": (16, 112, 32, 128),
|
||||||
|
"gray_wool": (32, 112, 48, 128),
|
||||||
|
"dark_oak_log": (64, 112, 80, 128),
|
||||||
|
"birch_log": (80, 112, 96, 128),
|
||||||
|
"attached_melon_stem": (240, 112, 256, 128),
|
||||||
|
# Row 9
|
||||||
|
"red_wool": (16, 128, 32, 144),
|
||||||
|
"pink_wool": (32, 128, 48, 144),
|
||||||
|
"birch_leaves": (48, 128, 64, 144),
|
||||||
|
"dark_oak_leaves": (32, 128, 48, 144),
|
||||||
|
"bed1": (48, 128, 64, 144),
|
||||||
|
"bed2": (64, 128, 80, 144),
|
||||||
|
"melon_side": (80, 128, 96, 144),
|
||||||
|
"melon_top": (96, 128, 112, 144),
|
||||||
|
"lapis_block": (112, 128, 128, 144),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def extract_fire():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
with Image.open("/home/leha2/.minecraft-pi/overrides/images/terrain.png") as img:
|
with Image.open(
|
||||||
region=img.crop(POSITIONS["gravel"])
|
"/usr/lib/minecraft-pi-reborn-client/data/images/terrain.png"
|
||||||
|
) as img:
|
||||||
|
region = img.crop(POSITIONS["black_wool"])
|
||||||
region.show()
|
region.show()
|
||||||
|
|
Loading…
Reference in New Issue