aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yml121
-rw-r--r--.github/workflows/trigger_builds.yml3
-rw-r--r--.github/workflows/trigger_release.yml31
-rw-r--r--CMakeLists.txt24
-rw-r--r--flake.nix4
-rw-r--r--launcher/Application.cpp6
-rw-r--r--launcher/CMakeLists.txt3
-rw-r--r--launcher/FileSystem.cpp187
-rw-r--r--launcher/FileSystem.h5
-rw-r--r--launcher/InstanceCreationTask.cpp8
-rw-r--r--launcher/InstanceImportTask.cpp10
-rw-r--r--launcher/MMCZip.cpp27
-rw-r--r--launcher/MMCZip.h4
-rw-r--r--launcher/minecraft/Agent.h2
-rw-r--r--launcher/minecraft/MinecraftInstance.cpp6
-rw-r--r--launcher/minecraft/PackProfile.cpp82
-rw-r--r--launcher/minecraft/PackProfile.h7
-rw-r--r--launcher/minecraft/mod/ResourcePack.cpp7
-rw-r--r--launcher/minecraft/mod/ResourcePack.h2
-rw-r--r--launcher/minecraft/mod/TexturePack.cpp5
-rw-r--r--launcher/minecraft/mod/TexturePack.h2
-rw-r--r--launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp27
-rw-r--r--launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h12
-rw-r--r--launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp27
-rw-r--r--launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h12
-rw-r--r--launcher/modplatform/flame/FileResolvingTask.cpp20
-rw-r--r--launcher/modplatform/flame/FlameInstanceCreationTask.cpp1
-rw-r--r--launcher/resources/OSX/OSX.qrc1
-rw-r--r--launcher/resources/OSX/scalable/shortcut.svg14
-rw-r--r--launcher/resources/breeze_dark/breeze_dark.qrc1
-rw-r--r--launcher/resources/breeze_dark/scalable/shortcut.svg18
-rw-r--r--launcher/resources/breeze_light/breeze_light.qrc1
-rw-r--r--launcher/resources/breeze_light/scalable/shortcut.svg18
-rw-r--r--launcher/resources/flat/flat.qrc1
-rw-r--r--launcher/resources/flat/scalable/shortcut.svg3
-rw-r--r--launcher/resources/flat_white/flat_white.qrc1
-rw-r--r--launcher/resources/flat_white/scalable/shortcut.svg3
-rw-r--r--launcher/resources/iOS/iOS.qrc1
-rw-r--r--launcher/resources/iOS/scalable/shortcut.svg13
-rw-r--r--launcher/resources/multimc/128x128/instances/chicken_legacy.png (renamed from launcher/resources/multimc/128x128/instances/chicken.png)bin6369 -> 6369 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/creeper_legacy.png (renamed from launcher/resources/multimc/128x128/instances/creeper.png)bin9046 -> 9046 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/enderpearl_legacy.png (renamed from launcher/resources/multimc/128x128/instances/enderpearl.png)bin21425 -> 21425 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/flame_legacy.png (renamed from launcher/resources/multimc/128x128/instances/flame.png)bin6226 -> 6226 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/ftb_logo_legacy.png (renamed from launcher/resources/multimc/128x128/instances/ftb_logo.png)bin7883 -> 7883 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/gear_legacy.png (renamed from launcher/resources/multimc/128x128/instances/gear.png)bin18321 -> 18321 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/herobrine_legacy.png (renamed from launcher/resources/multimc/128x128/instances/herobrine.png)bin4937 -> 4937 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/infinity_legacy.png (renamed from launcher/resources/multimc/128x128/instances/infinity.png)bin8012 -> 8012 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/magitech_legacy.png (renamed from launcher/resources/multimc/128x128/instances/magitech.png)bin23097 -> 23097 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/meat_legacy.png (renamed from launcher/resources/multimc/128x128/instances/meat.png)bin10583 -> 10583 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/netherstar_legacy.png (renamed from launcher/resources/multimc/128x128/instances/netherstar.png)bin14062 -> 14062 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/skeleton_legacy.png (renamed from launcher/resources/multimc/128x128/instances/skeleton.png)bin3673 -> 3673 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/squarecreeper_legacy.png (renamed from launcher/resources/multimc/128x128/instances/squarecreeper.png)bin9136 -> 9136 bytes
-rw-r--r--launcher/resources/multimc/128x128/instances/steve_legacy.png (renamed from launcher/resources/multimc/128x128/instances/steve.png)bin4312 -> 4312 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/brick_legacy.png (renamed from launcher/resources/multimc/32x32/instances/brick.png)bin2388 -> 2388 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/chicken_legacy.png (renamed from launcher/resources/multimc/32x32/instances/chicken.png)bin1181 -> 1181 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/creeper_legacy.png (renamed from launcher/resources/multimc/32x32/instances/creeper.png)bin1524 -> 1524 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/diamond_legacy.png (renamed from launcher/resources/multimc/32x32/instances/diamond.png)bin2444 -> 2444 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/dirt_legacy.png (renamed from launcher/resources/multimc/32x32/instances/dirt.png)bin482 -> 482 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/enderpearl_legacy.png (renamed from launcher/resources/multimc/32x32/instances/enderpearl.png)bin2120 -> 2120 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png (renamed from launcher/resources/multimc/32x32/instances/ftb_logo.png)bin1607 -> 1607 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/gear_legacy.png (renamed from launcher/resources/multimc/32x32/instances/gear.png)bin2414 -> 2414 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/gold_legacy.png (renamed from launcher/resources/multimc/32x32/instances/gold.png)bin2366 -> 2366 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/grass_legacy.png (renamed from launcher/resources/multimc/32x32/instances/grass.png)bin618 -> 618 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/herobrine_legacy.png (renamed from launcher/resources/multimc/32x32/instances/herobrine.png)bin1034 -> 1034 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/infinity_legacy.png (renamed from launcher/resources/multimc/32x32/instances/infinity.png)bin1714 -> 1714 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/iron_legacy.png (renamed from launcher/resources/multimc/32x32/instances/iron.png)bin1772 -> 1772 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/magitech_legacy.png (renamed from launcher/resources/multimc/32x32/instances/magitech.png)bin2646 -> 2646 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/meat_legacy.png (renamed from launcher/resources/multimc/32x32/instances/meat.png)bin1514 -> 1514 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/netherstar_legacy.png (renamed from launcher/resources/multimc/32x32/instances/netherstar.png)bin1942 -> 1942 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/planks_legacy.png (renamed from launcher/resources/multimc/32x32/instances/planks.png)bin2299 -> 2299 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/skeleton_legacy.png (renamed from launcher/resources/multimc/32x32/instances/skeleton.png)bin696 -> 696 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/squarecreeper_legacy.png (renamed from launcher/resources/multimc/32x32/instances/squarecreeper.png)bin1623 -> 1623 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/steve_legacy.png (renamed from launcher/resources/multimc/32x32/instances/steve.png)bin969 -> 969 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/stone_legacy.png (renamed from launcher/resources/multimc/32x32/instances/stone.png)bin1866 -> 1866 bytes
-rw-r--r--launcher/resources/multimc/32x32/instances/tnt_legacy.png (renamed from launcher/resources/multimc/32x32/instances/tnt.png)bin378 -> 378 bytes
-rw-r--r--launcher/resources/multimc/50x50/instances/enderman_legacy.png (renamed from launcher/resources/multimc/50x50/instances/enderman.png)bin2429 -> 2429 bytes
-rw-r--r--launcher/resources/multimc/multimc.qrc114
-rw-r--r--launcher/resources/multimc/scalable/delete.svg282
-rw-r--r--launcher/resources/multimc/scalable/export.svg466
-rw-r--r--launcher/resources/multimc/scalable/instances/bee.svg289
-rw-r--r--launcher/resources/multimc/scalable/instances/bee_legacy.svg159
-rw-r--r--launcher/resources/multimc/scalable/instances/brick.svg67
-rw-r--r--launcher/resources/multimc/scalable/instances/chicken.svg130
-rw-r--r--launcher/resources/multimc/scalable/instances/creeper.svg68
-rw-r--r--launcher/resources/multimc/scalable/instances/diamond.svg62
-rw-r--r--launcher/resources/multimc/scalable/instances/dirt.svg52
-rw-r--r--launcher/resources/multimc/scalable/instances/enderman.svg96
-rw-r--r--launcher/resources/multimc/scalable/instances/enderpearl.svg95
-rw-r--r--launcher/resources/multimc/scalable/instances/flame.svg49
-rw-r--r--launcher/resources/multimc/scalable/instances/fox.svg435
-rw-r--r--launcher/resources/multimc/scalable/instances/fox_legacy.svg290
-rw-r--r--launcher/resources/multimc/scalable/instances/ftb_logo.svg82
-rw-r--r--launcher/resources/multimc/scalable/instances/gear.svg68
-rw-r--r--launcher/resources/multimc/scalable/instances/gold.svg63
-rw-r--r--launcher/resources/multimc/scalable/instances/grass.svg84
-rw-r--r--launcher/resources/multimc/scalable/instances/herobrine.svg111
-rw-r--r--launcher/resources/multimc/scalable/instances/iron.svg178
-rw-r--r--launcher/resources/multimc/scalable/instances/magitech.svg85
-rw-r--r--launcher/resources/multimc/scalable/instances/meat.svg121
-rw-r--r--launcher/resources/multimc/scalable/instances/modrinth.svg74
-rw-r--r--launcher/resources/multimc/scalable/instances/netherstar.svg81
-rw-r--r--launcher/resources/multimc/scalable/instances/planks.svg93
-rw-r--r--launcher/resources/multimc/scalable/instances/skeleton.svg134
-rw-r--r--launcher/resources/multimc/scalable/instances/squarecreeper.svg81
-rw-r--r--launcher/resources/multimc/scalable/instances/steve.svg154
-rw-r--r--launcher/resources/multimc/scalable/instances/stone.svg55
-rw-r--r--launcher/resources/multimc/scalable/instances/tnt.svg126
-rw-r--r--launcher/resources/multimc/scalable/launch.svg96
-rw-r--r--launcher/resources/multimc/scalable/rename.svg437
-rw-r--r--launcher/resources/multimc/scalable/shortcut.svg157
-rw-r--r--launcher/resources/multimc/scalable/tag.svg398
-rw-r--r--launcher/resources/pe_blue/pe_blue.qrc1
-rw-r--r--launcher/resources/pe_blue/scalable/shortcut.svg41
-rw-r--r--launcher/resources/pe_colored/pe_colored.qrc1
-rw-r--r--launcher/resources/pe_colored/scalable/shortcut.svg13
-rw-r--r--launcher/resources/pe_dark/pe_dark.qrc1
-rw-r--r--launcher/resources/pe_dark/scalable/shortcut.svg41
-rw-r--r--launcher/resources/pe_light/pe_light.qrc1
-rw-r--r--launcher/resources/pe_light/scalable/shortcut.svg41
-rw-r--r--launcher/ui/MainWindow.cpp187
-rw-r--r--launcher/ui/MainWindow.h2
-rw-r--r--launcher/ui/dialogs/ImportResourcePackDialog.cpp66
-rw-r--r--launcher/ui/dialogs/ImportResourcePackDialog.h27
-rw-r--r--launcher/ui/dialogs/ImportResourcePackDialog.ui74
-rw-r--r--launcher/ui/pages/global/JavaPage.cpp34
-rw-r--r--launcher/ui/pages/global/JavaPage.h3
-rw-r--r--launcher/ui/pages/global/JavaPage.ui82
-rw-r--r--launcher/ui/pages/instance/ExternalResourcesPage.cpp11
-rw-r--r--launcher/ui/pages/instance/ExternalResourcesPage.h1
-rw-r--r--launcher/ui/pages/instance/InstanceSettingsPage.cpp35
-rw-r--r--launcher/ui/pages/instance/InstanceSettingsPage.h3
-rw-r--r--launcher/ui/pages/instance/InstanceSettingsPage.ui67
-rw-r--r--launcher/ui/pages/instance/ModFolderPage.cpp2
-rw-r--r--launcher/ui/pages/instance/ModFolderPage.h2
-rw-r--r--launcher/ui/pages/instance/VersionPage.cpp16
-rw-r--r--launcher/ui/pages/instance/VersionPage.h4
-rw-r--r--launcher/ui/pages/instance/VersionPage.ui9
-rw-r--r--launcher/ui/widgets/JavaSettingsWidget.cpp42
-rw-r--r--launcher/ui/widgets/JavaSettingsWidget.h9
-rw-r--r--nix/default.nix95
-rw-r--r--program_info/instance_icons.svg2720
141 files changed, 8895 insertions, 788 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c0e5b50a..1ba5d0e4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -15,6 +15,9 @@ on:
SPARKLE_ED25519_KEY:
description: Private key for signing Sparkle updates
required: false
+ CACHIX_AUTH_TOKEN:
+ description: Private token for authenticating against Cachix cache
+ required: false
jobs:
build:
@@ -35,17 +38,11 @@ jobs:
qt_tools: ''
- os: windows-2022
- name: "Windows-Legacy"
- msystem: clang32
- qt_ver: 5
-
- - os: windows-2022
- name: "Windows"
+ name: "Windows-MinGW-w64"
msystem: clang64
- qt_ver: 6
- os: windows-2022
- name: "Windows-Legacy-MSVC"
+ name: "Windows-MSVC-Legacy"
msystem: ''
architecture: 'win32'
vcvars_arch: 'amd64_x86'
@@ -64,7 +61,19 @@ jobs:
qt_ver: 6
qt_host: windows
qt_arch: ''
- qt_version: '6.4.1'
+ qt_version: '6.4.0'
+ qt_modules: 'qt5compat qtimageformats'
+ qt_tools: ''
+
+ - os: windows-2022
+ name: "Windows-MSVC-arm64"
+ msystem: ''
+ architecture: 'arm64'
+ vcvars_arch: 'amd64_arm64'
+ qt_ver: 6
+ qt_host: windows
+ qt_arch: 'win64_msvc2019_arm64'
+ qt_version: '6.4.0'
qt_modules: 'qt5compat qtimageformats'
qt_tools: ''
@@ -120,12 +129,12 @@ jobs:
cmake:p
extra-cmake-modules:p
ninja:p
- qt${{ matrix.qt_ver }}-base:p
- qt${{ matrix.qt_ver }}-svg:p
- qt${{ matrix.qt_ver }}-imageformats:p
- quazip-qt${{ matrix.qt_ver }}:p
+ qt6-base:p
+ qt6-svg:p
+ qt6-imageformats:p
+ quazip-qt6:p
ccache:p
- ${{ matrix.qt_ver == 6 && 'qt6-5compat:p' || '' }}
+ qt6-5compat:p
- name: Force newer ccache
if: runner.os == 'Windows' && matrix.msystem == '' && inputs.build_type == 'Debug'
@@ -136,7 +145,7 @@ jobs:
if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug'
uses: hendrikmuhs/ccache-action@v1.2.5
with:
- key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}
+ key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }}
- name: Setup ccache (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug'
@@ -159,9 +168,9 @@ jobs:
uses: actions/cache@v3.0.11
with:
path: '${{ github.workspace }}\.ccache'
- key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}
+ key: ${{ matrix.os }}-mingw-w64
restore-keys: |
- ${{ matrix.os }}-qt${{ matrix.qt_ver }}
+ ${{ matrix.os }}-mingw-w64
- name: Set short version
shell: bash
@@ -185,8 +194,23 @@ jobs:
if: runner.os == 'Linux' && matrix.qt_ver != 6
run: |
sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5
-
- - name: Install Qt (macOS, AppImage & Windows MSVC)
+
+ - name: Install host Qt (Windows MSVC arm64)
+ if: runner.os == 'Windows' && matrix.architecture == 'arm64'
+ uses: jurplel/install-qt-action@v3
+ with:
+ version: ${{ matrix.qt_version }}
+ host: 'windows'
+ target: 'desktop'
+ arch: ''
+ modules: ${{ matrix.qt_modules }}
+ tools: ${{ matrix.qt_tools }}
+ cache: ${{ inputs.is_qt_cached }}
+ cache-key-prefix: host-qt-arm64-windows
+ dir: ${{ github.workspace }}\HostQt
+ set-env: false
+
+ - name: Install Qt (macOS, Linux, Qt 6 & Windows MSVC)
if: runner.os == 'Linux' && matrix.qt_ver == 6 || runner.os == 'macOS' || (runner.os == 'Windows' && matrix.msystem == '')
uses: jurplel/install-qt-action@v3
with:
@@ -198,6 +222,13 @@ jobs:
tools: ${{ matrix.qt_tools }}
cache: ${{ inputs.is_qt_cached }}
+ - name: Install MSVC (Windows MSVC)
+ if: runner.os == 'Windows' && matrix.msystem == ''
+ uses: ilammy/msvc-dev-cmd@v1
+ with:
+ vsversion: 2022
+ arch: ${{ matrix.vcvars_arch }}
+
- name: Prepare AppImage (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 5
run: |
@@ -207,6 +238,11 @@ jobs:
${{ github.workspace }}/.github/scripts/prepare_JREs.sh
+ - name: Add QT_HOST_PATH var (Windows MSVC arm64)
+ if: runner.os == 'Windows' && matrix.architecture == 'arm64'
+ run: |
+ echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2019_64" >> $env:GITHUB_ENV
+
##
# CONFIGURE
##
@@ -225,12 +261,12 @@ jobs:
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
- cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=${{ matrix.name }} -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -G Ninja
+ cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=${{ matrix.name }} -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -G Ninja
- name: Configure CMake (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == ''
run: |
- cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=${{ matrix.name }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}}
+ cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=${{ matrix.name }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON
# https://github.com/ccache/ccache/wiki/MS-Visual-Studio (I coudn't figure out the compiler prefix)
if ("${{ env.CCACHE_VAR }}")
{
@@ -283,7 +319,7 @@ jobs:
ctest -E "^example64|example$" --test-dir build --output-on-failure
- name: Test (Windows MSVC)
- if: runner.os == 'Windows' && matrix.msystem == ''
+ if: runner.os == 'Windows' && matrix.msystem == '' && matrix.architecture != 'arm64'
run: |
ctest -E "^example64|example$" --test-dir build --output-on-failure -C ${{ inputs.build_type }}
@@ -321,23 +357,12 @@ jobs:
EOF
fi
- - name: Add VC Enviroment Variables
- if: runner.os == 'Windows' && matrix.msystem == ''
- uses: ilammy/msvc-dev-cmd@v1
- with:
- arch: ${{ matrix.vcvars_arch }}
-
- name: Package (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
cmake --install ${{ env.BUILD_DIR }}
- cd ${{ env.INSTALL_DIR }}
- if [ "${{ matrix.qt_ver }}" == "5" ]; then
- cp /clang32/bin/libcrypto-1_1.dll /clang32/bin/libssl-1_1.dll ./
- fi
-
- name: Package (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == ''
run: |
@@ -526,3 +551,33 @@ jobs:
bundle: "Prism Launcher.flatpak"
manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml
cache-key: flatpak-${{ github.sha }}-x86_64
+
+ nix:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ package:
+ - prismlauncher
+ - prismlauncher-qt5
+ steps:
+ - name: Clone repository
+ if: inputs.build_type == 'Debug'
+ uses: actions/checkout@v3
+ with:
+ submodules: 'true'
+ - name: Install nix
+ if: inputs.build_type == 'Debug'
+ uses: cachix/install-nix-action@v18
+ with:
+ install_url: https://nixos.org/nix/install
+ extra_nix_config: |
+ auto-optimise-store = true
+ experimental-features = nix-command flakes
+ - uses: cachix/cachix-action@v12
+ if: inputs.build_type == 'Debug'
+ with:
+ name: prismlauncher
+ authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
+ - name: Build
+ if: inputs.build_type == 'Debug'
+ run: nix build .#${{ matrix.package }} --print-build-logs
diff --git a/.github/workflows/trigger_builds.yml b/.github/workflows/trigger_builds.yml
index 44751fbc..a08193a0 100644
--- a/.github/workflows/trigger_builds.yml
+++ b/.github/workflows/trigger_builds.yml
@@ -8,7 +8,6 @@ on:
- '**.md'
- '**/LICENSE'
- 'flake.lock'
- - '**.nix'
- 'packages/**'
- '.github/ISSUE_TEMPLATE/**'
- '.markdownlint**'
@@ -17,7 +16,6 @@ on:
- '**.md'
- '**/LICENSE'
- 'flake.lock'
- - '**.nix'
- 'packages/**'
- '.github/ISSUE_TEMPLATE/**'
- '.markdownlint**'
@@ -33,3 +31,4 @@ jobs:
is_qt_cached: true
secrets:
SPARKLE_ED25519_KEY: ${{ secrets.SPARKLE_ED25519_KEY }}
+ CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml
index 8baa9693..a2f89819 100644
--- a/.github/workflows/trigger_release.yml
+++ b/.github/workflows/trigger_release.yml
@@ -46,15 +46,26 @@ jobs:
tar -czf PrismLauncher-${{ env.VERSION }}.tar.gz PrismLauncher-${{ env.VERSION }}
- for d in PrismLauncher-Windows-*; do
+ for d in PrismLauncher-Windows-MSVC*; do
cd "${d}" || continue
- MSVC="$(echo -n ${d} | grep -o MSVC || true)"
LEGACY="$(echo -n ${d} | grep -o Legacy || true)"
+ ARM64="$(echo -n ${d} | grep -o arm64 || true)"
INST="$(echo -n ${d} | grep -o Setup || true)"
PORT="$(echo -n ${d} | grep -o Portable || true)"
- NAME="PrismLauncher-Windows"
- test -z "${MSVC}" && NAME="${NAME}-MinGW" || NAME="${NAME}-MSVC"
+ NAME="PrismLauncher-Windows-MSVC"
test -z "${LEGACY}" || NAME="${NAME}-Legacy"
+ test -z "${ARM64}" || NAME="${NAME}-arm64"
+ test -z "${PORT}" || NAME="${NAME}-Portable"
+ test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe
+ test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" *
+ cd ..
+ done
+
+ for d in PrismLauncher-Windows-MinGW-w64*; do
+ cd "${d}" || continue
+ INST="$(echo -n ${d} | grep -o Setup || true)"
+ PORT="$(echo -n ${d} | grep -o Portable || true)"
+ NAME="PrismLauncher-Windows-MinGW-w64"
test -z "${PORT}" || NAME="${NAME}-Portable"
test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe
test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" *
@@ -77,15 +88,15 @@ jobs:
PrismLauncher-Linux-${{ env.VERSION }}-x86_64.AppImage
PrismLauncher-Linux-Qt6-${{ env.VERSION }}.tar.gz
PrismLauncher-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz
- PrismLauncher-Windows-MinGW-Legacy-${{ env.VERSION }}.zip
- PrismLauncher-Windows-MinGW-Legacy-Portable-${{ env.VERSION }}.zip
- PrismLauncher-Windows-MinGW-Legacy-Setup-${{ env.VERSION }}.exe
- PrismLauncher-Windows-MinGW-${{ env.VERSION }}.zip
- PrismLauncher-Windows-MinGW-Portable-${{ env.VERSION }}.zip
- PrismLauncher-Windows-MinGW-Setup-${{ env.VERSION }}.exe
+ PrismLauncher-Windows-MinGW-w64-${{ env.VERSION }}.zip
+ PrismLauncher-Windows-MinGW-w64-Portable-${{ env.VERSION }}.zip
+ PrismLauncher-Windows-MinGW-w64-Setup-${{ env.VERSION }}.exe
PrismLauncher-Windows-MSVC-Legacy-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-Legacy-Portable-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-Legacy-Setup-${{ env.VERSION }}.exe
+ PrismLauncher-Windows-MSVC-arm64-${{ env.VERSION }}.zip
+ PrismLauncher-Windows-MSVC-arm64-Portable-${{ env.VERSION }}.zip
+ PrismLauncher-Windows-MSVC-arm64-Setup-${{ env.VERSION }}.exe
PrismLauncher-Windows-MSVC-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-Portable-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-Setup-${{ env.VERSION }}.exe
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8fc0d326..2bdd4811 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -221,7 +221,7 @@ if(Launcher_QT_VERSION_MAJOR EQUAL 5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUNICODE -D_UNICODE")
elseif(Launcher_QT_VERSION_MAJOR EQUAL 6)
set(QT_VERSION_MAJOR 6)
- find_package(Qt6 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml Core5Compat)
+ find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat)
list(APPEND Launcher_QT_LIBS Qt6::Core5Compat)
if(NOT Launcher_FORCE_BUNDLED_LIBS)
@@ -235,12 +235,16 @@ else()
message(FATAL_ERROR "Qt version ${Launcher_QT_VERSION_MAJOR} is not supported")
endif()
-include(ECMQueryQt)
-ecm_query_qt(QT_PLUGINS_DIR QT_INSTALL_PLUGINS)
-ecm_query_qt(QT_LIBS_DIR QT_INSTALL_LIBS)
-ecm_query_qt(QT_LIBEXECS_DIR QT_INSTALL_LIBEXECS)
-ecm_query_qt(QT_DATA_DIR QT_HOST_DATA)
-set(QT_MKSPECS_DIR ${QT_DATA_DIR}/mkspecs)
+if(Launcher_QT_VERSION_MAJOR EQUAL 5)
+ include(ECMQueryQt)
+ ecm_query_qt(QT_PLUGINS_DIR QT_INSTALL_PLUGINS)
+ ecm_query_qt(QT_LIBS_DIR QT_INSTALL_LIBS)
+ ecm_query_qt(QT_LIBEXECS_DIR QT_INSTALL_LIBEXECS)
+else()
+ set(QT_PLUGINS_DIR ${QT${QT_VERSION_MAJOR}_INSTALL_PREFIX}/${QT${QT_VERSION_MAJOR}_INSTALL_PLUGINS})
+ set(QT_LIBS_DIR ${QT${QT_VERSION_MAJOR}_INSTALL_PREFIX}/${QT${QT_VERSION_MAJOR}_INSTALL_LIBS})
+ set(QT_LIBEXECS_DIR ${QT${QT_VERSION_MAJOR}_INSTALL_PREFIX}/${QT${QT_VERSION_MAJOR}_INSTALL_LIBEXECS})
+endif()
# NOTE: Qt 6 already sets this by default
if (Qt5_POSITION_INDEPENDENT_CODE)
@@ -368,11 +372,11 @@ if(NOT ZLIB_FOUND)
set(SKIP_INSTALL_ALL ON)
add_subdirectory(libraries/zlib EXCLUDE_FROM_ALL)
- set(ZLIB_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib" "${CMAKE_CURRENT_BINARY_DIR}/libraries/zlib")
+ set(ZLIB_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib" "${CMAKE_CURRENT_BINARY_DIR}/libraries/zlib" CACHE STRING "")
set_target_properties(zlibstatic PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIR}")
add_library(ZLIB::ZLIB ALIAS zlibstatic)
- set(ZLIB_LIBRARY ZLIB::ZLIB)
- set(ZLIB_FOUND true)
+ set(ZLIB_LIBRARY ZLIB::ZLIB CACHE STRING "zlib library name")
+
find_package(ZLIB REQUIRED)
else()
message(STATUS "Using system zlib")
diff --git a/flake.nix b/flake.nix
index d4a25338..b1e07c91 100644
--- a/flake.nix
+++ b/flake.nix
@@ -23,8 +23,8 @@
pkgs = forAllSystems (system: nixpkgs.legacyPackages.${system});
packagesFn = pkgs: rec {
- prismlauncher = pkgs.libsForQt5.callPackage ./nix { inherit version self libnbtplusplus tomlplusplus; };
- prismlauncher-qt6 = pkgs.qt6Packages.callPackage ./nix { inherit version self libnbtplusplus tomlplusplus; };
+ prismlauncher-qt5 = pkgs.libsForQt5.callPackage ./nix { inherit version self libnbtplusplus tomlplusplus; };
+ prismlauncher = pkgs.qt6Packages.callPackage ./nix { inherit version self libnbtplusplus tomlplusplus; };
};
in
{
diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index ea8d2326..4ba9eb9b 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -915,13 +915,13 @@ bool Application::createSetupWizard()
return false;
}
-bool Application::event(QEvent* event) {
+bool Application::event(QEvent* event)
+{
#ifdef Q_OS_MACOS
if (event->type() == QEvent::ApplicationStateChange) {
auto ev = static_cast<QApplicationStateChangeEvent*>(event);
- if (m_prevAppState == Qt::ApplicationActive
- && ev->applicationState() == Qt::ApplicationActive) {
+ if (m_prevAppState == Qt::ApplicationActive && ev->applicationState() == Qt::ApplicationActive) {
emit clickedOnDock();
}
m_prevAppState = ev->applicationState();
diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt
index e8afa6b8..3eb765dc 100644
--- a/launcher/CMakeLists.txt
+++ b/launcher/CMakeLists.txt
@@ -796,6 +796,8 @@ SET(LAUNCHER_SOURCES
ui/dialogs/ExportInstanceDialog.h
ui/dialogs/IconPickerDialog.cpp
ui/dialogs/IconPickerDialog.h
+ ui/dialogs/ImportResourcePackDialog.cpp
+ ui/dialogs/ImportResourcePackDialog.h
ui/dialogs/LoginDialog.cpp
ui/dialogs/LoginDialog.h
ui/dialogs/MSALoginDialog.cpp
@@ -944,6 +946,7 @@ qt_wrap_ui(LAUNCHER_UI
ui/dialogs/SkinUploadDialog.ui
ui/dialogs/ExportInstanceDialog.ui
ui/dialogs/IconPickerDialog.ui
+ ui/dialogs/ImportResourcePackDialog.ui
ui/dialogs/MSALoginDialog.ui
ui/dialogs/OfflineLoginDialog.ui
ui/dialogs/AboutDialog.ui
diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp
index 987f4e74..1da50e21 100644
--- a/launcher/FileSystem.cpp
+++ b/launcher/FileSystem.cpp
@@ -49,6 +49,7 @@
#include "StringUtils.h"
#if defined Q_OS_WIN32
+#define WIN32_LEAN_AND_MEAN
#include <objbase.h>
#include <objidl.h>
#include <shlguid.h>
@@ -343,12 +344,37 @@ QString getDesktopDir()
}
// Cross-platform Shortcut creation
-bool createShortCut(QString location, QString dest, QStringList args, QString name, QString icon)
+bool createShortcut(QString destination, QString target, QStringList args, QString name, QString icon)
{
-#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
- location = PathCombine(location, name + ".desktop");
+#if defined(Q_OS_MACOS)
+ destination += ".command";
- QFile f(location);
+ QFile f(destination);
+ f.open(QIODevice::WriteOnly | QIODevice::Text);
+ QTextStream stream(&f);
+
+ QString argstring;
+ if (!args.empty())
+ argstring = " \"" + args.join("\" \"") + "\"";
+
+ stream << "#!/bin/bash"
+ << "\n";
+ stream << "\""
+ << target
+ << "\" "
+ << argstring
+ << "\n";
+
+ stream.flush();
+ f.close();
+
+ f.setPermissions(f.permissions() | QFileDevice::ExeOwner | QFileDevice::ExeGroup | QFileDevice::ExeOther);
+
+ return true;
+#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
+ destination += ".desktop";
+
+ QFile f(destination);
f.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream stream(&f);
@@ -360,10 +386,12 @@ bool createShortCut(QString location, QString dest, QStringList args, QString na
<< "\n";
stream << "Type=Application"
<< "\n";
- stream << "TryExec=" << dest.toLocal8Bit() << "\n";
- stream << "Exec=" << dest.toLocal8Bit() << argstring.toLocal8Bit() << "\n";
+ stream << "Exec=\"" << target.toLocal8Bit() << "\"" << argstring.toLocal8Bit() << "\n";
stream << "Name=" << name.toLocal8Bit() << "\n";
- stream << "Icon=" << icon.toLocal8Bit() << "\n";
+ if (!icon.isEmpty())
+ {
+ stream << "Icon=" << icon.toLocal8Bit() << "\n";
+ }
stream.flush();
f.close();
@@ -371,25 +399,132 @@ bool createShortCut(QString location, QString dest, QStringList args, QString na
f.setPermissions(f.permissions() | QFileDevice::ExeOwner | QFileDevice::ExeGroup | QFileDevice::ExeOther);
return true;
-#elif defined Q_OS_WIN
- // TODO: Fix
- // QFile file(PathCombine(location, name + ".lnk"));
- // WCHAR *file_w;
- // WCHAR *dest_w;
- // WCHAR *args_w;
- // file.fileName().toWCharArray(file_w);
- // dest.toWCharArray(dest_w);
-
- // QString argStr;
- // for (int i = 0; i < args.count(); i++)
- // {
- // argStr.append(args[i]);
- // argStr.append(" ");
- // }
- // argStr.toWCharArray(args_w);
-
- // return SUCCEEDED(CreateLink(file_w, dest_w, args_w));
- return false;
+#elif defined(Q_OS_WIN)
+ QFileInfo targetInfo(target);
+
+ if (!targetInfo.exists())
+ {
+ qWarning() << "Target file does not exist!";
+ return false;
+ }
+
+ target = targetInfo.absoluteFilePath();
+
+ if (target.length() >= MAX_PATH)
+ {
+ qWarning() << "Target file path is too long!";
+ return false;
+ }
+
+ if (!icon.isEmpty() && icon.length() >= MAX_PATH)
+ {
+ qWarning() << "Icon path is too long!";
+ return false;
+ }
+
+ destination += ".lnk";
+
+ if (destination.length() >= MAX_PATH)
+ {
+ qWarning() << "Destination path is too long!";
+ return false;
+ }
+
+ QString argStr;
+ int argCount = args.count();
+ for (int i = 0; i < argCount; i++)
+ {
+ if (args[i].contains(' '))
+ {
+ argStr.append('"').append(args[i]).append('"');
+ }
+ else
+ {
+ argStr.append(args[i]);
+ }
+
+ if (i < argCount - 1)
+ {
+ argStr.append(" ");
+ }
+ }
+
+ if (argStr.length() >= MAX_PATH)
+ {
+ qWarning() << "Arguments string is too long!";
+ return false;
+ }
+
+ HRESULT hres;
+
+ // ...yes, you need to initialize the entire COM stack just to make a shortcut
+ hres = CoInitialize(nullptr);
+ if (FAILED(hres))
+ {
+ qWarning() << "Failed to initialize COM!";
+ return false;
+ }
+
+ WCHAR wsz[MAX_PATH];
+
+ IShellLink* psl;
+
+ // create an IShellLink instance - this stores the shortcut's attributes
+ hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
+ if (SUCCEEDED(hres))
+ {
+ wmemset(wsz, 0, MAX_PATH);
+ target.toWCharArray(wsz);
+ psl->SetPath(wsz);
+
+ wmemset(wsz, 0, MAX_PATH);
+ argStr.toWCharArray(wsz);
+ psl->SetArguments(wsz);
+
+ wmemset(wsz, 0, MAX_PATH);
+ targetInfo.absolutePath().toWCharArray(wsz);
+ psl->SetWorkingDirectory(wsz); // "Starts in" attribute
+
+ if (!icon.isEmpty())
+ {
+ wmemset(wsz, 0, MAX_PATH);
+ icon.toWCharArray(wsz);
+ psl->SetIconLocation(wsz, 0);
+ }
+
+ // query an IPersistFile interface from our IShellLink instance
+ // this is the interface that will actually let us save the shortcut to disk!
+ IPersistFile* ppf;
+ hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
+ if (SUCCEEDED(hres))
+ {
+ wmemset(wsz, 0, MAX_PATH);
+ destination.toWCharArray(wsz);
+ hres = ppf->Save(wsz, TRUE);
+ if (FAILED(hres))
+ {
+ qWarning() << "IPresistFile->Save() failed";
+ qWarning() << "hres = " << hres;
+ }
+ ppf->Release();
+ }
+ else
+ {
+ qWarning() << "Failed to query IPersistFile interface from IShellLink instance";
+ qWarning() << "hres = " << hres;
+ }
+ psl->Release();
+ }
+ else
+ {
+ qWarning() << "Failed to create IShellLink instance";
+ qWarning() << "hres = " << hres;
+ }
+
+ // go away COM, nobody likes you
+ CoUninitialize();
+
+ return SUCCEEDED(hres);
#else
qWarning("Desktop Shortcuts not supported on your platform!");
return false;
diff --git a/launcher/FileSystem.h b/launcher/FileSystem.h
index a9a81123..ac893725 100644
--- a/launcher/FileSystem.h
+++ b/launcher/FileSystem.h
@@ -172,4 +172,9 @@ QString getDesktopDir();
// Overrides one folder with the contents of another, preserving items exclusive to the first folder
// Equivalent to doing QDir::rename, but allowing for overrides
bool overrideFolder(QString overwritten_path, QString override_path);
+
+/**
+ * Creates a shortcut to the specified target file at the specified destination path.
+ */
+bool createShortcut(QString destination, QString target, QStringList args, QString name, QString icon);
}
diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp
index 3971effa..73dc1789 100644
--- a/launcher/InstanceCreationTask.cpp
+++ b/launcher/InstanceCreationTask.cpp
@@ -25,9 +25,13 @@ void InstanceCreationTask::executeTask()
return;
qWarning() << "Instance creation failed!";
- if (!m_error_message.isEmpty())
+ if (!m_error_message.isEmpty()) {
qWarning() << "Reason: " << m_error_message;
- emitFailed(tr("Error while creating new instance."));
+ emitFailed(tr("Error while creating new instance:\n%1").arg(m_error_message));
+ } else {
+ emitFailed(tr("Error while creating new instance."));
+ }
+
return;
}
diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp
index b490620d..5f459649 100644
--- a/launcher/InstanceImportTask.cpp
+++ b/launcher/InstanceImportTask.cpp
@@ -164,18 +164,14 @@ void InstanceImportTask::processZipPack()
}
else
{
- QString mmcRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "instance.cfg");
- QString flameRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "manifest.json");
+ QStringList paths_to_ignore { "overrides/" };
- if (!mmcRoot.isNull())
- {
+ if (QString mmcRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "instance.cfg", paths_to_ignore); !mmcRoot.isNull()) {
// process as MultiMC instance/pack
qDebug() << "MultiMC:" << mmcRoot;
root = mmcRoot;
m_modpackType = ModpackType::MultiMC;
- }
- else if(!flameRoot.isNull())
- {
+ } else if (QString flameRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "manifest.json", paths_to_ignore); !flameRoot.isNull()) {
// process as Flame pack
qDebug() << "Flame:" << flameRoot;
root = flameRoot;
diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp
index 9f4e968f..f6600343 100644
--- a/launcher/MMCZip.cpp
+++ b/launcher/MMCZip.cpp
@@ -39,6 +39,7 @@
#include "MMCZip.h"
#include "FileSystem.h"
+#include <QCoreApplication>
#include <QDebug>
// ours
@@ -228,23 +229,27 @@ bool MMCZip::createModdedJar(QString sourceJarPath, QString targetJarPath, const
}
// ours
-QString MMCZip::findFolderOfFileInZip(QuaZip * zip, const QString & what, const QString &root)
+QString MMCZip::findFolderOfFileInZip(QuaZip* zip, const QString& what, const QStringList& ignore_paths, const QString& root)
{
QuaZipDir rootDir(zip, root);
- for(auto fileName: rootDir.entryList(QDir::Files))
- {
- if(fileName == what)
+ for (auto&& fileName : rootDir.entryList(QDir::Files)) {
+ if (fileName == what)
return root;
+
+ QCoreApplication::processEvents();
}
- for(auto fileName: rootDir.entryList(QDir::Dirs))
- {
- QString result = findFolderOfFileInZip(zip, what, root + fileName);
- if(!result.isEmpty())
- {
+
+ // Recurse the search to non-ignored subfolders
+ for (auto&& fileName : rootDir.entryList(QDir::Dirs)) {
+ if (ignore_paths.contains(fileName))
+ continue;
+
+ QString result = findFolderOfFileInZip(zip, what, ignore_paths, root + fileName);
+ if (!result.isEmpty())
return result;
- }
}
- return QString();
+
+ return {};
}
// ours
diff --git a/launcher/MMCZip.h b/launcher/MMCZip.h
index ce9775bd..81f9cb90 100644
--- a/launcher/MMCZip.h
+++ b/launcher/MMCZip.h
@@ -80,9 +80,11 @@ namespace MMCZip
/**
* Find a single file in archive by file name (not path)
*
+ * \param ignore_paths paths to skip when recursing the search
+ *
* \return the path prefix where the file is
*/
- QString findFolderOfFileInZip(QuaZip * zip, const QString & what, const QString &root = QString(""));
+ QString findFolderOfFileInZip(QuaZip * zip, const QString & what, const QStringList& ignore_paths = {}, const QString &root = QString(""));
/**
* Find a multiple files of the same name in archive by file name
diff --git a/launcher/minecraft/Agent.h b/launcher/minecraft/Agent.h
index 01109daf..374e6e94 100644
--- a/launcher/minecraft/Agent.h
+++ b/launcher/minecraft/Agent.h
@@ -10,7 +10,7 @@ typedef std::shared_ptr<Agent> AgentPtr;
class Agent {
public:
- Agent(LibraryPtr library, QString &argument)
+ Agent(LibraryPtr library, const QString &argument)
{
m_library = library;
m_argument = argument;
diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp
index 70d0b949..a3adb268 100644
--- a/launcher/minecraft/MinecraftInstance.cpp
+++ b/launcher/minecraft/MinecraftInstance.cpp
@@ -1110,8 +1110,6 @@ std::shared_ptr<ResourcePackFolderModel> MinecraftInstance::resourcePackList() c
if (!m_resource_pack_list)
{
m_resource_pack_list.reset(new ResourcePackFolderModel(resourcePacksDir()));
- m_resource_pack_list->enableInteraction(!isRunning());
- connect(this, &BaseInstance::runningStatusChanged, m_resource_pack_list.get(), &ResourcePackFolderModel::disableInteraction);
}
return m_resource_pack_list;
}
@@ -1121,8 +1119,6 @@ std::shared_ptr<TexturePackFolderModel> MinecraftInstance::texturePackList() con
if (!m_texture_pack_list)
{
m_texture_pack_list.reset(new TexturePackFolderModel(texturePacksDir()));
- m_texture_pack_list->disableInteraction(isRunning());
- connect(this, &BaseInstance::runningStatusChanged, m_texture_pack_list.get(), &ModFolderModel::disableInteraction);
}
return m_texture_pack_list;
}
@@ -1132,8 +1128,6 @@ std::shared_ptr<ShaderPackFolderModel> MinecraftInstance::shaderPackList() const
if (!m_shader_pack_list)
{
m_shader_pack_list.reset(new ShaderPackFolderModel(shaderPacksDir()));
- m_shader_pack_list->disableInteraction(isRunning());
- connect(this, &BaseInstance::runningStatusChanged, m_shader_pack_list.get(), &ModFolderModel::disableInteraction);
}
return m_shader_pack_list;
}
diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp
index 6ce525eb..43fa3f8d 100644
--- a/launcher/minecraft/PackProfile.cpp
+++ b/launcher/minecraft/PackProfile.cpp
@@ -1,7 +1,8 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ * Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -47,7 +48,6 @@
#include "Exception.h"
#include "minecraft/OneSixVersionFormat.h"
#include "FileSystem.h"
-#include "meta/Index.h"
#include "minecraft/MinecraftInstance.h"
#include "Json.h"
@@ -55,7 +55,6 @@
#include "PackProfile_p.h"
#include "ComponentUpdateTask.h"
-#include "Application.h"
#include "modplatform/ModAPI.h"
static const QMap<QString, ModAPI::ModLoaderType> modloaderMapping{
@@ -738,6 +737,11 @@ void PackProfile::installCustomJar(QString selectedFile)
installCustomJar_internal(selectedFile);
}
+void PackProfile::installAgents(QStringList selectedFiles)
+{
+ installAgents_internal(selectedFiles);
+}
+
bool PackProfile::installEmpty(const QString& uid, const QString& name)
{
QString patchDir = FS::PathCombine(d->m_instance->instanceRoot(), "patches");
@@ -832,18 +836,14 @@ bool PackProfile::installJarMods_internal(QStringList filepaths)
for(auto filepath:filepaths)
{
QFileInfo sourceInfo(filepath);
- auto uuid = QUuid::createUuid();
- QString id = uuid.toString().remove('{').remove('}');
+ QString id = QUuid::createUuid().toString(QUuid::WithoutBraces);
QString target_filename = id + ".jar";
- QString target_id = "org.multimc.jarmod." + id;
+ QString target_id = "custom.jarmod." + id;
QString target_name = sourceInfo.completeBaseName() + " (jar mod)";
QString finalPath = FS::PathCombine(d->m_instance->jarModsDir(), target_filename);
QFileInfo targetInfo(finalPath);
- if(targetInfo.exists())
- {
- return false;
- }
+ Q_ASSERT(!targetInfo.exists());
if (!QFile::copy(sourceInfo.absoluteFilePath(),QFileInfo(finalPath).absoluteFilePath()))
{
@@ -852,7 +852,7 @@ bool PackProfile::installJarMods_internal(QStringList filepaths)
auto f = std::make_shared<VersionFile>();
auto jarMod = std::make_shared<Library>();
- jarMod->setRawName(GradleSpecifier("org.multimc.jarmods:" + id + ":1"));
+ jarMod->setRawName(GradleSpecifier("custom.jarmods:" + id + ":1"));
jarMod->setFilename(target_filename);
jarMod->setDisplayName(sourceInfo.completeBaseName());
jarMod->setHint("local");
@@ -892,7 +892,7 @@ bool PackProfile::installCustomJar_internal(QString filepath)
return false;
}
- auto specifier = GradleSpecifier("org.multimc:customjar:1");
+ auto specifier = GradleSpecifier("custom:customjar:1");
QFileInfo sourceInfo(filepath);
QString target_filename = specifier.getFileName();
QString target_id = specifier.artifactId();
@@ -939,6 +939,64 @@ bool PackProfile::installCustomJar_internal(QString filepath)
return true;
}
+bool PackProfile::installAgents_internal(QStringList filepaths)
+{
+ // FIXME code duplication
+ const QString patchDir = FS::PathCombine(d->m_instance->instanceRoot(), "patches");
+ if (!FS::ensureFolderPathExists(patchDir))
+ return false;
+
+ const QString libDir = d->m_instance->getLocalLibraryPath();
+ if (!FS::ensureFolderPathExists(libDir))
+ return false;
+
+ for (const QString& source : filepaths) {
+ const QFileInfo sourceInfo(source);
+ const QString id = QUuid::createUuid().toString(QUuid::WithoutBraces);
+ const QString targetBaseName = id + ".jar";
+ const QString targetId = "custom.agent." + id;
+ const QString targetName = sourceInfo.completeBaseName() + " (agent)";
+ const QString target = FS::PathCombine(d->m_instance->getLocalLibraryPath(), targetBaseName);
+
+ const QFileInfo targetInfo(target);
+ Q_ASSERT(!targetInfo.exists());
+
+ if (!QFile::copy(source, target))
+ return false;
+
+ auto versionFile = std::make_shared<VersionFile>();
+
+ auto agent = std::make_shared<Library>();
+
+ agent->setRawName("custom.agents:" + id + ":1");
+ agent->setFilename(targetBaseName);
+ agent->setDisplayName(sourceInfo.completeBaseName());
+ agent->setHint("local");
+
+ versionFile->agents.append(std::make_shared<Agent>(agent, QString()));
+
+ versionFile->name = targetName;
+ versionFile->uid = targetId;
+
+ QFile patchFile(FS::PathCombine(patchDir, targetId + ".json"));
+
+ if (!patchFile.open(QFile::WriteOnly)) {
+ qCritical() << "Error opening" << patchFile.fileName() << "for reading:" << patchFile.errorString();
+ return false;
+ }
+
+ patchFile.write(OneSixVersionFormat::versionFileToJson(versionFile).toJson());
+ patchFile.close();
+
+ appendComponent(new Component(this, versionFile->uid, versionFile));
+ }
+
+ scheduleSave();
+ invalidateLaunchProfile();
+
+ return true;
+}
+
std::shared_ptr<LaunchProfile> PackProfile::getProfile() const
{
if(!d->m_profile)
diff --git a/launcher/minecraft/PackProfile.h b/launcher/minecraft/PackProfile.h
index 807511a2..2330cca1 100644
--- a/launcher/minecraft/PackProfile.h
+++ b/launcher/minecraft/PackProfile.h
@@ -1,7 +1,8 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ * Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -85,6 +86,9 @@ public:
/// install a jar/zip as a replacement for the main jar
void installCustomJar(QString selectedFile);
+ /// install Java agent files
+ void installAgents(QStringList selectedFiles);
+
enum MoveDirection { MoveUp, MoveDown };
/// move component file # up or down the list
void move(const int index, const MoveDirection direction);
@@ -167,6 +171,7 @@ private:
bool load();
bool installJarMods_internal(QStringList filepaths);
bool installCustomJar_internal(QString filepath);
+ bool installAgents_internal(QStringList filepaths);
bool removeComponent_internal(ComponentPtr patch);
private: /* data */
diff --git a/launcher/minecraft/mod/ResourcePack.cpp b/launcher/minecraft/mod/ResourcePack.cpp
index 3fc10a2f..4a9ad21b 100644
--- a/launcher/minecraft/mod/ResourcePack.cpp
+++ b/launcher/minecraft/mod/ResourcePack.cpp
@@ -15,7 +15,7 @@ static const QMap<int, std::pair<Version, Version>> s_pack_format_versions = {
{ 3, { Version("1.11"), Version("1.12.2") } }, { 4, { Version("1.13"), Version("1.14.4") } },
{ 5, { Version("1.15"), Version("1.16.1") } }, { 6, { Version("1.16.2"), Version("1.16.5") } },
{ 7, { Version("1.17"), Version("1.17.1") } }, { 8, { Version("1.18"), Version("1.18.2") } },
- { 9, { Version("1.19"), Version("1.19.2") } },
+ { 9, { Version("1.19"), Version("1.19.2") } }, { 11, { Version("1.19.3"), Version("1.19.3") } },
};
void ResourcePack::setPackFormat(int new_format_id)
@@ -114,3 +114,8 @@ bool ResourcePack::applyFilter(QRegularExpression filter) const
return Resource::applyFilter(filter);
}
+
+bool ResourcePack::valid() const
+{
+ return m_pack_format != 0;
+}
diff --git a/launcher/minecraft/mod/ResourcePack.h b/launcher/minecraft/mod/ResourcePack.h
index 03121908..7cb414d8 100644
--- a/launcher/minecraft/mod/ResourcePack.h
+++ b/launcher/minecraft/mod/ResourcePack.h
@@ -42,6 +42,8 @@ class ResourcePack : public Resource {
/** Thread-safe. */
void setImage(QImage new_image);
+ bool valid() const override;
+
[[nodiscard]] auto compare(Resource const& other, SortType type) const -> std::pair<int, bool> override;
[[nodiscard]] bool applyFilter(QRegularExpression filter) const override;
diff --git a/launcher/minecraft/mod/TexturePack.cpp b/launcher/minecraft/mod/TexturePack.cpp
index 796eb69d..99d55584 100644
--- a/launcher/minecraft/mod/TexturePack.cpp
+++ b/launcher/minecraft/mod/TexturePack.cpp
@@ -62,3 +62,8 @@ QPixmap TexturePack::image(QSize size)
TexturePackUtils::process(*this);
return image(size);
}
+
+bool TexturePack::valid() const
+{
+ return m_description != nullptr;
+}
diff --git a/launcher/minecraft/mod/TexturePack.h b/launcher/minecraft/mod/TexturePack.h
index 6aa5e18e..81bd5c69 100644
--- a/launcher/minecraft/mod/TexturePack.h
+++ b/launcher/minecraft/mod/TexturePack.h
@@ -48,6 +48,8 @@ class TexturePack : public Resource {
/** Thread-safe. */
void setImage(QImage new_image);
+ bool valid() const override;
+
protected:
mutable QMutex m_data_lock;
diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp
index 4f87bc13..6fd4b024 100644
--- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp
+++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp
@@ -28,14 +28,14 @@
namespace ResourcePackUtils {
-bool process(ResourcePack& pack)
+bool process(ResourcePack& pack, ProcessingLevel level)
{
switch (pack.type()) {
case ResourceType::FOLDER:
- ResourcePackUtils::processFolder(pack);
+ ResourcePackUtils::processFolder(pack, level);
return true;
case ResourceType::ZIPFILE:
- ResourcePackUtils::processZIP(pack);
+ ResourcePackUtils::processZIP(pack, level);
return true;
default:
qWarning() << "Invalid type for resource pack parse task!";
@@ -43,7 +43,7 @@ bool process(ResourcePack& pack)
}
}
-void processFolder(ResourcePack& pack)
+void processFolder(ResourcePack& pack, ProcessingLevel level)
{
Q_ASSERT(pack.type() == ResourceType::FOLDER);
@@ -60,6 +60,9 @@ void processFolder(ResourcePack& pack)
mcmeta_file.close();
}
+ if (level == ProcessingLevel::BasicInfoOnly)
+ return;
+
QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png"));
if (image_file_info.isFile()) {
QFile mcmeta_file(image_file_info.filePath());
@@ -74,7 +77,7 @@ void processFolder(ResourcePack& pack)
}
}
-void processZIP(ResourcePack& pack)
+void processZIP(ResourcePack& pack, ProcessingLevel level)
{
Q_ASSERT(pack.type() == ResourceType::ZIPFILE);
@@ -98,6 +101,11 @@ void processZIP(ResourcePack& pack)
file.close();
}
+ if (level == ProcessingLevel::BasicInfoOnly) {
+ zip.close();
+ return;
+ }
+
if (zip.setCurrentFile("pack.png")) {
if (!file.open(QIODevice::ReadOnly)) {
qCritical() << "Failed to open file in zip.";
@@ -138,6 +146,13 @@ void processPackPNG(ResourcePack& pack, QByteArray&& raw_data)
qWarning() << "Failed to parse pack.png.";
}
}
+
+bool validate(QFileInfo file)
+{
+ ResourcePack rp{ file };
+ return ResourcePackUtils::process(rp, ProcessingLevel::BasicInfoOnly) && rp.valid();
+}
+
} // namespace ResourcePackUtils
LocalResourcePackParseTask::LocalResourcePackParseTask(int token, ResourcePack& rp)
@@ -152,8 +167,6 @@ bool LocalResourcePackParseTask::abort()
void LocalResourcePackParseTask::executeTask()
{
- Q_ASSERT(m_resource_pack.valid());
-
if (!ResourcePackUtils::process(m_resource_pack))
return;
diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h
index d3c25464..69dbd6ad 100644
--- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h
+++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h
@@ -26,13 +26,19 @@
#include "tasks/Task.h"
namespace ResourcePackUtils {
-bool process(ResourcePack& pack);
-void processZIP(ResourcePack& pack);
-void processFolder(ResourcePack& pack);
+enum class ProcessingLevel { Full, BasicInfoOnly };
+
+bool process(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full);
+
+void processZIP(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full);
+void processFolder(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full);
void processMCMeta(ResourcePack& pack, QByteArray&& raw_data);
void processPackPNG(ResourcePack& pack, QByteArray&& raw_data);
+
+/** Checks whether a file is valid as a resource pack or not. */
+bool validate(QFileInfo file);
} // namespace ResourcePackUtils
class LocalResourcePackParseTask : public Task {
diff --git a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp
index bf1e308f..adb19aca 100644
--- a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp
+++ b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp
@@ -28,14 +28,14 @@
namespace TexturePackUtils {
-bool process(TexturePack& pack)
+bool process(TexturePack& pack, ProcessingLevel level)
{
switch (pack.type()) {
case ResourceType::FOLDER:
- TexturePackUtils::processFolder(pack);
+ TexturePackUtils::processFolder(pack, level);
return true;
case ResourceType::ZIPFILE:
- TexturePackUtils::processZIP(pack);
+ TexturePackUtils::processZIP(pack, level);
return true;
default:
qWarning() << "Invalid type for resource pack parse task!";
@@ -43,7 +43,7 @@ bool process(TexturePack& pack)
}
}
-void processFolder(TexturePack& pack)
+void processFolder(TexturePack& pack, ProcessingLevel level)
{
Q_ASSERT(pack.type() == ResourceType::FOLDER);
@@ -60,6 +60,9 @@ void processFolder(TexturePack& pack)
mcmeta_file.close();
}
+ if (level == ProcessingLevel::BasicInfoOnly)
+ return;
+
QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png"));
if (image_file_info.isFile()) {
QFile mcmeta_file(image_file_info.filePath());
@@ -74,7 +77,7 @@ void processFolder(TexturePack& pack)
}
}
-void processZIP(TexturePack& pack)
+void processZIP(TexturePack& pack, ProcessingLevel level)
{
Q_ASSERT(pack.type() == ResourceType::ZIPFILE);
@@ -98,6 +101,11 @@ void processZIP(TexturePack& pack)
file.close();
}
+ if (level == ProcessingLevel::BasicInfoOnly) {
+ zip.close();
+ return;
+ }
+
if (zip.setCurrentFile("pack.png")) {
if (!file.open(QIODevice::ReadOnly)) {
qCritical() << "Failed to open file in zip.";
@@ -129,6 +137,13 @@ void processPackPNG(TexturePack& pack, QByteArray&& raw_data)
qWarning() << "Failed to parse pack.png.";
}
}
+
+bool validate(QFileInfo file)
+{
+ TexturePack rp{ file };
+ return TexturePackUtils::process(rp, ProcessingLevel::BasicInfoOnly) && rp.valid();
+}
+
} // namespace TexturePackUtils
LocalTexturePackParseTask::LocalTexturePackParseTask(int token, TexturePack& rp)
@@ -143,8 +158,6 @@ bool LocalTexturePackParseTask::abort()
void LocalTexturePackParseTask::executeTask()
{
- Q_ASSERT(m_texture_pack.valid());
-
if (!TexturePackUtils::process(m_texture_pack))
return;
diff --git a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h
index cb0e404a..9f7aab75 100644
--- a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h
+++ b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h
@@ -27,13 +27,19 @@
#include "tasks/Task.h"
namespace TexturePackUtils {
-bool process(TexturePack& pack);
-void processZIP(TexturePack& pack);
-void processFolder(TexturePack& pack);
+enum class ProcessingLevel { Full, BasicInfoOnly };
+
+bool process(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full);
+
+void processZIP(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full);
+void processFolder(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full);
void processPackTXT(TexturePack& pack, QByteArray&& raw_data);
void processPackPNG(TexturePack& pack, QByteArray&& raw_data);
+
+/** Checks whether a file is valid as a texture pack or not. */
+bool validate(QFileInfo file);
} // namespace TexturePackUtils
class LocalTexturePackParseTask : public Task {
diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp
index 25b56fbd..7f1beb1a 100644
--- a/launcher/modplatform/flame/FileResolvingTask.cpp
+++ b/launcher/modplatform/flame/FileResolvingTask.cpp
@@ -42,12 +42,25 @@ void Flame::FileResolvingTask::executeTask()
void Flame::FileResolvingTask::netJobFinished()
{
setProgress(1, 3);
- int index = 0;
// job to check modrinth for blocked projects
m_checkJob = new NetJob("Modrinth check", m_network);
blockedProjects = QMap<File *,QByteArray *>();
- auto doc = Json::requireDocument(*result);
- auto array = Json::requireArray(doc.object()["data"]);
+
+ QJsonDocument doc;
+ QJsonArray array;
+
+ try {
+ doc = Json::requireDocument(*result);
+ array = Json::requireArray(doc.object()["data"]);
+ } catch (Json::JsonException& e) {
+ qCritical() << "Non-JSON data returned from the CF API";
+ qCritical() << e.cause();
+
+ emitFailed(tr("Invalid data returned from the API."));
+
+ return;
+ }
+
for (QJsonValueRef file : array) {
auto fileid = Json::requireInteger(Json::requireObject(file)["id"]);
auto& out = m_toProcess.files[fileid];
@@ -68,7 +81,6 @@ void Flame::FileResolvingTask::netJobFinished()
blockedProjects.insert(&out, output);
}
}
- index++;
}
connect(m_checkJob.get(), &NetJob::finished, this, &Flame::FileResolvingTask::modrinthCheckFinished);
diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
index 91554b58..a00c948a 100644
--- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
+++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
@@ -338,6 +338,7 @@ bool FlameCreationTask::createInstance()
connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::failed, [&](QString reason) {
m_mod_id_resolver.reset();
setError(tr("Unable to resolve mod IDs:\n") + reason);
+ loop.quit();
});
connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::progress, this, &FlameCreationTask::setProgress);
connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::status, this, &FlameCreationTask::setStatus);
diff --git a/launcher/resources/OSX/OSX.qrc b/launcher/resources/OSX/OSX.qrc
index 19fe312b..9d4511d1 100644
--- a/launcher/resources/OSX/OSX.qrc
+++ b/launcher/resources/OSX/OSX.qrc
@@ -39,5 +39,6 @@
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
<file>scalable/launch.svg</file>
+ <file>scalable/shortcut.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/OSX/scalable/shortcut.svg b/launcher/resources/OSX/scalable/shortcut.svg
new file mode 100644
index 00000000..a2b7488e
--- /dev/null
+++ b/launcher/resources/OSX/scalable/shortcut.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<rect fill="none" width="24" height="24"/>
+<g id="_x35__1_">
+ <g>
+ <path fill="#585858" d="M9.5,9.5C9.8,9.5,10,9.2,10,9l0-2.4l7.6,7.3c0.2,0.2,0.5,0.2,0.7,0c0.2-0.2,0.2-0.5,0-0.7L10.8,6L13,6
+ c0.3,0,0.5-0.2,0.5-0.5S13.3,5,13,5H9.5C9.2,5,9,5.2,9,5.5V9C9,9.2,9.2,9.5,9.5,9.5z M21,5h-5.5v1H21c0.5,0,1,0.5,1,1l0,10
+ c0,0.5-0.4,1-1,1l-10,0c-0.5,0-1-0.5-1-1v-5.5H9V17c0,1.1,1.1,2,2.2,2H21c1.1,0,2-0.9,2-2V7.2C23,6.1,22.1,5,21,5z"/>
+ </g>
+</g>
+</svg>
diff --git a/launcher/resources/breeze_dark/breeze_dark.qrc b/launcher/resources/breeze_dark/breeze_dark.qrc
index 4d7a69b2..97434abc 100644
--- a/launcher/resources/breeze_dark/breeze_dark.qrc
+++ b/launcher/resources/breeze_dark/breeze_dark.qrc
@@ -27,6 +27,7 @@
<file>scalable/refresh.svg</file>
<file>scalable/resourcepacks.svg</file>
<file>scalable/shaderpacks.svg</file>
+ <file>scalable/shortcut.svg</file>
<file>scalable/screenshots.svg</file>
<file>scalable/settings.svg</file>
<file>scalable/status-bad.svg</file>
diff --git a/launcher/resources/breeze_dark/scalable/shortcut.svg b/launcher/resources/breeze_dark/scalable/shortcut.svg
new file mode 100644
index 00000000..5559be1d
--- /dev/null
+++ b/launcher/resources/breeze_dark/scalable/shortcut.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#eff0f1;
+ }
+ </style>
+ </defs>
+ <g
+ transform="translate(-3,-1033.3622)">
+ <path
+ style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4,7 C 3.4459904,7 3,7.4459904 3,8 l 0,6 c 0,0.55401 0.4459904,1 1,1 l 5,0 c 0.55401,0 1,-0.44599 1,-1 l 0,-1 2,0 0,1 c 0,0.554 0.44599,1 1,1 l 5,0 c 0.55401,0 1,-0.446 1,-1 L 19,8 C 19,7.446 18.55401,7 18,7 l -5,0 c -0.55401,0 -1,0.446 -1,1 l 0,1 -2,0 0,-1 C 10,7.4459904 9.55401,7 9,7 Z M 4,8 7,8 9,8 9,9 C 8.4459904,9 8,9.4459904 8,10 l 0,2 c 0,0.55401 0.4459904,1 1,1 l 0,1 -2,0 -3,0 z m 9,0 3,0 2,0 0,6 -2,0 -3,0 0,-1 c 0.55401,0 1,-0.44599 1,-1 l 0,-2 C 14,9.4459904 13.55401,9 13,9 Z m -4,2 4,0 0,2 -4,0 z"
+ transform="translate(0,1030.3622)"
+ id="rect4161"
+ class="ColorScheme-Text" />
+ </g>
+</svg>
diff --git a/launcher/resources/breeze_light/breeze_light.qrc b/launcher/resources/breeze_light/breeze_light.qrc
index 7d9d99f5..6d868b18 100644
--- a/launcher/resources/breeze_light/breeze_light.qrc
+++ b/launcher/resources/breeze_light/breeze_light.qrc
@@ -27,6 +27,7 @@
<file>scalable/refresh.svg</file>
<file>scalable/resourcepacks.svg</file>
<file>scalable/shaderpacks.svg</file>
+ <file>scalable/shortcut.svg</file>
<file>scalable/screenshots.svg</file>
<file>scalable/settings.svg</file>
<file>scalable/status-bad.svg</file>
diff --git a/launcher/resources/breeze_light/scalable/shortcut.svg b/launcher/resources/breeze_light/scalable/shortcut.svg
new file mode 100644
index 00000000..426769d1
--- /dev/null
+++ b/launcher/resources/breeze_light/scalable/shortcut.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <g
+ transform="translate(-3,-1033.3622)">
+ <path
+ style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4,7 C 3.4459904,7 3,7.4459904 3,8 l 0,6 c 0,0.55401 0.4459904,1 1,1 l 5,0 c 0.55401,0 1,-0.44599 1,-1 l 0,-1 2,0 0,1 c 0,0.554 0.44599,1 1,1 l 5,0 c 0.55401,0 1,-0.446 1,-1 L 19,8 C 19,7.446 18.55401,7 18,7 l -5,0 c -0.55401,0 -1,0.446 -1,1 l 0,1 -2,0 0,-1 C 10,7.4459904 9.55401,7 9,7 Z M 4,8 7,8 9,8 9,9 C 8.4459904,9 8,9.4459904 8,10 l 0,2 c 0,0.55401 0.4459904,1 1,1 l 0,1 -2,0 -3,0 z m 9,0 3,0 2,0 0,6 -2,0 -3,0 0,-1 c 0.55401,0 1,-0.44599 1,-1 l 0,-2 C 14,9.4459904 13.55401,9 13,9 Z m -4,2 4,0 0,2 -4,0 z"
+ transform="translate(0,1030.3622)"
+ id="rect4161"
+ class="ColorScheme-Text" />
+ </g>
+</svg>
diff --git a/launcher/resources/flat/flat.qrc b/launcher/resources/flat/flat.qrc
index 508e0a9f..a846bd2d 100644
--- a/launcher/resources/flat/flat.qrc
+++ b/launcher/resources/flat/flat.qrc
@@ -35,6 +35,7 @@
<file>scalable/screenshot-placeholder.svg</file>
<file>scalable/screenshots.svg</file>
<file>scalable/settings.svg</file>
+ <file>scalable/shortcut.svg</file>
<file>scalable/star.svg</file>
<file>scalable/status-bad.svg</file>
<file>scalable/status-good.svg</file>
diff --git a/launcher/resources/flat/scalable/shortcut.svg b/launcher/resources/flat/scalable/shortcut.svg
new file mode 100644
index 00000000..83878d19
--- /dev/null
+++ b/launcher/resources/flat/scalable/shortcut.svg
@@ -0,0 +1,3 @@
+<svg fill="#757575" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+ <path d="M5 21q-.825 0-1.413-.587Q3 19.825 3 19V5q0-.825.587-1.413Q4.175 3 5 3h7v2H5v14h14v-7h2v7q0 .825-.587 1.413Q19.825 21 19 21Zm4.7-5.3-1.4-1.4L17.6 5H14V3h7v7h-2V6.4Z"/>
+</svg>
diff --git a/launcher/resources/flat_white/flat_white.qrc b/launcher/resources/flat_white/flat_white.qrc
index e11d6316..b0759d8f 100644
--- a/launcher/resources/flat_white/flat_white.qrc
+++ b/launcher/resources/flat_white/flat_white.qrc
@@ -35,6 +35,7 @@
<file>scalable/screenshot-placeholder.svg</file>
<file>scalable/screenshots.svg</file>
<file>scalable/settings.svg</file>
+ <file>scalable/shortcut.svg</file>
<file>scalable/star.svg</file>
<file>scalable/status-bad.svg</file>
<file>scalable/status-good.svg</file>
diff --git a/launcher/resources/flat_white/scalable/shortcut.svg b/launcher/resources/flat_white/scalable/shortcut.svg
new file mode 100644
index 00000000..b419a77d
--- /dev/null
+++ b/launcher/resources/flat_white/scalable/shortcut.svg
@@ -0,0 +1,3 @@
+<svg fill="#D8DEE9" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+ <path d="M5 21q-.825 0-1.413-.587Q3 19.825 3 19V5q0-.825.587-1.413Q4.175 3 5 3h7v2H5v14h14v-7h2v7q0 .825-.587 1.413Q19.825 21 19 21Zm4.7-5.3-1.4-1.4L17.6 5H14V3h7v7h-2V6.4Z"/>
+</svg>
diff --git a/launcher/resources/iOS/iOS.qrc b/launcher/resources/iOS/iOS.qrc
index aa08d811..0b79efb2 100644
--- a/launcher/resources/iOS/iOS.qrc
+++ b/launcher/resources/iOS/iOS.qrc
@@ -39,5 +39,6 @@
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
<file>scalable/launch.svg</file>
+ <file>scalable/shortcut.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/iOS/scalable/shortcut.svg b/launcher/resources/iOS/scalable/shortcut.svg
new file mode 100644
index 00000000..16e9fa48
--- /dev/null
+++ b/launcher/resources/iOS/scalable/shortcut.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
+<g id="_x35__5_">
+ <g>
+ <path fill="#3366CC" d="M3,11c0.6,0,1-0.5,1-1l0-4.8l15.2,14.5c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L5.6,4L10,4
+ c0.6,0,1-0.5,1-1s-0.4-1-1-1H3C2.5,2,2,2.4,2,3v7C2,10.5,2.4,11,3,11z M26,2H15v2h11c1.1,0,2,0.9,2,2l0,20.1c0,1.1-0.9,2-2,2L6,28
+ c-1.1,0-2-0.9-2-2V15H2v11c0,2.2,2.2,4,4.4,4h19.7c2.2,0,3.9-1.8,3.9-3.9V6.4C30,4.2,28.2,2,26,2z"/>
+ </g>
+</g>
+</svg>
diff --git a/launcher/resources/multimc/128x128/instances/chicken.png b/launcher/resources/multimc/128x128/instances/chicken_legacy.png
index 71f6dedc..71f6dedc 100644
--- a/launcher/resources/multimc/128x128/instances/chicken.png
+++ b/launcher/resources/multimc/128x128/instances/chicken_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/creeper.png b/launcher/resources/multimc/128x128/instances/creeper_legacy.png
index 41b7d07d..41b7d07d 100644
--- a/launcher/resources/multimc/128x128/instances/creeper.png
+++ b/launcher/resources/multimc/128x128/instances/creeper_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/enderpearl.png b/launcher/resources/multimc/128x128/instances/enderpearl_legacy.png
index 0a5bf91a..0a5bf91a 100644
--- a/launcher/resources/multimc/128x128/instances/enderpearl.png
+++ b/launcher/resources/multimc/128x128/instances/enderpearl_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/flame.png b/launcher/resources/multimc/128x128/instances/flame_legacy.png
index 6482975c..6482975c 100644
--- a/launcher/resources/multimc/128x128/instances/flame.png
+++ b/launcher/resources/multimc/128x128/instances/flame_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/ftb_logo.png b/launcher/resources/multimc/128x128/instances/ftb_logo_legacy.png
index e725b7fe..e725b7fe 100644
--- a/launcher/resources/multimc/128x128/instances/ftb_logo.png
+++ b/launcher/resources/multimc/128x128/instances/ftb_logo_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/gear.png b/launcher/resources/multimc/128x128/instances/gear_legacy.png
index 75c68a66..75c68a66 100644
--- a/launcher/resources/multimc/128x128/instances/gear.png
+++ b/launcher/resources/multimc/128x128/instances/gear_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/herobrine.png b/launcher/resources/multimc/128x128/instances/herobrine_legacy.png
index 13f1494c..13f1494c 100644
--- a/launcher/resources/multimc/128x128/instances/herobrine.png
+++ b/launcher/resources/multimc/128x128/instances/herobrine_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/infinity.png b/launcher/resources/multimc/128x128/instances/infinity_legacy.png
index 63e06e5b..63e06e5b 100644
--- a/launcher/resources/multimc/128x128/instances/infinity.png
+++ b/launcher/resources/multimc/128x128/instances/infinity_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/magitech.png b/launcher/resources/multimc/128x128/instances/magitech_legacy.png
index 0f81a199..0f81a199 100644
--- a/launcher/resources/multimc/128x128/instances/magitech.png
+++ b/launcher/resources/multimc/128x128/instances/magitech_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/meat.png b/launcher/resources/multimc/128x128/instances/meat_legacy.png
index fefc9bf1..fefc9bf1 100644
--- a/launcher/resources/multimc/128x128/instances/meat.png
+++ b/launcher/resources/multimc/128x128/instances/meat_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/netherstar.png b/launcher/resources/multimc/128x128/instances/netherstar_legacy.png
index 132085f0..132085f0 100644
--- a/launcher/resources/multimc/128x128/instances/netherstar.png
+++ b/launcher/resources/multimc/128x128/instances/netherstar_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/skeleton.png b/launcher/resources/multimc/128x128/instances/skeleton_legacy.png
index 55fcf5a9..55fcf5a9 100644
--- a/launcher/resources/multimc/128x128/instances/skeleton.png
+++ b/launcher/resources/multimc/128x128/instances/skeleton_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/squarecreeper.png b/launcher/resources/multimc/128x128/instances/squarecreeper_legacy.png
index c82d8406..c82d8406 100644
--- a/launcher/resources/multimc/128x128/instances/squarecreeper.png
+++ b/launcher/resources/multimc/128x128/instances/squarecreeper_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/128x128/instances/steve.png b/launcher/resources/multimc/128x128/instances/steve_legacy.png
index a07cbd2f..a07cbd2f 100644
--- a/launcher/resources/multimc/128x128/instances/steve.png
+++ b/launcher/resources/multimc/128x128/instances/steve_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/brick.png b/launcher/resources/multimc/32x32/instances/brick_legacy.png
index c324fda0..c324fda0 100644
--- a/launcher/resources/multimc/32x32/instances/brick.png
+++ b/launcher/resources/multimc/32x32/instances/brick_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/chicken.png b/launcher/resources/multimc/32x32/instances/chicken_legacy.png
index f870467a..f870467a 100644
--- a/launcher/resources/multimc/32x32/instances/chicken.png
+++ b/launcher/resources/multimc/32x32/instances/chicken_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/creeper.png b/launcher/resources/multimc/32x32/instances/creeper_legacy.png
index a67ecfc3..a67ecfc3 100644
--- a/launcher/resources/multimc/32x32/instances/creeper.png
+++ b/launcher/resources/multimc/32x32/instances/creeper_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/diamond.png b/launcher/resources/multimc/32x32/instances/diamond_legacy.png
index 1eb26469..1eb26469 100644
--- a/launcher/resources/multimc/32x32/instances/diamond.png
+++ b/launcher/resources/multimc/32x32/instances/diamond_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/dirt.png b/launcher/resources/multimc/32x32/instances/dirt_legacy.png
index 9e19eb8f..9e19eb8f 100644
--- a/launcher/resources/multimc/32x32/instances/dirt.png
+++ b/launcher/resources/multimc/32x32/instances/dirt_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/enderpearl.png b/launcher/resources/multimc/32x32/instances/enderpearl_legacy.png
index a818eb8e..a818eb8e 100644
--- a/launcher/resources/multimc/32x32/instances/enderpearl.png
+++ b/launcher/resources/multimc/32x32/instances/enderpearl_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/ftb_logo.png b/launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png
index 20df7171..20df7171 100644
--- a/launcher/resources/multimc/32x32/instances/ftb_logo.png
+++ b/launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/gear.png b/launcher/resources/multimc/32x32/instances/gear_legacy.png
index da9ba2f9..da9ba2f9 100644
--- a/launcher/resources/multimc/32x32/instances/gear.png
+++ b/launcher/resources/multimc/32x32/instances/gear_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/gold.png b/launcher/resources/multimc/32x32/instances/gold_legacy.png
index 593410fa..593410fa 100644
--- a/launcher/resources/multimc/32x32/instances/gold.png
+++ b/launcher/resources/multimc/32x32/instances/gold_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/grass.png b/launcher/resources/multimc/32x32/instances/grass_legacy.png
index f1694547..f1694547 100644
--- a/launcher/resources/multimc/32x32/instances/grass.png
+++ b/launcher/resources/multimc/32x32/instances/grass_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/herobrine.png b/launcher/resources/multimc/32x32/instances/herobrine_legacy.png
index e5460da3..e5460da3 100644
--- a/launcher/resources/multimc/32x32/instances/herobrine.png
+++ b/launcher/resources/multimc/32x32/instances/herobrine_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/infinity.png b/launcher/resources/multimc/32x32/instances/infinity_legacy.png
index bd94a3dc..bd94a3dc 100644
--- a/launcher/resources/multimc/32x32/instances/infinity.png
+++ b/launcher/resources/multimc/32x32/instances/infinity_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/iron.png b/launcher/resources/multimc/32x32/instances/iron_legacy.png
index 3e811bd6..3e811bd6 100644
--- a/launcher/resources/multimc/32x32/instances/iron.png
+++ b/launcher/resources/multimc/32x32/instances/iron_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/magitech.png b/launcher/resources/multimc/32x32/instances/magitech_legacy.png
index 6fd8ff60..6fd8ff60 100644
--- a/launcher/resources/multimc/32x32/instances/magitech.png
+++ b/launcher/resources/multimc/32x32/instances/magitech_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/meat.png b/launcher/resources/multimc/32x32/instances/meat_legacy.png
index 6694859d..6694859d 100644
--- a/launcher/resources/multimc/32x32/instances/meat.png
+++ b/launcher/resources/multimc/32x32/instances/meat_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/netherstar.png b/launcher/resources/multimc/32x32/instances/netherstar_legacy.png
index 43cb5113..43cb5113 100644
--- a/launcher/resources/multimc/32x32/instances/netherstar.png
+++ b/launcher/resources/multimc/32x32/instances/netherstar_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/planks.png b/launcher/resources/multimc/32x32/instances/planks_legacy.png
index a94b7502..a94b7502 100644
--- a/launcher/resources/multimc/32x32/instances/planks.png
+++ b/launcher/resources/multimc/32x32/instances/planks_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/skeleton.png b/launcher/resources/multimc/32x32/instances/skeleton_legacy.png
index 0c8d3505..0c8d3505 100644
--- a/launcher/resources/multimc/32x32/instances/skeleton.png
+++ b/launcher/resources/multimc/32x32/instances/skeleton_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/squarecreeper.png b/launcher/resources/multimc/32x32/instances/squarecreeper_legacy.png
index b78c4ae0..b78c4ae0 100644
--- a/launcher/resources/multimc/32x32/instances/squarecreeper.png
+++ b/launcher/resources/multimc/32x32/instances/squarecreeper_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/steve.png b/launcher/resources/multimc/32x32/instances/steve_legacy.png
index 07c6acde..07c6acde 100644
--- a/launcher/resources/multimc/32x32/instances/steve.png
+++ b/launcher/resources/multimc/32x32/instances/steve_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/stone.png b/launcher/resources/multimc/32x32/instances/stone_legacy.png
index 1b6ef7a4..1b6ef7a4 100644
--- a/launcher/resources/multimc/32x32/instances/stone.png
+++ b/launcher/resources/multimc/32x32/instances/stone_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/32x32/instances/tnt.png b/launcher/resources/multimc/32x32/instances/tnt_legacy.png
index e40d404d..e40d404d 100644
--- a/launcher/resources/multimc/32x32/instances/tnt.png
+++ b/launcher/resources/multimc/32x32/instances/tnt_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/50x50/instances/enderman.png b/launcher/resources/multimc/50x50/instances/enderman_legacy.png
index 9f3a72b3..9f3a72b3 100644
--- a/launcher/resources/multimc/50x50/instances/enderman.png
+++ b/launcher/resources/multimc/50x50/instances/enderman_legacy.png
Binary files differ
diff --git a/launcher/resources/multimc/multimc.qrc b/launcher/resources/multimc/multimc.qrc
index 3f3d22fc..42b496da 100644
--- a/launcher/resources/multimc/multimc.qrc
+++ b/launcher/resources/multimc/multimc.qrc
@@ -6,9 +6,6 @@
<!-- REDDIT logo icon, needs reddit license! -->
<file>scalable/reddit-alien.svg</file>
- <!-- Icon for CurseForge. CC0 -->
- <file alias="128x128/flame.png">128x128/instances/flame.png</file>
-
<!-- launcher settings page -->
<file>scalable/launcher.svg</file>
@@ -254,63 +251,100 @@
<!-- discord logo icon thing. from discord. traced from bitmap -->
<file>scalable/discord.svg</file>
+ <!-- flat instance icons CC BY-SA 4.0, Santiago Cézar -->
+ <file alias="128x128/flame.png">scalable/instances/flame.svg</file>
+ <file>scalable/instances/chicken.svg</file>
+ <file>scalable/instances/creeper.svg</file>
+ <file>scalable/instances/enderpearl.svg</file>
+ <file>scalable/instances/ftb_logo.svg</file>
+ <file>scalable/instances/flame.svg</file>
+ <file>scalable/instances/gear.svg</file>
+ <file>scalable/instances/herobrine.svg</file>
+ <file>scalable/instances/magitech.svg</file>
+ <file>scalable/instances/meat.svg</file>
+ <file>scalable/instances/netherstar.svg</file>
+ <file>scalable/instances/skeleton.svg</file>
+ <file>scalable/instances/squarecreeper.svg</file>
+ <file>scalable/instances/steve.svg</file>
+ <file>scalable/instances/diamond.svg</file>
+ <file>scalable/instances/dirt.svg</file>
+ <file>scalable/instances/grass.svg</file>
+ <file>scalable/instances/brick.svg</file>
+ <file>scalable/instances/gold.svg</file>
+ <file>scalable/instances/iron.svg</file>
+ <file>scalable/instances/planks.svg</file>
+ <file>scalable/instances/stone.svg</file>
+ <file>scalable/instances/tnt.svg</file>
+ <file>scalable/instances/enderman.svg</file>
+ <file>scalable/instances/fox.svg</file>
+ <file>scalable/instances/bee.svg</file>
+
<!-- instance icons -->
- <file>32x32/instances/chicken.png</file>
- <file>128x128/instances/chicken.png</file>
+ <file>32x32/instances/chicken_legacy.png</file>
+ <file>128x128/instances/chicken_legacy.png</file>
- <file>32x32/instances/creeper.png</file>
- <file>128x128/instances/creeper.png</file>
+ <file>32x32/instances/creeper_legacy.png</file>
+ <file>128x128/instances/creeper_legacy.png</file>
- <file>32x32/instances/enderpearl.png</file>
- <file>128x128/instances/enderpearl.png</file>
+ <file>32x32/instances/enderpearl_legacy.png</file>
+ <file>128x128/instances/enderpearl_legacy.png</file>
<file>32x32/instances/ftb_glow.png</file>
<file>128x128/instances/ftb_glow.png</file>
- <file>32x32/instances/ftb_logo.png</file>
- <file>128x128/instances/ftb_logo.png</file>
+ <file>32x32/instances/ftb_logo_legacy.png</file>
+ <file>128x128/instances/ftb_logo_legacy.png</file>
- <file>128x128/instances/flame.png</file>
+ <file>128x128/instances/flame_legacy.png</file>
- <file>32x32/instances/gear.png</file>
- <file>128x128/instances/gear.png</file>
+ <file>32x32/instances/gear_legacy.png</file>
+ <file>128x128/instances/gear_legacy.png</file>
- <file>32x32/instances/herobrine.png</file>
- <file>128x128/instances/herobrine.png</file>
+ <file>32x32/instances/herobrine_legacy.png</file>
+ <file>128x128/instances/herobrine_legacy.png</file>
- <file>32x32/instances/magitech.png</file>
- <file>128x128/instances/magitech.png</file>
+ <file>32x32/instances/magitech_legacy.png</file>
+ <file>128x128/instances/magitech_legacy.png</file>
- <file>32x32/instances/meat.png</file>
- <file>128x128/instances/meat.png</file>
+ <file>32x32/instances/meat_legacy.png</file>
+ <file>128x128/instances/meat_legacy.png</file>
- <file>32x32/instances/netherstar.png</file>
- <file>128x128/instances/netherstar.png</file>
+ <file>32x32/instances/netherstar_legacy.png</file>
+ <file>128x128/instances/netherstar_legacy.png</file>
- <file>32x32/instances/skeleton.png</file>
- <file>128x128/instances/skeleton.png</file>
+ <file>32x32/instances/skeleton_legacy.png</file>
+ <file>128x128/instances/skeleton_legacy.png</file>
- <file>32x32/instances/squarecreeper.png</file>
- <file>128x128/instances/squarecreeper.png</file>
+ <file>32x32/instances/squarecreeper_legacy.png</file>
+ <file>128x128/instances/squarecreeper_legacy.png</file>
- <file>32x32/instances/steve.png</file>
- <file>128x128/instances/steve.png</file>
+ <file>32x32/instances/steve_legacy.png</file>
+ <file>128x128/instances/steve_legacy.png</file>
- <file>32x32/instances/brick.png</file>
- <file>32x32/instances/diamond.png</file>
- <file>32x32/instances/dirt.png</file>
- <file>32x32/instances/gold.png</file>
- <file>32x32/instances/grass.png</file>
- <file>32x32/instances/iron.png</file>
- <file>32x32/instances/planks.png</file>
- <file>32x32/instances/stone.png</file>
- <file>32x32/instances/tnt.png</file>
+ <file>32x32/instances/brick_legacy.png</file>
+ <file>32x32/instances/diamond_legacy.png</file>
+ <file>32x32/instances/dirt_legacy.png</file>
+ <file>32x32/instances/gold_legacy.png</file>
+ <file>32x32/instances/grass_legacy.png</file>
+ <file>32x32/instances/iron_legacy.png</file>
+ <file>32x32/instances/planks_legacy.png</file>
+ <file>32x32/instances/stone_legacy.png</file>
+ <file>32x32/instances/tnt_legacy.png</file>
- <file>50x50/instances/enderman.png</file>
+ <file>50x50/instances/enderman_legacy.png</file>
- <file>scalable/instances/fox.svg</file>
- <file>scalable/instances/bee.svg</file>
<file>scalable/instances/prismlauncher.svg</file>
+ <file>scalable/instances/fox_legacy.svg</file>
+ <file>scalable/instances/bee_legacy.svg</file>
+
+ <!-- delete, tag, rename, shortcut CC-BY-SA 3.0, Oxygen icons.-->
+ <file>scalable/delete.svg</file>
+ <file>scalable/tag.svg</file>
+ <file>scalable/rename.svg</file>
+ <file>scalable/shortcut.svg</file>
+
+ <file>scalable/export.svg</file>
+ <file>scalable/launch.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/multimc/scalable/delete.svg b/launcher/resources/multimc/scalable/delete.svg
new file mode 100644
index 00000000..414cbd5c
--- /dev/null
+++ b/launcher/resources/multimc/scalable/delete.svg
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="33.866665mm"
+ height="33.866665mm"
+ viewBox="0 0 33.866665 33.866665"
+ version="1.1"
+ id="svg2411"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs2408">
+ <linearGradient
+ xlink:href="#linearGradient3315"
+ id="linearGradient3321"
+ x1="20.961376"
+ y1="70.875"
+ x2="106.96138"
+ y2="70.875"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <linearGradient
+ id="linearGradient3315">
+ <stop
+ style="stop-color:#bf0303;stop-opacity:1;"
+ offset="0"
+ id="stop3317" />
+ <stop
+ id="stop3323"
+ offset="0.375"
+ style="stop-color:#fc3d3d;stop-opacity:1;" />
+ <stop
+ style="stop-color:#bf0303;stop-opacity:1;"
+ offset="0.75"
+ id="stop3325" />
+ <stop
+ style="stop-color:#bf0303;stop-opacity:1;"
+ offset="1"
+ id="stop3319" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient3335"
+ id="linearGradient3341"
+ x1="22.032"
+ y1="39.036999"
+ x2="105.967"
+ y2="39.036999"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <linearGradient
+ id="linearGradient3335">
+ <stop
+ style="stop-color:#9c0f0f;stop-opacity:0.28301886;"
+ offset="0"
+ id="stop3337" />
+ <stop
+ id="stop3343"
+ offset="0.5"
+ style="stop-color:#9c0f0f;stop-opacity:1;" />
+ <stop
+ style="stop-color:#9c0f0f;stop-opacity:0.1981132;"
+ offset="1"
+ id="stop3339" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="12.190286"
+ y1="21.738001"
+ x2="115.80972"
+ y2="21.738001"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <linearGradient
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#d50303;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ id="stop3355"
+ offset="0.5"
+ style="stop-color:#feaeae;stop-opacity:1;" />
+ <stop
+ style="stop-color:#d50303;stop-opacity:1;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient3371"
+ id="linearGradient3377"
+ x1="68.617584"
+ y1="9.6200819"
+ x2="68.617584"
+ y2="34.302147"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <linearGradient
+ id="linearGradient3371">
+ <stop
+ style="stop-color:#950000;stop-opacity:1;"
+ offset="0"
+ id="stop3373" />
+ <stop
+ style="stop-color:#350000;stop-opacity:1;"
+ offset="1"
+ id="stop3375" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient3418"
+ id="linearGradient3432"
+ gradientUnits="userSpaceOnUse"
+ x1="41.25"
+ y1="85.302696"
+ x2="86.75"
+ y2="85.302696"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <linearGradient
+ id="linearGradient3418">
+ <stop
+ id="stop3420"
+ offset="0"
+ style="stop-color:#390000;stop-opacity:1;" />
+ <stop
+ style="stop-color:#da0303;stop-opacity:1;"
+ offset="0.375"
+ id="stop3422" />
+ <stop
+ id="stop3424"
+ offset="0.75"
+ style="stop-color:#7b0101;stop-opacity:1;" />
+ <stop
+ id="stop3426"
+ offset="1"
+ style="stop-color:#390000;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient3418"
+ id="linearGradient3429"
+ gradientUnits="userSpaceOnUse"
+ x1="41.25"
+ y1="85.651398"
+ x2="86.75"
+ y2="85.651398"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <linearGradient
+ xlink:href="#linearGradient3418"
+ id="linearGradient3416"
+ gradientUnits="userSpaceOnUse"
+ x1="41.25"
+ y1="64.263702"
+ x2="86.75"
+ y2="64.263702"
+ gradientTransform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)" />
+ <radialGradient
+ r="63.912209"
+ fy="115.7093"
+ fx="63.912209"
+ cy="115.70919"
+ cx="63.912209"
+ gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3336"
+ xlink:href="#linearGradient3291" />
+ <linearGradient
+ id="linearGradient3291">
+ <stop
+ id="stop3293"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop3295"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1"
+ transform="translate(196.3033,-17.933071)">
+ <g
+ id="g6686"
+ transform="translate(-43.45471,-96.01495)">
+ <path
+ d="m -135.91552,144.90744 c -3.41895,0 -6.36323,-0.76173 -8.22219,-1.87536 -0.49954,-0.0998 -0.96044,-0.2032 -1.37795,-0.3048 1.48722,1.68248 5.14376,2.97391 9.60014,2.97391 4.45664,0 8.11318,-1.29143 9.6004,-2.97391 -0.41751,0.10186 -0.87841,0.20505 -1.37795,0.3048 -1.85896,1.11363 -4.80298,1.87536 -8.22245,1.87536 z"
+ id="path202"
+ style="opacity:0.1;fill:#004d00;stroke-width:0.264583" />
+ <path
+ d="m -135.91552,145.17203 c -3.80127,0 -7.01569,-0.94112 -8.80295,-2.26192 -0.27993,-0.0606 -0.54743,-0.12198 -0.79719,-0.18283 1.48722,1.68248 5.14376,2.97391 9.60014,2.97391 4.45664,0 8.11318,-1.29143 9.6004,-2.97391 -0.24976,0.0608 -0.51726,0.1225 -0.79718,0.18283 -1.78727,1.3208 -5.00169,2.26192 -8.80322,2.26192 z"
+ id="path204"
+ style="opacity:0.2;fill:#004d00;stroke-width:0.264583" />
+ <path
+ d="m -135.91552,145.43661 c -4.1447,0 -7.59513,-1.11786 -9.25433,-2.62784 -0.11748,-0.027 -0.23442,-0.0542 -0.34581,-0.0818 1.48722,1.68249 5.14376,2.97392 9.60014,2.97392 4.45664,0 8.11318,-1.29143 9.6004,-2.97392 -0.11138,0.0275 -0.22833,0.0548 -0.34607,0.0818 -1.65894,1.50998 -5.10937,2.62784 -9.25433,2.62784 z"
+ id="path206"
+ style="opacity:0.3;fill:#004d00;stroke-width:0.264583" />
+ <path
+ style="fill:url(#linearGradient3321);fill-opacity:1;stroke-width:0.264583"
+ id="path3962"
+ d="m -147.30256,119.69953 1.05833,21.36828 c 0,2.41274 4.47384,4.63338 10.31849,4.63338 5.84517,0 10.31901,-2.22064 10.31901,-4.63338 l 1.05834,-21.36828 z" />
+ <rect
+ id="_x3C_Sezione_x3E_"
+ width="33.866665"
+ height="33.866665"
+ x="-152.84859"
+ y="113.94802"
+ style="fill:none;stroke-width:0.264583" />
+ <path
+ d="m -124.84059,122.62688 0.0291,-0.322 c -1.12712,2.10397 -5.6679,3.67851 -11.1043,3.67851 -5.43586,0 -9.9769,-1.57454 -11.1035,-3.67851 l 0.0288,0.322 c 1.17792,2.07539 5.68801,3.62135 11.07466,3.62135 5.38745,-2.6e-4 9.89727,-1.54596 11.0752,-3.62135 z"
+ id="path66"
+ style="opacity:0.5;fill:url(#linearGradient3341);fill-opacity:1;stroke-width:0.264583" />
+ <ellipse
+ cx="-135.91525"
+ cy="119.69953"
+ rx="11.377083"
+ ry="4.6963539"
+ id="ellipse75"
+ style="fill:url(#linearGradient3353);fill-opacity:1;stroke-width:0.264583" />
+ <path
+ d="m -146.34804,119.44606 c 0,1.9222 4.19206,3.97986 10.43252,3.97986 6.24073,0 10.43305,-2.05766 10.43305,-3.97986 0,-1.92193 -4.19232,-3.71528 -10.43305,-3.71528 -6.24046,0 -10.43252,1.79361 -10.43252,3.71528 z"
+ id="path90"
+ style="opacity:0.727778;fill:url(#linearGradient3377);fill-opacity:1;stroke-width:0.264583" />
+ <path
+ d="m -135.91552,115.73801 c -6.24046,0 -10.43252,1.92905 -10.43252,3.73061 0,0.47023 0.28786,0.94865 0.82074,1.39978 -0.0302,-0.13616 -0.0453,-0.27207 -0.0453,-0.40773 0,-2.65478 5.59455,-4.47464 9.65703,-4.47464 7.90334,0 11.98846,2.51962 9.65755,4.47464 -0.10375,0.087 -0.0153,0.27157 -0.0455,0.40773 0.53313,-0.45088 0.821,-0.92955 0.821,-1.39978 0,-1.80132 -4.19232,-3.73061 -10.43305,-3.73061 z"
+ id="path99"
+ style="opacity:0.494444;fill:#000000;fill-opacity:1;stroke-width:0.264583" />
+ <g
+ id="g335"
+ transform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)">
+ <path
+ d="m 63.999,32.22 c -21.36,0 -36.348,-6.18 -38.912,-12.556 -0.258,0.642 -0.393,1.286 -0.393,1.925 0,6.994 15.793,14.482 39.305,14.482 23.513,0 39.307,-7.488 39.307,-14.482 0,-0.639 -0.136,-1.283 -0.394,-1.925 C 100.35,26.04 85.36,32.22 63.999,32.22 Z"
+ id="path337"
+ style="opacity:0.1;fill:#555555" />
+ <path
+ d="m 63.999,33.184 c -21.897,0 -37.093,-6.496 -39.077,-13.037 -0.147,0.481 -0.228,0.964 -0.228,1.443 0,6.994 15.793,14.482 39.305,14.482 23.513,0 39.307,-7.488 39.307,-14.482 0,-0.479 -0.082,-0.962 -0.228,-1.443 -1.983,6.541 -17.18,13.037 -39.079,13.037 z"
+ id="path339"
+ style="opacity:0.15;fill:#555555" />
+ <path
+ d="m 63.999,34.146 c -22.435,0 -37.832,-6.818 -39.195,-13.519 -0.065,0.321 -0.109,0.642 -0.109,0.962 0,6.994 15.793,14.482 39.305,14.482 23.513,0 39.307,-7.488 39.307,-14.482 0,-0.32 -0.044,-0.641 -0.11,-0.962 -1.364,6.701 -16.762,13.519 -39.198,13.519 z"
+ id="path341"
+ style="opacity:0.2;fill:#555555" />
+ <path
+ d="m 63.999,35.109 c -22.973,0 -38.568,-7.148 -39.271,-14 -0.017,0.161 -0.034,0.321 -0.034,0.481 0,6.994 15.793,14.482 39.305,14.482 23.513,0 39.307,-7.488 39.307,-14.482 0,-0.16 -0.018,-0.32 -0.034,-0.481 -0.704,6.851 -16.299,14 -39.273,14 z"
+ id="path343"
+ style="opacity:0.25;fill:#555555" />
+ </g>
+ <path
+ style="fill:url(#linearGradient3432);fill-opacity:1;stroke-width:0.264583"
+ d="m -139.65779,133.54386 -2.07539,0.27648 c -0.11033,0.0148 -0.20214,0.0968 -0.22595,0.20559 -0.004,0.0196 -0.006,0.0389 -0.006,0.0587 0,0.0886 0.0437,0.17304 0.12091,0.22199 0,0 0.42333,0.26776 0.66067,0.41778 -0.22728,0.47334 -0.6657,1.50389 -0.6657,2.19233 0,0.11033 0.0114,0.2122 0.0368,0.3011 0.40323,1.76503 1.81531,2.08624 2.23838,2.14233 0.045,0.006 0.0937,0.0116 0.14208,0.0114 0.948,0.068 1.91452,0.10927 2.87284,0.12276 0.0722,0.001 0.14155,-0.0275 0.19235,-0.0788 0.0508,-0.0513 0.0781,-0.12118 0.0759,-0.19315 l -0.0389,-1.33561 c -0.004,-0.14156 -0.11907,-0.25506 -0.26062,-0.25718 -1.0459,-0.0151 -2.09841,-0.063 -3.1287,-0.1434 -0.008,-5.3e-4 -0.0241,-5.3e-4 -0.0325,-5.3e-4 -0.0894,0.002 -0.28787,-0.0352 -0.32676,-0.32306 0.14023,-0.3638 0.43524,-1.00912 0.60431,-1.36684 0.0132,0.008 0.51064,0.31883 0.51064,0.31883 0.0963,0.0603 0.22093,0.054 0.30877,-0.0183 0.0878,-0.072 0.12039,-0.1905 0.0799,-0.2966 l -0.79666,-2.09179 c -0.0442,-0.11483 -0.16431,-0.18018 -0.28602,-0.16404 z m 0.47546,5.68774 c -0.0243,0.0458 -0.0616,0.0807 -0.10478,0.10478 0.0397,-0.0214 0.0767,-0.0519 0.10478,-0.10478 z m -0.18627,0.12727 c -0.0217,0.004 -0.0413,0.014 -0.064,0.0127 0.0222,-2.7e-4 0.0426,-0.009 0.064,-0.0127 z"
+ id="path368" />
+ <path
+ style="fill:url(#linearGradient3429);fill-opacity:1;stroke-width:0.264583"
+ d="m -131.65414,133.01786 -1.30969,0.79058 c -0.0823,0.0497 -0.12806,0.13758 -0.12806,0.22728 0,0.0434 0.0109,0.0873 0.0333,0.12779 0.52229,0.94112 0.98028,1.88145 1.36155,2.79532 0.003,0.007 0.0135,0.0265 0.0172,0.0336 0.0151,0.028 0.0328,0.0733 0.0328,0.127 0,0.0815 -0.0529,0.18257 -0.20717,0.27676 -0.40719,0.0392 -1.1348,0.0815 -1.5404,0.10186 0.0198,-0.24394 0.0431,-0.52863 0.0431,-0.52863 5.2e-4,-0.007 7.9e-4,-0.0146 7.9e-4,-0.0217 0,-0.10425 -0.0611,-0.1995 -0.15769,-0.24209 -0.10345,-0.0453 -0.22384,-0.0204 -0.30057,0.0619 l -1.44251,1.55284 c -0.0897,0.0966 -0.0939,0.24447 -0.0111,0.34687 l 1.19459,1.47426 c 0.068,0.0839 0.18045,0.11826 0.28364,0.0865 0.10345,-0.032 0.177,-0.12329 0.186,-0.23098 0,0 0.0439,-0.53313 0.0529,-0.64214 0.92101,-0.0299 2.02935,-0.13917 2.47597,-0.4789 0.96811,-0.67574 1.20517,-1.55072 1.20517,-2.20054 0,-0.38893 -0.0847,-0.69717 -0.14869,-0.83423 -0.36407,-0.90302 -0.7882,-1.81583 -1.27027,-2.72203 -0.0341,-0.064 -0.0937,-0.11113 -0.16351,-0.13044 -0.0699,-0.0193 -0.14526,-0.008 -0.20743,0.0291 z"
+ id="path391" />
+ <path
+ style="fill:url(#linearGradient3416);fill-opacity:1;stroke-width:0.264583"
+ d="m -137.7004,129.01816 c -0.10319,0.0844 -0.61569,0.51832 -0.55933,0.77708 -0.0154,-0.0704 -7.9e-4,-0.14314 0.0392,-0.20294 -0.61595,0.92049 -1.18057,1.84785 -1.67852,2.7567 -0.0696,0.12673 -0.0254,0.28548 0.10028,0.35666 l 1.34488,0.7612 c 0.12673,0.0717 0.28707,0.0273 0.3593,-0.0998 0.53419,-0.93636 1.14459,-1.90367 1.81478,-2.87496 0.005,-0.007 0.0146,-0.0249 0.0188,-0.0325 8e-4,-0.001 0.0807,-0.13997 0.2167,-0.17542 0.0825,-0.0214 0.18388,0.0101 0.29368,0.0709 0.26644,0.39767 0.69956,1.11733 0.92393,1.49436 -0.15849,0.0791 -0.57706,0.28734 -0.57706,0.28734 -0.0905,0.0452 -0.14631,0.13758 -0.14631,0.2368 0,0.0108 7.9e-4,0.022 0.002,0.0328 0.0138,0.11139 0.0966,0.20214 0.20612,0.22596 l 2.2217,0.48762 c 0.12303,0.0273 0.24871,-0.0357 0.29977,-0.15055 l 0.92366,-2.08359 c 0.0455,-0.10266 0.0209,-0.22251 -0.0608,-0.29951 -0.0818,-0.077 -0.20373,-0.0937 -0.30321,-0.0421 0,0 -0.42598,0.22067 -0.69321,0.35904 -0.33232,-0.6932 -1.22555,-1.97696 -1.81451,-2.22197 -1.42187,-0.62838 -2.4474,-0.059 -2.93185,0.33682 z m 4.88527,2.27197 c 0,-0.0148 -0.0132,-0.0455 -0.0167,-0.0645 0.003,0.0148 0.0193,0.0235 0.0193,0.0386 0,0.0161 -0.002,0.0323 -0.005,0.0487 0.001,-0.007 0.002,-0.0146 0.002,-0.0228 z"
+ id="path414" />
+ <path
+ d="m -139.74034,137.74994 c -2.6e-4,7.9e-4 -0.57309,0.0283 -0.61277,-0.61278 0.18573,-0.50482 0.76094,-1.72111 0.76993,-1.72111 0.25665,0.16007 0.50906,0.31856 0.75883,0.47413 -0.25162,-0.69162 -0.51594,-1.38589 -0.79375,-2.08465 -0.70882,0.10715 -1.40414,0.19923 -2.08465,0.27781 0.29157,0.18494 0.57891,0.36698 0.86227,0.54557 -0.0275,-10e-4 -0.9144,1.82986 -0.71807,2.51619 0.43471,1.90077 2.13809,1.97062 2.14259,1.96241 0.95118,0.0683 1.905,0.10875 2.86015,0.12224 -0.0127,-0.44582 -0.0262,-0.89059 -0.0389,-1.33562 -1.05092,-0.0151 -2.10052,-0.0627 -3.14563,-0.14419 z"
+ id="path416"
+ style="fill:#ffffff;stroke-width:0.264583" />
+ <path
+ d="m -131.45279,136.8575 c 0.003,-8e-4 0.2794,0.48392 -0.30507,0.79613 -0.56171,0.0593 -1.92378,0.12647 -1.92431,0.12197 0.023,-0.27596 0.0672,-0.82682 0.0672,-0.82682 -0.48101,0.51541 -0.9615,1.03293 -1.44198,1.55204 0.3982,0.48922 0.79719,0.98108 1.19539,1.47532 0.0238,-0.2921 0.0487,-0.58473 0.0722,-0.87736 0,-0.005 1.99893,-0.006 2.56064,-0.43259 1.60179,-1.11866 0.99404,-2.74426 0.96149,-2.73553 -0.35586,-0.89588 -0.77232,-1.79017 -1.24909,-2.68658 -0.44477,0.27041 -0.88265,0.5342 -1.31075,0.79137 0.52335,0.94377 0.9824,1.88278 1.37425,2.82205 z"
+ id="path418"
+ style="fill:#ffffff;stroke-width:0.264583" />
+ <path
+ d="m -136.4976,130.3416 c -0.003,-5.3e-4 0.30612,-0.58552 0.92471,-0.19817 0.36486,0.53366 1.11919,1.81557 1.11919,1.81557 -0.27675,0.13838 -0.55483,0.27649 -0.83185,0.41434 0.74163,0.1606 1.48326,0.32253 2.22356,0.48815 0.30771,-0.69241 0.61569,-1.38668 0.9234,-2.08332 0,0 -0.62971,0.32755 -0.93928,0.48604 0.0201,-5.3e-4 -1.03928,-2.02645 -1.79228,-2.33945 -2.02301,-0.89323 -3.16124,0.80566 -3.13082,0.81412 -0.61462,0.91837 -1.16919,1.82907 -1.66634,2.73659 0.45693,0.26194 0.90434,0.51408 1.34249,0.75988 0.54637,-0.95647 1.15464,-1.91876 1.82722,-2.89375 z"
+ id="path420"
+ style="fill:#ffffff;stroke-width:0.264583" />
+ <g
+ id="layer1-3"
+ transform="matrix(0.26458333,0,0,0.26458333,-152.84859,113.94802)">
+ <path
+ transform="matrix(1.001374,0,0,0.410363,-2.393169e-5,75.32943)"
+ d="m 127.82442,115.70919 a 63.91221,12.641975 0 1 1 -127.82442,0 63.91221,12.641975 0 1 1 127.82442,0 z"
+ id="path1563"
+ style="opacity:0.381395;fill:url(#radialGradient3336);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/multimc/scalable/export.svg b/launcher/resources/multimc/scalable/export.svg
new file mode 100644
index 00000000..2605de14
--- /dev/null
+++ b/launcher/resources/multimc/scalable/export.svg
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ height="128"
+ id="svg2811"
+ version="1.0"
+ width="128"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <metadata
+ id="metadata2">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:description />
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>unsorted</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent
+ rdf:about="http://www.openclipart.org/">
+ <dc:title>Open Clip Art Library, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title />
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title />
+ </cc:Agent>
+ </dc:rights>
+ <dc:date />
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/" />
+ <dc:language>en</dc:language>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs2813">
+ <linearGradient
+ gradientTransform="matrix(1.0033808,0,0,1,-8.2378002,8)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2937"
+ x1="122.74438"
+ x2="122.39215"
+ y1="96.721588"
+ y2="20.043535">
+ <stop
+ id="stop2939"
+ offset="0"
+ style="stop-color:#72b4f4;stop-opacity:1" />
+ <stop
+ id="stop2941"
+ offset="0.13053299"
+ style="stop-color:#b3d9ff;stop-opacity:1" />
+ <stop
+ id="stop2943"
+ offset="0.34621301"
+ style="stop-color:#b3d9ff;stop-opacity:1" />
+ <stop
+ id="stop2945"
+ offset="0.72006166"
+ style="stop-color:#71a8f5;stop-opacity:1" />
+ <stop
+ id="stop2947"
+ offset="1"
+ style="stop-color:#508ed9;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="translate(242.00093,332.5)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2927"
+ x1="-178"
+ x2="-178"
+ y1="-228.3945"
+ y2="-304.61469">
+ <stop
+ id="stop2929"
+ offset="0"
+ style="stop-color:#cfe7ff;stop-opacity:1" />
+ <stop
+ id="stop2931"
+ offset="0.1"
+ style="stop-color:#71a8f5;stop-opacity:1" />
+ <stop
+ id="stop2933"
+ offset="1"
+ style="stop-color:#2c72c7;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2822">
+ <stop
+ id="stop2824"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1" />
+ <stop
+ id="stop2826"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="matrix(1.0033404,0,0,1,-8.2374684,8)"
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_9_"
+ x1="71.999496"
+ x2="71.999496"
+ y1="14.2578"
+ y2="19.9583">
+ <stop
+ id="stop46"
+ offset="0.25"
+ style="stop-color:#71a8f5;stop-opacity:0" />
+ <stop
+ id="stop48"
+ offset="1"
+ style="stop-color:#0057ae;stop-opacity:1" />
+ </linearGradient>
+ <filter
+ height="1.768"
+ id="filter2807"
+ width="1.0512"
+ x="-0.025599999"
+ y="-0.38399999">
+ <feGaussianBlur
+ id="feGaussianBlur2809"
+ stdDeviation="1.28" />
+ </filter>
+ <linearGradient
+ gradientTransform="translate(-6.999995,8)"
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_6_"
+ x1="72.000504"
+ x2="72.000504"
+ y1="96"
+ y2="0.00048828119">
+ <stop
+ id="stop7"
+ offset="0"
+ style="stop-color:#00479e;stop-opacity:1" />
+ <stop
+ id="stop9"
+ offset="0.0769"
+ style="stop-color:#2c72c7;stop-opacity:1" />
+ <stop
+ id="stop11"
+ offset="0.58579999"
+ style="stop-color:#6ea1df;stop-opacity:1" />
+ <stop
+ id="stop13"
+ offset="0.96450001"
+ style="stop-color:#adcbee;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="matrix(1.0033808,0,0,1,-8.2378,8)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3109"
+ x1="122.74438"
+ x2="122.74438"
+ xlink:href="#linearGradient2937"
+ y1="96"
+ y2="20" />
+ <linearGradient
+ gradientTransform="translate(242.00093,332.5)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2923"
+ x1="-168.99216"
+ x2="-168.99216"
+ xlink:href="#linearGradient2822"
+ y1="-300.5"
+ y2="-296.48441" />
+ <linearGradient
+ gradientTransform="translate(242.00093,332.5)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2925"
+ x1="-178"
+ x2="-178"
+ xlink:href="#linearGradient2927"
+ y1="-228.5"
+ y2="-304.61469" />
+ <linearGradient
+ gradientTransform="translate(242.00093,364.5)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2197"
+ x1="-168.99216"
+ x2="-168.99216"
+ xlink:href="#linearGradient2822"
+ y1="-300.5"
+ y2="-296.48441" />
+ <linearGradient
+ gradientTransform="matrix(1,0,0,0.7368421,242.00093,284.36842)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2201"
+ x1="-178"
+ x2="-178"
+ xlink:href="#linearGradient2927"
+ y1="-228.5"
+ y2="-304.61469" />
+ <linearGradient
+ gradientTransform="matrix(1.0033404,0,0,1,-7.2374684,40)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2204"
+ x1="71.999496"
+ x2="71.999496"
+ xlink:href="#XMLID_9_"
+ y1="14.2578"
+ y2="19.9583" />
+ <linearGradient
+ gradientTransform="matrix(1.0033808,0,0,0.7368421,-8.2378,45.263158)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2207"
+ x1="122.74438"
+ x2="122.74438"
+ xlink:href="#linearGradient2937"
+ y1="96"
+ y2="20" />
+ <linearGradient
+ gradientTransform="translate(-6.999995,20)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2212"
+ x1="72.000504"
+ x2="72.000504"
+ xlink:href="#XMLID_6_"
+ y1="96"
+ y2="0.00048828119" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient10213"
+ x1="98.617439"
+ x2="91.228737"
+ xlink:href="#linearGradient10207"
+ y1="106.41443"
+ y2="99.254974" />
+ <radialGradient
+ cx="102"
+ cy="112.3047"
+ fx="102"
+ fy="112.3047"
+ gradientTransform="matrix(1.295034,1.3831431e-7,-1.3627884e-7,1.2946006,-30.093452,-33.119615)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient9437"
+ r="139.55859"
+ xlink:href="#XMLID_8_" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7084">
+ <path
+ d="M 72,88 L 40,120 L 32,120 L 32,80 L 72,80 L 72,88 z"
+ id="path7086"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </clipPath>
+ <radialGradient
+ cx="102"
+ cy="112.3047"
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_8_"
+ r="139.55859">
+ <stop
+ id="stop41"
+ offset="0"
+ style="stop-color:#b7b8b9;stop-opacity:1;" />
+ <stop
+ id="stop47"
+ offset="0.18851049"
+ style="stop-color:#ECECEC" />
+ <stop
+ id="stop49"
+ offset="0.25718147"
+ style="stop-color:#FAFAFA" />
+ <stop
+ id="stop51"
+ offset="0.30111277"
+ style="stop-color:#FFFFFF" />
+ <stop
+ id="stop53"
+ offset="0.5313"
+ style="stop-color:#FAFAFA" />
+ <stop
+ id="stop55"
+ offset="0.8449"
+ style="stop-color:#EBECEC" />
+ <stop
+ id="stop57"
+ offset="1"
+ style="stop-color:#E1E2E3" />
+ </radialGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ id="XMLID_12_"
+ x1="96"
+ x2="88.000198"
+ y1="104"
+ y2="96.000198">
+ <stop
+ id="stop83"
+ offset="0"
+ style="stop-color:#888A85" />
+ <stop
+ id="stop85"
+ offset="0.0072"
+ style="stop-color:#8C8E89" />
+ <stop
+ id="stop87"
+ offset="0.0673"
+ style="stop-color:#ABACA9" />
+ <stop
+ id="stop89"
+ offset="0.1347"
+ style="stop-color:#C5C6C4" />
+ <stop
+ id="stop91"
+ offset="0.2652576"
+ style="stop-color:#DBDBDA" />
+ <stop
+ id="stop93"
+ offset="0.37646064"
+ style="stop-color:#EBEBEB" />
+ <stop
+ id="stop95"
+ offset="0.48740286"
+ style="stop-color:#F7F7F6" />
+ <stop
+ id="stop97"
+ offset="0.6324091"
+ style="stop-color:#FDFDFD" />
+ <stop
+ id="stop99"
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10207">
+ <stop
+ id="stop10209"
+ offset="0"
+ style="stop-color:#a2a2a2;stop-opacity:1;" />
+ <stop
+ id="stop10211"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="matrix(1.0172054,0,0,1.5,246.03226,514.75)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3385"
+ x1="-168.99216"
+ x2="-168.99216"
+ xlink:href="#linearGradient2822"
+ y1="-300.5"
+ y2="-296.48441" />
+ <linearGradient
+ gradientTransform="matrix(1,0,0,0.7368421,242.00093,284.36842)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3387"
+ x1="-178"
+ x2="-178"
+ xlink:href="#linearGradient2927"
+ y1="-232.84966"
+ y2="-304.61469" />
+ <linearGradient
+ xlink:href="#linearGradient9732"
+ id="linearGradient3302"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0017056,0,0,1.0011229,34.393692,27.039518)"
+ x1="66.635262"
+ y1="48.579208"
+ x2="13.134155"
+ y2="48.579208" />
+ <linearGradient
+ id="linearGradient9732">
+ <stop
+ id="stop9734"
+ offset="0"
+ style="stop-color:white;stop-opacity:1;" />
+ <stop
+ style="stop-color:white;stop-opacity:1;"
+ offset="0.5"
+ id="stop9740" />
+ <stop
+ id="stop9736"
+ offset="1"
+ style="stop-color:white;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient3317"
+ id="linearGradient3299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.464058,0,0,1.464058,34.761082,27.326693)"
+ x1="49.087219"
+ y1="28.30368"
+ x2="-3.3878942"
+ y2="29.14728" />
+ <linearGradient
+ id="linearGradient3317">
+ <stop
+ style="stop-color:#646464;stop-opacity:1;"
+ offset="0"
+ id="stop3319" />
+ <stop
+ id="stop3321"
+ offset="0.086"
+ style="stop-color:#7e7e7e;stop-opacity:1;" />
+ <stop
+ id="stop3323"
+ offset="0.86000001"
+ style="stop-color:#999;stop-opacity:0.58762884;" />
+ <stop
+ style="stop-color:white;stop-opacity:0;"
+ offset="1"
+ id="stop3325" />
+ </linearGradient>
+ </defs>
+ <path
+ d="M 118.983,31 C 118.992,29.35 117.64999,28 115.99999,28 L 40.961007,28 C 40.961007,28 32.061006,20 30.961,20 L 14.999998,20 C 12.799996,20 10.999999,21.8 10.999999,24 L 10.999999,31 C 10.999999,31 11.999999,116 8,116 L 122,116 C 117.99999,116 118.983,31 118.983,31 z "
+ id="path15"
+ style="fill:url(#linearGradient2212)" />
+ <g
+ id="g17"
+ style="opacity:0.6;filter:url(#filter2807)"
+ transform="matrix(1.0033404,0,0,1,-8.2374684,20)">
+ <path
+ d="M 132,96 C 132,98.2 128.4,100 124,100 L 20,100 C 15.6,100 12,98.2 12,96 C 12,93.8 15.6,92 20,92 L 124,92 C 128.4,92 132,93.8 132,96 z "
+ id="path19" />
+ </g>
+ <path
+ d="M 10.884862,54 C 10.893892,55.75 10.902922,57.755 10.910952,60 L 119.09511,60 C 119.10414,57.755 119.11317,55.75 119.1212,54 L 10.884862,54 z "
+ id="path50"
+ style="opacity:0.5;fill:url(#linearGradient2204)" />
+ <path
+ d="M 119.99722,31 C 120.00622,29.35 118.66422,28 117.01422,28 L 42.975222,28 L 36.389222,21.414 C 35.611222,20.636 34.075222,20 32.975222,20 L 12.014222,20 C 9.8142222,20 8.0142222,21.8 8.0142222,24 C 8.0142222,24 7.9822222,54.499299 8.0142222,60.031299 L 12.014222,60.031299 C 12.014222,53.222299 12.014222,24 12.014222,24 L 32.901222,23.997 C 33.083222,24.019 33.470222,24.179 33.560222,24.243 L 41.318222,32 C 41.318222,32 114.02722,32 115.99922,32 C 115.99922,32.435 116.00022,56.400299 116.00222,60.031299 L 120.01422,60.031299 C 120.04522,54.499299 119.99722,31 119.99722,31 z "
+ id="path2896"
+ style="fill:#5e95e3;fill-opacity:1" />
+ <path
+ d="M 124.36598,113.79242 C 124.27969,115.00674 122.85389,116 121.19831,116 L 6.812906,116 C 5.157329,116 3.731522,115.00674 3.644228,113.79242 L 0.007982,62.204632 C -0.112423,60.992526 1.143808,60 2.799384,60 L 125.21183,60 C 126.86741,60 128.11762,60.991789 127.9912,62.203895 L 124.36598,113.79242 z "
+ id="path30"
+ style="opacity:0.9;fill:url(#linearGradient2207);fill-opacity:1" />
+ <path
+ d="M 125.21293,60 L 2.7999261,60 C 1.1449261,60 -0.11207393,60.992526 0.0079260701,62.204632 L 3.6439261,113.79242 C 3.7309261,115.00674 5.1569261,116 6.8129261,116 L 121.19793,116 C 122.85393,116 124.27993,115.00674 124.36593,113.79242 L 127.99093,62.203895 C 128.11893,60.991789 126.86793,60 125.21293,60 z M 120.41393,113.05263 C 118.87493,113.05263 9.1349261,113.05263 7.5979261,113.05263 C 7.2299261,107.83726 4.5229261,70.627562 4.0659261,64.149246 C 6.5189261,64.149246 121.45793,64.149246 123.93493,64.149246 C 123.81393,65.85872 120.49293,111.92821 120.41393,113.05263 z "
+ id="path2894"
+ style="fill:url(#linearGradient3387)" />
+ <path
+ d="M 4,64 C 4.0273488,64.775875 4.1802721,68.801119 4.2225137,70 C 7.123925,70 122.78934,70 125.71499,70 C 125.74343,69.191222 125.93026,64.204735 125.9375,64 C 123.41788,64 6.4952049,64 4,64 z "
+ id="path2908"
+ style="fill:url(#linearGradient3385);fill-opacity:1;opacity:0.835" />
+ <path
+ style="fill:url(#linearGradient3302);fill-opacity:1"
+ d="m 69.898474,103.45771 5.856232,5.85623 30.761814,-32.21825 -30.761814,-32.2003 -5.856232,5.85623 11.712465,17.5687 H 40.617313 v 17.56869 h 40.993626 z"
+ id="polygon3477_2_" />
+ <path
+ style="fill:url(#linearGradient3299);fill-opacity:1;stroke:none"
+ d="m 75.800458,39.03916 c -1.573495,-0.0241 -3.090514,0.58597 -4.209166,1.69281 l -5.856231,5.85624 C 63.749307,48.56552 63.442452,51.67243 65.003031,54 l 5.627473,8.46409 H 40.617313 v 29.281159 h 30.013191 l -5.627473,8.464081 c -1.56058,2.32757 -1.253725,5.43448 0.73203,7.4118 l 5.856231,5.85623 c 1.121886,1.12264 2.668011,1.76444 4.254918,1.73857 1.586907,-0.0259 3.078725,-0.71721 4.163416,-1.87583 L 110.75484,81.13083 c 2.16677,-2.26455 2.16677,-5.83354 0,-8.09808 L 80.009626,40.86923 c -1.095643,-1.15728 -2.615555,-1.81812 -4.209168,-1.83007 z m -0.04583,5.85623 30.745222,32.20928 -30.745222,32.20927 -5.856231,-5.85623 11.712464,-17.5687 H 40.617236 V 68.32032 h 40.993625 l -11.712459,-17.5687 5.856231,-5.85623 z"
+ id="path3616" />
+</svg>
diff --git a/launcher/resources/multimc/scalable/instances/bee.svg b/launcher/resources/multimc/scalable/instances/bee.svg
index 49f216c8..110b224c 100644
--- a/launcher/resources/multimc/scalable/instances/bee.svg
+++ b/launcher/resources/multimc/scalable/instances/bee.svg
@@ -1,159 +1,136 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
+ width="24"
+ height="24"
version="1.1"
- viewBox="0 0 25.399999 25.4"
- height="96"
- width="96">
- <g transform="translate(-33.928467,-255.46043)">
- <g transform="rotate(-9.9635201,-96.932986,622.95265)">
- <path style="fill:#f1f2e0;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.28753757px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 101.98199,286.42583 -1.1502,0.57512 1.14992,0.5755 2.30058,1.14996 1.15019,-0.57514 -2.30058,-1.14995 z m 2.3003,2.30058 -1.1502,0.57512 1.15002,0.57493 1.15019,-0.57513 z m -1.8e-4,1.15005 -1.1502,0.57512 1.15057,0.57502 1.15019,-0.57512 z m 3.7e-4,1.15014 -1.15019,0.57514 -1.1502,0.57512 1.15001,0.57493 1.1502,-0.57513 1.15019,-0.57512 z m -2.30039,1.15026 -1.15001,-0.57494 -1.150566,-0.57502 -1.150193,0.57512 1.150565,0.57502 1.150014,0.57494 z m -2.300576,-1.14996 1.150196,-0.57513 -1.150014,-0.57493 -1.150097,0.57456 z m -1.149915,-0.5755 1.150193,-0.57512 -1.150012,-0.57492 -1.150194,0.57512 z m 1.81e-4,-1.15004 1.150194,-0.57513 -1.150567,-0.57503 -1.150193,0.57512 z m -3.73e-4,-1.15016 1.150194,-0.57512 1.150189,-0.57513 -1.150008,-0.57492 -1.150193,0.57512 -1.150194,0.57512 z m 1.150567,0.57503 1.149916,0.57548 1.15001,0.57494 1.15019,-0.57512 -1.15001,-0.57494 -1.15047,-0.57558 z" />
- </g>
- <g style="fill:none;stroke:#999999" transform="matrix(1.0012918,0.26829532,-0.26829532,1.0012918,86.112205,-31.978257)">
- <path style="stroke:#999999;stroke-width:1.03661346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 85.501953 51.128906 C 82.473901 51.748417 79.445938 52.368362 76.417969 52.988281 L 79.886719 56.064453 C 82.914656 55.444381 85.942682 54.824742 88.970703 54.205078 L 85.501953 51.128906 z "
- transform="matrix(0.24654113,-0.06606049,0.06606049,0.24654113,23.141685,280.86706)" />
- <path style="stroke:#999999;stroke-width:1.03661346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 79.636719 40.972656 L 75.095703 41.902344 C 78.563735 44.978675 82.032556 48.054115 85.501953 51.128906 L 90.042969 50.201172 L 79.636719 40.972656 z "
- transform="matrix(0.24654113,-0.06606049,0.06606049,0.24654113,23.141685,280.86706)" />
- </g>
- <path style="fill:#fed668" d="m 41.865965,262.07502 -4.233333,2.11667 7.408333,3.70417 4.233334,-2.11667 z" />
- <path style="fill:#0a0707" d="m 50.332633,272.39378 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
- <path style="fill:#422117" d="m 50.332633,273.7167 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
- <path style="fill:#0a0707" d="m 48.215966,273.45211 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
- <path style="fill:#422117" d="m 48.215966,274.77503 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
- <path style="fill:#422117" d="m 45.040966,275.3042 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
- <path style="fill:#78621d" d="m 45.040965,277.15626 4.233334,-2.11665 v -9.26042 l -4.233334,2.11667 z" />
- <path style="fill:#1d0c08" d="m 50.332632,265.25002 -1.058333,0.52917 v 9.26042 l 1.058333,-0.52917 z" />
- <path style="fill:#1d0c08" d="m 52.449299,264.19169 -1.058333,0.52917 v 9.26042 l 1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 38.690965,263.66252 1.058334,0.52917 1.058333,-0.52917 1.058333,0.52917 2.116667,-1.05834 -2.116667,-1.05833 z" />
- <path style="fill:#fed668" d="m 42.924299,261.54586 7.408334,3.70417 1.058333,-0.52917 -7.408334,-3.70417 z" />
- <path style="fill:#e4ae3b" d="m 40.807633,262.60419 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#fed668" d="m 45.040966,260.48752 7.408333,3.70417 1.058333,-0.52917 -7.408333,-3.70417 z" />
- <path style="fill:#5f3225" d="m 42.924299,261.54585 -1.058334,0.52917 7.408333,3.70417 1.058334,-0.52917 z" />
- <path style="fill:#e4ae3b" d="m 42.9243,261.54585 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#5f3225" d="m 45.040965,260.48752 -1.058333,0.52917 7.408333,3.70416 1.058333,-0.52916 z" />
- <path style="fill:#e4ae3b" d="m 45.040966,260.48752 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#5f3225" d="m 46.099299,259.95835 7.408333,3.70417 2.116666,-1.05833 -7.408333,-3.70417 z" />
- <path style="fill:#552e22" d="m 47.157633,259.42919 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 43.982633,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 46.099299,261.01669 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 40.807633,264.72086 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#e4ae3b" d="m 45.040967,262.60419 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#552e22" d="m 49.2743,260.48753 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 48.215966,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 41.865966,266.30836 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#552e22" d="m 50.332633,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 46.099299,265.25002 -1.058334,0.52917 1.058334,0.52916 -2.116667,1.05834 1.058333,0.52916 3.175,-1.5875 z" />
- <path style="fill:#edc343" d="m 48.215967,264.19169 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 50.332633,263.13336 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#e4ae3b" d="m 47.157633,265.77919 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#e4ae3b" d="m 49.2743,264.72085 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#e4ae3b" d="m 51.390966,263.66252 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#edc343" d="m 38.690966,264.72086 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#ac8d2e" d="m 37.632633,273.45211 7.408333,3.70415 v -9.2604 l -7.408333,-3.70417 z" />
- <path style="fill:#12121a" d="m 37.632633,268.16044 2.116666,1.05834 v 3.96875 l -2.116666,-1.05834 z" />
- <path style="fill:#78621d" d="m 50.332633,265.25002 v 9.26041 l 1.058333,-0.52916 v -9.26042 z" />
- <path style="fill:#78621d" d="m 52.449299,264.19169 v 9.26041 l 1.058333,-0.52916 v -9.26042 z" />
- <path style="fill:#27120b" d="m 49.274299,265.77919 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#09090e" d="m 45.040966,271.86461 1.058333,-0.52917 v 3.96875 l -1.058333,0.52917 -2.116667,-1.05834 v -3.96875 z" />
- <path style="fill:#150704" d="m 49.2743,271.07085 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#050303" d="m 49.2743,273.71669 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#150704" d="m 51.390966,268.68961 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#050303" d="m 51.390966,271.33544 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#2c140d" d="m 51.390966,264.72086 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#1d0c08" d="m 55.624299,262.60419 -2.116666,1.05833 v 9.26042 l 2.116666,-1.05833 z" />
- <path style="fill:#150704" d="m 53.507633,268.95419 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#050303" d="m 53.507633,270.2771 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#2c140d" d="m 53.507633,263.66252 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#27120b" d="m 54.565966,263.13335 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#150704" d="m 54.565966,269.74794 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
- <path style="fill:#27120b" d="m 54.565966,267.10211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#633f19" d="m 45.040965,277.15626 3.175,-1.58749 v -1.32291 l -3.175,1.5875 z" />
- <path style="fill:#55300a" d="m 48.215966,274.24586 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#694520" d="m 48.215966,272.92294 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#735619" d="m 48.215966,271.60002 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#735619" d="m 47.157633,273.45211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#131016" d="m 45.040966,271.86461 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#131016" d="m 45.040966,274.51044 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#694520" d="m 45.040966,270.54169 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#735619" d="m 46.0993,270.01252 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#816c31" d="m 45.040966,267.89586 v 1.32291 l 1.058333,-0.52916 v 1.32291 l 1.058334,-0.52916 v -1.32292 l 2.116666,-1.05833 v -1.32292 z" />
- <path style="fill:#49250c" d="m 50.332633,273.18752 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#633f19" d="m 50.332633,271.86461 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#735619" d="m 50.332633,269.21878 v 2.64582 l 1.058333,-0.52916 v -2.64583 z" />
- <path style="fill:#816c31" d="m 50.332633,265.25002 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#49250c" d="m 52.449299,270.80627 10e-7,2.64583 1.058333,-0.52916 -10e-7,-2.64584 z" />
- <path style="fill:#55300a" d="m 52.4493,269.48336 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#694520" d="m 52.4493,268.16044 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#755719" d="m 52.4493,266.83752 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#816c31" d="m 52.4493,264.19169 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#b89b49" d="m 37.632632,265.51461 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
- <path style="fill:#b89b49" d="m 40.807633,267.10211 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
- <path style="fill:#b89b49" d="m 43.982633,270.01253 1.058333,0.52916 v -2.64584 l -1.058333,-0.52916 z" />
- <path style="fill:#966531" d="m 43.982632,271.33545 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#a57d28" d="m 42.924299,270.80627 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#b89b49" d="m 41.865965,270.27712 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#966531" d="m 43.982632,271.33545 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#a57d28" d="m 39.749299,273.18753 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#a57d28" d="m 41.865965,274.24587 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#a57d28" d="m 40.807633,275.03961 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#8e5c28" d="m 43.982633,276.62711 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#966531" d="m 41.865966,275.56877 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
- <path style="fill:#966531" d="m 38.690966,273.98128 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
- <path style="fill:#8e5c28" d="m 37.632632,273.45212 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#956531" d="m 37.632633,268.16044 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#b89b49" d="m 39.749299,267.89587 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#1f1c25" d="m 38.690966,267.36669 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#1f1c25" d="m 42.924299,269.48337 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#589197" d="m 42.924299,272.12919 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#589197" d="m 38.690966,270.01252 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#12121a" d="m 43.982633,272.65836 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#12121a" d="m 42.924299,273.45211 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#12121a" d="m 43.982633,275.30419 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#1f1c25" d="m 43.982633,273.98127 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#1f1c25" d="m 42.924299,274.77503 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#1f1c25" d="m 38.690966,272.65836 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#1f1c25" d="m 37.632633,270.80627 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
- <path style="fill:#131016" d="m 38.690966,267.10211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#131016" d="m 36.574299,266.83752 v 1.32291 l 2.116667,-1.05832 v -1.32292 z" />
- <path style="fill:#131016" d="m 41.865966,268.68961 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
- <path style="fill:#131016" d="m 39.749299,268.42502 v 1.32291 l 2.116667,-1.05832 v -1.32292 z" />
- <g transform="matrix(1.0012918,0.26829532,-0.26829532,1.0012918,86.112205,-31.978257)">
- <path style="fill:#f1f2e0" d="m 38.073986,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#5f3225" d="m 37.015652,286.76606 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#5f3225" d="m 37.015652,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 38.073986,288.35355 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 40.190652,286.23689 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 42.307319,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 42.307319,287.29521 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 43.365653,287.82437 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 43.365653,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 41.248986,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 40.190653,288.35354 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 45.482319,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 46.540653,288.35355 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 46.540653,287.29521 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 44.423986,286.23688 2.116667,1.05833 1.058333,-0.52917 -2.116667,-1.05833 z" />
- </g>
- <g transform="matrix(1.0703659,-0.18803179,0.18803179,1.0703659,-63.348962,-38.123102)">
- <path style="fill:#f1f2e0" d="m 48.392735,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#5f3225" d="m 47.334402,289.41187 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#5f3225" d="m 45.217735,289.41188 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 44.159402,288.8827 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 43.101069,286.23687 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 43.101068,285.17854 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 46.276068,284.64938 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 45.217735,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 44.159402,284.64937 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 43.101068,287.2952 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 44.159402,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 48.392735,286.76604 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 48.392735,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f1f2e0" d="m 46.276068,286.76604 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
- <path style="fill:#f7fdfd" d="m 47.334402,285.17854 2.116667,1.05833 1.058333,-0.52917 -2.116667,-1.05833 z" />
- </g>
- </g>
-</svg>
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient1308"
+ id="linearGradient1310"
+ x1="16"
+ y1="27"
+ x2="16"
+ y2="5"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient1308"><stop
+ style="stop-color:#f3db6c;stop-opacity:1;"
+ offset="0"
+ id="stop1304" /><stop
+ style="stop-color:#ffeea9;stop-opacity:1;"
+ offset="1"
+ id="stop1306" /></linearGradient><linearGradient
+ xlink:href="#linearGradient1440"
+ id="linearGradient1442"
+ x1="7"
+ y1="24"
+ x2="11"
+ y2="14"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient1440"><stop
+ style="stop-color:#2c251f;stop-opacity:1;"
+ offset="0"
+ id="stop1436" /><stop
+ style="stop-color:#4d3f33;stop-opacity:1;"
+ offset="1"
+ id="stop1438" /></linearGradient><linearGradient
+ xlink:href="#linearGradient1460"
+ id="linearGradient1462"
+ x1="10"
+ y1="18"
+ x2="12"
+ y2="14"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1)" /><linearGradient
+ id="linearGradient1460"><stop
+ style="stop-color:#4c7aba;stop-opacity:1;"
+ offset="0"
+ id="stop1456" /><stop
+ style="stop-color:#86c3cf;stop-opacity:1;"
+ offset="1"
+ id="stop1458" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_bee"
+ transform="translate(-4,-4)"><rect
+ style="fill:url(#linearGradient1310);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543"
+ width="18"
+ height="18"
+ x="7"
+ y="7"
+ ry="3" /><g
+ id="g7050"
+ clip-path="none"
+ transform="translate(2,-1)"><rect
+ style="fill:url(#linearGradient1442);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect3612"
+ width="5"
+ height="9"
+ x="6"
+ y="14"
+ ry="1" /><path
+ id="rect4739"
+ style="fill:url(#linearGradient1462);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 8,14 v 4 h 3 v -3 c 0,-0.553999 -0.446001,-1 -1,-1 z" /></g><use
+ x="0"
+ y="0"
+ xlink:href="#g7050"
+ id="use7056"
+ transform="matrix(-1,0,0,1,32,0)" /><g
+ id="g10049"
+ transform="translate(0,-1)"
+ style="fill:#2c251f;fill-opacity:1"><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect9308"
+ width="3"
+ height="3"
+ x="9"
+ y="10"
+ ry="1" /><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect9310"
+ width="5"
+ height="3"
+ x="4"
+ y="7"
+ ry="1" /><path
+ id="path9312"
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 8,9 v 1 c 0.5539988,0 1,0.446001 1,1 h 1 V 10 C 9.4460006,10 9,9.5539994 9,9 Z" /></g><g
+ id="g10057"
+ transform="matrix(-1,0,0,1,31,-1)"
+ style="fill:#2c251f;fill-opacity:1"><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect10051"
+ width="3"
+ height="3"
+ x="8"
+ y="10"
+ ry="1" /><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect10053"
+ width="5"
+ height="3"
+ x="3"
+ y="7"
+ ry="1" /><path
+ id="path10055"
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 7,9 v 1 c 0.5539988,0 1,0.446001 1,1 H 9 V 10 C 8.4460006,10 8,9.5539994 8,9 Z" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412"
+ width="24"
+ height="24"
+ x="4"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/bee_legacy.svg b/launcher/resources/multimc/scalable/instances/bee_legacy.svg
new file mode 100644
index 00000000..49f216c8
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/bee_legacy.svg
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ viewBox="0 0 25.399999 25.4"
+ height="96"
+ width="96">
+ <g transform="translate(-33.928467,-255.46043)">
+ <g transform="rotate(-9.9635201,-96.932986,622.95265)">
+ <path style="fill:#f1f2e0;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.28753757px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 101.98199,286.42583 -1.1502,0.57512 1.14992,0.5755 2.30058,1.14996 1.15019,-0.57514 -2.30058,-1.14995 z m 2.3003,2.30058 -1.1502,0.57512 1.15002,0.57493 1.15019,-0.57513 z m -1.8e-4,1.15005 -1.1502,0.57512 1.15057,0.57502 1.15019,-0.57512 z m 3.7e-4,1.15014 -1.15019,0.57514 -1.1502,0.57512 1.15001,0.57493 1.1502,-0.57513 1.15019,-0.57512 z m -2.30039,1.15026 -1.15001,-0.57494 -1.150566,-0.57502 -1.150193,0.57512 1.150565,0.57502 1.150014,0.57494 z m -2.300576,-1.14996 1.150196,-0.57513 -1.150014,-0.57493 -1.150097,0.57456 z m -1.149915,-0.5755 1.150193,-0.57512 -1.150012,-0.57492 -1.150194,0.57512 z m 1.81e-4,-1.15004 1.150194,-0.57513 -1.150567,-0.57503 -1.150193,0.57512 z m -3.73e-4,-1.15016 1.150194,-0.57512 1.150189,-0.57513 -1.150008,-0.57492 -1.150193,0.57512 -1.150194,0.57512 z m 1.150567,0.57503 1.149916,0.57548 1.15001,0.57494 1.15019,-0.57512 -1.15001,-0.57494 -1.15047,-0.57558 z" />
+ </g>
+ <g style="fill:none;stroke:#999999" transform="matrix(1.0012918,0.26829532,-0.26829532,1.0012918,86.112205,-31.978257)">
+ <path style="stroke:#999999;stroke-width:1.03661346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 85.501953 51.128906 C 82.473901 51.748417 79.445938 52.368362 76.417969 52.988281 L 79.886719 56.064453 C 82.914656 55.444381 85.942682 54.824742 88.970703 54.205078 L 85.501953 51.128906 z "
+ transform="matrix(0.24654113,-0.06606049,0.06606049,0.24654113,23.141685,280.86706)" />
+ <path style="stroke:#999999;stroke-width:1.03661346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 79.636719 40.972656 L 75.095703 41.902344 C 78.563735 44.978675 82.032556 48.054115 85.501953 51.128906 L 90.042969 50.201172 L 79.636719 40.972656 z "
+ transform="matrix(0.24654113,-0.06606049,0.06606049,0.24654113,23.141685,280.86706)" />
+ </g>
+ <path style="fill:#fed668" d="m 41.865965,262.07502 -4.233333,2.11667 7.408333,3.70417 4.233334,-2.11667 z" />
+ <path style="fill:#0a0707" d="m 50.332633,272.39378 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
+ <path style="fill:#422117" d="m 50.332633,273.7167 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
+ <path style="fill:#0a0707" d="m 48.215966,273.45211 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
+ <path style="fill:#422117" d="m 48.215966,274.77503 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
+ <path style="fill:#422117" d="m 45.040966,275.3042 v 1.32291 l 1.058333,0.52917 v -1.32292 z" />
+ <path style="fill:#78621d" d="m 45.040965,277.15626 4.233334,-2.11665 v -9.26042 l -4.233334,2.11667 z" />
+ <path style="fill:#1d0c08" d="m 50.332632,265.25002 -1.058333,0.52917 v 9.26042 l 1.058333,-0.52917 z" />
+ <path style="fill:#1d0c08" d="m 52.449299,264.19169 -1.058333,0.52917 v 9.26042 l 1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 38.690965,263.66252 1.058334,0.52917 1.058333,-0.52917 1.058333,0.52917 2.116667,-1.05834 -2.116667,-1.05833 z" />
+ <path style="fill:#fed668" d="m 42.924299,261.54586 7.408334,3.70417 1.058333,-0.52917 -7.408334,-3.70417 z" />
+ <path style="fill:#e4ae3b" d="m 40.807633,262.60419 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#fed668" d="m 45.040966,260.48752 7.408333,3.70417 1.058333,-0.52917 -7.408333,-3.70417 z" />
+ <path style="fill:#5f3225" d="m 42.924299,261.54585 -1.058334,0.52917 7.408333,3.70417 1.058334,-0.52917 z" />
+ <path style="fill:#e4ae3b" d="m 42.9243,261.54585 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#5f3225" d="m 45.040965,260.48752 -1.058333,0.52917 7.408333,3.70416 1.058333,-0.52916 z" />
+ <path style="fill:#e4ae3b" d="m 45.040966,260.48752 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#5f3225" d="m 46.099299,259.95835 7.408333,3.70417 2.116666,-1.05833 -7.408333,-3.70417 z" />
+ <path style="fill:#552e22" d="m 47.157633,259.42919 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 43.982633,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 46.099299,261.01669 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 40.807633,264.72086 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#e4ae3b" d="m 45.040967,262.60419 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#552e22" d="m 49.2743,260.48753 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 48.215966,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 41.865966,266.30836 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#552e22" d="m 50.332633,262.07502 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 46.099299,265.25002 -1.058334,0.52917 1.058334,0.52916 -2.116667,1.05834 1.058333,0.52916 3.175,-1.5875 z" />
+ <path style="fill:#edc343" d="m 48.215967,264.19169 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 50.332633,263.13336 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#e4ae3b" d="m 47.157633,265.77919 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#e4ae3b" d="m 49.2743,264.72085 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#e4ae3b" d="m 51.390966,263.66252 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#edc343" d="m 38.690966,264.72086 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#ac8d2e" d="m 37.632633,273.45211 7.408333,3.70415 v -9.2604 l -7.408333,-3.70417 z" />
+ <path style="fill:#12121a" d="m 37.632633,268.16044 2.116666,1.05834 v 3.96875 l -2.116666,-1.05834 z" />
+ <path style="fill:#78621d" d="m 50.332633,265.25002 v 9.26041 l 1.058333,-0.52916 v -9.26042 z" />
+ <path style="fill:#78621d" d="m 52.449299,264.19169 v 9.26041 l 1.058333,-0.52916 v -9.26042 z" />
+ <path style="fill:#27120b" d="m 49.274299,265.77919 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#09090e" d="m 45.040966,271.86461 1.058333,-0.52917 v 3.96875 l -1.058333,0.52917 -2.116667,-1.05834 v -3.96875 z" />
+ <path style="fill:#150704" d="m 49.2743,271.07085 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#050303" d="m 49.2743,273.71669 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#150704" d="m 51.390966,268.68961 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#050303" d="m 51.390966,271.33544 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#2c140d" d="m 51.390966,264.72086 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#1d0c08" d="m 55.624299,262.60419 -2.116666,1.05833 v 9.26042 l 2.116666,-1.05833 z" />
+ <path style="fill:#150704" d="m 53.507633,268.95419 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#050303" d="m 53.507633,270.2771 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#2c140d" d="m 53.507633,263.66252 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#27120b" d="m 54.565966,263.13335 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#150704" d="m 54.565966,269.74794 v 2.64583 l 1.058333,-0.52916 v -2.64584 z" />
+ <path style="fill:#27120b" d="m 54.565966,267.10211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#633f19" d="m 45.040965,277.15626 3.175,-1.58749 v -1.32291 l -3.175,1.5875 z" />
+ <path style="fill:#55300a" d="m 48.215966,274.24586 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#694520" d="m 48.215966,272.92294 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#735619" d="m 48.215966,271.60002 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#735619" d="m 47.157633,273.45211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#131016" d="m 45.040966,271.86461 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#131016" d="m 45.040966,274.51044 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#694520" d="m 45.040966,270.54169 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#735619" d="m 46.0993,270.01252 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#816c31" d="m 45.040966,267.89586 v 1.32291 l 1.058333,-0.52916 v 1.32291 l 1.058334,-0.52916 v -1.32292 l 2.116666,-1.05833 v -1.32292 z" />
+ <path style="fill:#49250c" d="m 50.332633,273.18752 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#633f19" d="m 50.332633,271.86461 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#735619" d="m 50.332633,269.21878 v 2.64582 l 1.058333,-0.52916 v -2.64583 z" />
+ <path style="fill:#816c31" d="m 50.332633,265.25002 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#49250c" d="m 52.449299,270.80627 10e-7,2.64583 1.058333,-0.52916 -10e-7,-2.64584 z" />
+ <path style="fill:#55300a" d="m 52.4493,269.48336 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#694520" d="m 52.4493,268.16044 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#755719" d="m 52.4493,266.83752 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#816c31" d="m 52.4493,264.19169 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#b89b49" d="m 37.632632,265.51461 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
+ <path style="fill:#b89b49" d="m 40.807633,267.10211 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
+ <path style="fill:#b89b49" d="m 43.982633,270.01253 1.058333,0.52916 v -2.64584 l -1.058333,-0.52916 z" />
+ <path style="fill:#966531" d="m 43.982632,271.33545 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#a57d28" d="m 42.924299,270.80627 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#b89b49" d="m 41.865965,270.27712 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#966531" d="m 43.982632,271.33545 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#a57d28" d="m 39.749299,273.18753 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#a57d28" d="m 41.865965,274.24587 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#a57d28" d="m 40.807633,275.03961 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#8e5c28" d="m 43.982633,276.62711 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#966531" d="m 41.865966,275.56877 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
+ <path style="fill:#966531" d="m 38.690966,273.98128 2.116667,1.05833 v -1.32292 l -2.116667,-1.05833 z" />
+ <path style="fill:#8e5c28" d="m 37.632632,273.45212 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#956531" d="m 37.632633,268.16044 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#b89b49" d="m 39.749299,267.89587 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#1f1c25" d="m 38.690966,267.36669 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#1f1c25" d="m 42.924299,269.48337 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#589197" d="m 42.924299,272.12919 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#589197" d="m 38.690966,270.01252 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#12121a" d="m 43.982633,272.65836 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#12121a" d="m 42.924299,273.45211 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#12121a" d="m 43.982633,275.30419 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#1f1c25" d="m 43.982633,273.98127 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#1f1c25" d="m 42.924299,274.77503 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#1f1c25" d="m 38.690966,272.65836 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#1f1c25" d="m 37.632633,270.80627 1.058334,0.52916 v -1.32292 l -1.058334,-0.52916 z" />
+ <path style="fill:#131016" d="m 38.690966,267.10211 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#131016" d="m 36.574299,266.83752 v 1.32291 l 2.116667,-1.05832 v -1.32292 z" />
+ <path style="fill:#131016" d="m 41.865966,268.68961 v 1.32291 l 1.058333,-0.52916 v -1.32292 z" />
+ <path style="fill:#131016" d="m 39.749299,268.42502 v 1.32291 l 2.116667,-1.05832 v -1.32292 z" />
+ <g transform="matrix(1.0012918,0.26829532,-0.26829532,1.0012918,86.112205,-31.978257)">
+ <path style="fill:#f1f2e0" d="m 38.073986,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#5f3225" d="m 37.015652,286.76606 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#5f3225" d="m 37.015652,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 38.073986,288.35355 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 40.190652,286.23689 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 42.307319,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 42.307319,287.29521 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 43.365653,287.82437 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 43.365653,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 41.248986,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 40.190653,288.35354 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 45.482319,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 46.540653,288.35355 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 46.540653,287.29521 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 44.423986,286.23688 2.116667,1.05833 1.058333,-0.52917 -2.116667,-1.05833 z" />
+ </g>
+ <g transform="matrix(1.0703659,-0.18803179,0.18803179,1.0703659,-63.348962,-38.123102)">
+ <path style="fill:#f1f2e0" d="m 48.392735,288.88271 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#5f3225" d="m 47.334402,289.41187 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#5f3225" d="m 45.217735,289.41188 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 44.159402,288.8827 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 43.101069,286.23687 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 43.101068,285.17854 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 46.276068,284.64938 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 45.217735,286.23688 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 44.159402,284.64937 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 43.101068,287.2952 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 44.159402,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 48.392735,286.76604 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 48.392735,287.82438 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f1f2e0" d="m 46.276068,286.76604 1.058333,0.52917 1.058333,-0.52917 -1.058333,-0.52917 z" />
+ <path style="fill:#f7fdfd" d="m 47.334402,285.17854 2.116667,1.05833 1.058333,-0.52917 -2.116667,-1.05833 z" />
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/multimc/scalable/instances/brick.svg b/launcher/resources/multimc/scalable/instances/brick.svg
new file mode 100644
index 00000000..b600eba8
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/brick.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient288023"><stop
+ style="stop-color:#c1c1c1;stop-opacity:1;"
+ offset="0"
+ id="stop288019" /><stop
+ style="stop-color:#dfdfdf;stop-opacity:1;"
+ offset="1"
+ id="stop288021" /></linearGradient><linearGradient
+ xlink:href="#linearGradient84376"
+ id="linearGradient84368"
+ x1="48"
+ y1="26"
+ x2="48"
+ y2="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient84376"><stop
+ style="stop-color:#a63649;stop-opacity:1;"
+ offset="0"
+ id="stop84370" /><stop
+ style="stop-color:#df6277;stop-opacity:1;"
+ offset="1"
+ id="stop84381" /></linearGradient><linearGradient
+ xlink:href="#linearGradient288023"
+ id="linearGradient85182"
+ x1="48"
+ y1="6"
+ x2="48"
+ y2="26"
+ gradientUnits="userSpaceOnUse" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_brick"
+ style="fill:#ff0000"
+ transform="translate(-36,-4)"><rect
+ style="fill:#ff0000;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7"
+ width="24"
+ height="24"
+ x="36"
+ y="4" /><rect
+ style="fill:url(#linearGradient84368);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect13011-3"
+ width="20"
+ height="20"
+ x="38"
+ y="6"
+ ry="3" /><path
+ id="rect13933-4"
+ style="fill:url(#linearGradient85182);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 47,6 v 5 h -9 v 2 h 4 v 6 h -4 v 2 h 9 v 5 h 2 v -5 h 9 v -2 h -4 v -6 h 4 V 11 H 49 V 6 Z m -3,7 h 8 v 6 h -8 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/chicken.svg b/launcher/resources/multimc/scalable/instances/chicken.svg
new file mode 100644
index 00000000..0b5bf017
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/chicken.svg
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient2085"><stop
+ style="stop-color:#261a0a;stop-opacity:1;"
+ offset="0"
+ id="stop2081" /><stop
+ style="stop-color:#3c2b13;stop-opacity:1;"
+ offset="1"
+ id="stop2083" /></linearGradient><linearGradient
+ xlink:href="#linearGradient292700"
+ id="linearGradient292686"
+ x1="86.052681"
+ y1="26.999552"
+ x2="86"
+ y2="5"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient292700"><stop
+ style="stop-color:#d0d0d0;stop-opacity:1;"
+ offset="0.23078403"
+ id="stop292702" /><stop
+ style="stop-color:#eeeeee;stop-opacity:1;"
+ offset="0.83153141"
+ id="stop292698" /></linearGradient><linearGradient
+ xlink:href="#linearGradient293074"
+ id="linearGradient293076"
+ x1="80"
+ y1="31"
+ x2="80"
+ y2="21"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient293074"><stop
+ style="stop-color:#a63649;stop-opacity:1;"
+ offset="0"
+ id="stop293070" /><stop
+ style="stop-color:#df6277;stop-opacity:1;"
+ offset="0.52521378"
+ id="stop293078" /><stop
+ style="stop-color:#a63649;stop-opacity:1;"
+ offset="1"
+ id="stop293072" /></linearGradient><linearGradient
+ xlink:href="#linearGradient2085"
+ id="linearGradient42830"
+ x1="77"
+ y1="17"
+ x2="77"
+ y2="14"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient292039"
+ id="linearGradient292041"
+ x1="88"
+ y1="24"
+ x2="88"
+ y2="18"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient292039"><stop
+ style="stop-color:#fb9168;stop-opacity:1;"
+ offset="0"
+ id="stop292035" /><stop
+ style="stop-color:#f3db6c;stop-opacity:1;"
+ offset="1"
+ id="stop292037" /></linearGradient><linearGradient
+ xlink:href="#linearGradient2085"
+ id="linearGradient82810"
+ gradientUnits="userSpaceOnUse"
+ x1="77"
+ y1="17"
+ x2="77"
+ y2="14" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_chicken"
+ transform="translate(-68,-4)"><rect
+ style="fill:url(#linearGradient292686);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect18469"
+ width="16"
+ height="20"
+ x="72"
+ y="6"
+ ry="3" /><rect
+ style="fill:url(#linearGradient293076);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect22620"
+ width="6"
+ height="6"
+ x="77"
+ y="21"
+ ry="1" /><g
+ id="g23887"
+ clip-path="none"
+ style="fill:url(#linearGradient42830);fill-opacity:1"
+ transform="translate(1,1)"><path
+ id="rect3612-5"
+ style="fill:url(#linearGradient82810);fill-opacity:1;stroke-width:0.170787;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 73,12 c -0.553999,0 -1,0.446001 -1,1 v 3 c 0,0.553999 0.446001,1 1,1 h 3 c 0.553999,0 1,-0.446001 1,-1 v -2 h -2 v -2 z" /><path
+ id="rect42884"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 75,12 v 2 h 2 v -1 c 0,-0.553999 -0.446001,-1 -1,-1 z" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8"
+ width="24"
+ height="24"
+ x="68"
+ y="4" /><use
+ x="0"
+ y="0"
+ xlink:href="#g23887"
+ id="use42929"
+ transform="translate(9)" /><rect
+ style="fill:url(#linearGradient292041);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37390"
+ width="18"
+ height="5"
+ x="71"
+ y="17"
+ ry="1" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/creeper.svg b/launcher/resources/multimc/scalable/instances/creeper.svg
new file mode 100644
index 00000000..4a9fe380
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/creeper.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient11855"
+ id="linearGradient11859"
+ x1="111"
+ y1="25"
+ x2="111"
+ y2="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient11855"><stop
+ style="stop-color:#57965f;stop-opacity:1;"
+ offset="0"
+ id="stop11851" /><stop
+ style="stop-color:#78bf6e;stop-opacity:1;"
+ offset="1"
+ id="stop11853" /></linearGradient><radialGradient
+ xlink:href="#linearGradient10455"
+ id="radialGradient10457"
+ cx="112"
+ cy="17"
+ fx="112"
+ fy="17"
+ r="6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1666668,-6.8921104e-7,5.6666669e-7,1.1666667,-18.666684,-2.8332561)" /><linearGradient
+ id="linearGradient10455"><stop
+ style="stop-color:#1b2719;stop-opacity:1;"
+ offset="0"
+ id="stop10451" /><stop
+ style="stop-color:#0f150e;stop-opacity:1;"
+ offset="1"
+ id="stop10453" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_creeper"
+ transform="translate(-100,-4)"><rect
+ style="fill:url(#linearGradient11859);fill-opacity:1;stroke-width:0.226785;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0-2-3"
+ width="18"
+ height="18"
+ x="103"
+ y="7"
+ ry="2.4545455" /><path
+ id="rect29291"
+ style="fill:url(#radialGradient10457);fill-opacity:1;stroke-width:0.529166;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 106,12 v 4 h 4 v -4 z m 4,4 v 2 h -2 v 6 h 2 v -2 h 4 v 2 h 2 v -6 h -2 v -2 z m 4,0 h 4 v -4 h -4 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6"
+ width="24"
+ height="24"
+ x="100"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/diamond.svg b/launcher/resources/multimc/scalable/instances/diamond.svg
new file mode 100644
index 00000000..1d490b91
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/diamond.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient41693"><stop
+ style="stop-color:#64d5df;stop-opacity:1;"
+ offset="0"
+ id="stop41689" /><stop
+ style="stop-color:#17c2d6;stop-opacity:1;"
+ offset="0.35665122"
+ id="stop41711" /><stop
+ style="stop-color:#89edf6;stop-opacity:1;"
+ offset="0.71356344"
+ id="stop41709" /><stop
+ style="stop-color:#2bc4d4;stop-opacity:1;"
+ offset="1"
+ id="stop41691" /></linearGradient><linearGradient
+ xlink:href="#linearGradient41693"
+ id="linearGradient2973"
+ gradientUnits="userSpaceOnUse"
+ x1="153"
+ y1="25"
+ x2="135"
+ y2="7" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_diamond"
+ transform="translate(-132,-4)"><rect
+ style="fill:#1bc3d7;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-8-0"
+ width="20"
+ height="20"
+ x="134"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-88"
+ width="24"
+ height="24"
+ x="132"
+ y="4" /><rect
+ style="fill:url(#linearGradient2973);fill-opacity:1;stroke:none;stroke-width:1;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect40970-3-3"
+ width="18"
+ height="18"
+ x="135"
+ y="7"
+ ry="2" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/dirt.svg b/launcher/resources/multimc/scalable/instances/dirt.svg
new file mode 100644
index 00000000..df28ae92
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/dirt.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient53203"><stop
+ style="stop-color:#77563b;stop-opacity:1;"
+ offset="0"
+ id="stop53199" /><stop
+ style="stop-color:#86674f;stop-opacity:1;"
+ offset="1"
+ id="stop53201" /></linearGradient><linearGradient
+ xlink:href="#linearGradient53203"
+ id="linearGradient39079"
+ gradientUnits="userSpaceOnUse"
+ x1="785"
+ y1="26"
+ x2="785"
+ y2="6" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_dirt"
+ transform="translate(-772,-4)"><rect
+ style="fill:url(#linearGradient39079);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-9-1"
+ width="20"
+ height="20"
+ x="774"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-4-1-0"
+ width="24"
+ height="24"
+ x="772"
+ y="4" /><path
+ id="rect48773"
+ style="opacity:0.268946;fill:#a88356;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 776.13672,8 C 776.05936,8.00781 776,8.07286 776,8.15234 V 9.84766 C 776,9.93244 776.06756,10 776.15234,10 h 1.69532 C 777.93244,10 778,9.93244 778,9.84766 V 8.15234 C 778,8.06756 777.93244,8 777.84766,8 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 10,2 C 786.05936,10.00781 786,10.07286 786,10.15234 v 1.69532 C 786,11.93244 786.06756,12 786.15234,12 h 1.69532 C 787.93244,12 788,11.93244 788,11.84766 V 10.15234 C 788,10.06756 787.93244,10 787.84766,10 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -8,4 C 778.05936,14.00781 778,14.07286 778,14.15234 v 1.69532 C 778,15.93244 778.06756,16 778.15234,16 h 1.69532 C 779.93244,16 780,15.93244 780,15.84766 V 14.15234 C 780,14.06756 779.93244,14 779.84766,14 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 13,2 C 791.05936,16.00781 791,16.07286 791,16.15234 v 1.69532 C 791,17.93244 791.06756,18 791.15234,18 h 1.69532 C 792.93244,18 793,17.93244 793,17.84766 V 16.15234 C 793,16.06756 792.93244,16 792.84766,16 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -7,2 C 784.05936,18.00781 784,18.07286 784,18.15234 v 1.69532 C 784,19.93244 784.06756,20 784.15234,20 h 1.69532 C 785.93244,20 786,19.93244 786,19.84766 V 18.15234 C 786,18.06756 785.93244,18 785.84766,18 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 775.05936,20.00781 775,20.07286 775,20.15234 v 1.69532 C 775,21.93244 775.06756,22 775.15234,22 h 1.69532 C 776.93244,22 777,21.93244 777,21.84766 V 20.15234 C 777,20.06756 776.93244,20 776.84766,20 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 15,2 C 790.05936,22.00781 790,22.07286 790,22.15234 v 1.69532 C 790,23.93244 790.06756,24 790.15234,24 h 1.69532 C 791.93244,24 792,23.93244 792,23.84766 V 22.15234 C 792,22.06756 791.93244,22 791.84766,22 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 781.05936,24.00781 781,24.07286 781,24.15234 v 1.69532 C 781,25.93244 781.06756,26 781.15234,26 h 1.69532 C 782.93244,26 783,25.93244 783,25.84766 V 24.15234 C 783,24.06756 782.93244,24 782.84766,24 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/enderman.svg b/launcher/resources/multimc/scalable/instances/enderman.svg
new file mode 100644
index 00000000..29f25a2f
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/enderman.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient5295"
+ id="linearGradient5297"
+ x1="239"
+ y1="5"
+ x2="239"
+ y2="27"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient5295"><stop
+ style="stop-color:#25262d;stop-opacity:1;"
+ offset="0"
+ id="stop5291" /><stop
+ style="stop-color:#141519;stop-opacity:1;"
+ offset="1"
+ id="stop5293" /></linearGradient><linearGradient
+ xlink:href="#linearGradient5303"
+ id="linearGradient5316"
+ x1="243"
+ y1="17"
+ x2="243"
+ y2="20"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient5303"><stop
+ style="stop-color:#bd44b3;stop-opacity:1;"
+ offset="0"
+ id="stop5299" /><stop
+ style="stop-color:#d84ecd;stop-opacity:1;"
+ offset="1"
+ id="stop5301" /></linearGradient><linearGradient
+ xlink:href="#linearGradient5303"
+ id="linearGradient5305"
+ x1="236"
+ y1="17"
+ x2="236"
+ y2="20"
+ gradientUnits="userSpaceOnUse" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_enderman"
+ transform="translate(-228,-4)"><rect
+ style="fill:url(#linearGradient5297);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0-2"
+ width="22"
+ height="22"
+ x="229"
+ y="5"
+ ry="3" /><rect
+ style="fill:url(#linearGradient5316);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182-8"
+ width="7"
+ height="3"
+ x="242"
+ y="17"
+ ry="1" /><rect
+ style="fill:url(#linearGradient5305);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184-7"
+ width="7"
+ height="3"
+ x="231"
+ y="17"
+ ry="1" /><rect
+ style="fill:#792aac;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect75119"
+ width="2"
+ height="2"
+ x="234"
+ y="18" /><rect
+ style="fill:#792aac;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect75474"
+ width="2"
+ height="2"
+ x="244"
+ y="18" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-1"
+ width="24"
+ height="24"
+ x="228"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/enderpearl.svg b/launcher/resources/multimc/scalable/instances/enderpearl.svg
new file mode 100644
index 00000000..e4c1e104
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/enderpearl.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient3853"><stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0.39989081"
+ id="stop3851" /><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3849" /></linearGradient><linearGradient
+ id="linearGradient3405"><stop
+ style="stop-color:#27414e;stop-opacity:1;"
+ offset="0.16041158"
+ id="stop3401" /><stop
+ style="stop-color:#27414e;stop-opacity:0.74901961;"
+ offset="0.50162286"
+ id="stop39443" /><stop
+ style="stop-color:#27414e;stop-opacity:0;"
+ offset="1"
+ id="stop3403" /></linearGradient><linearGradient
+ id="linearGradient3000"><stop
+ style="stop-color:#62b397;stop-opacity:1;"
+ offset="0.47770822"
+ id="stop2996" /><stop
+ style="stop-color:#3a7a81;stop-opacity:1;"
+ offset="1"
+ id="stop2998" /></linearGradient><radialGradient
+ xlink:href="#linearGradient3000"
+ id="radialGradient3002-5"
+ cx="272"
+ cy="16"
+ fx="272"
+ fy="16"
+ r="12"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.75,0,0,0.75,68,4)" /><radialGradient
+ xlink:href="#linearGradient3405"
+ id="radialGradient3407-4"
+ cx="272"
+ cy="16"
+ fx="272"
+ fy="16"
+ r="5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-54.4,-3.2)" /><radialGradient
+ xlink:href="#linearGradient3853"
+ id="radialGradient3855-4"
+ cx="272"
+ cy="16"
+ fx="272"
+ fy="16"
+ r="5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.8,0,0,1.8,-217.6,-12.8)" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_enderpearl"
+ transform="translate(-260,-4)"><circle
+ style="fill:url(#radialGradient3002-5);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path78788-8"
+ cx="272"
+ cy="16"
+ r="9" /><path
+ id="circle80343-2-6"
+ style="fill:#62b397;fill-opacity:1;stroke-width:0.220486;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 272,9.0000001 c -3.866,0 -7,3.1340069 -7,6.9999999 0,3.865993 3.134,7 7,7 3.86599,0 7,-3.134007 7,-7 0,-3.865993 -3.13401,-6.9999999 -7,-6.9999999 z" /><circle
+ style="fill:url(#radialGradient3407-4);fill-opacity:1;stroke-width:0.187412;paint-order:stroke markers fill;stop-color:#000000"
+ id="circle81814-8"
+ cx="272"
+ cy="16"
+ r="6" /><path
+ id="circle80343-8"
+ style="fill:url(#radialGradient3855-4);fill-opacity:1;stroke-width:0.220486;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 272,9 c -3.86599,0 -7,3.134011 -7,7 h 2 c 0,-2.761421 2.23858,-5 5,-5 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-4-4"
+ width="24"
+ height="24"
+ x="260"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/flame.svg b/launcher/resources/multimc/scalable/instances/flame.svg
new file mode 100644
index 00000000..775914b8
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/flame.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient1468"
+ id="linearGradient1470"
+ x1="300"
+ y1="26"
+ x2="300"
+ y2="10"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,-2)" /><linearGradient
+ id="linearGradient1468"><stop
+ style="stop-color:#d63954;stop-opacity:1;"
+ offset="0"
+ id="stop1464" /><stop
+ style="stop-color:#e6812b;stop-opacity:1;"
+ offset="1"
+ id="stop1466" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_flame"
+ transform="translate(-292,-4)"><path
+ id="path5010"
+ style="fill:url(#linearGradient1470);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 299,9 c -1.10457,0 -2,0.895431 -2,2 h -1 -4 c 0,2.209137 1.79086,4 4,4 h 2 v 1 c 0,1.656852 1.34315,3 3,3 v 1 c -1.10457,0 -2,0.895438 -2,2 v 2 h 11 v -2 c 0,-1.104562 -0.89543,-2 -2,-2 v -1 c 1.10457,0 2,-1.053227 2,-2 0,-3.313684 2.68629,-6 6,-6 V 9 Z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-9"
+ width="24"
+ height="24"
+ x="292"
+ y="4" /><path
+ id="path225757"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 305.94922,10 C 304.86851,10.02738 304,10.912691 304,12 v 1 a 1,1 0 0 1 -1,-1 v 2 c 0,0.552284 0.44772,1 1,1 0,0.552284 -0.44772,1 -1,1 -0.55228,0 -1,-0.447716 -1,-1 -0.55228,0 -1,0.447716 -1,1 0,1.104568 0.89543,2 2,2 0.55228,0 1,0.447716 1,1 0,-0.552284 0.44772,-1 1,-1 h 1 c 0.55228,0 1,-0.447716 1,-1 v -1 c 0,0.552284 -0.44772,1 -1,1 -0.55228,0 -1,-0.447716 -1,-1 0.55228,0 1,-0.447716 1,-1 v -1 c 0,-0.552284 -0.44772,-1 -1,-1 v -1 c 0,-1.087309 0.86851,-1.97262 1.94922,-2 H 306 c -0.0173,0 -0.0336,-4.35e-4 -0.0508,0 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/fox.svg b/launcher/resources/multimc/scalable/instances/fox.svg
index fcf16b2f..95ca6ef9 100644
--- a/launcher/resources/multimc/scalable/instances/fox.svg
+++ b/launcher/resources/multimc/scalable/instances/fox.svg
@@ -1,290 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- id="svg8"
+ width="24"
+ height="24"
version="1.1"
- viewBox="0 0 33.866666 33.866666"
- height="128"
- width="128">
- <defs
- id="defs2" />
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-263.13334)"
- id="layer1">
- <path
- id="rect4750"
- d="m 4.233333,267.36667 v 6.35 6.35 3.175 3.175 3.175 3.175 h 25.4 v -3.175 -3.175 -3.175 -3.175 -6.35 -6.35 h -6.35 v 6.35 h -12.7 v -3.175 -3.175 z"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:0.79375;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <g
- id="g4748">
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062567;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4553"
- width="6.3500032"
- height="6.3499975"
- x="4.233326"
- y="267.36667" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b48f83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4553-6-2"
- width="3.1750014"
- height="3.1749992"
- x="7.4083276"
- y="270.54166" />
- <rect
- y="267.36667"
- x="23.283335"
- height="6.3499975"
- width="6.3500032"
- id="rect4623"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062567;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- y="270.54166"
- x="23.283335"
- height="3.1749992"
- width="3.1750014"
- id="rect4627"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b48f83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e27c21;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4672"
- width="25.400013"
- height="15.875009"
- x="4.233326"
- y="273.71667" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4629"
- width="3.1750016"
- height="6.3500032"
- x="4.2333255"
- y="273.71667" />
- <rect
- y="273.71667"
- x="26.458338"
- height="6.3500032"
- width="3.1750016"
- id="rect4631"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e78f41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4636"
- width="6.3500032"
- height="3.1750016"
- x="13.758331"
- y="283.24167" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b05122;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4638"
- width="3.1750016"
- height="3.1750016"
- x="4.2333255"
- y="280.06668" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4640"
- width="3.1750016"
- height="3.1750016"
- x="7.4083276"
- y="280.06668" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84189939;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4644"
- width="6.3500028"
- height="3.1750016"
- x="4.233326"
- y="283.24167" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4642"
- width="3.1750016"
- height="3.1750016"
- x="4.2333255"
- y="283.24167" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84189939;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4646"
- width="6.3500028"
- height="3.1750016"
- x="23.283337"
- y="283.24167" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4648"
- width="3.1750016"
- height="3.1750016"
- x="26.45834"
- y="283.24167" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4650"
- width="3.1750016"
- height="3.1750016"
- x="23.283337"
- y="280.06668" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b05122;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4652"
- width="3.1750016"
- height="3.1750016"
- x="26.45834"
- y="280.06668" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4654"
- width="25.400013"
- height="3.1750016"
- x="4.2333255"
- y="286.41666" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4656"
- width="25.400013"
- height="3.1750016"
- x="4.2333255"
- y="289.59167" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5612604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4917"
- width="25.4"
- height="0.26457807"
- x="4.2333331"
- y="273.71667" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.48607069;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4921"
- width="0.2645835"
- height="19.049997"
- x="4.2333331"
- y="273.71667" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4658"
- width="12.700007"
- height="6.3500013"
- x="10.583333"
- y="286.41666" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4660"
- width="6.3500037"
- height="3.1750007"
- x="13.758333"
- y="286.41669" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4662"
- width="3.1750019"
- height="3.1750007"
- x="10.583333"
- y="286.41669" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4664"
- width="3.1750019"
- height="3.1750007"
- x="20.108334"
- y="286.41669" />
- <rect
- y="286.41669"
- x="10.583333"
- height="6.3499832"
- width="0.2645835"
- id="rect4923"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2806327;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39686465;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4951"
- width="12.699996"
- height="0.26456967"
- x="10.583333"
- y="286.41669" />
- <rect
- y="273.71667"
- x="29.36875"
- height="19.049982"
- width="0.26458356"
- id="rect4953"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.48607057;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- y="292.50208"
- x="23.283333"
- height="0.26457682"
- width="6.3499994"
- id="rect4957"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28062955;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2806325;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4959"
- width="0.2645838"
- height="6.3499656"
- x="23.018749"
- y="286.41669" />
- <rect
- y="292.50208"
- x="4.2333331"
- height="0.26457968"
- width="6.3499999"
- id="rect4961"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063107;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- y="267.36667"
- x="4.2333331"
- height="6.3499956"
- width="0.2645835"
- id="rect4963"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063297;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063536;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4965"
- width="6.349998"
- height="0.26458791"
- x="4.2333331"
- y="267.36667" />
- <rect
- y="267.36667"
- x="23.283333"
- height="6.3499956"
- width="0.2645835"
- id="rect4963-9"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.280633;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063536;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4965-1"
- width="6.349998"
- height="0.26458791"
- x="23.283333"
- y="267.36667" />
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063306;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4985"
- width="0.26458356"
- height="6.3499975"
- x="29.36875"
- y="267.36667" />
- <rect
- y="267.36667"
- x="10.318749"
- height="6.3499975"
- width="0.26458356"
- id="rect4987"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063306;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient288023"><stop
+ style="stop-color:#c1c1c1;stop-opacity:1;"
+ offset="0"
+ id="stop288019" /><stop
+ style="stop-color:#dfdfdf;stop-opacity:1;"
+ offset="1"
+ id="stop288021" /></linearGradient><linearGradient
+ xlink:href="#linearGradient288023"
+ id="linearGradient288033"
+ x1="183"
+ y1="11"
+ x2="183"
+ y2="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient288023"
+ id="linearGradient288025"
+ x1="171"
+ y1="11"
+ x2="171"
+ y2="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient287141"
+ id="linearGradient287143"
+ x1="181.38519"
+ y1="21.999998"
+ x2="181.38519"
+ y2="5.9999976"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.385191,4.0000023)" /><linearGradient
+ id="linearGradient287141"><stop
+ style="stop-color:#fb6a32;stop-opacity:1;"
+ offset="0"
+ id="stop287137" /><stop
+ style="stop-color:#fb9168;stop-opacity:1;"
+ offset="1"
+ id="stop287139" /></linearGradient><linearGradient
+ xlink:href="#linearGradient287169"
+ id="linearGradient287171"
+ x1="178.38519"
+ y1="21.999998"
+ x2="198.38519"
+ y2="21.999998"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.385191,4.0000023)" /><linearGradient
+ id="linearGradient287169"><stop
+ style="stop-color:#d6d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop287165" /><stop
+ style="stop-color:#aca7a7;stop-opacity:1;"
+ offset="0.49945405"
+ id="stop287173" /><stop
+ style="stop-color:#d6d2d2;stop-opacity:1;"
+ offset="0.9989081"
+ id="stop287167" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6-2-8-5-5-4-9-7"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3-9-5-9-9-2-3-5"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><linearGradient
+ xlink:href="#linearGradient287187"
+ id="linearGradient287189"
+ x1="192.38519"
+ y1="22.999998"
+ x2="192.38519"
+ y2="17.999998"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient287187"><stop
+ style="stop-color:#dfdfdf;stop-opacity:1;"
+ offset="0"
+ id="stop287183" /><stop
+ style="stop-color:#f3f3f3;stop-opacity:1;"
+ offset="1"
+ id="stop287185" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_fox"
+ transform="translate(-164,-4)"><path
+ id="path51543"
+ style="fill:url(#linearGradient288033);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 180,7 v 2 1 1 c 0,1.107999 0.892,2 2,2 h 2 c 1.108,0 2,-0.892001 2,-2 V 9 c 0,-1.1079989 -0.892,-2 -2,-2 h -1 -1 z" /><path
+ id="rect51469"
+ style="fill:url(#linearGradient288025);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 172,7 v 2 1 1 c 0,1.107999 -0.892,2 -2,2 h -2 c -1.108,0 -2,-0.892001 -2,-2 V 9 c 0,-1.1079989 0.892,-2 2,-2 h 1 1 z" /><rect
+ style="fill:url(#linearGradient287143);fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect50678"
+ width="19.999996"
+ height="16"
+ x="166"
+ y="10"
+ ry="3" /><path
+ id="rect51545"
+ style="fill:url(#linearGradient287171);fill-opacity:1;stroke-width:0.258767;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 167,24 c -0.27416,0 -0.53402,0.05531 -0.77148,0.154297 C 166.67906,25.23997 167.74758,26 169,26 h 14 c 1.25242,0 2.32094,-0.76003 2.77148,-1.845703 C 185.53402,24.055314 185.27416,24 185,24 Z" /><g
+ id="g51463"
+ clip-path="url(#clipPath51465-6-2-8-5-5-4-9-7)"
+ transform="translate(-12.385191,4.0000023)"><rect
+ style="fill:url(#linearGradient287189);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51033"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998" /><rect
+ style="fill:#4d3f33;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51319"
+ width="6"
+ height="3"
+ x="185.38519"
+ y="16.999998"
+ ry="0.99999958" /></g><g
+ id="g52513"
+ clip-path="none"
+ transform="matrix(-1,0,0,1,352.38519,4.0000023)"><path
+ id="rect52365"
+ style="fill:#e9ecec;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 184.38519,13.999998 c 0.554,0 1,0.446 1,1 v 1 c 0,0.553999 -0.446,1 -1,1 h -2 v -3 z" /><path
+ id="path102360"
+ style="fill:#141519;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 180.38519,13.999998 c -0.554,0 -1,0.446 -1,1 v 1 c 0,0.553999 0.446,1 1,1 h 2 v -3 z" /></g><use
+ x="0"
+ y="0"
+ xlink:href="#g52513"
+ id="use55252"
+ transform="matrix(-1,0,0,1,352,0)" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-4"
+ width="24"
+ height="24"
+ x="164"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/fox_legacy.svg b/launcher/resources/multimc/scalable/instances/fox_legacy.svg
new file mode 100644
index 00000000..fcf16b2f
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/fox_legacy.svg
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 33.866666 33.866666"
+ height="128"
+ width="128">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-263.13334)"
+ id="layer1">
+ <path
+ id="rect4750"
+ d="m 4.233333,267.36667 v 6.35 6.35 3.175 3.175 3.175 3.175 h 25.4 v -3.175 -3.175 -3.175 -3.175 -6.35 -6.35 h -6.35 v 6.35 h -12.7 v -3.175 -3.175 z"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:0.79375;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <g
+ id="g4748">
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062567;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4553"
+ width="6.3500032"
+ height="6.3499975"
+ x="4.233326"
+ y="267.36667" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b48f83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4553-6-2"
+ width="3.1750014"
+ height="3.1749992"
+ x="7.4083276"
+ y="270.54166" />
+ <rect
+ y="267.36667"
+ x="23.283335"
+ height="6.3499975"
+ width="6.3500032"
+ id="rect4623"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062567;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ y="270.54166"
+ x="23.283335"
+ height="3.1749992"
+ width="3.1750014"
+ id="rect4627"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b48f83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e27c21;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4672"
+ width="25.400013"
+ height="15.875009"
+ x="4.233326"
+ y="273.71667" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4629"
+ width="3.1750016"
+ height="6.3500032"
+ x="4.2333255"
+ y="273.71667" />
+ <rect
+ y="273.71667"
+ x="26.458338"
+ height="6.3500032"
+ width="3.1750016"
+ id="rect4631"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e78f41;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4636"
+ width="6.3500032"
+ height="3.1750016"
+ x="13.758331"
+ y="283.24167" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b05122;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4638"
+ width="3.1750016"
+ height="3.1750016"
+ x="4.2333255"
+ y="280.06668" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4640"
+ width="3.1750016"
+ height="3.1750016"
+ x="7.4083276"
+ y="280.06668" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84189939;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4644"
+ width="6.3500028"
+ height="3.1750016"
+ x="4.233326"
+ y="283.24167" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4642"
+ width="3.1750016"
+ height="3.1750016"
+ x="4.2333255"
+ y="283.24167" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84189939;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4646"
+ width="6.3500028"
+ height="3.1750016"
+ x="23.283337"
+ y="283.24167" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4648"
+ width="3.1750016"
+ height="3.1750016"
+ x="26.45834"
+ y="283.24167" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4650"
+ width="3.1750016"
+ height="3.1750016"
+ x="23.283337"
+ y="280.06668" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b05122;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4652"
+ width="3.1750016"
+ height="3.1750016"
+ x="26.45834"
+ y="280.06668" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc6920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4654"
+ width="25.400013"
+ height="3.1750016"
+ x="4.2333255"
+ y="286.41666" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59531283;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4656"
+ width="25.400013"
+ height="3.1750016"
+ x="4.2333255"
+ y="289.59167" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5612604;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4917"
+ width="25.4"
+ height="0.26457807"
+ x="4.2333331"
+ y="273.71667" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.48607069;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4921"
+ width="0.2645835"
+ height="19.049997"
+ x="4.2333331"
+ y="273.71667" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f9f4f4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4658"
+ width="12.700007"
+ height="6.3500013"
+ x="10.583333"
+ y="286.41666" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#06040e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4660"
+ width="6.3500037"
+ height="3.1750007"
+ x="13.758333"
+ y="286.41669" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4662"
+ width="3.1750019"
+ height="3.1750007"
+ x="10.583333"
+ y="286.41669" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e7d9d3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.19062555;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4664"
+ width="3.1750019"
+ height="3.1750007"
+ x="20.108334"
+ y="286.41669" />
+ <rect
+ y="286.41669"
+ x="10.583333"
+ height="6.3499832"
+ width="0.2645835"
+ id="rect4923"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2806327;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39686465;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4951"
+ width="12.699996"
+ height="0.26456967"
+ x="10.583333"
+ y="286.41669" />
+ <rect
+ y="273.71667"
+ x="29.36875"
+ height="19.049982"
+ width="0.26458356"
+ id="rect4953"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.48607057;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ y="292.50208"
+ x="23.283333"
+ height="0.26457682"
+ width="6.3499994"
+ id="rect4957"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28062955;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2806325;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4959"
+ width="0.2645838"
+ height="6.3499656"
+ x="23.018749"
+ y="286.41669" />
+ <rect
+ y="292.50208"
+ x="4.2333331"
+ height="0.26457968"
+ width="6.3499999"
+ id="rect4961"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063107;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ y="267.36667"
+ x="4.2333331"
+ height="6.3499956"
+ width="0.2645835"
+ id="rect4963"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063297;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063536;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4965"
+ width="6.349998"
+ height="0.26458791"
+ x="4.2333331"
+ y="267.36667" />
+ <rect
+ y="267.36667"
+ x="23.283333"
+ height="6.3499956"
+ width="0.2645835"
+ id="rect4963-9"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.280633;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063536;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4965-1"
+ width="6.349998"
+ height="0.26458791"
+ x="23.283333"
+ y="267.36667" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063306;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4985"
+ width="0.26458356"
+ height="6.3499975"
+ x="29.36875"
+ y="267.36667" />
+ <rect
+ y="267.36667"
+ x="10.318749"
+ height="6.3499975"
+ width="0.26458356"
+ id="rect4987"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.28063306;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/multimc/scalable/instances/ftb_logo.svg b/launcher/resources/multimc/scalable/instances/ftb_logo.svg
new file mode 100644
index 00000000..85e8295e
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/ftb_logo.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient12453"
+ id="linearGradient12455"
+ x1="352.5"
+ y1="26.5"
+ x2="352.5"
+ y2="13"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.66666666,0,0,0.66666666,111,4.3333334)" /><linearGradient
+ id="linearGradient12453"><stop
+ style="stop-color:#b11917;stop-opacity:1;"
+ offset="0"
+ id="stop12449" /><stop
+ style="stop-color:#e65014;stop-opacity:1;"
+ offset="1"
+ id="stop12451" /></linearGradient><linearGradient
+ xlink:href="#linearGradient12299"
+ id="linearGradient12301"
+ x1="323"
+ y1="26.5"
+ x2="323"
+ y2="16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.66666666,0,0,0.66666666,111.66666,4.3333334)" /><linearGradient
+ id="linearGradient12299"><stop
+ style="stop-color:#0787c1;stop-opacity:1;"
+ offset="0"
+ id="stop12295" /><stop
+ style="stop-color:#65adb9;stop-opacity:1;"
+ offset="1"
+ id="stop12297" /></linearGradient><linearGradient
+ xlink:href="#linearGradient12445"
+ id="linearGradient12447"
+ x1="333"
+ y1="26.000002"
+ x2="333"
+ y2="15.500002"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.66666666,0,0,0.66666666,111,4.6666654)" /><linearGradient
+ id="linearGradient12445"><stop
+ style="stop-color:#798b2f;stop-opacity:1;"
+ offset="0"
+ id="stop12441" /><stop
+ style="stop-color:#9fc41e;stop-opacity:1;"
+ offset="1"
+ id="stop12443" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_ftb_logo"
+ transform="translate(-324,-4)"><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-2"
+ width="24"
+ height="24"
+ x="324"
+ y="4" /><path
+ id="path15348-5"
+ style="fill:url(#linearGradient12455);fill-opacity:1;stroke:none;stroke-width:0.869508;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 339,11 v 2 7.666666 c 0,0.736383 0.59696,1.333338 1.33334,1.333334 H 345 v -4.333332 c -1.5e-4,-0.671316 -0.3371,-1.297777 -0.89712,-1.667968 0.55925,-0.369682 0.89609,-0.994972 0.89712,-1.665366 v -2 C 345,11.596959 344.40305,11.000007 343.66668,11 Z m 2,2 h 2 v 2 h -2 z m 0,4 h 2 v 3 h -2 z" /><path
+ id="path15342-4"
+ style="fill:url(#linearGradient12301);fill-opacity:1;stroke:none;stroke-width:0.869508;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 327,11 c -0.73638,-4e-6 -1.33334,0.596951 -1.33334,1.333334 V 22 h 2 V 17 H 330 v -2 h -2.33334 V 13 H 331 v -2 z" /><path
+ style="fill:url(#linearGradient12447);fill-opacity:1;stroke:none;stroke-width:0.869508;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 332,11 v 2 h 2 V 20.394205 22 h 2 v -9 h 2 v -2 z"
+ id="rect10933-8" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/gear.svg b/launcher/resources/multimc/scalable/instances/gear.svg
new file mode 100644
index 00000000..b2923d67
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/gear.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><radialGradient
+ xlink:href="#linearGradient21157"
+ id="radialGradient21159"
+ cx="368"
+ cy="16"
+ fx="368"
+ fy="16"
+ r="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient21157"><stop
+ style="stop-color:#e1edf2;stop-opacity:1;"
+ offset="0"
+ id="stop21153" /><stop
+ style="stop-color:#abbdc4;stop-opacity:1;"
+ offset="0.72112602"
+ id="stop21161" /><stop
+ style="stop-color:#95acb6;stop-opacity:1;"
+ offset="1"
+ id="stop21155" /></linearGradient><radialGradient
+ xlink:href="#linearGradient21167"
+ id="radialGradient21309"
+ gradientUnits="userSpaceOnUse"
+ cx="400"
+ cy="16"
+ fx="400"
+ fy="16"
+ r="11"
+ gradientTransform="matrix(1.3636364,0,0,1.3636364,-177.45455,-5.8181818)" /><linearGradient
+ id="linearGradient21167"><stop
+ style="stop-color:#e5e6e9;stop-opacity:1;"
+ offset="0.13595749"
+ id="stop21163" /><stop
+ style="stop-color:#c5c7cf;stop-opacity:1;"
+ offset="0.86267382"
+ id="stop21165" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_gear"
+ transform="translate(-356,-4)"><path
+ id="path26489"
+ style="opacity:1;fill:url(#radialGradient21159);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 368,9 c -3.86599,0 -7,3.134007 -7,7 0,3.865993 3.13401,7 7,7 3.86599,0 7,-3.134007 7,-7 0,-3.865993 -3.13401,-7 -7,-7 z m 0,5 c 1.10456,0 2,0.89543 2,2 0,1.10457 -0.89544,2 -2,2 -1.10456,0 -2,-0.89543 -2,-2 0,-1.10457 0.89544,-2 2,-2 z" /><path
+ id="path23199"
+ style="fill:url(#radialGradient21309);fill-opacity:1;stroke:none;stroke-width:0.148828;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 366,5 v 2.2265625 c -1.00464,0.2280151 -1.94322,0.6232232 -2.78906,1.15625 l -1.57422,-1.5742187 -2.82813,2.828125 1.57422,1.5742192 C 359.84979,12.056778 359.45458,12.995357 359.22656,14 H 357 v 4 h 2.22656 c 0.22802,1.004643 0.62323,1.943222 1.15625,2.789062 l -1.57422,1.574219 2.82813,2.830078 1.57422,-1.576171 c 0.84584,0.533026 1.78442,0.928234 2.78906,1.15625 V 27 h 4 v -2.226562 c 1.00464,-0.228016 1.94322,-0.623224 2.78906,-1.15625 l 1.57422,1.576171 2.83008,-2.830078 -1.57617,-1.574219 C 376.15021,19.943222 376.54542,19.004643 376.77344,18 H 379 v -4 h -2.22656 c -0.22802,-1.004643 -0.62323,-1.943222 -1.15625,-2.789062 l 1.57617,-1.5742192 -2.83008,-2.828125 -1.57422,1.5742187 C 371.94322,7.8497857 371.00464,7.4545776 370,7.2265625 V 5 Z m 2,5 c 3.31371,0 6,2.686295 6,6 0,3.313705 -2.68629,6 -6,6 -3.31371,0 -6,-2.686295 -6,-6 0,-3.313705 2.68629,-6 6,-6 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-0"
+ width="24"
+ height="24"
+ x="356"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/gold.svg b/launcher/resources/multimc/scalable/instances/gold.svg
new file mode 100644
index 00000000..f1513d70
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/gold.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient48524"><stop
+ style="stop-color:#dfcd64;stop-opacity:1;"
+ offset="0"
+ id="stop48516" /><stop
+ style="stop-color:#d6b917;stop-opacity:1;"
+ offset="0.11879402"
+ id="stop48518" /><stop
+ style="stop-color:#f6e689;stop-opacity:1;"
+ offset="0.71356344"
+ id="stop48520" /><stop
+ style="stop-color:#d4bb2b;stop-opacity:1;"
+ offset="1"
+ id="stop48522" /></linearGradient><linearGradient
+ xlink:href="#linearGradient48524"
+ id="linearGradient48512"
+ gradientUnits="userSpaceOnUse"
+ x1="153"
+ y1="25"
+ x2="135"
+ y2="7"
+ gradientTransform="translate(256)" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_gold"
+ transform="translate(-388,-4)"><rect
+ style="fill:#d7bc21;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-8"
+ width="20"
+ height="20"
+ x="390"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-88-6"
+ width="24"
+ height="24"
+ x="388"
+ y="4" /><rect
+ style="fill:url(#linearGradient48512);fill-opacity:1;stroke:none;stroke-width:1;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect40970-3"
+ width="18"
+ height="18"
+ x="391"
+ y="7"
+ ry="2" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/grass.svg b/launcher/resources/multimc/scalable/instances/grass.svg
new file mode 100644
index 00000000..cd29fd83
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/grass.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient53203"><stop
+ style="stop-color:#77563b;stop-opacity:1;"
+ offset="0"
+ id="stop53199" /><stop
+ style="stop-color:#86674f;stop-opacity:1;"
+ offset="1"
+ id="stop53201" /></linearGradient><linearGradient
+ id="linearGradient29505"><stop
+ style="stop-color:#99cd61;stop-opacity:1;"
+ offset="0"
+ id="stop29501" /><stop
+ style="stop-color:#bccd61;stop-opacity:1;"
+ offset="1"
+ id="stop29503" /></linearGradient><linearGradient
+ xlink:href="#linearGradient53203"
+ id="linearGradient56913"
+ gradientUnits="userSpaceOnUse"
+ x1="785"
+ y1="26"
+ x2="785"
+ y2="6"
+ gradientTransform="translate(-352)" /><linearGradient
+ xlink:href="#linearGradient56992"
+ id="linearGradient56984"
+ x1="433"
+ y1="11"
+ x2="433"
+ y2="20"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient56992"><stop
+ style="stop-color:#4d3f33;stop-opacity:0.5;"
+ offset="0"
+ id="stop56986" /><stop
+ style="stop-color:#4d3f33;stop-opacity:0;"
+ offset="1"
+ id="stop56990" /></linearGradient><linearGradient
+ xlink:href="#linearGradient29505"
+ id="linearGradient29507"
+ x1="428"
+ y1="14"
+ x2="428"
+ y2="4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2,2)" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_grass"
+ transform="translate(-420,-4)"><path
+ id="rect15088-9-1-7"
+ style="fill:url(#linearGradient56913);stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 425,8 h 14 l 3,1 v 14 c 0,1.662 -1.338,3 -3,3 h -14 c -1.662,0 -3,-1.338 -3,-3 V 9 Z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-4-8"
+ width="24"
+ height="24"
+ x="420"
+ y="4" /><path
+ id="rect48773-2"
+ style="opacity:0.268946;fill:#a88356;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 424.13672,8 C 424.05936,8.00781 424,8.07286 424,8.15234 V 9.84766 C 424,9.93244 424.06756,10 424.15234,10 h 1.69532 C 425.93244,10 426,9.93244 426,9.84766 V 8.15234 C 426,8.06756 425.93244,8 425.84766,8 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 10,2 C 434.05936,10.00781 434,10.07286 434,10.15234 v 1.69532 C 434,11.93244 434.06756,12 434.15234,12 h 1.69532 C 435.93244,12 436,11.93244 436,11.84766 V 10.15234 C 436,10.06756 435.93244,10 435.84766,10 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -8,4 C 426.05936,14.00781 426,14.07286 426,14.15234 v 1.69532 C 426,15.93244 426.06756,16 426.15234,16 h 1.69532 C 427.93244,16 428,15.93244 428,15.84766 V 14.15234 C 428,14.06756 427.93244,14 427.84766,14 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 13,2 C 439.05936,16.00781 439,16.07286 439,16.15234 v 1.69532 C 439,17.93244 439.06756,18 439.15234,18 h 1.69532 C 440.93244,18 441,17.93244 441,17.84766 V 16.15234 C 441,16.06756 440.93244,16 440.84766,16 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -7,2 C 432.05936,18.00781 432,18.07286 432,18.15234 v 1.69532 C 432,19.93244 432.06756,20 432.15234,20 h 1.69532 C 433.93244,20 434,19.93244 434,19.84766 V 18.15234 C 434,18.06756 433.93244,18 433.84766,18 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 423.05936,20.00781 423,20.07286 423,20.15234 v 1.69532 C 423,21.93244 423.06756,22 423.15234,22 h 1.69532 C 424.93244,22 425,21.93244 425,21.84766 V 20.15234 C 425,20.06756 424.93244,20 424.84766,20 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 15,2 C 438.05936,22.00781 438,22.07286 438,22.15234 v 1.69532 C 438,23.93244 438.06756,24 438.15234,24 h 1.69532 C 439.93244,24 440,23.93244 440,23.84766 V 22.15234 C 440,22.06756 439.93244,22 439.84766,22 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 429.05936,24.00781 429,24.07286 429,24.15234 v 1.69532 C 429,25.93244 429.06756,26 429.15234,26 h 1.69532 C 430.93244,26 431,25.93244 431,25.84766 V 24.15234 C 431,24.06756 430.93244,24 430.84766,24 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z" /><path
+ id="rect56976"
+ style="fill:url(#linearGradient56984);stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 425,8 h 7 7 l 3,1 v 14 l -3,3 h -14 l -3,-3 V 9 Z" /><path
+ id="rect24023"
+ style="fill:url(#linearGradient29507);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 425,6 c -1.662,0 -3,1.3380037 -3,3 v 3 2 h 2 v -2 h 2 v 2 h 4 v 2 h 2 v -2 -2 -2 h 2 v 2 2 h 2 v -2 h 2 v 2 2 h 2 v -2 h 2 V 9 c 0,-1.6619983 -1.338,-3 -3,-3 h -7 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/herobrine.svg b/launcher/resources/multimc/scalable/instances/herobrine.svg
new file mode 100644
index 00000000..24f4d2c9
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/herobrine.svg
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient2085"><stop
+ style="stop-color:#261a0a;stop-opacity:1;"
+ offset="0"
+ id="stop2081" /><stop
+ style="stop-color:#3c2b13;stop-opacity:1;"
+ offset="1"
+ id="stop2083" /></linearGradient><radialGradient
+ xlink:href="#linearGradient2066"
+ id="radialGradient2757-3"
+ cx="496.06177"
+ cy="17.211182"
+ fx="495.87827"
+ fy="18.730774"
+ r="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5554022,0,0,1.2337313,-807.57556,-8.2669434)" /><linearGradient
+ id="linearGradient2066"><stop
+ style="stop-color:#ceb8aa;stop-opacity:1;"
+ offset="0.23876573"
+ id="stop2062" /><stop
+ style="stop-color:#b39888;stop-opacity:1;"
+ offset="0.51858544"
+ id="stop2064" /></linearGradient><linearGradient
+ xlink:href="#linearGradient2085"
+ id="linearGradient94741"
+ gradientUnits="userSpaceOnUse"
+ x1="504"
+ y1="15"
+ x2="504"
+ y2="5"
+ gradientTransform="translate(-36,-4)" /><linearGradient
+ xlink:href="#linearGradient2564"
+ id="linearGradient2566"
+ x1="466"
+ y1="27"
+ x2="466"
+ y2="22"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4,-4)" /><linearGradient
+ id="linearGradient2564"><stop
+ style="stop-color:#45362e;stop-opacity:1;"
+ offset="0"
+ id="stop2560" /><stop
+ style="stop-color:#59463c;stop-opacity:1;"
+ offset="1"
+ id="stop2562" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_herobrine"
+ transform="translate(-448)"><path
+ id="rect56542-7-5"
+ style="fill:url(#radialGradient2757-3);stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 452,1 h 16 l 3,2.999999 V 20.000001 C 471,21.662 469.662,23 468,23 h -16 c -1.662,0 -3,-1.338 -3,-2.999999 V 3.999999 Z" /><path
+ id="rect56552"
+ style="fill:url(#linearGradient94741);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 452,1 c -1.662,0 -3,1.3380017 -3,3 v 7 h 2 c 1.108,0 2,-0.892002 2,-2 V 8 h 14 v 1 c 0,1.107998 0.892,2 2,2 h 2 V 4 c 0,-1.6619983 -1.338,-3 -3,-3 h -1 -14 z" /><rect
+ style="opacity:1;fill:#8a5d54;fill-opacity:1;stroke:none;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect53396"
+ width="6"
+ height="3"
+ x="457"
+ y="18"
+ ry="0" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182-8-0"
+ width="7"
+ height="3"
+ x="462"
+ y="13"
+ ry="1" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184-7-9"
+ width="7"
+ height="3"
+ x="451"
+ y="13"
+ ry="1" /><rect
+ style="opacity:1;fill:#6a493c;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect50123"
+ width="4"
+ height="2"
+ x="458"
+ y="16"
+ ry="0" /><path
+ id="path195645-9"
+ style="fill:url(#linearGradient2566);fill-opacity:1;stroke:none;stroke-width:0.362295;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 457,18 a 2,2 0 0 0 -2,2 v 3 h 3 4 3 v -3 a 2,2 0 0 0 -2,-2 h -1 v 2 h -4 v -2 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-3-9"
+ width="24"
+ height="24"
+ x="448"
+ y="0" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/iron.svg b/launcher/resources/multimc/scalable/instances/iron.svg
new file mode 100644
index 00000000..6a6faf77
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/iron.svg
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient27992"><stop
+ style="stop-color:#c5c7cf;stop-opacity:1;"
+ offset="0"
+ id="stop27990" /><stop
+ style="stop-color:#d8d9e0;stop-opacity:1;"
+ offset="1"
+ id="stop27988" /></linearGradient><linearGradient
+ id="linearGradient56358"><stop
+ style="stop-color:#ededed;stop-opacity:1;"
+ offset="0"
+ id="stop56354" /><stop
+ style="stop-color:#f4f4f4;stop-opacity:1;"
+ offset="1"
+ id="stop56356" /></linearGradient><linearGradient
+ xlink:href="#linearGradient27992"
+ id="linearGradient17901"
+ x1="496"
+ y1="26"
+ x2="496"
+ y2="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient56358"
+ id="linearGradient18032"
+ gradientUnits="userSpaceOnUse"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23"
+ gradientTransform="translate(0,-4)" /><linearGradient
+ xlink:href="#linearGradient56358"
+ id="linearGradient18124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-8)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ xlink:href="#linearGradient18539"
+ id="linearGradient18530"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-6)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ id="linearGradient18539"><stop
+ style="stop-color:#27414e;stop-opacity:0;"
+ offset="0"
+ id="stop18537" /><stop
+ style="stop-color:#27414e;stop-opacity:0.74901961;"
+ offset="0.49837714"
+ id="stop18535" /><stop
+ style="stop-color:#27414e;stop-opacity:1;"
+ offset="0.83958842"
+ id="stop18533" /></linearGradient><linearGradient
+ xlink:href="#linearGradient18539"
+ id="linearGradient18590"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-10)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ xlink:href="#linearGradient18539"
+ id="linearGradient18615"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-14)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ xlink:href="#linearGradient18539"
+ id="linearGradient18640"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-2)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ xlink:href="#linearGradient56358"
+ id="linearGradient18124-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-12)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ xlink:href="#linearGradient56358"
+ id="linearGradient18124-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-16)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_iron"
+ transform="translate(-484,-4)"><rect
+ style="fill:url(#linearGradient17901);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088"
+ width="20"
+ height="20"
+ x="486"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-1-2"
+ width="24"
+ height="24"
+ x="484"
+ y="4" /><path
+ id="rect17965"
+ style="fill:#efefef;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 487,23 c 0,1.107999 0.892,2 2,2 h 14 c 1.108,0 2,-0.892001 2,-2 z" /><rect
+ style="fill:url(#linearGradient18032);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8"
+ width="18"
+ height="2"
+ x="487"
+ y="19" /><rect
+ style="fill:url(#linearGradient18124);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4"
+ width="18"
+ height="2"
+ x="487"
+ y="15" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18530);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7"
+ width="18"
+ height="2"
+ x="487"
+ y="17" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18590);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7-5"
+ width="18"
+ height="2"
+ x="487"
+ y="13" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18615);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7-6"
+ width="18"
+ height="2"
+ x="487"
+ y="9" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18640);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7-56"
+ width="18"
+ height="2"
+ x="487"
+ y="21" /><rect
+ style="fill:url(#linearGradient18124-2);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-1"
+ width="18"
+ height="2"
+ x="487"
+ y="11" /><path
+ id="rect15357-7-8-4-5"
+ style="fill:url(#linearGradient18124-0);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 489,7 c -1.108,0 -2,0.8920011 -2,2 h 18 c 0,-1.1079989 -0.892,-2 -2,-2 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/magitech.svg b/launcher/resources/multimc/scalable/instances/magitech.svg
new file mode 100644
index 00000000..57ef6df1
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/magitech.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><radialGradient
+ xlink:href="#linearGradient16441"
+ id="radialGradient16443"
+ cx="559.9212"
+ cy="16.022875"
+ fx="559.9212"
+ fy="16.022875"
+ r="11.80246"
+ gradientTransform="matrix(1,0,0,1.0119015,0,-0.19069696)"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient16441"><stop
+ style="stop-color:#9f0bff;stop-opacity:1;"
+ offset="0.4400529"
+ id="stop16439" /><stop
+ style="stop-color:#7111f8;stop-opacity:1;"
+ offset="1"
+ id="stop16437" /></linearGradient><radialGradient
+ xlink:href="#linearGradient14255"
+ id="radialGradient14257"
+ cx="560"
+ cy="16"
+ fx="560"
+ fy="16"
+ r="9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.91538385,0,0,0.91538385,15.375434,1.3532593)" /><linearGradient
+ id="linearGradient14255"><stop
+ style="stop-color:#e570f7;stop-opacity:1;"
+ offset="0"
+ id="stop14251" /><stop
+ style="stop-color:#d829c8;stop-opacity:1;"
+ offset="1"
+ id="stop14253" /></linearGradient><linearGradient
+ xlink:href="#linearGradient16452"
+ id="linearGradient16454"
+ x1="560"
+ y1="25"
+ x2="560"
+ y2="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-32)" /><linearGradient
+ id="linearGradient16452"><stop
+ style="stop-color:#f6cff4;stop-opacity:1;"
+ offset="0"
+ id="stop16450" /><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop16448" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_magitech"
+ transform="translate(-516,-4)"><path
+ style="opacity:1;fill:url(#radialGradient16443);fill-opacity:1;stroke:none;stroke-width:0.328827;paint-order:stroke markers fill;stop-color:#000000"
+ id="path63885"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="matrix(0.77720995,0.20825278,-0.20825278,0.77720995,96.078534,-113.04768)" /><path
+ id="rect68163"
+ style="fill:url(#radialGradient14257);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 528.64654,8.1238816 c -0.88525,-0.058796 -2.03882,1.1746971 -2.89455,1.4267114 -0.85572,0.2520155 -2.19516,-0.2057082 -2.87666,0.3700866 -0.68152,0.5757944 -0.57701,2.1554034 -0.99227,2.9463914 -0.41525,0.79099 -1.77713,1.689562 -1.86295,2.574518 -0.0858,0.884955 1.02746,1.834893 1.29799,2.687153 0.27054,0.85226 0.002,2.366339 0.58106,3.051875 0.57813,0.685534 2.05494,0.383747 2.84269,0.811687 0.78774,0.427941 1.79544,1.795111 2.68179,1.868314 0.88635,0.07321 1.74074,-1.059712 2.59597,-1.330167 0.85524,-0.270456 2.30644,0.02321 2.98037,-0.56854 0.67391,-0.591748 0.56704,-2.156299 0.99225,-2.944604 0.42521,-0.788304 1.67594,-1.494488 1.76105,-2.377852 0.0851,-0.883365 -1.0086,-1.840366 -1.29799,-2.687153 -0.2894,-0.846786 0.20315,-2.280018 -0.38618,-2.949967 -0.58933,-0.669948 -2.14415,-0.699521 -2.93567,-1.1120483 -0.7915,-0.4125278 -1.60167,-1.7076097 -2.4869,-1.7664051 z" /><path
+ id="rect67092"
+ style="fill:url(#linearGradient16454);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 530,11.419922 V 15 l -2,1 -2,-1 v -3.576172 c -1.82001,0.79431 -2.99746,2.590392 -3,4.576172 0,2.049733 1.2349,3.810136 3,4.582031 v 2.435547 c 0.47576,0.420763 0.96578,0.80592 1.42383,0.84375 0.87952,0.07265 1.72754,-1.040827 2.57617,-1.322266 v -1.957031 c 1.7651,-0.771895 3,-2.532298 3,-4.582031 -9.9e-4,-1.987198 -1.1787,-3.785199 -3,-4.580078 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-0"
+ width="24"
+ height="24"
+ x="516"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/meat.svg b/launcher/resources/multimc/scalable/instances/meat.svg
new file mode 100644
index 00000000..36f0551b
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/meat.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ sodipodi:docname="meat.svg"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
+ id="namedview68946"
+ pagecolor="#ffffff"
+ bordercolor="#000000"
+ borderopacity="0.25"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ showgrid="false"
+ inkscape:zoom="9.8333333"
+ inkscape:cx="12"
+ inkscape:cy="12"
+ inkscape:window-width="1366"
+ inkscape:window-height="699"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="i_meat" /><defs
+ id="defs172"><linearGradient
+ id="linearGradient6068"><stop
+ style="stop-color:#cdcdcd;stop-opacity:1;"
+ offset="0"
+ id="stop6064" /><stop
+ style="stop-color:#eeeeee;stop-opacity:1;"
+ offset="1"
+ id="stop6066" /></linearGradient><linearGradient
+ xlink:href="#linearGradient6068"
+ id="linearGradient39389"
+ x1="565"
+ y1="23"
+ x2="567"
+ y2="21"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient38100"
+ id="linearGradient38102"
+ x1="408.70773"
+ y1="-379.00925"
+ x2="408.70773"
+ y2="-389.8125"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient38100"><stop
+ style="stop-color:#956c4a;stop-opacity:1;"
+ offset="0"
+ id="stop38096" /><stop
+ style="stop-color:#bb7c47;stop-opacity:1;"
+ offset="1"
+ id="stop38098" /></linearGradient><linearGradient
+ xlink:href="#linearGradient39375"
+ id="linearGradient39377"
+ x1="401.63666"
+ y1="-379.00925"
+ x2="401.63666"
+ y2="-389.8125"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient39375"><stop
+ style="stop-color:#d15e65;stop-opacity:1;"
+ offset="0"
+ id="stop39371" /><stop
+ style="stop-color:#b2594e;stop-opacity:1;"
+ offset="1"
+ id="stop39373" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_meat"
+ transform="translate(-548,-4)"><path
+ id="rect80640"
+ style="opacity:1;fill:url(#linearGradient39389);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 568.48528,21.449747 a 1.5,1.5 0 0 0 -1.70424,-0.290027 l -2.18485,-2.184846 c -0.39173,-0.391738 -1.02247,-0.391737 -1.41421,0 l -0.70711,0.707106 c -0.39173,0.391737 -0.39173,1.022477 0,1.414214 l 2.18485,2.184847 a 1.5,1.5 0 0 0 0.29003,1.70424 1.5,1.5 0 0 0 2.12132,0 1.5,1.5 0 0 0 0.4378,-0.979175 1.5,1.5 0 0 0 0.97641,-0.435038 1.5,1.5 0 0 0 0,-2.121321 z" /><rect
+ style="opacity:1;fill:url(#linearGradient38102);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect74200"
+ width="16"
+ height="11"
+ x="397.64703"
+ y="-389.8125"
+ ry="4"
+ rx="4"
+ transform="rotate(45)" /><rect
+ style="opacity:1;fill:url(#linearGradient39377);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect74196"
+ width="8"
+ height="11"
+ x="396.64703"
+ y="-389.8125"
+ ry="4"
+ rx="3"
+ transform="rotate(45)" /><rect
+ style="opacity:1;fill:#dfdfdf;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect79410"
+ width="2"
+ height="3"
+ x="399.64703"
+ y="-385.8125"
+ ry="1"
+ transform="rotate(45)" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-61"
+ width="24"
+ height="24"
+ x="548"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/modrinth.svg b/launcher/resources/multimc/scalable/instances/modrinth.svg
index a40f0e72..7982b6d4 100644
--- a/launcher/resources/multimc/scalable/instances/modrinth.svg
+++ b/launcher/resources/multimc/scalable/instances/modrinth.svg
@@ -1,4 +1,70 @@
-<svg width="512" height="514" viewBox="0 0 512 514" fill="none" xmlns="http://www.w3.org/2000/svg">
- <path fill-rule="evenodd" clip-rule="evenodd" d="M503.16 323.56C514.55 281.47 515.32 235.91 503.2 190.76C466.57 54.2299 326.04 -26.8001 189.33 9.77991C83.8101 38.0199 11.3899 128.07 0.689941 230.47H43.99C54.29 147.33 113.74 74.7298 199.75 51.7098C306.05 23.2598 415.13 80.6699 453.17 181.38L411.03 192.65C391.64 145.8 352.57 111.45 306.3 96.8198L298.56 140.66C335.09 154.13 364.72 184.5 375.56 224.91C391.36 283.8 361.94 344.14 308.56 369.17L320.09 412.16C390.25 383.21 432.4 310.3 422.43 235.14L464.41 223.91C468.91 252.62 467.35 281.16 460.55 308.07L503.16 323.56Z" fill="#30b27b"/>
- <path d="M321.99 504.22C185.27 540.8 44.7501 459.77 8.11011 323.24C3.84011 307.31 1.17 291.33 0 275.46H43.27C44.36 287.37 46.4699 299.35 49.6799 311.29C53.0399 323.8 57.45 335.75 62.79 347.07L101.38 323.92C98.1299 316.42 95.39 308.6 93.21 300.47C69.17 210.87 122.41 118.77 212.13 94.7601C229.13 90.2101 246.23 88.4401 262.93 89.1501L255.19 133C244.73 133.05 234.11 134.42 223.53 137.25C157.31 154.98 118.01 222.95 135.75 289.09C136.85 293.16 138.13 297.13 139.59 300.99L188.94 271.38L174.07 231.95L220.67 184.08L279.57 171.39L296.62 192.38L269.47 219.88L245.79 227.33L228.87 244.72L237.16 267.79C237.16 267.79 253.95 285.63 253.98 285.64L277.7 279.33L294.58 260.79L331.44 249.12L342.42 273.82L304.39 320.45L240.66 340.63L212.08 308.81L162.26 338.7C187.8 367.78 226.2 383.93 266.01 380.56L277.54 423.55C218.13 431.41 160.1 406.82 124.05 361.64L85.6399 384.68C136.25 451.17 223.84 484.11 309.61 461.16C371.35 444.64 419.4 402.56 445.42 349.38L488.06 364.88C457.17 431.16 398.22 483.82 321.99 504.22Z" fill="#30b27b"/>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="32"
+ height="32"
+ version="1.1"
+ viewBox="0 0 32 32"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient3108"><stop
+ style="stop-color:#1bd96a;stop-opacity:1;"
+ offset="0"
+ id="stop3104" /><stop
+ style="stop-color:#1bd9a1;stop-opacity:1;"
+ offset="1"
+ id="stop3106" /></linearGradient><linearGradient
+ xlink:href="#linearGradient3108"
+ id="linearGradient3110"
+ x1="70.852509"
+ y1="141.75883"
+ x2="70.852509"
+ y2="0.053809531"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient3108"
+ id="linearGradient50774"
+ gradientUnits="userSpaceOnUse"
+ x1="70.852509"
+ y1="141.75883"
+ x2="70.852509"
+ y2="0.053809531" /><linearGradient
+ xlink:href="#linearGradient3108"
+ id="linearGradient50776"
+ gradientUnits="userSpaceOnUse"
+ x1="70.852509"
+ y1="141.75883"
+ x2="70.852509"
+ y2="0.053809531" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_modrinth"
+ transform="translate(-576)"><g
+ id="g83832"
+ transform="matrix(0.16936591,0,0,0.16936591,580,3.9908865)"
+ style="fill:url(#linearGradient3110);fill-opacity:1"><path
+ d="M 159.07,89.29 A 70.94,70.94 0 1 0 20,63.52 H 32 A 58.78,58.78 0 0 1 145.23,49.93 l -11.66,3.12 a 46.54,46.54 0 0 0 -29,-26.52 l -2.15,12.13 a 34.31,34.31 0 0 1 2.77,63.26 l 3.19,11.9 a 46.52,46.52 0 0 0 28.33,-49 l 11.62,-3.1 A 57.94,57.94 0 0 1 147.27,85 Z"
+ transform="translate(-19.79)"
+ fill="var(--color-brand)"
+ fill-rule="evenodd"
+ id="path83828"
+ style="fill:url(#linearGradient50774);fill-opacity:1" /><path
+ d="M 108.92,139.3 A 70.93,70.93 0 0 1 19.79,76 h 12 a 59.48,59.48 0 0 0 1.78,9.91 58.73,58.73 0 0 0 3.63,9.91 l 10.68,-6.41 a 46.58,46.58 0 0 1 44.72,-65 L 90.43,36.54 A 34.38,34.38 0 0 0 57.36,79.75 C 57.67,80.88 58,82 58.43,83 L 72.09,74.81 68,63.93 80.9,50.68 97.21,47.17 101.9,53 l -7.52,7.61 -6.55,2.06 -4.69,4.82 2.3,6.38 c 0,0 4.64,4.94 4.65,4.94 l 6.57,-1.74 4.67,-5.13 10.2,-3.24 3,6.84 L 104.05,88.43 86.41,94 78.49,85.19 64.7,93.48 a 34.44,34.44 0 0 0 28.72,11.59 L 96.61,117 A 46.6,46.6 0 0 1 54.13,99.83 l -10.64,6.38 a 58.81,58.81 0 0 0 99.6,-9.77 l 11.8,4.29 a 70.77,70.77 0 0 1 -45.97,38.57 z"
+ fill="var(--color-brand)"
+ id="path83830"
+ style="fill:url(#linearGradient50776);fill-opacity:1"
+ transform="translate(-19.79)" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-5"
+ width="32"
+ height="32"
+ x="576"
+ y="0" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/netherstar.svg b/launcher/resources/multimc/scalable/instances/netherstar.svg
new file mode 100644
index 00000000..a5d9606e
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/netherstar.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient13104"><stop
+ style="stop-color:#e7e3fb;stop-opacity:1;"
+ offset="0"
+ id="stop13100" /><stop
+ style="stop-color:#e7e3fb;stop-opacity:0;"
+ offset="1"
+ id="stop13102" /></linearGradient><radialGradient
+ xlink:href="#linearGradient62774"
+ id="radialGradient62776"
+ cx="624"
+ cy="14"
+ fx="624"
+ fy="14"
+ r="12"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient62774"><stop
+ style="stop-color:#f2effd;stop-opacity:1;"
+ offset="0.45171013"
+ id="stop62772" /><stop
+ style="stop-color:#d2cbf3;stop-opacity:1;"
+ offset="1"
+ id="stop62770" /></linearGradient><radialGradient
+ xlink:href="#linearGradient62766"
+ id="radialGradient62768"
+ cx="624"
+ cy="16"
+ fx="624"
+ fy="16"
+ r="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient62766"><stop
+ style="stop-color:#fafbb9;stop-opacity:1;"
+ offset="0"
+ id="stop62762" /><stop
+ style="stop-color:#fafbb9;stop-opacity:0;"
+ offset="1"
+ id="stop62764" /></linearGradient><linearGradient
+ xlink:href="#linearGradient13104"
+ id="linearGradient13106"
+ x1="624"
+ y1="7"
+ x2="624"
+ y2="25"
+ gradientUnits="userSpaceOnUse" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_netherstar"
+ transform="translate(-612,-4)"><path
+ id="path87169-8-4"
+ style="fill:url(#radialGradient62776);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 624,7 c -1,2.999997 -2,2.5857914 -2,4 0,0.999999 0,1.000001 -1,2 -1,0.999997 -1,1 -2,1 -1.41421,0 -1,1.000001 -4,2 3,0.999999 2.58579,2 4,2 1,0 1,3e-6 2,1 1,0.999999 1,1.000001 1,2 0,1.414209 1,1.000003 2,4 1,-2.999997 2,-2.585791 2,-4 0,-0.999999 0,-1.000001 1,-2 1,-0.999997 1,-1 2,-1 1.41421,0 1,-1.000001 4,-2 -3,-0.999999 -2.58579,-2 -4,-2 -1,0 -1,-3e-6 -2,-1 -1,-0.999999 -1,-1.000001 -1,-2 0,-1.4142086 -1,-1.000003 -2,-4 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-9"
+ width="24"
+ height="24"
+ x="612"
+ y="4" /><path
+ style="fill:url(#radialGradient62768);fill-opacity:1;stroke:none;stroke-width:0.132291;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 624,19 c 1,-2 1,-2 3,-3 -2,-1 -2,-1 -3,-3 -1,2 -1,2 -3,3 2,1 2,1 3,3 z"
+ id="path88076" /><path
+ id="path12156"
+ style="color:#000000;fill:url(#linearGradient13106);fill-opacity:1;paint-order:stroke markers fill"
+ d="m 624,7 c -1,2.999994 -2,2.5857928 -2,4 0,0.999998 0,1.000002 -1,2 -1,0.999996 -1,1 -2,1 -1.41421,0 -1,1.000002 -4,2 3,0.999998 2.58579,2 4,2 1,0 1,4e-6 2,1 1,0.999998 1,1.000002 1,2 0,1.414208 1,1.000006 2,4 1,-2.999994 2,-2.585792 2,-4 0,-0.999998 0,-1.000002 1,-2 1,-0.999996 1,-1 2,-1 1.41421,0 1,-1.000002 4,-2 -3,-0.999998 -2.58579,-2 -4,-2 -1,0 -1,-4e-6 -2,-1 -1,-0.999998 -1,-1.000002 -1,-2 0,-1.4142072 -1,-1.000006 -2,-4 z m 0,2.0976562 c 0.20512,0.3196583 0.45222,0.9531658 0.60742,1.1386718 C 625.00535,10.711958 625,10.528599 625,11 c 0,0.499999 -0.0138,0.958752 0.23047,1.447266 0.24426,0.488512 0.5625,0.759767 1.0625,1.259765 0.5,0.499998 0.77125,0.818243 1.25976,1.0625 C 628.04125,15.013788 628.5,15 629,15 c 0.4714,0 0.28804,-0.0054 0.76367,0.392578 0.18551,0.155201 0.81901,0.402302 1.13867,0.607422 -0.31966,0.20512 -0.95316,0.452221 -1.13867,0.607422 C 629.28804,17.00535 629.4714,17 629,17 c -0.5,0 -0.95875,-0.01379 -1.44727,0.230469 -0.48851,0.244257 -0.75976,0.562502 -1.25976,1.0625 -0.5,0.499998 -0.81824,0.771253 -1.0625,1.259765 C 624.98621,20.041248 625,20.500001 625,21 c 0,0.471401 0.005,0.288042 -0.39258,0.763672 -0.1552,0.185506 -0.4023,0.819013 -0.60742,1.138672 -0.20512,-0.319659 -0.45222,-0.953166 -0.60742,-1.138672 C 622.99465,21.288042 623,21.471401 623,21 c 0,-0.499999 0.0138,-0.958752 -0.23047,-1.447266 -0.24426,-0.488512 -0.5625,-0.759767 -1.0625,-1.259765 -0.5,-0.499998 -0.77125,-0.818243 -1.25976,-1.0625 C 619.95875,16.986212 619.5,17 619,17 c -0.4714,0 -0.28804,0.0054 -0.76367,-0.392578 C 618.05082,16.452221 617.41732,16.20512 617.09766,16 c 0.31966,-0.20512 0.95316,-0.452221 1.13867,-0.607422 C 618.71196,14.99465 618.5286,15 619,15 c 0.5,0 0.95875,0.01379 1.44727,-0.230469 0.48851,-0.244257 0.75976,-0.562502 1.25976,-1.0625 0.5,-0.499998 0.81824,-0.771253 1.0625,-1.259765 C 623.01379,11.958752 623,11.499999 623,11 c 0,-0.471401 -0.005,-0.288042 0.39258,-0.763672 0.1552,-0.185506 0.4023,-0.8190135 0.60742,-1.1386718 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/planks.svg b/launcher/resources/multimc/scalable/instances/planks.svg
new file mode 100644
index 00000000..8febfa6b
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/planks.svg
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient19391"
+ id="linearGradient19373"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient19391"><stop
+ style="stop-color:#cfaf6b;stop-opacity:1;"
+ offset="0"
+ id="stop19387" /><stop
+ style="stop-color:#ddc694;stop-opacity:1;"
+ offset="1"
+ id="stop19389" /></linearGradient><linearGradient
+ xlink:href="#linearGradient19391"
+ id="linearGradient19435"
+ gradientUnits="userSpaceOnUse"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientTransform="translate(0,-5)" /><linearGradient
+ xlink:href="#linearGradient19391"
+ id="linearGradient19458"
+ gradientUnits="userSpaceOnUse"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientTransform="translate(0,-10)" /><linearGradient
+ xlink:href="#linearGradient19391"
+ id="linearGradient19481"
+ gradientUnits="userSpaceOnUse"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientTransform="translate(0,-15)" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_planks"
+ transform="translate(-676,-4)"><rect
+ style="fill:#a88a4a;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56542-7-5-0"
+ width="20"
+ height="20"
+ x="678"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-4-9"
+ width="24"
+ height="24"
+ x="676"
+ y="4" /><path
+ id="rect15086"
+ style="fill:url(#linearGradient19373);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 678,21 v 2 c 0,0.771066 0.2909,1.469665 0.76562,2 h 18.46876 C 697.7091,24.469665 698,23.771066 698,23 v -2 z" /><rect
+ style="fill:url(#linearGradient19435);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15086-4"
+ width="20"
+ height="4"
+ x="678"
+ y="16"
+ ry="0" /><rect
+ style="fill:url(#linearGradient19458);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15086-2"
+ width="20"
+ height="4"
+ x="678"
+ y="11"
+ ry="0" /><path
+ id="rect15086-9"
+ style="fill:url(#linearGradient19481);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 681,6 c -1.662,0 -3,1.3380017 -3,3 v 1 h 20 V 9 c 0,-1.6619983 -1.338,-3 -3,-3 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/skeleton.svg b/launcher/resources/multimc/scalable/instances/skeleton.svg
new file mode 100644
index 00000000..ca9e8dd4
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/skeleton.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient6068"
+ id="linearGradient6070"
+ x1="656"
+ y1="27"
+ x2="656"
+ y2="5"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient6068"><stop
+ style="stop-color:#cdcdcd;stop-opacity:1;"
+ offset="0"
+ id="stop6064" /><stop
+ style="stop-color:#eeeeee;stop-opacity:1;"
+ offset="1"
+ id="stop6066" /></linearGradient><linearGradient
+ xlink:href="#linearGradient7624"
+ id="linearGradient7626"
+ x1="658"
+ y1="20"
+ x2="658"
+ y2="24"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient7624"><stop
+ style="stop-color:#8e8e86;stop-opacity:1;"
+ offset="0"
+ id="stop7620" /><stop
+ style="stop-color:#8e8e86;stop-opacity:0;"
+ offset="1"
+ id="stop7622" /></linearGradient><linearGradient
+ xlink:href="#linearGradient7155"
+ id="linearGradient7165"
+ x1="656"
+ y1="25"
+ x2="656"
+ y2="22"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient7155"><stop
+ style="stop-color:#3e4447;stop-opacity:1;"
+ offset="0"
+ id="stop7151" /><stop
+ style="stop-color:#2e3134;stop-opacity:1;"
+ offset="1"
+ id="stop7153" /></linearGradient><radialGradient
+ xlink:href="#linearGradient6078"
+ id="radialGradient6080"
+ cx="662"
+ cy="18"
+ fx="662"
+ fy="18"
+ r="3"
+ gradientTransform="matrix(0.99999794,-1.7103091e-6,1.7879388e-6,1.0000015,0.0013367,0.00110992)"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient6078"><stop
+ style="stop-color:#006868;stop-opacity:1;"
+ offset="0"
+ id="stop6074" /><stop
+ style="stop-color:#3e4447;stop-opacity:1;"
+ offset="1"
+ id="stop6076" /></linearGradient><linearGradient
+ xlink:href="#linearGradient7155"
+ id="linearGradient7157"
+ x1="651"
+ y1="20"
+ x2="651"
+ y2="16"
+ gradientUnits="userSpaceOnUse" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_skeleton"
+ transform="translate(-644,-4)"><rect
+ style="fill:url(#linearGradient6070);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0"
+ width="22"
+ height="22"
+ x="645"
+ y="5"
+ ry="3" /><rect
+ style="fill:url(#linearGradient7626);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect61092"
+ width="6"
+ height="3"
+ x="653"
+ y="20"
+ ry="1" /><rect
+ style="fill:url(#linearGradient7165);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect60969"
+ width="16"
+ height="3"
+ x="648"
+ y="22"
+ ry="1" /><rect
+ style="fill:url(#radialGradient6080);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182"
+ width="6"
+ height="4"
+ x="659"
+ y="16"
+ ry="1" /><rect
+ style="fill:url(#linearGradient7157);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184"
+ width="6"
+ height="4"
+ x="647"
+ y="16"
+ ry="1" /><rect
+ style="fill:#00ffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63186"
+ width="2"
+ height="2"
+ x="661"
+ y="17" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-88-4"
+ width="24"
+ height="24"
+ x="644"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/squarecreeper.svg b/launcher/resources/multimc/scalable/instances/squarecreeper.svg
new file mode 100644
index 00000000..ddb9aec8
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/squarecreeper.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><radialGradient
+ xlink:href="#linearGradient36865"
+ id="radialGradient10457-1"
+ cx="112"
+ cy="17"
+ fx="112"
+ fy="17"
+ r="6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1666668,-6.8921104e-7,5.6666669e-7,1.1666667,589.33332,-2.8332561)" /><linearGradient
+ id="linearGradient36865"><stop
+ style="stop-color:#63271f;stop-opacity:1;"
+ offset="0"
+ id="stop36861" /><stop
+ style="stop-color:#3d1212;stop-opacity:1;"
+ offset="1"
+ id="stop36863" /></linearGradient><linearGradient
+ xlink:href="#linearGradient36859"
+ id="linearGradient11859-1"
+ x1="111"
+ y1="25"
+ x2="111"
+ y2="7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(608)" /><linearGradient
+ id="linearGradient36859"><stop
+ style="stop-color:#729657;stop-opacity:1;"
+ offset="0"
+ id="stop36855" /><stop
+ style="stop-color:#a5bf6e;stop-opacity:1;"
+ offset="1"
+ id="stop36857" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_squarecreeper"
+ transform="translate(-708,-4)"><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-3-0"
+ width="24"
+ height="24"
+ x="708"
+ y="4" /><rect
+ style="fill:url(#linearGradient11859-1);fill-opacity:1;stroke-width:0.226785;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0-2-3-9"
+ width="18"
+ height="18"
+ x="711"
+ y="7"
+ ry="2.4545455" /><path
+ id="rect29291-0"
+ style="fill:url(#radialGradient10457-1);fill-opacity:1;stroke-width:0.529166;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 714,12 v 4 h 4 v -4 z m 4,4 v 2 h -2 v 6 h 2 v -2 h 4 v 2 h 2 v -6 h -2 v -2 z m 4,0 h 4 v -4 h -4 z" /><rect
+ style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37478"
+ width="2"
+ height="2"
+ x="722"
+ y="14" /><rect
+ style="fill:#ff0000;fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37478-7"
+ width="2"
+ height="2"
+ x="716"
+ y="14" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/steve.svg b/launcher/resources/multimc/scalable/instances/steve.svg
new file mode 100644
index 00000000..9b6d2595
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/steve.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ id="linearGradient2739"><stop
+ style="stop-color:#cca997;stop-opacity:1;"
+ offset="0.23748928"
+ id="stop2755" /><stop
+ style="stop-color:#bd8e74;stop-opacity:1;"
+ offset="0.51858547"
+ id="stop2735" /></linearGradient><linearGradient
+ id="linearGradient1330"><stop
+ style="stop-color:#261a0a;stop-opacity:1;"
+ offset="0"
+ id="stop1326" /><stop
+ style="stop-color:#422e11;stop-opacity:1;"
+ offset="1"
+ id="stop1328" /></linearGradient><linearGradient
+ id="linearGradient1463"><stop
+ style="stop-color:#45220e;stop-opacity:1;"
+ offset="0"
+ id="stop1459" /><stop
+ style="stop-color:#552910;stop-opacity:1;"
+ offset="1"
+ id="stop1461" /></linearGradient><linearGradient
+ id="linearGradient1503"><stop
+ style="stop-color:#5c3874;stop-opacity:1;"
+ offset="0"
+ id="stop1499" /><stop
+ style="stop-color:#3c3874;stop-opacity:1;"
+ offset="1"
+ id="stop1501" /></linearGradient><radialGradient
+ xlink:href="#linearGradient2739"
+ id="radialGradient2757-6"
+ cx="496.06177"
+ cy="17.211182"
+ fx="495.87827"
+ fy="18.730774"
+ r="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5554022,0,0,1.2337313,-519.57556,-16.266943)" /><linearGradient
+ xlink:href="#linearGradient1330"
+ id="linearGradient1332-1"
+ x1="487"
+ y1="15"
+ x2="487"
+ y2="5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(252,-12)" /><linearGradient
+ xlink:href="#linearGradient1463"
+ id="linearGradient1465-0"
+ x1="755"
+ y1="27"
+ x2="755"
+ y2="22"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4,-12)" /><linearGradient
+ xlink:href="#linearGradient1503"
+ id="linearGradient1505-6"
+ x1="748"
+ y1="20"
+ x2="748"
+ y2="17"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient1503"
+ id="linearGradient5294"
+ gradientUnits="userSpaceOnUse"
+ x1="748"
+ y1="20"
+ x2="748"
+ y2="17" /><linearGradient
+ xlink:href="#linearGradient1503"
+ id="linearGradient5296"
+ gradientUnits="userSpaceOnUse"
+ x1="748"
+ y1="20"
+ x2="748"
+ y2="17" /></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_steve"
+ transform="translate(-736,8)"><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-3-9-5"
+ width="24"
+ height="24"
+ x="736"
+ y="-8" /><path
+ id="rect56542-7-1"
+ style="fill:url(#radialGradient2757-6);stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 740,-7 h 16 l 3,3 v 16 c 0,1.662 -1.338,3 -3,3 h -16 c -1.662,0 -3,-1.338 -3,-3 V -4 Z" /><path
+ id="rect56552-6-8"
+ style="fill:url(#linearGradient1332-1);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 740,-7 c -1.662,0 -3,1.338002 -3,3 v 7 h 2 c 1.108,0 2,-0.892003 2,-2 V 0 h 14 v 1 c 0,1.107997 0.892,2 2,2 h 2 v -7 c 0,-1.661998 -1.338,-3 -3,-3 h -1 -14 z" /><rect
+ style="fill:#8a4c3d;fill-opacity:1;stroke:none;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect53396-9-7"
+ width="6"
+ height="3"
+ x="745"
+ y="10"
+ ry="0" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182-8-0-3-9"
+ width="7"
+ height="3"
+ x="750"
+ y="5"
+ ry="1" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184-7-9-7-2"
+ width="7"
+ height="3"
+ x="739"
+ y="5"
+ ry="1" /><rect
+ style="fill:#6a4030;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect50123-4-0"
+ width="4"
+ height="2"
+ x="746"
+ y="8"
+ ry="0" /><path
+ id="path195645-2"
+ style="fill:url(#linearGradient1465-0);fill-opacity:1;stroke:none;stroke-width:0.362295;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 745,10 a 2,2 0 0 0 -2,2 v 3 h 3 4 3 v -3 a 2,2 0 0 0 -2,-2 h -1 v 2 h -4 v -2 z" /><g
+ id="g1469-3"
+ style="fill:url(#linearGradient1505-6);fill-opacity:1"
+ transform="translate(-4,-12)"><rect
+ style="fill:url(#linearGradient5294);fill-opacity:1;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect75119-2-7"
+ width="3"
+ height="3"
+ x="746"
+ y="17" /><rect
+ style="fill:url(#linearGradient5296);fill-opacity:1;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect112219-5"
+ width="3"
+ height="3"
+ x="755"
+ y="17" /></g></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/stone.svg b/launcher/resources/multimc/scalable/instances/stone.svg
new file mode 100644
index 00000000..6df534d2
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/stone.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient25803"
+ id="linearGradient25805"
+ x1="785"
+ y1="26"
+ x2="785"
+ y2="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient25803"><stop
+ style="stop-color:#8e8e86;stop-opacity:1;"
+ offset="0"
+ id="stop25799" /><stop
+ style="stop-color:#a2a29b;stop-opacity:1;"
+ offset="1"
+ id="stop25801" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_stone"
+ transform="translate(-772,-4)"><rect
+ style="fill:url(#linearGradient25805);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-9"
+ width="20"
+ height="20"
+ x="774"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-4-1"
+ width="24"
+ height="24"
+ x="772"
+ y="4" /><path
+ id="path47261"
+ style="opacity:0.5;fill:#bfbfbb;fill-opacity:1;stroke-width:0.999997;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 777,11 v 1 h 12 v -1 z m 14,2 v 1 h 2 v -1 z m -17,2 v 1 h 8 v -1 z m 16,4 v 1 h 4 v -1 z m -8,2 v 1 h 2 v -1 z m 2,3 v 1 h 5 v -1 z" /><path
+ id="path47259"
+ style="opacity:0.5;fill:#7e7e77;fill-opacity:1;stroke-width:0.999997;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 774,8 v 1 h 7 V 8 Z m 15,0 v 1 h 5 V 8 Z m -4,8 v 1 h 5 v -1 z m -11,4 v 1 h 6 v -1 z m 3,3 v 1 h 2 v -1 z m 14,0 v 1 h 3 v -1 z" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/instances/tnt.svg b/launcher/resources/multimc/scalable/instances/tnt.svg
new file mode 100644
index 00000000..e876eba3
--- /dev/null
+++ b/launcher/resources/multimc/scalable/instances/tnt.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="24"
+ height="24"
+ version="1.1"
+ viewBox="0 0 24 24"
+ id="svg168"
+ xml:space="preserve"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><linearGradient
+ xlink:href="#linearGradient18899"
+ id="linearGradient18901"
+ x1="805"
+ y1="16"
+ x2="812"
+ y2="16"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ id="linearGradient18899"><stop
+ style="stop-color:#bf454c;stop-opacity:1;"
+ offset="0"
+ id="stop18895" /><stop
+ style="stop-color:#df6277;stop-opacity:1;"
+ offset="0.5"
+ id="stop18972" /><stop
+ style="stop-color:#bf454c;stop-opacity:1;"
+ offset="1"
+ id="stop18897" /></linearGradient><linearGradient
+ xlink:href="#linearGradient18899"
+ id="linearGradient19011"
+ x1="812"
+ y1="16"
+ x2="820"
+ y2="16"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ xlink:href="#linearGradient18899"
+ id="linearGradient19015"
+ gradientUnits="userSpaceOnUse"
+ x1="805"
+ y1="16"
+ x2="812"
+ y2="16"
+ gradientTransform="matrix(-1,0,0,1,1632,0)" /><linearGradient
+ xlink:href="#linearGradient19917"
+ id="linearGradient22848"
+ gradientUnits="userSpaceOnUse"
+ x1="816"
+ y1="27"
+ x2="816"
+ y2="20" /><linearGradient
+ id="linearGradient19917"><stop
+ style="stop-color:#a02722;stop-opacity:1;"
+ offset="0"
+ id="stop19913" /><stop
+ style="stop-color:#a02722;stop-opacity:0;"
+ offset="1"
+ id="stop19915" /></linearGradient><radialGradient
+ xlink:href="#linearGradient19935"
+ id="radialGradient19929"
+ cx="816"
+ cy="14"
+ fx="816"
+ fy="14"
+ r="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1570249,0,0,1,-128.13223,0)" /><linearGradient
+ id="linearGradient19935"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop19933" /><stop
+ style="stop-color:#f6cff4;stop-opacity:1;"
+ offset="1"
+ id="stop19931" /></linearGradient></defs><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="i_tnt"
+ transform="translate(-804,-4)"><rect
+ style="fill:#a02722;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect13011-7"
+ width="20"
+ height="20"
+ x="806"
+ y="6"
+ ry="3" /><g
+ id="g19020"><path
+ id="rect18703"
+ style="opacity:1;fill:url(#linearGradient18901);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 809,6 c -1.662,0 -3,1.3380017 -3,3 v 14 c 0,1.661998 1.338,3 3,3 h 3 V 6 Z" /><rect
+ style="opacity:1;fill:url(#linearGradient19011);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect19003"
+ width="6"
+ height="20"
+ x="813"
+ y="6" /><path
+ id="path19013"
+ style="opacity:1;fill:url(#linearGradient19015);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 823,6 c 1.662,0 3,1.3380017 3,3 v 14 c 0,1.661998 -1.338,3 -3,3 h -3 V 6 Z" /></g><rect
+ style="opacity:1;fill:url(#linearGradient22848);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect19910"
+ width="20"
+ height="20"
+ x="806"
+ y="6"
+ ry="3" /><rect
+ style="opacity:1;fill:url(#radialGradient19929);fill-opacity:1;stroke:none;stroke-width:0.295813;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect121411"
+ width="20"
+ height="10"
+ x="806"
+ y="11" /><path
+ id="rect122467"
+ style="opacity:1;fill:#4d3f33;fill-opacity:1;stroke:none;stroke-width:0.374177;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 808,13 v 2 h 1 v 4 h 2 v -4 h 1 v -2 z m 5,0 v 6 h 2 v -3.171875 l 2,2 V 19 h 2 v -6 h -2 v 2 l -2,-2 z m 7,0 v 2 h 1 v 4 h 2 v -4 h 1 v -2 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-9-7"
+ width="24"
+ height="24"
+ x="804"
+ y="4" /></g></svg>
diff --git a/launcher/resources/multimc/scalable/launch.svg b/launcher/resources/multimc/scalable/launch.svg
new file mode 100644
index 00000000..321647a0
--- /dev/null
+++ b/launcher/resources/multimc/scalable/launch.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="32"
+ height="32"
+ viewBox="0 0 8.4666667 8.4666667"
+ version="1.1"
+ id="svg19142"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs19139">
+ <radialGradient
+ xlink:href="#linearGradient3801"
+ id="radialGradient11398"
+ cx="16.288221"
+ cy="1036.3623"
+ fx="16.288221"
+ fy="1036.3623"
+ r="12.356801"
+ gradientTransform="matrix(1,0,0,1.1851852,0,-191.91894)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3801">
+ <stop
+ style="stop-color:#00b81a;stop-opacity:1;"
+ offset="0"
+ id="stop3803" />
+ <stop
+ style="stop-color:#00600d;stop-opacity:1;"
+ offset="1"
+ id="stop3805" />
+ </linearGradient>
+ <radialGradient
+ xlink:href="#linearGradient3801"
+ id="radialGradient20362"
+ cx="16.288221"
+ cy="1036.3623"
+ fx="16.288221"
+ fy="1036.3623"
+ r="12.356801"
+ gradientTransform="matrix(1,0,0,1.1851852,0,-191.91894)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ xlink:href="#linearGradient15792"
+ id="radialGradient12126"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.745076,0.97121566,-0.94714744,0.72661186,979.1198,272.32494)"
+ cx="7.3809543"
+ cy="1029.1321"
+ fx="7.3809543"
+ fy="1029.1321"
+ r="12.356801" />
+ <linearGradient
+ id="linearGradient15792">
+ <stop
+ style="stop-color:#00b81a;stop-opacity:1;"
+ offset="0"
+ id="stop15788" />
+ <stop
+ style="stop-color:#008311;stop-opacity:1;"
+ offset="1"
+ id="stop15790" />
+ </linearGradient>
+ <radialGradient
+ xlink:href="#linearGradient3801"
+ id="radialGradient20379"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1851852,0,-191.91894)"
+ cx="16.288221"
+ cy="1036.3623"
+ fx="16.288221"
+ fy="1036.3623"
+ r="12.356801" />
+ </defs>
+ <g
+ id="layer1"
+ transform="translate(-107.77091,-124.13108)">
+ <g
+ transform="matrix(0.26458333,0,0,0.26458333,107.69465,-145.83977)"
+ id="layer1-3"
+ style="fill:#00c900;fill-opacity:1;stroke:url(#radialGradient11398)">
+ <g
+ id="g4187"
+ transform="matrix(1.6112635,0,0,1.6112635,-11.986846,-633.49032)"
+ style="fill:#00c900;fill-opacity:1;stroke:url(#radialGradient20379);stroke-width:0.620631">
+ <path
+ style="opacity:1;fill:#0ebb0e;fill-opacity:1;stroke:url(#radialGradient12126);stroke-width:1.24126;stroke-dasharray:none;stroke-opacity:1"
+ id="path3809-3"
+ d="m 10.5,1044.3622 v -16 l 13.5,8 z" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/multimc/scalable/rename.svg b/launcher/resources/multimc/scalable/rename.svg
new file mode 100644
index 00000000..a585e264
--- /dev/null
+++ b/launcher/resources/multimc/scalable/rename.svg
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="33.072914mm"
+ height="33.072918mm"
+ viewBox="0 0 33.072914 33.072918"
+ version="1.1"
+ id="svg30785"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview30787"
+ pagecolor="#505050"
+ bordercolor="#ffffff"
+ borderopacity="1"
+ inkscape:showpageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="1"
+ inkscape:deskcolor="#505050"
+ inkscape:document-units="mm"
+ showgrid="false"
+ inkscape:zoom="1.1893044"
+ inkscape:cx="14.714484"
+ inkscape:cy="139.15697"
+ inkscape:window-width="1440"
+ inkscape:window-height="827"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1" />
+ <defs
+ id="defs30782">
+ <linearGradient
+ y2="93.999413"
+ x2="87.757362"
+ y1="79.998817"
+ x1="63.911137"
+ gradientTransform="matrix(1.3755238,0,0,1.8570645,-22.548199,-92.562977)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6028"
+ xlink:href="#linearGradient3291" />
+ <linearGradient
+ id="linearGradient3291">
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="0"
+ id="stop3293" />
+ <stop
+ style="stop-color:black;stop-opacity:0"
+ offset="1"
+ id="stop3295" />
+ </linearGradient>
+ <filter
+ id="filter12295"
+ x="-0.061093309"
+ y="-0.057532126"
+ width="1.1221866"
+ height="1.1150643">
+ <feGaussianBlur
+ stdDeviation="1.4758613"
+ id="feGaussianBlur12297" />
+ </filter>
+ <radialGradient
+ r="3.406888"
+ fy="120.64188"
+ fx="42.617531"
+ cy="120.64188"
+ cx="42.617531"
+ gradientTransform="matrix(1.909059,1.8392116,-8.6222515,7.5766472,1009.8522,-881.36145)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient6030"
+ xlink:href="#linearGradient2257" />
+ <linearGradient
+ id="linearGradient2257">
+ <stop
+ style="stop-color:#b4942a;stop-opacity:1;"
+ offset="0"
+ id="stop2259" />
+ <stop
+ style="stop-color:#e4dcc9;stop-opacity:1"
+ offset="1"
+ id="stop2261" />
+ </linearGradient>
+ <linearGradient
+ y2="77.047241"
+ x2="81.452583"
+ y1="72.804123"
+ x1="75.848022"
+ gradientTransform="matrix(0.9986497,0,0,0.9998891,0.1404398,0.00532324)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6032"
+ xlink:href="#linearGradient2598" />
+ <linearGradient
+ id="linearGradient2598">
+ <stop
+ id="stop2600"
+ offset="0"
+ style="stop-color:#252525;stop-opacity:1;" />
+ <stop
+ style="stop-color:#252525;stop-opacity:1;"
+ offset="0.5"
+ id="stop2606" />
+ <stop
+ id="stop2608"
+ offset="0.75"
+ style="stop-color:#252525;stop-opacity:1;" />
+ <stop
+ id="stop2602"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="87.154587"
+ x2="80.579521"
+ y1="83.325729"
+ x1="76.708534"
+ gradientTransform="matrix(0.9986497,0,0,0.9998891,0.1404398,0.00532324)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6034"
+ xlink:href="#linearGradient7364" />
+ <linearGradient
+ id="linearGradient7364">
+ <stop
+ id="stop7366"
+ offset="0"
+ style="stop-color:#d4a100;stop-opacity:0.97647059;" />
+ <stop
+ id="stop7368"
+ offset="1"
+ style="stop-color:#ffc712;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="57.383999"
+ x2="14.493531"
+ y1="57.383999"
+ x1="11.326384"
+ gradientTransform="matrix(1.2875994,1.1737414,-0.5465891,0.6213041,81.686465,27.89447)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6036"
+ xlink:href="#linearGradient3058" />
+ <linearGradient
+ id="linearGradient3058">
+ <stop
+ id="stop3060"
+ offset="0"
+ style="stop-color:#9a7600;stop-opacity:1;" />
+ <stop
+ style="stop-color:#e3ad00;stop-opacity:1;"
+ offset="0.09292036"
+ id="stop3066" />
+ <stop
+ id="stop3070"
+ offset="0.5043171"
+ style="stop-color:#ffcd2c;stop-opacity:1;" />
+ <stop
+ id="stop3068"
+ offset="0.91571385"
+ style="stop-color:#e3ad00;stop-opacity:1;" />
+ <stop
+ id="stop3062"
+ offset="1"
+ style="stop-color:#b98d00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="-22.052734"
+ x2="100.65602"
+ y1="-22.560064"
+ x1="114.92793"
+ gradientTransform="matrix(0.9992082,0,0,0.9993395,0.1083622,-0.09037494)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6038"
+ xlink:href="#linearGradient5826" />
+ <linearGradient
+ id="linearGradient5826">
+ <stop
+ style="stop-color:#980000;stop-opacity:1;"
+ offset="0"
+ id="stop5828" />
+ <stop
+ style="stop-color:#db5c5c;stop-opacity:1;"
+ offset="1"
+ id="stop5830" />
+ </linearGradient>
+ <linearGradient
+ y2="7.4622769"
+ x2="82.172836"
+ y1="7.4622769"
+ x1="-12.817558"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6040"
+ xlink:href="#linearGradient3303" />
+ <linearGradient
+ id="linearGradient3303">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68345326;"
+ offset="0"
+ id="stop3305" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3307" />
+ </linearGradient>
+ <filter
+ id="filter3849"
+ x="-0.0079507314"
+ y="-0.38873081"
+ width="1.0159015"
+ height="1.7774616">
+ <feGaussianBlur
+ stdDeviation="0.31468463"
+ id="feGaussianBlur3851" />
+ </filter>
+ <radialGradient
+ r="47.595196"
+ fy="7.4622769"
+ fx="34.677639"
+ cy="7.4622769"
+ cx="34.677639"
+ gradientTransform="matrix(-1.5103,0.00264127,-1.167078e-4,-0.00911022,87.0522,7.438666)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient6042"
+ xlink:href="#linearGradient3325" />
+ <linearGradient
+ id="linearGradient3325">
+ <stop
+ id="stop3327"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3329"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="107.35519"
+ x2="24.450998"
+ y1="117.83894"
+ x1="33.342377"
+ gradientTransform="matrix(0.6182226,0,0,0.6232687,24.10803,47.993844)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6044"
+ xlink:href="#linearGradient2922" />
+ <linearGradient
+ id="linearGradient2922">
+ <stop
+ id="stop2924"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop2926"
+ offset="1"
+ style="stop-color:#515151;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2.3657269"
+ x2="48.732723"
+ y1="0.81150496"
+ x1="48.498562"
+ gradientTransform="matrix(1.6732108,1.5189394,-1.5009523,1.6928488,18.675678,-24.465565)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6046"
+ xlink:href="#linearGradient3325" />
+ <linearGradient
+ y2="57.15118"
+ x2="96.579895"
+ y1="54.119438"
+ x1="92.226158"
+ gradientTransform="matrix(0.9973012,0,0,0.9997782,0.28069,0.0106459)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6048"
+ xlink:href="#linearGradient5433" />
+ <linearGradient
+ id="linearGradient5433">
+ <stop
+ id="stop5435"
+ offset="0"
+ style="stop-color:#ea3838;stop-opacity:1;" />
+ <stop
+ id="stop5437"
+ offset="1"
+ style="stop-color:#c40000;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ r="1.7246193"
+ fy="2.6743078"
+ fx="49.011971"
+ cy="2.6743078"
+ cx="49.011971"
+ gradientTransform="matrix(2.2600183,0,0,0.2752449,-2.2590409,-25.415382)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient6050"
+ xlink:href="#linearGradient3207" />
+ <linearGradient
+ id="linearGradient3207">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3209" />
+ <stop
+ style="stop-color:#252525;stop-opacity:0;"
+ offset="1"
+ id="stop3211" />
+ </linearGradient>
+ <radialGradient
+ r="1.7246193"
+ fy="2.6743078"
+ fx="49.011971"
+ cy="2.6743078"
+ cx="49.011971"
+ gradientTransform="matrix(1.550633,0,0,0.1873121,21.621938,-31.864287)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient6052"
+ xlink:href="#linearGradient3207" />
+ <radialGradient
+ r="1.7246193"
+ fy="2.6743078"
+ fx="49.011971"
+ cy="2.6743078"
+ cx="49.011971"
+ gradientTransform="matrix(1.5495914,0,0,0.1876849,-193.24041,-23.535874)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient6054"
+ xlink:href="#linearGradient3207" />
+ </defs>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-62.462199,-187.28812)">
+ <g
+ id="g4356"
+ transform="matrix(0.43758532,0,0,0.43516994,47.592708,166.39996)"
+ style="stroke-width:0.879897">
+ <path
+ id="path3180"
+ d="m 90.067703,48.28801 c 0.613642,-0.692125 4.648657,-0.363057 8.944253,3.536477 4.337724,3.937759 5.210074,7.748115 4.441394,8.615025 -0.5003,0.564284 -1.00061,1.128566 -1.50092,1.692851 -4.461914,-4.050501 -8.9238,-8.101002 -13.385691,-12.151503 0.500309,-0.564283 1.000624,-1.128565 1.500964,-1.69285 0,0 0,0 0,0"
+ style="fill:#bf0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.879897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:#b3925d;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 36.000762,124 20.247,-9.42653 0.09417,-0.10772 -13.269004,-12.28446 -0.127672,0.1459 z"
+ id="path3299" />
+ <path
+ id="path7753"
+ d="m 97.750257,56.002191 c -1.025821,-0.04502 -1.882013,0.614542 -2.665637,0.986566 -4.174912,3.698786 -21.569273,21.653428 -22.000397,22.168708 l -17.273332,20.659839 -0.106627,0.116066 -9.682256,17.6334 23.598527,-5.26172 29.942357,-36.049248 3.589728,-4.294461 c 0.64726,-1.199814 1.23861,-7.813473 -1.74155,-12.76732 -1.452992,-2.415269 -2.634989,-3.146806 -3.660813,-3.19183 z m 5.402363,15.95915 c -0.0266,0.04924 -0.0446,0.143824 -0.0711,0.174098 -0.0129,0.01476 1.49247,-1.049396 0.6753,-0.870498 z"
+ style="fill:url(#linearGradient6028);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.879897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter12295)" />
+ <path
+ id="path2247"
+ d="m 37.004018,123.01573 18.885171,-8.78019 0.09416,-0.10769 -12.551842,-11.60866 -0.12769,0.14592 z"
+ style="fill:url(#radialGradient6030);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="rect2192"
+ d="m 49.164276,108.94499 c 1.648961,1.50106 2.755448,1.51054 3.34488,2.0471 0.09525,0.0867 0.175312,0.18851 0.243795,0.29167 L 97.392942,60.017302 90.912418,54.117987 46.187555,105.48147 c 0.214748,0.0564 0.415855,0.13454 0.602285,0.30424 0.538767,0.49045 0.717813,1.65124 2.374436,3.15928 z"
+ style="fill:url(#linearGradient6032);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <path
+ style="opacity:0.353488;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 54.219542,109.12044 -1.750182,2.00168 c 0.538752,0.53092 0.431653,1.46553 1.421976,2.36702 1.067261,0.97156 1.630178,0.45849 2.321697,1.08447 l 1.771382,-2.02599 z"
+ id="path2233" />
+ <path
+ id="rect2190"
+ d="M 97.156354,59.801933 52.550305,111.02955 c 0.541583,0.53354 0.517441,1.37742 1.512824,2.28353 1.072712,0.97652 1.555044,0.55628 2.250088,1.18547 L 100.94048,63.246681 Z"
+ style="fill:url(#linearGradient6034);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <path
+ style="opacity:0.386047;fill:#252525;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 47.641192,104.81388 -0.897802,1.02682 -0.0345,0.0376 c 0.447512,0.42018 0.395724,1.39005 1.878296,2.86086 l 0.08229,0.0749 0.586334,0.53373 0.0823,0.0749 c 1.616252,1.35012 2.54668,1.16726 3.136095,1.7038 l 0.947655,-1.09585 z"
+ id="path2231" />
+ <path
+ style="opacity:0.353488;fill:#131313;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 43.884886,101.37497 -0.940801,0.95531 c 0.02064,0.0187 -0.05311,0.1047 -0.03237,0.12358 0.423005,0.38509 0.412824,1.36825 1.189787,2.20191 l 0.072,0.0655 0.318878,0.29029 0.04115,0.0374 c 0.925767,0.72156 1.702344,0.46358 2.175362,0.82926 l 0.940872,-1.07609 z"
+ id="path2229" />
+ <path
+ id="rect1315"
+ d="m 44.501995,104.6749 c 1.032229,0.92922 1.738227,0.6105 2.287845,1.11081 L 91.395905,54.558106 87.571444,51.076654 42.944168,102.32853 c 0.02096,0.019 0.04162,0.0379 0.06269,0.0571 0.42971,0.39116 0.455145,1.35294 1.495139,2.28929 z"
+ style="fill:url(#linearGradient6036);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <rect
+ transform="matrix(0.7409346,0.6715772,-0.6655662,0.7463388,0,0)"
+ y="-24.64492"
+ x="99.380959"
+ height="4.2522693"
+ width="18.073059"
+ id="rect2069"
+ style="fill:url(#linearGradient6038);fill-opacity:1;stroke:none;stroke-width:0.879897;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <ellipse
+ transform="matrix(0.3854946,-0.4403693,-1.7345162,-1.5764895,62.874028,110.46407)"
+ id="path5963"
+ style="fill:url(#linearGradient6040);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.175979;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1;filter:url(#filter3849)"
+ cx="34.677639"
+ cy="7.4622769"
+ rx="47.495197"
+ ry="0.97142172" />
+ <path
+ style="fill:url(#radialGradient6042);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.175979;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ id="path3321"
+ d="M 106.56087,7.4622769 A 71.883232,0.4230493 0 0 1 35.242273,7.8853132 71.883232,0.4230493 0 0 1 -37.196723,7.4689227 71.883232,0.4230493 0 0 1 32.983878,7.0393451 71.883232,0.4230493 0 0 1 106.52539,7.448987"
+ transform="matrix(0.3184879,-0.3665274,-1.2576415,-1.1452705,66.925762,101.47904)" />
+ <path
+ id="path2265"
+ d="m 44.721041,119.98334 c -1.894932,-0.77816 -4.469372,-3.93608 -5.787909,-5.07837 l -2.933131,9.08971 z"
+ style="fill:url(#linearGradient6044);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3233"
+ d="m 97.676422,50.957862 c 2.773338,2.157871 4.754818,5.136648 4.863888,5.422718 0.10904,0.286071 -2.586875,-3.046365 -4.878244,-4.572341 -2.273846,-1.514326 -5.450917,-1.552229 -5.685693,-1.736594 -0.234782,-0.184361 -1.822614,-1.877275 -0.38221,-1.814774 1.506596,0.06537 3.94013,1.035831 6.082259,2.700991 z"
+ style="fill:url(#linearGradient6046);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.879897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient6048);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.439949;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 93.653015,51.592952 -2.773744,3.218036 6.482458,5.873697 2.773741,-3.186793 z"
+ id="path5045" />
+ <rect
+ transform="matrix(0.7404161,0.6721488,-0.6634233,0.7482443,0,0)"
+ y="-25.364759"
+ x="104.60918"
+ height="1.7080779"
+ width="7.795228"
+ id="rect3205"
+ style="fill:url(#radialGradient6050);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <rect
+ style="fill:url(#radialGradient6052);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ id="rect2956"
+ width="5.3484583"
+ height="1.162492"
+ x="94.946716"
+ y="-31.829779"
+ transform="matrix(0.6942228,0.7197602,-0.7693435,0.6388354,0,0)" />
+ <rect
+ transform="matrix(-0.7514575,-0.6597815,-0.5893147,0.8079036,0,0)"
+ y="-23.501301"
+ x="-119.96733"
+ height="1.1647878"
+ width="5.3448997"
+ id="rect2961"
+ style="fill:url(#radialGradient6054);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/multimc/scalable/shortcut.svg b/launcher/resources/multimc/scalable/shortcut.svg
new file mode 100644
index 00000000..549c3724
--- /dev/null
+++ b/launcher/resources/multimc/scalable/shortcut.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="128"
+ height="128"
+ id="svg2"
+ version="1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3185">
+ <stop
+ style="stop-color:#eeeeee;stop-opacity:1;"
+ offset="0"
+ id="stop3187" />
+ <stop
+ style="stop-color:#eeeeee;stop-opacity:0;"
+ offset="1"
+ id="stop3189" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3133">
+ <stop
+ style="stop-color:#646661;stop-opacity:1"
+ offset="0"
+ id="stop3135" />
+ <stop
+ style="stop-color:#111111;stop-opacity:1"
+ offset="1"
+ id="stop3137" />
+ </linearGradient>
+ <radialGradient
+ xlink:href="#linearGradient3133"
+ id="radialGradient3139"
+ cx="64"
+ cy="35.686314"
+ fx="64"
+ fy="35.686314"
+ r="40"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.1360441,0,0,1.446027,-72.706823,-26.184217)" />
+ <linearGradient
+ xlink:href="#linearGradient3185"
+ id="linearGradient3191"
+ x1="112"
+ y1="98.41069"
+ x2="61.978939"
+ y2="11.771669"
+ gradientUnits="userSpaceOnUse" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3393">
+ <path
+ style="opacity:1;fill:#dbdbdb;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 13.8125,8 C 10.584167,8 8,10.584167 8,13.8125 L 8,114.1875 C 8,117.41583 10.584167,120 13.8125,120 L 114.1875,120 C 117.41583,120 120,117.41583 120,114.1875 L 120,13.8125 C 120,10.584167 117.41583,8 114.1875,8 L 13.8125,8 z M 21.8125,16 L 106.1875,16 C 109.41583,16 112,18.584167 112,21.8125 L 112,106.1875 C 112,109.41583 109.41583,112 106.1875,112 L 21.8125,112 C 18.584166,112 16,109.41583 16,106.1875 L 16,21.8125 C 16,18.584166 18.584167,16 21.8125,16 z "
+ id="path3395" />
+ </clipPath>
+ <radialGradient
+ xlink:href="#linearGradient3133"
+ id="radialGradient3413"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.1360441,0,0,-1.446027,-72.706823,154.18422)"
+ cx="64"
+ cy="35.686314"
+ fx="64"
+ fy="35.686314"
+ r="40" />
+ <radialGradient
+ xlink:href="#linearGradient3133"
+ id="radialGradient3417"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.1360441,0,0,1.446027,-72.706823,-25.184217)"
+ cx="64"
+ cy="35.686314"
+ fx="64"
+ fy="35.686314"
+ r="40" />
+ <filter
+ id="filter3351"
+ x="-0.048"
+ y="-0.048"
+ width="1.096"
+ height="1.096">
+ <feGaussianBlur
+ stdDeviation="2"
+ id="feGaussianBlur3353" />
+ </filter>
+ </defs>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <rect
+ style="opacity:0.7;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3351)"
+ id="rect3305"
+ width="100"
+ height="100"
+ x="14"
+ y="14"
+ rx="7.4348507"
+ ry="7.4348507"
+ clip-path="url(#clipPath3393)" />
+ <rect
+ ry="5.6263733"
+ rx="5.6263733"
+ y="16"
+ x="16"
+ height="96"
+ width="96"
+ id="rect3141"
+ style="opacity:0.7;fill:#eeeeee;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:url(#radialGradient3139);fill-opacity:1.0;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2160"
+ width="80"
+ height="80"
+ x="24"
+ y="24"
+ rx="5.6263733"
+ ry="5.6263733" />
+ <rect
+ style="opacity:0.7;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3178"
+ width="95"
+ height="95"
+ x="16.5"
+ y="16.5"
+ rx="5.6263733"
+ ry="5.6263733" />
+ <g
+ id="g3160"
+ transform="matrix(1.6656201,0,0,1.6656201,-62.574569,-26.624804)"
+ style="fill:#ffffff;fill-opacity:1">
+ <path
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 44.03125 40 L 55.34375 51.3125 C 43.467571 59.035057 35.734919 71.703669 57.34375 93.3125 C 52.734046 74.873684 60.878036 66.021115 70.75 66.71875 L 84 79.96875 L 84 73.3125 L 84 40 L 44.03125 40 z "
+ transform="matrix(0.600377,0,0,0.600377,37.568332,15.98492)"
+ id="path2179" />
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/multimc/scalable/tag.svg b/launcher/resources/multimc/scalable/tag.svg
new file mode 100644
index 00000000..81b5d545
--- /dev/null
+++ b/launcher/resources/multimc/scalable/tag.svg
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="33.866665mm"
+ height="33.866665mm"
+ viewBox="0 0 33.866665 33.866665"
+ version="1.1"
+ id="svg5"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview7"
+ pagecolor="#505050"
+ bordercolor="#ffffff"
+ borderopacity="1"
+ inkscape:showpageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="1"
+ inkscape:deskcolor="#505050"
+ inkscape:document-units="mm"
+ showgrid="false"
+ inkscape:zoom="1.6819304"
+ inkscape:cx="97.209729"
+ inkscape:cy="104.93894"
+ inkscape:window-width="1440"
+ inkscape:window-height="827"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1" />
+ <defs
+ id="defs2">
+ <radialGradient
+ xlink:href="#linearGradient3291"
+ id="radialGradient10686"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+ cx="63.912209"
+ cy="115.70919"
+ fx="42.094791"
+ fy="115.7093"
+ r="63.912209" />
+ <linearGradient
+ id="linearGradient3291">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop3293" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3295" />
+ </linearGradient>
+ <radialGradient
+ xlink:href="#linearGradient3075"
+ id="radialGradient11644"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.844258,0,0,1.606667,44.38044,-98.18508)"
+ spreadMethod="reflect"
+ cx="-52.250774"
+ cy="128.00081"
+ fx="-52.250774"
+ fy="128.00081"
+ r="36.937431" />
+ <linearGradient
+ id="linearGradient3075">
+ <stop
+ id="stop3077"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0.42597079"
+ id="stop3093" />
+ <stop
+ style="stop-color:#f1f1f1;stop-opacity:1;"
+ offset="0.5892781"
+ id="stop3085" />
+ <stop
+ id="stop3087"
+ offset="0.80219781"
+ style="stop-color:#eaeaea;stop-opacity:1;" />
+ <stop
+ id="stop3079"
+ offset="1"
+ style="stop-color:#dfdfdf;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient2316"
+ id="linearGradient11646"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.835095,0,0,0.835095,6.816147,12.32049)"
+ x1="32.39278"
+ y1="79.018364"
+ x2="83.208656"
+ y2="79.018364" />
+ <linearGradient
+ id="linearGradient2316">
+ <stop
+ id="stop2318"
+ offset="0"
+ style="stop-color:#dd6a0e;stop-opacity:1;" />
+ <stop
+ id="stop2320"
+ offset="1"
+ style="stop-color:#ffb66d;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient5259"
+ id="linearGradient11648"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.267368,-0.06264141)"
+ x1="24.851341"
+ y1="60.846405"
+ x2="-35.981007"
+ y2="112.08296" />
+ <linearGradient
+ id="linearGradient5259">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5261" />
+ <stop
+ id="stop5267"
+ offset="0.5"
+ style="stop-color:#7f7f7f;stop-opacity:0.33935019;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop5263" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient2316"
+ id="linearGradient11654"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.835095,0,0,0.835095,7.613067,13.11741)"
+ x1="32.39278"
+ y1="79.018364"
+ x2="83.208656"
+ y2="79.018364" />
+ <linearGradient
+ xlink:href="#linearGradient7033"
+ id="linearGradient11656"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.144757,-0.233352)"
+ x1="96.437851"
+ y1="14.713447"
+ x2="96.397697"
+ y2="23.267729" />
+ <linearGradient
+ id="linearGradient7033">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7035" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop7037" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient2959"
+ id="linearGradient11658"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.965789,0,0,0.944211,3.248297,-0.448682)"
+ x1="111.30237"
+ y1="-18.911451"
+ x2="108.5625"
+ y2="26.541067" />
+ <linearGradient
+ y2="3.1118"
+ x2="17.0464"
+ y1="7.6073999"
+ x1="17.0464"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2959">
+ <stop
+ id="stop2961"
+ style="stop-color:#EEEEEE"
+ offset="0" />
+ <stop
+ id="stop2963"
+ style="stop-color:#CECECE"
+ offset="0.2909" />
+ <stop
+ id="stop2965"
+ style="stop-color:#888888"
+ offset="0.85" />
+ <stop
+ id="stop2967"
+ style="stop-color:#555555"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#linearGradient7033"
+ id="linearGradient11660"
+ gradientUnits="userSpaceOnUse"
+ x1="65.073738"
+ y1="53.097416"
+ x2="62.605522"
+ y2="102.24165" />
+ <linearGradient
+ xlink:href="#linearGradient2959"
+ id="linearGradient11662"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.989491,0.144757,0.128566)"
+ x1="112.14121"
+ y1="0.22972308"
+ x2="108.5625"
+ y2="41.496986" />
+ <linearGradient
+ xlink:href="#linearGradient7033"
+ id="linearGradient11664"
+ gradientUnits="userSpaceOnUse"
+ x1="236.57014"
+ y1="-50.274925"
+ x2="2.61567"
+ y2="111.73157" />
+ <linearGradient
+ xlink:href="#linearGradient7033"
+ id="linearGradient11666"
+ gradientUnits="userSpaceOnUse"
+ x1="95.915977"
+ y1="-33.667568"
+ x2="32.102207"
+ y2="129.69464" />
+ <radialGradient
+ xlink:href="#linearGradient3291"
+ id="radialGradient11668"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.381766,0.111574,-0.139672,0.47791,70.02209,5.232857)"
+ cx="99.498825"
+ cy="33.076019"
+ fx="92.406448"
+ fy="33.504173"
+ r="17.845808" />
+ <linearGradient
+ xlink:href="#linearGradient2316"
+ id="linearGradient15192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.835095,0,0,0.835095,5.637308,11.14165)"
+ x1="32.39278"
+ y1="79.018364"
+ x2="83.208656"
+ y2="79.018364" />
+ <linearGradient
+ xlink:href="#linearGradient3291"
+ id="linearGradient12566"
+ x1="96.686058"
+ y1="28.999111"
+ x2="109.04183"
+ y2="41.42416"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5259"
+ id="linearGradient3805"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.267368,-0.06264141)"
+ x1="24.851341"
+ y1="60.846405"
+ x2="-35.981007"
+ y2="112.08296" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5259"
+ id="linearGradient3807"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.267368,-0.06264141)"
+ x1="24.851341"
+ y1="60.846405"
+ x2="-35.981007"
+ y2="112.08296" />
+ </defs>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="layer1-3"
+ transform="matrix(0.26458333,0,0,0.26458333,-0.0150732,-0.07996336)">
+ <path
+ id="path2276"
+ d="M 50.892799,3.2812959 V 0.48658747 Z"
+ style="fill:#ffffff;fill-opacity:0.756881;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <path
+ style="opacity:0.381395;fill:url(#radialGradient10686);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ id="path3289"
+ d="m 127.82442,115.70919 a 63.91221,12.641975 0 1 1 -127.82442,0 63.91221,12.641975 0 1 1 127.82442,0 z"
+ transform="matrix(1,0,0,0.416667,0.144757,74.63816)" />
+ <g
+ id="g11627"
+ transform="matrix(0.99373,0,0,0.99373,9.698994e-4,0.76812)">
+ <path
+ id="rect1410"
+ d="m 65.957252,16.860398 c -3.049556,-0.275801 -6.186939,0.749438 -8.53125,3.09375 l -54.125,54.09375 c -4.19508499,4.195085 -4.19508509,10.961163 0,15.15625 l 30.15625,30.156252 c 4.195085,4.19509 10.961166,4.19508 15.15625,0 L 102.70726,65.235398 c 2.49083,-2.490832 3.13273,-5.870037 3.125,-9.09375 l -0.0625,-28.6875 c 0,-5.932749 -4.786,-10.71875 -10.718753,-10.71875 0,0 -28.607642,0.09192 -29.093755,0.125 z m 28.843755,5.125 c 3.66262,-0.16143 6.156253,2.485447 6.156253,5.5625 0,3.077053 -2.485453,5.5625 -5.562503,5.5625 -3.07706,10e-7 -5.59375,-2.485447 -5.59375,-5.5625 0,-2.884737 2.18203,-5.438298 5,-5.5625 z"
+ style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:0.0431373" />
+ <rect
+ transform="rotate(-45)"
+ rx="7.8982348"
+ ry="7.8982348"
+ y="64.655273"
+ x="-51.673248"
+ height="44.167801"
+ width="73.874908"
+ id="rect3166"
+ style="opacity:1;fill:url(#radialGradient11644);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:0.0431373" />
+ <path
+ id="path3173"
+ d="M 75.885718,57.507812 34.284739,99.108794"
+ style="opacity:0.356557;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient11646);stroke-width:6.681;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.229508;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3805);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ id="rect5257"
+ width="73.874908"
+ height="44.167801"
+ x="-51.673248"
+ y="64.655273"
+ ry="7.8982348"
+ rx="7.8982348"
+ transform="rotate(-45)" />
+ <rect
+ transform="rotate(-45)"
+ rx="7.8982348"
+ ry="7.8982348"
+ y="64.655273"
+ x="-51.673248"
+ height="44.167801"
+ width="73.874908"
+ id="rect5269"
+ style="opacity:0.229508;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3807);stroke-width:4.7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <rect
+ style="opacity:0.229508;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient11648);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ id="rect5271"
+ width="73.874908"
+ height="44.167801"
+ x="-51.673248"
+ y="64.655273"
+ ry="7.8982348"
+ rx="7.8982348"
+ transform="rotate(-45)" />
+ <path
+ style="opacity:0.356557;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient11654);stroke-width:4.281;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 76.682637,58.304731 35.081658,99.905718"
+ id="path6146" />
+ <path
+ id="path7023"
+ d="m 95.974287,17.823297 c -10.492771,0 -20.733943,-0.08387 -31.226713,-0.08387 -1.762073,0 -4.255833,0.942555 -5.871767,2.558489 -1.660248,1.726659 -3.404362,3.117855 -5.064611,4.844513 2.414223,-2.414222 7.212846,-5.724904 11.093084,-5.724904 7.421011,0 27.351047,-0.0983 31.070007,-0.03189 3.71177,0 7.055473,2.121104 8.954723,5.410703 -0.68877,-1.943344 -4.67334,-6.973043 -8.954723,-6.973043 z"
+ style="fill:url(#linearGradient11656);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="opacity:1;fill:url(#linearGradient11658);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 100.82818,26.326961 c -1.890153,-1.727837 -3.415423,-4.670514 -3.415423,-7.920927 0,-3.533359 1.96775,-6.823917 4.142823,-9.4743797 2.17506,-2.6504632 5.28768,-4.1241296 7.58345,-4.64867 2.29577,-0.5245403 5.79507,-0.1221965 7.97013,1.534343 2.17508,1.6565394 3.47363,4.2591447 3.47363,7.7925027 0,3.533359 -2.02809,6.984823 -4.20316,9.635286 -2.17507,2.650461 -5.98704,4.450271 -8.28282,4.974812 -0.90522,0.206827 -1.39525,0.258815 -2.34919,0.16418 v 3.641114 c 0.90698,-0.07736 1.37675,-0.178048 2.34919,-0.400232 5.41187,-1.236508 9.82659,-4.36931 12.70617,-7.878262 2.87957,-3.508952 4.52714,-7.616269 4.52714,-11.71412 0,-4.0978497 -1.64757,-7.4555617 -4.52714,-9.6486567 -2.22718,-1.69622208 -5.36254,-2.77457075 -9.175,-2.59658065 -1.11678,0.0521386 -2.30504,0.22146591 -3.53117,0.50161219 -5.41185,1.23650756 -9.856773,4.39881646 -12.736353,7.90776816 -2.87957,3.508952 -4.49695,7.586762 -4.49695,11.684613 -1e-5,4.09785 1.61738,7.485066 4.49695,9.678163 0.53992,0.411206 2.4878,1.271962 1.78068,1.091745 -0.0068,-0.0017 1.96319,1.251665 1.85535,0.684439 1.810883,-0.738325 2.208813,-3.477697 1.831693,-5.00875 z"
+ id="path9411" />
+ <path
+ id="path10706"
+ d="m 90.5625,16.75 c -8.068686,0.0274 -24.229165,0.100191 -24.59375,0.125 -3.049557,-0.2758 -6.186939,0.749438 -8.53125,3.09375 L 7.84375,69.53125 c 11.529551,1.982326 27.892323,4.585247 51.125,7.96875 8.273982,1.204986 18.293655,2.036346 28.90625,2.59375 L 102.71875,65.25 c 2.49083,-2.490831 3.13273,-5.870037 3.125,-9.09375 l -0.0625,-28.6875 c 0,-5.932748 -4.786,-10.71875 -10.71875,-10.71875 -10e-7,0 -1.810438,-0.0091 -4.5,0 z m 4.3125,5.21875 c 3.6158,-0.116775 6.09375,2.540736 6.09375,5.59375 0,3.077054 -2.48545,5.5625 -5.5625,5.5625 -3.077063,2e-6 -5.59375,-2.485447 -5.59375,-5.5625 -3e-6,-2.884736 2.18203,-5.438298 5,-5.5625 0.02861,-0.0013 0.03403,-0.03033 0.0625,-0.03125 z"
+ style="opacity:0.110656;fill:url(#linearGradient11660);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:0.0431373" />
+ <path
+ id="path7046"
+ d="m 97.375359,32.751517 c 2.10015,-0.773731 3.390351,-2.538598 3.560031,-4.734753 -1.957113,-1.810695 -3.290633,-4.723021 -3.290633,-8.129308 -1e-5,-3.702801 2.03744,-7.151156 4.289563,-9.9287217 2.25211,-2.7775654 5.47498,-4.3219011 7.85207,-4.8715958 2.3771,-0.5496945 6.00035,-0.1280564 8.25246,1.6079222 2.25212,1.7359783 3.59667,4.4633913 3.59667,8.1661903 0,3.702801 -2.09993,7.319779 -4.35205,10.097344 -2.25211,2.777565 -6.19911,4.663684 -8.57621,5.213379 -0.93729,0.216746 -1.96089,0.315625 -2.94862,0.216451 v 3.815723 c 0.93911,-0.08107 1.94173,-0.230984 2.94862,-0.463824 5.60357,-1.295804 10.17467,-4.578839 13.15625,-8.256062 2.98157,-3.677222 4.6875,-7.981505 4.6875,-12.275868 0,-4.2943614 -1.70593,-7.8130918 -4.6875,-10.1113563 -2.30607,-1.7775641 -5.5525,-2.90762479 -9.5,-2.72109918 -1.15634,0.0546388 -2.38669,0.23208625 -3.65625,0.52566685 C 103.1037,2.1974095 98.501327,5.5113663 95.519757,9.1885892 c -2.98158,3.6772228 -4.65625,7.9505838 -4.65625,12.2449458 -1e-5,4.294362 1.67467,7.844014 4.65625,10.142279 0.55904,0.430925 1.186172,0.832604 1.855602,1.175703 z"
+ style="opacity:1;fill:url(#linearGradient11662);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <path
+ id="path11592"
+ d="m 87.21875,16.75 c -8.50359,0.03263 -20.930988,0.103292 -21.25,0.125 -3.049557,-0.2758 -6.186939,0.749438 -8.53125,3.09375 L 7.84375,69.53125 c 6.512962,1.119802 14.566555,2.45529 24.53125,4 11.012521,-17.30544 27.351155,-37.289448 38.8125,-46.875 4.644801,-3.884621 11.982929,-7.180912 20.34375,-9.90625 -0.306904,6.24e-4 -0.632555,-0.0011 -0.96875,0 -1.008586,0.0034 -2.128951,-0.0047 -3.34375,0 z m 18.375,8.6875 c -1.5547,0.686392 -3.10706,1.369523 -4.625,2.0625 3e-4,0.0238 0,0.03865 0,0.0625 0,3.077054 -2.48545,5.5625 -5.5625,5.5625 -1.334195,10e-7 -2.567233,-0.469835 -3.53125,-1.25 -6.682325,3.356446 -12.081361,6.518861 -14.59375,9.03125 -8.240797,8.240798 -15.526075,23.751079 -20.6875,36.25 0.784476,0.114764 1.574287,0.227138 2.375,0.34375 8.273982,1.204986 18.293655,2.036346 28.90625,2.59375 L 102.71875,65.25 c 2.49083,-2.490831 3.13273,-5.870037 3.125,-9.09375 l -0.0625,-28.6875 c 0,-0.695244 -0.0619,-1.373359 -0.1875,-2.03125 z"
+ style="opacity:0.20082;fill:url(#linearGradient11664);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:0.0431373" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 100.93539,27.951048 c -1.957113,-1.829927 -3.290633,-4.773185 -3.290633,-8.21565 -1e-5,-3.742128 1.49788,-7.442934 3.750003,-10.2499997 2.25211,-2.8070662 4.93541,-4.475717 7.3125,-5.03125 2.3771,-0.5555328 5.02914,-0.1294165 7.28125,1.625 2.25212,1.7544162 3.8125,4.7266227 3.8125,8.4687497 0,3.742128 -1.56038,7.505434 -3.8125,10.3125 -2.25211,2.807065 -4.90415,4.413217 -7.28125,4.96875 -0.93729,0.219048 -1.91852,0.318977 -2.90625,0.21875 v 4.15625 c 0.93911,-0.08193 1.89936,-0.233437 2.90625,-0.46875 5.60357,-1.309567 10.17467,-4.627471 13.15625,-8.34375 2.98157,-3.716278 4.6875,-8.066277 4.6875,-12.40625 0,-4.3399723 -1.70593,-7.8960753 -4.6875,-10.2187497 -2.30607,-1.79644362 -5.5525,-2.93850675 -9.5,-2.75000004 -1.15634,0.05521916 -2.38669,0.23455125 -3.65625,0.53125001 C 103.1037,1.8574651 98.501327,5.2066196 95.519757,8.9228983 c -2.98158,3.7162787 -4.65625,8.0350267 -4.65625,12.3749997 -1e-5,4.339973 1.67467,7.927325 4.65625,10.25 0.55904,0.435502 1.17432,0.809507 1.84375,1.15625 0.0064,0.0033 0.0248,-0.0033 0.03125,0 2.0689,-0.781949 3.370953,-2.53362 3.540633,-4.7531 z"
+ id="path8516" />
+ <path
+ style="opacity:0.143443;fill:url(#linearGradient11666);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:0.0431373"
+ d="m 87.21875,16.75 c -8.50359,0.03263 -20.930988,0.103292 -21.25,0.125 -3.049557,-0.2758 -6.186939,0.749438 -8.53125,3.09375 L 7.84375,69.53125 c 6.512962,1.119802 51.882405,-33.289448 63.34375,-42.875 4.644801,-3.884621 11.982929,-7.180912 20.34375,-9.90625 -0.306904,6.24e-4 -0.632555,-0.0011 -0.96875,0 -1.008586,0.0034 -2.128951,-0.0047 -3.34375,0 z m 18.375,8.6875 c -1.5547,0.686392 -3.10706,1.369523 -4.625,2.0625 3e-4,0.0238 0,0.03865 0,0.0625 0,3.077054 -2.48545,5.5625 -5.5625,5.5625 -1.334195,10e-7 -2.567233,-0.469835 -3.53125,-1.25 -6.682325,3.356446 -12.081361,6.518861 -14.59375,9.03125 -8.240797,8.240798 -0.01884,38.630096 10.59375,39.1875 L 102.71875,65.25 c 2.49083,-2.490831 3.13273,-5.870037 3.125,-9.09375 l -0.0625,-28.6875 c 0,-0.695244 -0.0619,-1.373359 -0.1875,-2.03125 z"
+ id="path11602" />
+ <path
+ style="opacity:0.606557;fill:url(#radialGradient11668);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 90.96875,26.46875 c 0.743967,2.297267 2.100743,4.216351 3.96875,5.65625 0.555536,0.428222 1.147267,0.846552 1.8125,1.1875 2.656083,-0.950513 4.01114,-3.505137 3.46875,-6.40625 -0.15257,-0.139467 -0.321073,-0.282994 -0.46875,-0.4375 z m 21.71875,0 c -1.83753,1.211058 -3.85538,2.017967 -5.28125,2.34375 -0.89954,0.205529 -1.36454,0.250292 -2.3125,0.15625 v 1.96875 1.65625 2.1875 c 0.93322,-0.08056 1.93692,-0.23737 2.9375,-0.46875 5.36542,-1.24073 9.78487,-4.350662 12.75,-7.84375 z"
+ transform="matrix(1.00631,0,0,1.00631,-9.76019e-4,-0.772966)"
+ id="path11610" />
+ <path
+ id="path14317"
+ d="M 74.706878,56.328972 33.105899,97.929959"
+ style="opacity:0.356557;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient15192);stroke-width:10.0168;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <path
+ style="opacity:0.536885;fill:#c5c5c5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="m 89.656712,30.354292 c 0.49124,2.325735 2.588013,4.056766 5.131181,4.056767 2.543162,0 4.679407,-1.731031 5.170643,-4.056767 -0.854771,1.932015 -2.866287,3.291339 -5.170643,3.291339 -2.30436,0 -4.276402,-1.359324 -5.131181,-3.291339 z"
+ id="path11672" />
+ <path
+ style="opacity:0.303279;fill:url(#linearGradient12566);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 100.18163,26.901091 c 1.15086,4.050666 3.65645,3.092196 4.93347,6.825449 v 2.355173 c -4.56581,-1.437505 -6.222135,-1.137689 -8.429042,-2.759676 2.139037,-0.83309 4.052592,-2.587176 3.495572,-6.420946 z"
+ id="path12550" />
+ </g>
+ </g>
+</svg>
diff --git a/launcher/resources/pe_blue/pe_blue.qrc b/launcher/resources/pe_blue/pe_blue.qrc
index 3121ffe6..639675f0 100644
--- a/launcher/resources/pe_blue/pe_blue.qrc
+++ b/launcher/resources/pe_blue/pe_blue.qrc
@@ -39,5 +39,6 @@
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
<file>scalable/launch.svg</file>
+ <file>scalable/shortcut.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/pe_blue/scalable/shortcut.svg b/launcher/resources/pe_blue/scalable/shortcut.svg
new file mode 100644
index 00000000..45b73496
--- /dev/null
+++ b/launcher/resources/pe_blue/scalable/shortcut.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#3366CC" d="M6,32h20c3.3,0,6-2.7,6-6V6c0-3.3-2.7-6-6-6h-9.1
+ C17.6,1.2,18,2.6,18,4h8c1.1,0,2,0.9,2,2v20c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26C0,29.3,2.7,32,6,32z"/>
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#39B54A" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2
+ c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8
+ C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/launcher/resources/pe_colored/pe_colored.qrc b/launcher/resources/pe_colored/pe_colored.qrc
index ce5ad8e2..fac58da8 100644
--- a/launcher/resources/pe_colored/pe_colored.qrc
+++ b/launcher/resources/pe_colored/pe_colored.qrc
@@ -39,5 +39,6 @@
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
<file>scalable/launch.svg</file>
+ <file>scalable/shortcut.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/pe_colored/scalable/shortcut.svg b/launcher/resources/pe_colored/scalable/shortcut.svg
new file mode 100644
index 00000000..1469674f
--- /dev/null
+++ b/launcher/resources/pe_colored/scalable/shortcut.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
+<g>
+ <path fill="#39B54A" d="M26,0h-9.1C17.6,1.2,18,2.6,18,4h8c1.1,0,2,0.9,2,2v3h4V6C32,2.7,29.3,0,26,0z"/>
+ <path fill="#8C6239" d="M28,26c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V9h-4V26z"/>
+</g>
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#009245" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2
+ c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8
+ C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/>
+</svg>
diff --git a/launcher/resources/pe_dark/pe_dark.qrc b/launcher/resources/pe_dark/pe_dark.qrc
index 156d8f8b..c0c6ee6c 100644
--- a/launcher/resources/pe_dark/pe_dark.qrc
+++ b/launcher/resources/pe_dark/pe_dark.qrc
@@ -39,5 +39,6 @@
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
<file>scalable/launch.svg</file>
+ <file>scalable/shortcut.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/pe_dark/scalable/shortcut.svg b/launcher/resources/pe_dark/scalable/shortcut.svg
new file mode 100644
index 00000000..29b45f26
--- /dev/null
+++ b/launcher/resources/pe_dark/scalable/shortcut.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M6,32h20c3.3,0,6-2.7,6-6V6c0-3.3-2.7-6-6-6h-9.1C17.6,1.2,18,2.6,18,4h8
+ c1.1,0,2,0.9,2,2v20c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26C0,29.3,2.7,32,6,32z"/>
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#666666" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2
+ c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8
+ C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/launcher/resources/pe_light/pe_light.qrc b/launcher/resources/pe_light/pe_light.qrc
index d8e4a1bd..bd6a2496 100644
--- a/launcher/resources/pe_light/pe_light.qrc
+++ b/launcher/resources/pe_light/pe_light.qrc
@@ -39,5 +39,6 @@
<file>scalable/export.svg</file>
<file>scalable/rename.svg</file>
<file>scalable/launch.svg</file>
+ <file>scalable/shortcut.svg</file>
</qresource>
</RCC>
diff --git a/launcher/resources/pe_light/scalable/shortcut.svg b/launcher/resources/pe_light/scalable/shortcut.svg
new file mode 100644
index 00000000..4d232bcf
--- /dev/null
+++ b/launcher/resources/pe_light/scalable/shortcut.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#F2F2F2" d="M6,32h20c3.3,0,6-2.7,6-6V6c0-3.3-2.7-6-6-6h-9.1
+ C17.6,1.2,18,2.6,18,4h8c1.1,0,2,0.9,2,2v20c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-4.5l-4-3V26C0,29.3,2.7,32,6,32z"/>
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M8.8,17.6C9.2,17.9,9.6,18,10,18c0.3,0,0.6-0.1,0.9-0.2
+ c0.7-0.3,1.1-1,1.1-1.8v-1.9V14c6.3,0,11.7,4.2,13.4,10c0.4-1.3,0.6-2.6,0.6-4c0-7.7-6.3-14-14-14V4c0-0.8-0.4-1.5-1.1-1.8
+ C10.6,2.1,10.3,2,10,2C9.6,2,9.2,2.1,8.8,2.4l-8,6C0.3,8.8,0,9.4,0,10c0,0.6,0.3,1.2,0.8,1.6L8.8,17.6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index 929f2a85..b626bbae 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -39,6 +39,7 @@
#include "Application.h"
#include "BuildConfig.h"
+#include "FileSystem.h"
#include "MainWindow.h"
@@ -71,6 +72,7 @@
#include <BaseInstance.h>
#include <InstanceList.h>
+#include <minecraft/MinecraftInstance.h>
#include <MMCZip.h>
#include <icons/IconList.h>
#include <java/JavaUtils.h>
@@ -106,8 +108,14 @@
#include "ui/dialogs/UpdateDialog.h"
#include "ui/dialogs/EditAccountDialog.h"
#include "ui/dialogs/ExportInstanceDialog.h"
+#include "ui/dialogs/ImportResourcePackDialog.h"
#include "ui/themes/ITheme.h"
+#include <minecraft/mod/ResourcePackFolderModel.h>
+#include <minecraft/mod/tasks/LocalResourcePackParseTask.h>
+#include <minecraft/mod/TexturePackFolderModel.h>
+#include <minecraft/mod/tasks/LocalTexturePackParseTask.h>
+
#include "UpdateController.h"
#include "KonamiCode.h"
@@ -239,6 +247,7 @@ public:
TranslatedAction actionLaunchInstanceOffline;
TranslatedAction actionLaunchInstanceDemo;
TranslatedAction actionExportInstance;
+ TranslatedAction actionCreateInstanceShortcut;
QVector<TranslatedAction *> all_actions;
LabeledToolButton *renameButton = nullptr;
@@ -626,6 +635,7 @@ public:
actionExportInstance->setEnabled(enabled);
actionDeleteInstance->setEnabled(enabled);
actionCopyInstance->setEnabled(enabled);
+ actionCreateInstanceShortcut->setEnabled(enabled);
}
void createStatusBar(QMainWindow *MainWindow)
@@ -764,6 +774,15 @@ public:
actionCopyInstance->setIcon(APPLICATION->getThemedIcon("copy"));
all_actions.append(&actionCopyInstance);
+ actionCreateInstanceShortcut = TranslatedAction(MainWindow);
+ actionCreateInstanceShortcut->setObjectName(QStringLiteral("actionCreateInstanceShortcut"));
+ actionCreateInstanceShortcut.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Create Shortcut"));
+ actionCreateInstanceShortcut.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Creates a shortcut on your desktop to launch the selected instance."));
+ //actionCreateInstanceShortcut->setShortcut(QKeySequence(tr("Ctrl+D"))); // TODO
+ // FIXME missing on Legacy, Flat and Flat (White)
+ actionCreateInstanceShortcut->setIcon(APPLICATION->getThemedIcon("shortcut"));
+ all_actions.append(&actionCreateInstanceShortcut);
+
setInstanceActionsEnabled(false);
}
@@ -802,6 +821,8 @@ public:
instanceToolBar->addAction(actionCopyInstance);
instanceToolBar->addAction(actionDeleteInstance);
+ instanceToolBar->addAction(actionCreateInstanceShortcut); // TODO find better position for this
+
QLayout * lay = instanceToolBar->layout();
for(int i = 0; i < lay->count(); i++)
{
@@ -1794,17 +1815,41 @@ void MainWindow::on_actionAddInstance_triggered()
void MainWindow::droppedURLs(QList<QUrl> urls)
{
- for(auto & url:urls)
- {
- if(url.isLocalFile())
- {
- addInstance(url.toLocalFile());
- }
- else
- {
+ // NOTE: This loop only processes one dropped file!
+ for (auto& url : urls) {
+ // The isLocalFile() check below doesn't work as intended without an explicit scheme.
+ if (url.scheme().isEmpty())
+ url.setScheme("file");
+
+ if (!url.isLocalFile()) { // probably instance/modpack
addInstance(url.toString());
+ break;
}
- // Only process one dropped file...
+
+ auto localFileName = url.toLocalFile();
+ QFileInfo localFileInfo(localFileName);
+
+ bool isResourcePack = ResourcePackUtils::validate(localFileInfo);
+ bool isTexturePack = TexturePackUtils::validate(localFileInfo);
+
+ if (!isResourcePack && !isTexturePack) { // probably instance/modpack
+ addInstance(localFileName);
+ break;
+ }
+
+ ImportResourcePackDialog dlg(this);
+
+ if (dlg.exec() != QDialog::Accepted)
+ break;
+
+ qDebug() << "Adding resource/texture pack" << localFileName << "to" << dlg.selectedInstanceKey;
+
+ auto inst = APPLICATION->instances()->getInstanceById(dlg.selectedInstanceKey);
+ auto minecraftInst = std::dynamic_pointer_cast<MinecraftInstance>(inst);
+ if (isResourcePack)
+ minecraftInst->resourcePackList()->installResource(localFileName);
+ else if (isTexturePack)
+ minecraftInst->texturePackList()->installResource(localFileName);
break;
}
}
@@ -2161,6 +2206,130 @@ void MainWindow::on_actionKillInstance_triggered()
}
}
+void MainWindow::on_actionCreateInstanceShortcut_triggered()
+{
+ if (m_selectedInstance)
+ {
+ auto desktopPath = FS::getDesktopDir();
+ if (desktopPath.isEmpty()) {
+ // TODO come up with an alternative solution (open "save file" dialog)
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Couldn't find desktop?!"));
+ return;
+ }
+
+#if defined(Q_OS_MACOS)
+ QString appPath = QApplication::applicationFilePath();
+ if (appPath.startsWith("/private/var/")) {
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("The launcher is in the folder it was extracted from, therefore it cannot create shortcuts."));
+ return;
+ }
+
+ if (FS::createShortcut(FS::PathCombine(desktopPath, m_selectedInstance->name()),
+ appPath, { "--launch", m_selectedInstance->id() },
+ m_selectedInstance->name(), "")) {
+ QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
+ }
+ else
+ {
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instance shortcut!"));
+ }
+#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
+ QString appPath = QApplication::applicationFilePath();
+ if (appPath.startsWith("/tmp/.mount_")) {
+ // AppImage!
+ appPath = QProcessEnvironment::systemEnvironment().value(QStringLiteral("APPIMAGE"));
+ if (appPath.isEmpty())
+ {
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Launcher is running as misconfigured AppImage? ($APPIMAGE environment variable is missing)"));
+ }
+ else if (appPath.endsWith("/"))
+ {
+ appPath.chop(1);
+ }
+ }
+
+ auto icon = APPLICATION->icons()->icon(m_selectedInstance->iconKey());
+ if (icon == nullptr)
+ {
+ icon = APPLICATION->icons()->icon("grass");
+ }
+
+ QString iconPath = FS::PathCombine(m_selectedInstance->instanceRoot(), "icon.png");
+
+ QFile iconFile(iconPath);
+ if (!iconFile.open(QFile::WriteOnly))
+ {
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create icon for shortcut."));
+ return;
+ }
+ bool success = icon->icon().pixmap(64, 64).save(&iconFile, "PNG");
+ iconFile.close();
+
+ if (!success)
+ {
+ iconFile.remove();
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create icon for shortcut."));
+ return;
+ }
+
+ if (FS::createShortcut(FS::PathCombine(desktopPath, m_selectedInstance->name()),
+ appPath, { "--launch", m_selectedInstance->id() },
+ m_selectedInstance->name(), iconPath)) {
+ QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
+ }
+ else
+ {
+ iconFile.remove();
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instance shortcut!"));
+ }
+#elif defined(Q_OS_WIN)
+ auto icon = APPLICATION->icons()->icon(m_selectedInstance->iconKey());
+ if (icon == nullptr)
+ {
+ icon = APPLICATION->icons()->icon("grass");
+ }
+
+ QString iconPath = FS::PathCombine(m_selectedInstance->instanceRoot(), "icon.ico");
+
+ // part of fix for weird bug involving the window icon being replaced
+ // dunno why it happens, but this 2-line fix seems to be enough, so w/e
+ auto appIcon = APPLICATION->getThemedIcon("logo");
+
+ QFile iconFile(iconPath);
+ if (!iconFile.open(QFile::WriteOnly))
+ {
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create icon for shortcut."));
+ return;
+ }
+ bool success = icon->icon().pixmap(64, 64).save(&iconFile, "ICO");
+ iconFile.close();
+
+ // restore original window icon
+ QGuiApplication::setWindowIcon(appIcon);
+
+ if (!success)
+ {
+ iconFile.remove();
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create icon for shortcut."));
+ return;
+ }
+
+ if (FS::createShortcut(FS::PathCombine(desktopPath, m_selectedInstance->name()),
+ QApplication::applicationFilePath(), { "--launch", m_selectedInstance->id() },
+ m_selectedInstance->name(), iconPath)) {
+ QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
+ }
+ else
+ {
+ iconFile.remove();
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instance shortcut!"));
+ }
+#else
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Not supported on your platform!"));
+#endif
+ }
+}
+
void MainWindow::taskEnd()
{
QObject *sender = QObject::sender();
diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h
index 0aa01ee2..f96f641d 100644
--- a/launcher/ui/MainWindow.h
+++ b/launcher/ui/MainWindow.h
@@ -161,6 +161,8 @@ private slots:
void on_actionEditInstance_triggered();
+ void on_actionCreateInstanceShortcut_triggered();
+
void taskEnd();
/**
diff --git a/launcher/ui/dialogs/ImportResourcePackDialog.cpp b/launcher/ui/dialogs/ImportResourcePackDialog.cpp
new file mode 100644
index 00000000..e807e926
--- /dev/null
+++ b/launcher/ui/dialogs/ImportResourcePackDialog.cpp
@@ -0,0 +1,66 @@
+#include "ImportResourcePackDialog.h"
+#include "ui_ImportResourcePackDialog.h"
+
+#include <QFileDialog>
+#include <QPushButton>
+
+#include "Application.h"
+#include "InstanceList.h"
+
+#include <InstanceList.h>
+#include "ui/instanceview/InstanceProxyModel.h"
+#include "ui/instanceview/InstanceDelegate.h"
+
+ImportResourcePackDialog::ImportResourcePackDialog(QWidget* parent) : QDialog(parent), ui(new Ui::ImportResourcePackDialog)
+{
+ ui->setupUi(this);
+ setWindowModality(Qt::WindowModal);
+
+ auto contentsWidget = ui->instanceView;
+ contentsWidget->setViewMode(QListView::ListMode);
+ contentsWidget->setFlow(QListView::LeftToRight);
+ contentsWidget->setIconSize(QSize(48, 48));
+ contentsWidget->setMovement(QListView::Static);
+ contentsWidget->setResizeMode(QListView::Adjust);
+ contentsWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+ contentsWidget->setSpacing(5);
+ contentsWidget->setWordWrap(true);
+ contentsWidget->setWrapping(true);
+ // NOTE: We can't have uniform sizes because the text may wrap if it's too long. If we set this, it will cut off the wrapped text.
+ contentsWidget->setUniformItemSizes(false);
+ contentsWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
+ contentsWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+ contentsWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ contentsWidget->setItemDelegate(new ListViewDelegate());
+
+ proxyModel = new InstanceProxyModel(this);
+ proxyModel->setSourceModel(APPLICATION->instances().get());
+ proxyModel->sort(0);
+ contentsWidget->setModel(proxyModel);
+
+ connect(contentsWidget, SIGNAL(doubleClicked(QModelIndex)), SLOT(activated(QModelIndex)));
+ connect(contentsWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ SLOT(selectionChanged(QItemSelection, QItemSelection)));
+}
+
+void ImportResourcePackDialog::activated(QModelIndex index)
+{
+ selectedInstanceKey = index.data(InstanceList::InstanceIDRole).toString();
+ accept();
+}
+
+void ImportResourcePackDialog::selectionChanged(QItemSelection selected, QItemSelection deselected)
+{
+ if (selected.empty())
+ return;
+
+ QString key = selected.first().indexes().first().data(InstanceList::InstanceIDRole).toString();
+ if (!key.isEmpty()) {
+ selectedInstanceKey = key;
+ }
+}
+
+ImportResourcePackDialog::~ImportResourcePackDialog()
+{
+ delete ui;
+}
diff --git a/launcher/ui/dialogs/ImportResourcePackDialog.h b/launcher/ui/dialogs/ImportResourcePackDialog.h
new file mode 100644
index 00000000..8356f204
--- /dev/null
+++ b/launcher/ui/dialogs/ImportResourcePackDialog.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include <QDialog>
+#include <QItemSelection>
+
+#include "ui/instanceview/InstanceProxyModel.h"
+
+namespace Ui {
+class ImportResourcePackDialog;
+}
+
+class ImportResourcePackDialog : public QDialog {
+ Q_OBJECT
+
+ public:
+ explicit ImportResourcePackDialog(QWidget* parent = 0);
+ ~ImportResourcePackDialog();
+ InstanceProxyModel* proxyModel;
+ QString selectedInstanceKey;
+
+ private:
+ Ui::ImportResourcePackDialog* ui;
+
+ private slots:
+ void selectionChanged(QItemSelection, QItemSelection);
+ void activated(QModelIndex);
+};
diff --git a/launcher/ui/dialogs/ImportResourcePackDialog.ui b/launcher/ui/dialogs/ImportResourcePackDialog.ui
new file mode 100644
index 00000000..20cb9177
--- /dev/null
+++ b/launcher/ui/dialogs/ImportResourcePackDialog.ui
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ImportResourcePackDialog</class>
+ <widget class="QDialog" name="ImportResourcePackDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>676</width>
+ <height>555</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Choose instance to import</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Choose the instance you would like to import this resource pack to.</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QListView" name="instanceView"/>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ImportResourcePackDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ImportResourcePackDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp
index 2cee15bf..81dd4cc1 100644
--- a/launcher/ui/pages/global/JavaPage.cpp
+++ b/launcher/ui/pages/global/JavaPage.cpp
@@ -58,9 +58,8 @@ JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage)
ui->setupUi(this);
ui->tabWidget->tabBar()->hide();
- auto sysMiB = Sys::getSystemRam() / Sys::mebibyte;
- ui->maxMemSpinBox->setMaximum(sysMiB);
loadSettings();
+ updateThresholds();
}
JavaPage::~JavaPage()
@@ -177,6 +176,11 @@ void JavaPage::on_javaTestBtn_clicked()
checker->run();
}
+void JavaPage::on_maxMemSpinBox_valueChanged(int i)
+{
+ updateThresholds();
+}
+
void JavaPage::checkerFinished()
{
checker.reset();
@@ -186,3 +190,29 @@ void JavaPage::retranslate()
{
ui->retranslateUi(this);
}
+
+void JavaPage::updateThresholds()
+{
+ auto sysMiB = Sys::getSystemRam() / Sys::mebibyte;
+ unsigned int maxMem = ui->maxMemSpinBox->value();
+
+ QString iconName;
+
+ if (maxMem >= sysMiB) {
+ iconName = "status-bad";
+ ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity."));
+ } else if (maxMem > (sysMiB * 0.9)) {
+ iconName = "status-yellow";
+ ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity."));
+ } else {
+ iconName = "status-good";
+ ui->labelMaxMemIcon->setToolTip("");
+ }
+
+ {
+ auto height = ui->labelMaxMemIcon->fontInfo().pixelSize();
+ QIcon icon = APPLICATION->getThemedIcon(iconName);
+ QPixmap pix = icon.pixmap(height, height);
+ ui->labelMaxMemIcon->setPixmap(pix);
+ }
+}
diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h
index 64d4098e..2ef6d749 100644
--- a/launcher/ui/pages/global/JavaPage.h
+++ b/launcher/ui/pages/global/JavaPage.h
@@ -76,6 +76,8 @@ public:
bool apply() override;
void retranslate() override;
+ void updateThresholds();
+
private:
void applySettings();
void loadSettings();
@@ -85,6 +87,7 @@ slots:
void on_javaDetectBtn_clicked();
void on_javaTestBtn_clicked();
void on_javaBrowseBtn_clicked();
+ void on_maxMemSpinBox_valueChanged(int i);
void checkerFinished();
private:
diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui
index 6ccffed4..6749cbe4 100644
--- a/launcher/ui/pages/global/JavaPage.ui
+++ b/launcher/ui/pages/global/JavaPage.ui
@@ -44,50 +44,38 @@
<property name="title">
<string>Memory</string>
</property>
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="1">
- <widget class="QSpinBox" name="maxMemSpinBox">
- <property name="toolTip">
- <string>The maximum amount of memory Minecraft is allowed to use.</string>
- </property>
- <property name="suffix">
- <string notr="true"> MiB</string>
- </property>
- <property name="minimum">
- <number>128</number>
- </property>
- <property name="maximum">
- <number>65536</number>
- </property>
- <property name="singleStep">
- <number>128</number>
+ <layout class="QGridLayout" name="gridLayout_2" columnstretch="1,0,0,0">
+ <item row="1" column="0">
+ <widget class="QLabel" name="labelMaxMem">
+ <property name="text">
+ <string>Ma&amp;ximum memory allocation:</string>
</property>
- <property name="value">
- <number>1024</number>
+ <property name="buddy">
+ <cstring>maxMemSpinBox</cstring>
</property>
</widget>
</item>
- <item row="0" column="0">
- <widget class="QLabel" name="labelMinMem">
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelPermGen">
<property name="text">
- <string>&amp;Minimum memory allocation:</string>
+ <string notr="true">&amp;PermGen:</string>
</property>
<property name="buddy">
- <cstring>minMemSpinBox</cstring>
+ <cstring>permGenSpinBox</cstring>
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="labelMaxMem">
+ <item row="0" column="0">
+ <widget class="QLabel" name="labelMinMem">
<property name="text">
- <string>Ma&amp;ximum memory allocation:</string>
+ <string>&amp;Minimum memory allocation:</string>
</property>
<property name="buddy">
- <cstring>maxMemSpinBox</cstring>
+ <cstring>minMemSpinBox</cstring>
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="0" column="2">
<widget class="QSpinBox" name="minMemSpinBox">
<property name="toolTip">
<string>The amount of memory Minecraft is started with.</string>
@@ -99,7 +87,7 @@
<number>128</number>
</property>
<property name="maximum">
- <number>65536</number>
+ <number>1048576</number>
</property>
<property name="singleStep">
<number>128</number>
@@ -109,17 +97,29 @@
</property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QLabel" name="labelPermGen">
- <property name="text">
- <string notr="true">&amp;PermGen:</string>
+ <item row="1" column="2">
+ <widget class="QSpinBox" name="maxMemSpinBox">
+ <property name="toolTip">
+ <string>The maximum amount of memory Minecraft is allowed to use.</string>
</property>
- <property name="buddy">
- <cstring>permGenSpinBox</cstring>
+ <property name="suffix">
+ <string notr="true"> MiB</string>
+ </property>
+ <property name="minimum">
+ <number>128</number>
+ </property>
+ <property name="maximum">
+ <number>1048576</number>
+ </property>
+ <property name="singleStep">
+ <number>128</number>
+ </property>
+ <property name="value">
+ <number>1024</number>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="2" column="2">
<widget class="QSpinBox" name="permGenSpinBox">
<property name="toolTip">
<string>The amount of memory available to store loaded Java classes.</string>
@@ -141,6 +141,16 @@
</property>
</widget>
</item>
+ <item row="1" column="3">
+ <widget class="QLabel" name="labelMaxMemIcon">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="buddy">
+ <cstring>maxMemSpinBox</cstring>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp
index b6c873cc..5c919573 100644
--- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp
+++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp
@@ -14,8 +14,6 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared
{
ui->setupUi(this);
- ExternalResourcesPage::runningStateChanged(m_instance && m_instance->isRunning());
-
ui->actionsToolbar->insertSpacer(ui->actionViewConfigs);
m_filterModel = model->createFilterProxyModel(this);
@@ -45,7 +43,6 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared
auto selection_model = ui->treeView->selectionModel();
connect(selection_model, &QItemSelectionModel::currentChanged, this, &ExternalResourcesPage::current);
connect(ui->filterEdit, &QLineEdit::textChanged, this, &ExternalResourcesPage::filterTextChanged);
- connect(m_instance, &BaseInstance::runningStatusChanged, this, &ExternalResourcesPage::runningStateChanged);
}
ExternalResourcesPage::~ExternalResourcesPage()
@@ -97,14 +94,6 @@ void ExternalResourcesPage::filterTextChanged(const QString& newContents)
m_filterModel->setFilterRegularExpression(m_viewFilter);
}
-void ExternalResourcesPage::runningStateChanged(bool running)
-{
- if (m_controlsEnabled == !running)
- return;
-
- m_controlsEnabled = !running;
-}
-
bool ExternalResourcesPage::shouldDisplay() const
{
return true;
diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.h b/launcher/ui/pages/instance/ExternalResourcesPage.h
index 8e352cef..11058bf6 100644
--- a/launcher/ui/pages/instance/ExternalResourcesPage.h
+++ b/launcher/ui/pages/instance/ExternalResourcesPage.h
@@ -47,7 +47,6 @@ class ExternalResourcesPage : public QMainWindow, public BasePage {
protected slots:
void itemActivated(const QModelIndex& index);
void filterTextChanged(const QString& newContents);
- virtual void runningStateChanged(bool running);
virtual void addItem();
virtual void removeItem();
diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp
index 5da7f19f..af2ba7c8 100644
--- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp
+++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp
@@ -59,12 +59,12 @@ InstanceSettingsPage::InstanceSettingsPage(BaseInstance *inst, QWidget *parent)
{
m_settings = inst->settings();
ui->setupUi(this);
- auto sysMB = Sys::getSystemRam() / Sys::mebibyte;
- ui->maxMemSpinBox->setMaximum(sysMB);
+
connect(ui->openGlobalJavaSettingsButton, &QCommandLinkButton::clicked, this, &InstanceSettingsPage::globalSettingsButtonClicked);
connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::applySettings);
connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings);
loadSettings();
+ updateThresholds();
}
bool InstanceSettingsPage::shouldDisplay() const
@@ -437,6 +437,11 @@ void InstanceSettingsPage::on_javaTestBtn_clicked()
checker->run();
}
+void InstanceSettingsPage::on_maxMemSpinBox_valueChanged(int i)
+{
+ updateThresholds();
+}
+
void InstanceSettingsPage::checkerFinished()
{
checker.reset();
@@ -447,3 +452,29 @@ void InstanceSettingsPage::retranslate()
ui->retranslateUi(this);
ui->customCommands->retranslate(); // TODO: why is this seperate from the others?
}
+
+void InstanceSettingsPage::updateThresholds()
+{
+ auto sysMiB = Sys::getSystemRam() / Sys::mebibyte;
+ unsigned int maxMem = ui->maxMemSpinBox->value();
+
+ QString iconName;
+
+ if (maxMem >= sysMiB) {
+ iconName = "status-bad";
+ ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity."));
+ } else if (maxMem > (sysMiB * 0.9)) {
+ iconName = "status-yellow";
+ ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity."));
+ } else {
+ iconName = "status-good";
+ ui->labelMaxMemIcon->setToolTip("");
+ }
+
+ {
+ auto height = ui->labelMaxMemIcon->fontInfo().pixelSize();
+ QIcon icon = APPLICATION->getThemedIcon(iconName);
+ QPixmap pix = icon.pixmap(height, height);
+ ui->labelMaxMemIcon->setPixmap(pix);
+ }
+}
diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h
index 97d1296f..7450188d 100644
--- a/launcher/ui/pages/instance/InstanceSettingsPage.h
+++ b/launcher/ui/pages/instance/InstanceSettingsPage.h
@@ -77,10 +77,13 @@ public:
virtual bool shouldDisplay() const override;
void retranslate() override;
+ void updateThresholds();
+
private slots:
void on_javaDetectBtn_clicked();
void on_javaTestBtn_clicked();
void on_javaBrowseBtn_clicked();
+ void on_maxMemSpinBox_valueChanged(int i);
void applySettings();
void loadSettings();
diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui
index 8b3c3370..b064367d 100644
--- a/launcher/ui/pages/instance/InstanceSettingsPage.ui
+++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui
@@ -112,7 +112,14 @@
<property name="checked">
<bool>false</bool>
</property>
- <layout class="QGridLayout" name="gridLayout_2">
+ <layout class="QGridLayout" name="gridLayout_2" columnstretch="1,0,0,0">
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelPermGen">
+ <property name="text">
+ <string notr="true">PermGen:</string>
+ </property>
+ </widget>
+ </item>
<item row="0" column="0">
<widget class="QLabel" name="labelMinMem">
<property name="text">
@@ -120,10 +127,24 @@
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QSpinBox" name="maxMemSpinBox">
+ <item row="1" column="0">
+ <widget class="QLabel" name="labelMaxMem">
+ <property name="text">
+ <string>Maximum memory allocation:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="3">
+ <widget class="QLabel" name="labelPermgenNote">
+ <property name="text">
+ <string>Note: Permgen is set automatically by Java 8 and later</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QSpinBox" name="minMemSpinBox">
<property name="toolTip">
- <string>The maximum amount of memory Minecraft is allowed to use.</string>
+ <string>The amount of memory Minecraft is started with.</string>
</property>
<property name="suffix">
<string notr="true"> MiB</string>
@@ -132,20 +153,20 @@
<number>128</number>
</property>
<property name="maximum">
- <number>65536</number>
+ <number>1048576</number>
</property>
<property name="singleStep">
<number>128</number>
</property>
<property name="value">
- <number>1024</number>
+ <number>256</number>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="minMemSpinBox">
+ <item row="1" column="2">
+ <widget class="QSpinBox" name="maxMemSpinBox">
<property name="toolTip">
- <string>The amount of memory Minecraft is started with.</string>
+ <string>The maximum amount of memory Minecraft is allowed to use.</string>
</property>
<property name="suffix">
<string notr="true"> MiB</string>
@@ -154,17 +175,17 @@
<number>128</number>
</property>
<property name="maximum">
- <number>65536</number>
+ <number>1048576</number>
</property>
<property name="singleStep">
<number>128</number>
</property>
<property name="value">
- <number>256</number>
+ <number>1024</number>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="2" column="2">
<widget class="QSpinBox" name="permGenSpinBox">
<property name="toolTip">
<string>The amount of memory available to store loaded Java classes.</string>
@@ -186,24 +207,16 @@
</property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QLabel" name="labelPermGen">
+ <item row="1" column="3">
+ <widget class="QLabel" name="labelMaxMemIcon">
<property name="text">
- <string notr="true">PermGen:</string>
+ <string notr="true"/>
</property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="labelMaxMem">
- <property name="text">
- <string>Maximum memory allocation:</string>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
</property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2">
- <widget class="QLabel" name="labelPermgenNote">
- <property name="text">
- <string>Note: Permgen is set automatically by Java 8 and later</string>
+ <property name="buddy">
+ <cstring>maxMemSpinBox</cstring>
</property>
</widget>
</item>
diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp
index f0106066..0a2e6155 100644
--- a/launcher/ui/pages/instance/ModFolderPage.cpp
+++ b/launcher/ui/pages/instance/ModFolderPage.cpp
@@ -108,13 +108,13 @@ ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr<ModFolderModel>
disconnect(mods.get(), &ModFolderModel::updateFinished, this, 0);
});
+ connect(m_instance, &BaseInstance::runningStatusChanged, this, &ModFolderPage::runningStateChanged);
ModFolderPage::runningStateChanged(m_instance && m_instance->isRunning());
}
}
void ModFolderPage::runningStateChanged(bool running)
{
- ExternalResourcesPage::runningStateChanged(running);
ui->actionDownloadItem->setEnabled(!running);
ui->actionUpdateItem->setEnabled(!running);
ui->actionAddItem->setEnabled(!running);
diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h
index c9a55bde..f20adf34 100644
--- a/launcher/ui/pages/instance/ModFolderPage.h
+++ b/launcher/ui/pages/instance/ModFolderPage.h
@@ -53,12 +53,12 @@ class ModFolderPage : public ExternalResourcesPage {
virtual QString helpPage() const override { return "Loader-mods"; }
virtual bool shouldDisplay() const override;
- void runningStateChanged(bool running) override;
public slots:
bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override;
private slots:
+ void runningStateChanged(bool running);
void removeItem() override;
void installMods();
diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp
index a021c633..7f98cba2 100644
--- a/launcher/ui/pages/instance/VersionPage.cpp
+++ b/launcher/ui/pages/instance/VersionPage.cpp
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ * Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -270,6 +271,7 @@ void VersionPage::updateButtons(int row)
ui->actionInstall_mods->setEnabled(controlsEnabled);
ui->actionReplace_Minecraft_jar->setEnabled(controlsEnabled);
ui->actionAdd_to_Minecraft_jar->setEnabled(controlsEnabled);
+ ui->actionAdd_Agents->setEnabled(controlsEnabled);
}
bool VersionPage::reloadPackProfile()
@@ -342,6 +344,18 @@ void VersionPage::on_actionReplace_Minecraft_jar_triggered()
updateButtons();
}
+
+void VersionPage::on_actionAdd_Agents_triggered()
+{
+ QStringList list = GuiUtil::BrowseForFiles("agent", tr("Select agents"), tr("Java agents (*.jar)"),
+ APPLICATION->settings()->get("CentralModsDir").toString(), this->parentWidget());
+
+ if (!list.isEmpty())
+ m_profile->installAgents(list);
+
+ updateButtons();
+}
+
void VersionPage::on_actionMove_up_triggered()
{
try
diff --git a/launcher/ui/pages/instance/VersionPage.h b/launcher/ui/pages/instance/VersionPage.h
index 979311fc..23d2a1b3 100644
--- a/launcher/ui/pages/instance/VersionPage.h
+++ b/launcher/ui/pages/instance/VersionPage.h
@@ -1,7 +1,8 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
+ * Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -82,6 +83,7 @@ private slots:
void on_actionMove_down_triggered();
void on_actionAdd_to_Minecraft_jar_triggered();
void on_actionReplace_Minecraft_jar_triggered();
+ void on_actionAdd_Agents_triggered();
void on_actionRevert_triggered();
void on_actionEdit_triggered();
void on_actionInstall_mods_triggered();
diff --git a/launcher/ui/pages/instance/VersionPage.ui b/launcher/ui/pages/instance/VersionPage.ui
index 14b7cd9f..74b9568a 100644
--- a/launcher/ui/pages/instance/VersionPage.ui
+++ b/launcher/ui/pages/instance/VersionPage.ui
@@ -109,6 +109,7 @@
<addaction name="separator"/>
<addaction name="actionAdd_to_Minecraft_jar"/>
<addaction name="actionReplace_Minecraft_jar"/>
+ <addaction name="actionAdd_Agents"/>
<addaction name="actionAdd_Empty"/>
<addaction name="separator"/>
<addaction name="actionMinecraftFolder"/>
@@ -226,6 +227,14 @@
<string>Replace Minecraft.jar</string>
</property>
</action>
+ <action name="actionAdd_Agents">
+ <property name="text">
+ <string>Add Agents</string>
+ </property>
+ <property name="toolTip">
+ <string>Add Java agents.</string>
+ </property>
+ </action>
<action name="actionAdd_Empty">
<property name="text">
<string>Add Empty</string>
diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp
index c7c4dbbd..15994319 100644
--- a/launcher/ui/widgets/JavaSettingsWidget.cpp
+++ b/launcher/ui/widgets/JavaSettingsWidget.cpp
@@ -71,6 +71,7 @@ void JavaSettingsWidget::setupUi()
m_memoryGroupBox->setObjectName(QStringLiteral("memoryGroupBox"));
m_gridLayout_2 = new QGridLayout(m_memoryGroupBox);
m_gridLayout_2->setObjectName(QStringLiteral("gridLayout_2"));
+ m_gridLayout_2->setColumnStretch(0, 1);
m_labelMinMem = new QLabel(m_memoryGroupBox);
m_labelMinMem->setObjectName(QStringLiteral("labelMinMem"));
@@ -80,7 +81,7 @@ void JavaSettingsWidget::setupUi()
m_minMemSpinBox->setObjectName(QStringLiteral("minMemSpinBox"));
m_minMemSpinBox->setSuffix(QStringLiteral(" MiB"));
m_minMemSpinBox->setMinimum(128);
- m_minMemSpinBox->setMaximum(m_availableMemory);
+ m_minMemSpinBox->setMaximum(1048576);
m_minMemSpinBox->setSingleStep(128);
m_labelMinMem->setBuddy(m_minMemSpinBox);
m_gridLayout_2->addWidget(m_minMemSpinBox, 0, 1, 1, 1);
@@ -93,11 +94,15 @@ void JavaSettingsWidget::setupUi()
m_maxMemSpinBox->setObjectName(QStringLiteral("maxMemSpinBox"));
m_maxMemSpinBox->setSuffix(QStringLiteral(" MiB"));
m_maxMemSpinBox->setMinimum(128);
- m_maxMemSpinBox->setMaximum(m_availableMemory);
+ m_maxMemSpinBox->setMaximum(1048576);
m_maxMemSpinBox->setSingleStep(128);
m_labelMaxMem->setBuddy(m_maxMemSpinBox);
m_gridLayout_2->addWidget(m_maxMemSpinBox, 1, 1, 1, 1);
+ m_labelMaxMemIcon = new QLabel(m_memoryGroupBox);
+ m_labelMaxMemIcon->setObjectName(QStringLiteral("labelMaxMemIcon"));
+ m_gridLayout_2->addWidget(m_labelMaxMemIcon, 1, 2, 1, 1);
+
m_labelPermGen = new QLabel(m_memoryGroupBox);
m_labelPermGen->setObjectName(QStringLiteral("labelPermGen"));
m_labelPermGen->setText(QStringLiteral("PermGen:"));
@@ -108,7 +113,7 @@ void JavaSettingsWidget::setupUi()
m_permGenSpinBox->setObjectName(QStringLiteral("permGenSpinBox"));
m_permGenSpinBox->setSuffix(QStringLiteral(" MiB"));
m_permGenSpinBox->setMinimum(64);
- m_permGenSpinBox->setMaximum(m_availableMemory);
+ m_permGenSpinBox->setMaximum(1048576);
m_permGenSpinBox->setSingleStep(8);
m_gridLayout_2->addWidget(m_permGenSpinBox, 2, 1, 1, 1);
m_permGenSpinBox->setVisible(false);
@@ -130,6 +135,7 @@ void JavaSettingsWidget::initialize()
m_minMemSpinBox->setValue(observedMinMemory);
m_maxMemSpinBox->setValue(observedMaxMemory);
m_permGenSpinBox->setValue(observedPermGenMemory);
+ updateThresholds();
}
void JavaSettingsWidget::refresh()
@@ -210,9 +216,9 @@ int JavaSettingsWidget::permGenSize() const
void JavaSettingsWidget::memoryValueChanged(int)
{
bool actuallyChanged = false;
- int min = m_minMemSpinBox->value();
- int max = m_maxMemSpinBox->value();
- int permgen = m_permGenSpinBox->value();
+ unsigned int min = m_minMemSpinBox->value();
+ unsigned int max = m_maxMemSpinBox->value();
+ unsigned int permgen = m_permGenSpinBox->value();
QObject *obj = sender();
if (obj == m_minMemSpinBox && min != observedMinMemory)
{
@@ -242,6 +248,7 @@ void JavaSettingsWidget::memoryValueChanged(int)
if(actuallyChanged)
{
checkJavaPathOnEdit(m_javaPathTextBox->text());
+ updateThresholds();
}
}
@@ -435,3 +442,26 @@ void JavaSettingsWidget::retranslate()
m_permGenSpinBox->setToolTip(tr("The amount of memory available to store loaded Java classes."));
m_javaBrowseBtn->setText(tr("Browse"));
}
+
+void JavaSettingsWidget::updateThresholds()
+{
+ QString iconName;
+
+ if (observedMaxMemory >= m_availableMemory) {
+ iconName = "status-bad";
+ m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity."));
+ } else if (observedMaxMemory > (m_availableMemory * 0.9)) {
+ iconName = "status-yellow";
+ m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity."));
+ } else {
+ iconName = "status-good";
+ m_labelMaxMemIcon->setToolTip("");
+ }
+
+ {
+ auto height = m_labelMaxMemIcon->fontInfo().pixelSize();
+ QIcon icon = APPLICATION->getThemedIcon(iconName);
+ QPixmap pix = icon.pixmap(height, height);
+ m_labelMaxMemIcon->setPixmap(pix);
+ }
+}
diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h
index 5344e2cd..e4b7c712 100644
--- a/launcher/ui/widgets/JavaSettingsWidget.h
+++ b/launcher/ui/widgets/JavaSettingsWidget.h
@@ -56,6 +56,8 @@ public:
int maxHeapSize() const;
QString javaPath() const;
+ void updateThresholds();
+
protected slots:
void memoryValueChanged(int);
@@ -85,6 +87,7 @@ private: /* data */
QSpinBox *m_maxMemSpinBox = nullptr;
QLabel *m_labelMinMem = nullptr;
QLabel *m_labelMaxMem = nullptr;
+ QLabel *m_labelMaxMemIcon = nullptr;
QSpinBox *m_minMemSpinBox = nullptr;
QLabel *m_labelPermGen = nullptr;
QSpinBox *m_permGenSpinBox = nullptr;
@@ -92,9 +95,9 @@ private: /* data */
QIcon yellowIcon;
QIcon badIcon;
- int observedMinMemory = 0;
- int observedMaxMemory = 0;
- int observedPermGenMemory = 0;
+ unsigned int observedMinMemory = 0;
+ unsigned int observedMaxMemory = 0;
+ unsigned int observedPermGenMemory = 0;
QString queuedCheck;
uint64_t m_availableMemory = 0ull;
shared_qobject_ptr<JavaChecker> m_checker;
diff --git a/nix/default.nix b/nix/default.nix
index c7fc7576..6050fd37 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -1,100 +1,99 @@
-{ stdenv
-, lib
-, fetchFromGitHub
+{ lib
+, stdenv
, cmake
-, ninja
, jdk8
, jdk
-, ghc_filesystem
, zlib
, file
, wrapQtAppsHook
, xorg
, libpulseaudio
, qtbase
-, quazip
+, qtsvg
+, qtwayland
, libGL
-, msaClientID ? ""
-, extraJDKs ? [ ]
+, quazip
+, glfw
+, openal
, extra-cmake-modules
+, ghc_filesystem
+, msaClientID ? ""
+, jdks ? [ jdk jdk8 ]
# flake
, self
, version
, libnbtplusplus
, tomlplusplus
-, enableLTO ? false
}:
-let
- # Libraries required to run Minecraft
- libpath = with xorg; lib.makeLibraryPath [
- libX11
- libXext
- libXcursor
- libXrandr
- libXxf86vm
- libpulseaudio
- libGL
- ];
-
- # This variable will be passed to Minecraft by Prism Launcher
- gameLibraryPath = libpath + ":/run/opengl-driver/lib";
-
- javaPaths = lib.makeSearchPath "bin/java" ([ jdk jdk8 ] ++ extraJDKs);
-in
-
stdenv.mkDerivation rec {
pname = "prismlauncher";
inherit version;
src = lib.cleanSource self;
- nativeBuildInputs = [ cmake extra-cmake-modules ninja jdk ghc_filesystem file wrapQtAppsHook ];
- buildInputs = [ qtbase quazip zlib ];
+ nativeBuildInputs = [ extra-cmake-modules cmake file jdk wrapQtAppsHook ];
+ buildInputs = [
+ qtbase
+ qtsvg
+ zlib
+ quazip
+ ghc_filesystem
+ ] ++ lib.optional (lib.versionAtLeast qtbase.version "6") qtwayland;
+ cmakeFlags = lib.optionals (msaClientID != "") [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ]
+ ++ lib.optionals (lib.versionAtLeast qtbase.version "6") [ "-DLauncher_QT_VERSION_MAJOR=6" ];
dontWrapQtApps = true;
postUnpack = ''
- # Copy libnbtplusplus
rm -rf source/libraries/libnbtplusplus
mkdir source/libraries/libnbtplusplus
ln -s ${libnbtplusplus}/* source/libraries/libnbtplusplus
chmod -R +r+w source/libraries/libnbtplusplus
- # Copy tomlplusplus
+ chown -R $USER: source/libraries/libnbtplusplus
rm -rf source/libraries/tomlplusplus
mkdir source/libraries/tomlplusplus
ln -s ${tomlplusplus}/* source/libraries/tomlplusplus
chmod -R +r+w source/libraries/tomlplusplus
+ chown -R $USER: source/libraries/tomlplusplus
'';
- cmakeFlags = [
- "-GNinja"
- "-DLauncher_QT_VERSION_MAJOR=${lib.versions.major qtbase.version}"
- ] ++ lib.optionals enableLTO [ "-DENABLE_LTO=on" ]
- ++ lib.optionals (msaClientID != "") [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ];
+ postInstall =
+ let
+ libpath = with xorg;
+ lib.makeLibraryPath [
+ libX11
+ libXext
+ libXcursor
+ libXrandr
+ libXxf86vm
+ libpulseaudio
+ libGL
+ glfw
+ openal
+ stdenv.cc.cc.lib
+ ];
+ in
+ ''
+ # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
+ wrapQtApp $out/bin/prismlauncher \
+ --set LD_LIBRARY_PATH /run/opengl-driver/lib:${libpath} \
+ --prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks} \
+ --prefix PATH : ${lib.makeBinPath [xorg.xrandr]}
+ '';
- # we have to check if the system is NixOS before adding stdenv.cc.cc.lib (#923)
- postInstall = ''
- # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
- wrapQtApp $out/bin/prismlauncher \
- --run '[ -f /etc/NIXOS ] && export LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH"' \
- --prefix LD_LIBRARY_PATH : ${gameLibraryPath} \
- --prefix PRISMLAUNCHER_JAVA_PATHS : ${javaPaths} \
- --prefix PATH : ${lib.makeBinPath [ xorg.xrandr ]}
- '';
meta = with lib; {
homepage = "https://prismlauncher.org/";
- downloadPage = "https://prismlauncher.org/download/";
- changelog = "https://github.com/PrismLauncher/PrismLauncher/releases";
description = "A free, open source launcher for Minecraft";
longDescription = ''
Allows you to have multiple, separate instances of Minecraft (each with
their own mods, texture packs, saves, etc) and helps you manage them and
their associated options with a simple interface.
'';
- platforms = platforms.unix;
+ platforms = platforms.linux;
+ changelog = "https://github.com/PrismLauncher/PrismLauncher/releases/tag/${version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [ minion3665 Scrumplex ];
};
diff --git a/program_info/instance_icons.svg b/program_info/instance_icons.svg
new file mode 100644
index 00000000..84c0ef6f
--- /dev/null
+++ b/program_info/instance_icons.svg
@@ -0,0 +1,2720 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="1024"
+ height="1024"
+ version="1.1"
+ viewBox="0 0 1024 1024"
+ id="svg168"
+ sodipodi:docname="instance_icons.svg"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+ xml:space="preserve"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
+ id="defs172"><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7052"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect7054"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath24641"><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect24643"
+ width="5"
+ height="6"
+ x="72"
+ y="12"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath37388"><rect
+ style="fill:#537a64;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37390"
+ width="20"
+ height="7"
+ x="70"
+ y="16"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath40516"><rect
+ style="opacity:1;fill:#f3db6c;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect40518"
+ width="16"
+ height="16"
+ x="200"
+ y="8"
+ ry="2" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath44346"><rect
+ style="opacity:1;fill:#f3db6c;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect44348"
+ width="16"
+ height="16"
+ x="456"
+ y="8"
+ ry="2" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath70915"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#bd44b3;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path70917"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="560"
+ sodipodi:cy="16"
+ sodipodi:r1="10.946013"
+ sodipodi:r2="12.727922"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.1780972"
+ inkscape:rounded="0.29"
+ inkscape:randomized="0.014"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="matrix(0.60389168,0.3121766,-0.3121766,0.60389168,226.77688,-168.46627)" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548-5"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550-5"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath40516-7"><rect
+ style="opacity:1;fill:#f3db6c;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect40518-3"
+ width="16"
+ height="16"
+ x="200"
+ y="8"
+ ry="2" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555-6"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557-5"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515-9"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517-4"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath130950"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect130948"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath130954"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect130952"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555-6-8"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557-5-1"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6-2"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3-9"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515-9-3"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517-4-9"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath131121"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect131119"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath131125"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect131123"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555-6-8-0"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557-5-1-8"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6-2-8"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3-9-5"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515-9-3-0"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517-4-9-9"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath131331"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect131329"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath131335"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect131333"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath44346-0"><rect
+ style="opacity:1;fill:#f3db6c;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect44348-4"
+ width="16"
+ height="16"
+ x="456"
+ y="8"
+ ry="2" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548-4"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550-4"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath70915-4"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#bd44b3;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path70917-7"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="560"
+ sodipodi:cy="16"
+ sodipodi:r1="10.946013"
+ sodipodi:r2="12.727922"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.1780972"
+ inkscape:rounded="0.29"
+ inkscape:randomized="0.014"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="matrix(0.60389168,0.3121766,-0.3121766,0.60389168,226.77688,-168.46627)" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548-5-6"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550-5-3"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555-6-8-0-1"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557-5-1-8-7"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6-2-8-5"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3-9-5-9"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515-9-3-0-6"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517-4-9-9-2"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath166658"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect166656"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath166662"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect166660"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath70915-4-5"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#bd44b3;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path70917-7-9"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="560"
+ sodipodi:cy="16"
+ sodipodi:r1="10.946013"
+ sodipodi:r2="12.727922"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.1780972"
+ inkscape:rounded="0.29"
+ inkscape:randomized="0.014"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="matrix(0.60389168,0.3121766,-0.3121766,0.60389168,226.77688,-168.46627)" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548-5-6-7"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550-5-3-5"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7052-9"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect7054-9"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath66059"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect66057"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath66079"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect66077"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555-6-8-0-1-3"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557-5-1-8-7-7"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6-2-8-5-5"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3-9-5-9-9"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515-9-3-0-6-2"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517-4-9-9-2-2"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath66197"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect66195"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath66201"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect66199"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548-4-6-8-7"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550-4-2-7-3"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath56548-5-6-7-5-6-8-6"><rect
+ style="fill:#bd8e74;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56550-5-3-5-4-1-9-1"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="3" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath70915-4-5-0-2-7-5-3"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#bd44b3;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path70917-7-9-2-9-4-0-3"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="560"
+ sodipodi:cy="16"
+ sodipodi:r1="10.946013"
+ sodipodi:r2="12.727922"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.1780972"
+ inkscape:rounded="0.29"
+ inkscape:randomized="0.014"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="matrix(0.60389168,0.3121766,-0.3121766,0.60389168,226.77688,-168.46627)" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient41693"
+ id="linearGradient2973"
+ gradientUnits="userSpaceOnUse"
+ x1="153"
+ y1="25"
+ x2="135"
+ y2="7" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient41693"><stop
+ style="stop-color:#64d5df;stop-opacity:1;"
+ offset="0"
+ id="stop41689" /><stop
+ style="stop-color:#17c2d6;stop-opacity:1;"
+ offset="0.35665122"
+ id="stop41711" /><stop
+ style="stop-color:#89edf6;stop-opacity:1;"
+ offset="0.71356344"
+ id="stop41709" /><stop
+ style="stop-color:#2bc4d4;stop-opacity:1;"
+ offset="1"
+ id="stop41691" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3000"
+ id="radialGradient3002-5"
+ cx="272"
+ cy="16"
+ fx="272"
+ fy="16"
+ r="12"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient3000"><stop
+ style="stop-color:#62b397;stop-opacity:1;"
+ offset="0.47770822"
+ id="stop2996" /><stop
+ style="stop-color:#3a7a81;stop-opacity:1;"
+ offset="1"
+ id="stop2998" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3405"
+ id="radialGradient3407-4"
+ cx="272"
+ cy="16"
+ fx="272"
+ fy="16"
+ r="5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-54.4,-3.2)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient3405"><stop
+ style="stop-color:#27414e;stop-opacity:1;"
+ offset="0.16041158"
+ id="stop3401" /><stop
+ style="stop-color:#27414e;stop-opacity:0.74901961;"
+ offset="0.50162286"
+ id="stop39443" /><stop
+ style="stop-color:#27414e;stop-opacity:0;"
+ offset="1"
+ id="stop3403" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3853"
+ id="radialGradient3855-4"
+ cx="272"
+ cy="16"
+ fx="272"
+ fy="16"
+ r="5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.2,0,0,2,-326.4,-16)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient3853"><stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0.39989081"
+ id="stop3851" /><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3849" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3108"
+ id="linearGradient3110"
+ x1="70.852509"
+ y1="141.75883"
+ x2="70.852509"
+ y2="0.053809531"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient3108"><stop
+ style="stop-color:#1bd96a;stop-opacity:1;"
+ offset="0"
+ id="stop3104" /><stop
+ style="stop-color:#1bd9a1;stop-opacity:1;"
+ offset="1"
+ id="stop3106" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1468"
+ id="linearGradient1470"
+ x1="300"
+ y1="26"
+ x2="300"
+ y2="10"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1468"><stop
+ style="stop-color:#d63954;stop-opacity:1;"
+ offset="0"
+ id="stop1464" /><stop
+ style="stop-color:#e6812b;stop-opacity:1;"
+ offset="1"
+ id="stop1466" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6068"
+ id="linearGradient6070"
+ x1="656"
+ y1="27"
+ x2="656"
+ y2="5"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient6068"><stop
+ style="stop-color:#cdcdcd;stop-opacity:1;"
+ offset="0"
+ id="stop6064" /><stop
+ style="stop-color:#eeeeee;stop-opacity:1;"
+ offset="1"
+ id="stop6066" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7624"
+ id="linearGradient7626"
+ x1="658"
+ y1="20"
+ x2="658"
+ y2="24"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient7624"><stop
+ style="stop-color:#8e8e86;stop-opacity:1;"
+ offset="0"
+ id="stop7620" /><stop
+ style="stop-color:#8e8e86;stop-opacity:0;"
+ offset="1"
+ id="stop7622" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7155"
+ id="linearGradient7165"
+ x1="656"
+ y1="25"
+ x2="656"
+ y2="22"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient7155"><stop
+ style="stop-color:#3e4447;stop-opacity:1;"
+ offset="0"
+ id="stop7151" /><stop
+ style="stop-color:#2e3134;stop-opacity:1;"
+ offset="1"
+ id="stop7153" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6078"
+ id="radialGradient6080"
+ cx="662"
+ cy="18"
+ fx="662"
+ fy="18"
+ r="3"
+ gradientTransform="matrix(0.99999794,-1.7103091e-6,1.7879388e-6,1.0000015,0.0013367,0.00110992)"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient6078"><stop
+ style="stop-color:#006868;stop-opacity:1;"
+ offset="0"
+ id="stop6074" /><stop
+ style="stop-color:#3e4447;stop-opacity:1;"
+ offset="1"
+ id="stop6076" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7155"
+ id="linearGradient7157"
+ x1="651"
+ y1="20"
+ x2="651"
+ y2="16"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient36859"
+ id="linearGradient11859-1"
+ x1="111"
+ y1="25"
+ x2="111"
+ y2="7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(608)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient36859"><stop
+ style="stop-color:#729657;stop-opacity:1;"
+ offset="0"
+ id="stop36855" /><stop
+ style="stop-color:#a5bf6e;stop-opacity:1;"
+ offset="1"
+ id="stop36857" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient36865"
+ id="radialGradient10457-1"
+ cx="112"
+ cy="17"
+ fx="112"
+ fy="17"
+ r="6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1666668,-6.8921104e-7,5.6666669e-7,1.1666667,589.33332,-2.8332561)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient36865"><stop
+ style="stop-color:#63271f;stop-opacity:1;"
+ offset="0"
+ id="stop36861" /><stop
+ style="stop-color:#3d1212;stop-opacity:1;"
+ offset="1"
+ id="stop36863" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11855"
+ id="linearGradient11859"
+ x1="111"
+ y1="25"
+ x2="111"
+ y2="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient11855"><stop
+ style="stop-color:#57965f;stop-opacity:1;"
+ offset="0"
+ id="stop11851" /><stop
+ style="stop-color:#78bf6e;stop-opacity:1;"
+ offset="1"
+ id="stop11853" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10455"
+ id="radialGradient10457"
+ cx="112"
+ cy="17"
+ fx="112"
+ fy="17"
+ r="6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1666668,-6.8921104e-7,5.6666669e-7,1.1666667,-18.666684,-2.8332561)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient10455"><stop
+ style="stop-color:#1b2719;stop-opacity:1;"
+ offset="0"
+ id="stop10451" /><stop
+ style="stop-color:#0f150e;stop-opacity:1;"
+ offset="1"
+ id="stop10453" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5295"
+ id="linearGradient5297"
+ x1="239"
+ y1="5"
+ x2="239"
+ y2="27"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient5295"><stop
+ style="stop-color:#25262d;stop-opacity:1;"
+ offset="0"
+ id="stop5291" /><stop
+ style="stop-color:#141519;stop-opacity:1;"
+ offset="1"
+ id="stop5293" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5303"
+ id="linearGradient5316"
+ x1="243"
+ y1="17"
+ x2="243"
+ y2="20"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient5303"><stop
+ style="stop-color:#bd44b3;stop-opacity:1;"
+ offset="0"
+ id="stop5299" /><stop
+ style="stop-color:#d84ecd;stop-opacity:1;"
+ offset="1"
+ id="stop5301" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5303"
+ id="linearGradient5305"
+ x1="236"
+ y1="17"
+ x2="236"
+ y2="20"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient84376"
+ id="linearGradient84368"
+ x1="48"
+ y1="26"
+ x2="48"
+ y2="6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(128,32)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient84376"><stop
+ style="stop-color:#a63649;stop-opacity:1;"
+ offset="0"
+ id="stop84370" /><stop
+ style="stop-color:#df6277;stop-opacity:1;"
+ offset="1"
+ id="stop84381" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient288023"
+ id="linearGradient85182"
+ x1="48"
+ y1="6"
+ x2="48"
+ y2="26"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(128,32)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient288023"><stop
+ style="stop-color:#c1c1c1;stop-opacity:1;"
+ offset="0"
+ id="stop288019" /><stop
+ style="stop-color:#dfdfdf;stop-opacity:1;"
+ offset="1"
+ id="stop288021" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient25803"
+ id="linearGradient25805"
+ x1="785"
+ y1="26"
+ x2="785"
+ y2="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient25803"><stop
+ style="stop-color:#8e8e86;stop-opacity:1;"
+ offset="0"
+ id="stop25799" /><stop
+ style="stop-color:#a2a29b;stop-opacity:1;"
+ offset="1"
+ id="stop25801" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient27992"
+ id="linearGradient17901"
+ x1="496"
+ y1="26"
+ x2="496"
+ y2="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient27992"><stop
+ style="stop-color:#c5c7cf;stop-opacity:1;"
+ offset="0"
+ id="stop27990" /><stop
+ style="stop-color:#d8d9e0;stop-opacity:1;"
+ offset="1"
+ id="stop27988" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient56358"
+ id="linearGradient18032"
+ gradientUnits="userSpaceOnUse"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23"
+ gradientTransform="translate(0,-4)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient56358"><stop
+ style="stop-color:#ededed;stop-opacity:1;"
+ offset="0"
+ id="stop56354" /><stop
+ style="stop-color:#f4f4f4;stop-opacity:1;"
+ offset="1"
+ id="stop56356" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient56358"
+ id="linearGradient18124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-8)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18539"
+ id="linearGradient18530"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-6)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient18539"><stop
+ style="stop-color:#27414e;stop-opacity:0;"
+ offset="0"
+ id="stop18537" /><stop
+ style="stop-color:#27414e;stop-opacity:0.74901961;"
+ offset="0.49837714"
+ id="stop18535" /><stop
+ style="stop-color:#27414e;stop-opacity:1;"
+ offset="0.83958842"
+ id="stop18533" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18539"
+ id="linearGradient18590"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-10)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18539"
+ id="linearGradient18615"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-14)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18539"
+ id="linearGradient18640"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-2)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient56358"
+ id="linearGradient18124-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-12)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient56358"
+ id="linearGradient18124-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-16)"
+ x1="503"
+ y1="25"
+ x2="503"
+ y2="23" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient48524"
+ id="linearGradient48512"
+ gradientUnits="userSpaceOnUse"
+ x1="153"
+ y1="25"
+ x2="135"
+ y2="7"
+ gradientTransform="translate(256)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient48524"><stop
+ style="stop-color:#dfcd64;stop-opacity:1;"
+ offset="0"
+ id="stop48516" /><stop
+ style="stop-color:#d6b917;stop-opacity:1;"
+ offset="0.11879402"
+ id="stop48518" /><stop
+ style="stop-color:#f6e689;stop-opacity:1;"
+ offset="0.71356344"
+ id="stop48520" /><stop
+ style="stop-color:#d4bb2b;stop-opacity:1;"
+ offset="1"
+ id="stop48522" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18899"
+ id="linearGradient18901"
+ x1="805"
+ y1="16"
+ x2="812"
+ y2="16"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient18899"><stop
+ style="stop-color:#bf454c;stop-opacity:1;"
+ offset="0"
+ id="stop18895" /><stop
+ style="stop-color:#df6277;stop-opacity:1;"
+ offset="0.5"
+ id="stop18972" /><stop
+ style="stop-color:#bf454c;stop-opacity:1;"
+ offset="1"
+ id="stop18897" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18899"
+ id="linearGradient19011"
+ x1="812"
+ y1="16"
+ x2="820"
+ y2="16"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18899"
+ id="linearGradient19015"
+ gradientUnits="userSpaceOnUse"
+ x1="805"
+ y1="16"
+ x2="812"
+ y2="16"
+ gradientTransform="matrix(-1,0,0,1,1632,0)" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19917"
+ id="linearGradient22848"
+ gradientUnits="userSpaceOnUse"
+ x1="816"
+ y1="27"
+ x2="816"
+ y2="20" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient19917"><stop
+ style="stop-color:#a02722;stop-opacity:1;"
+ offset="0"
+ id="stop19913" /><stop
+ style="stop-color:#a02722;stop-opacity:0;"
+ offset="1"
+ id="stop19915" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19935"
+ id="radialGradient19929"
+ cx="816"
+ cy="14"
+ fx="816"
+ fy="14"
+ r="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1570249,0,0,1,-128.13223,0)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient19935"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop19933" /><stop
+ style="stop-color:#f6cff4;stop-opacity:1;"
+ offset="1"
+ id="stop19931" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient53203"
+ id="linearGradient39079"
+ gradientUnits="userSpaceOnUse"
+ x1="785"
+ y1="26"
+ x2="785"
+ y2="6" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient53203"><stop
+ style="stop-color:#77563b;stop-opacity:1;"
+ offset="0"
+ id="stop53199" /><stop
+ style="stop-color:#86674f;stop-opacity:1;"
+ offset="1"
+ id="stop53201" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19391"
+ id="linearGradient19373"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient19391"><stop
+ style="stop-color:#cfaf6b;stop-opacity:1;"
+ offset="0"
+ id="stop19387" /><stop
+ style="stop-color:#ddc694;stop-opacity:1;"
+ offset="1"
+ id="stop19389" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19391"
+ id="linearGradient19435"
+ gradientUnits="userSpaceOnUse"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientTransform="translate(0,-5)" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19391"
+ id="linearGradient19458"
+ gradientUnits="userSpaceOnUse"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientTransform="translate(0,-10)" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19391"
+ id="linearGradient19481"
+ gradientUnits="userSpaceOnUse"
+ x1="690"
+ y1="22"
+ x2="690"
+ y2="21"
+ gradientTransform="translate(0,-15)" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient53203"
+ id="linearGradient56913"
+ gradientUnits="userSpaceOnUse"
+ x1="785"
+ y1="26"
+ x2="785"
+ y2="6"
+ gradientTransform="translate(-352)" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient56992"
+ id="linearGradient56984"
+ x1="433"
+ y1="11"
+ x2="433"
+ y2="20"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient56992"><stop
+ style="stop-color:#4d3f33;stop-opacity:0.5;"
+ offset="0"
+ id="stop56986" /><stop
+ style="stop-color:#4d3f33;stop-opacity:0;"
+ offset="1"
+ id="stop56990" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient29505"
+ id="linearGradient29507"
+ x1="428"
+ y1="14"
+ x2="428"
+ y2="4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2,2)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient29505"><stop
+ style="stop-color:#99cd61;stop-opacity:1;"
+ offset="0"
+ id="stop29501" /><stop
+ style="stop-color:#bccd61;stop-opacity:1;"
+ offset="1"
+ id="stop29503" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6068"
+ id="linearGradient39389"
+ x1="565"
+ y1="23"
+ x2="567"
+ y2="21"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient38100"
+ id="linearGradient38102"
+ x1="408.70773"
+ y1="-379.00925"
+ x2="408.70773"
+ y2="-389.8125"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient38100"><stop
+ style="stop-color:#956c4a;stop-opacity:1;"
+ offset="0"
+ id="stop38096" /><stop
+ style="stop-color:#bb7c47;stop-opacity:1;"
+ offset="1"
+ id="stop38098" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient39375"
+ id="linearGradient39377"
+ x1="401.63666"
+ y1="-379.00925"
+ x2="401.63666"
+ y2="-389.8125"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient39375"><stop
+ style="stop-color:#d15e65;stop-opacity:1;"
+ offset="0"
+ id="stop39371" /><stop
+ style="stop-color:#b2594e;stop-opacity:1;"
+ offset="1"
+ id="stop39373" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient62774"
+ id="radialGradient62776"
+ cx="624"
+ cy="15"
+ fx="624"
+ fy="15"
+ r="12"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient62774"><stop
+ style="stop-color:#f2effd;stop-opacity:1;"
+ offset="0.45171013"
+ id="stop62772" /><stop
+ style="stop-color:#d2cbf3;stop-opacity:1;"
+ offset="1"
+ id="stop62770" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient62766"
+ id="radialGradient62768"
+ cx="624"
+ cy="16"
+ fx="624"
+ fy="16"
+ r="6"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient62766"><stop
+ style="stop-color:#fafbb9;stop-opacity:1;"
+ offset="0"
+ id="stop62762" /><stop
+ style="stop-color:#fafbb9;stop-opacity:0;"
+ offset="1"
+ id="stop62764" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient12453"
+ id="linearGradient12455"
+ x1="351"
+ y1="26"
+ x2="351"
+ y2="10"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient12453"><stop
+ style="stop-color:#b11917;stop-opacity:1;"
+ offset="0"
+ id="stop12449" /><stop
+ style="stop-color:#e65014;stop-opacity:1;"
+ offset="1"
+ id="stop12451" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient12299"
+ id="linearGradient12301"
+ x1="324"
+ y1="26"
+ x2="324"
+ y2="10"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient12299"><stop
+ style="stop-color:#0787c1;stop-opacity:1;"
+ offset="0"
+ id="stop12295" /><stop
+ style="stop-color:#65adb9;stop-opacity:1;"
+ offset="1"
+ id="stop12297" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient12445"
+ id="linearGradient12447"
+ x1="334"
+ y1="26"
+ x2="334"
+ y2="10"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient12445"><stop
+ style="stop-color:#798b2f;stop-opacity:1;"
+ offset="0"
+ id="stop12441" /><stop
+ style="stop-color:#9fc41e;stop-opacity:1;"
+ offset="1"
+ id="stop12443" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient21157"
+ id="radialGradient21159"
+ cx="368"
+ cy="16"
+ fx="368"
+ fy="16"
+ r="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient21157"><stop
+ style="stop-color:#e1edf2;stop-opacity:1;"
+ offset="0"
+ id="stop21153" /><stop
+ style="stop-color:#abbdc4;stop-opacity:1;"
+ offset="0.72112602"
+ id="stop21161" /><stop
+ style="stop-color:#95acb6;stop-opacity:1;"
+ offset="1"
+ id="stop21155" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient21167"
+ id="radialGradient21309"
+ gradientUnits="userSpaceOnUse"
+ cx="400"
+ cy="16"
+ fx="400"
+ fy="16"
+ r="11"
+ gradientTransform="matrix(1.3636364,0,0,1.3636364,-177.45455,-5.8181818)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient21167"><stop
+ style="stop-color:#e5e6e9;stop-opacity:1;"
+ offset="0.13595749"
+ id="stop21163" /><stop
+ style="stop-color:#c5c7cf;stop-opacity:1;"
+ offset="0.86267382"
+ id="stop21165" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16441"
+ id="radialGradient16443"
+ cx="559.9212"
+ cy="16.022875"
+ fx="559.9212"
+ fy="16.022875"
+ r="11.80246"
+ gradientTransform="matrix(1,0,0,1.0119015,0,-0.19069696)"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient16441"><stop
+ style="stop-color:#9f0bff;stop-opacity:1;"
+ offset="0.4400529"
+ id="stop16439" /><stop
+ style="stop-color:#7111f8;stop-opacity:1;"
+ offset="1"
+ id="stop16437" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath70915-4-5-0-2-7-5-3-9-4"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#bd44b3;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path70917-7-9-2-9-4-0-3-1-9"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="560"
+ sodipodi:cy="16"
+ sodipodi:r1="10.946013"
+ sodipodi:r2="12.727922"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.1780972"
+ inkscape:rounded="0.29"
+ inkscape:randomized="0.014"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="matrix(0.60389168,0.3121766,-0.3121766,0.60389168,226.77688,-168.46627)" /></clipPath><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14255"
+ id="radialGradient14257"
+ cx="560"
+ cy="16"
+ fx="560"
+ fy="16"
+ r="9"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient14255"><stop
+ style="stop-color:#e570f7;stop-opacity:1;"
+ offset="0"
+ id="stop14251" /><stop
+ style="stop-color:#d829c8;stop-opacity:1;"
+ offset="1"
+ id="stop14253" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16452"
+ id="linearGradient16454"
+ x1="560"
+ y1="25"
+ x2="560"
+ y2="11"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient16452"><stop
+ style="stop-color:#f6cff4;stop-opacity:1;"
+ offset="0"
+ id="stop16450" /><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop16448" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2066"
+ id="radialGradient2757-3"
+ cx="496.06177"
+ cy="17.211182"
+ fx="495.87827"
+ fy="18.730774"
+ r="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5554022,0,0,1.2337313,-771.57556,-4.2669434)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient2066"><stop
+ style="stop-color:#ceb8aa;stop-opacity:1;"
+ offset="0.23876573"
+ id="stop2062" /><stop
+ style="stop-color:#b39888;stop-opacity:1;"
+ offset="0.51858544"
+ id="stop2064" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ id="linearGradient2085"><stop
+ style="stop-color:#261a0a;stop-opacity:1;"
+ offset="0"
+ id="stop2081" /><stop
+ style="stop-color:#3c2b13;stop-opacity:1;"
+ offset="1"
+ id="stop2083" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2564"
+ id="linearGradient2566"
+ x1="466"
+ y1="27"
+ x2="466"
+ y2="22"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient2564"><stop
+ style="stop-color:#45362e;stop-opacity:1;"
+ offset="0"
+ id="stop2560" /><stop
+ style="stop-color:#59463c;stop-opacity:1;"
+ offset="1"
+ id="stop2562" /></linearGradient><radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2739"
+ id="radialGradient2757"
+ cx="496.06177"
+ cy="17.211182"
+ fx="495.87827"
+ fy="18.730774"
+ r="11"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5554022,0,0,1.2337313,-515.57556,-4.2669434)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient2739"><stop
+ style="stop-color:#cca997;stop-opacity:1;"
+ offset="0.23748928"
+ id="stop2755" /><stop
+ style="stop-color:#bd8e74;stop-opacity:1;"
+ offset="0.51858547"
+ id="stop2735" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1330"
+ id="linearGradient1332"
+ x1="487"
+ y1="15"
+ x2="487"
+ y2="5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(256)" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1330"><stop
+ style="stop-color:#261a0a;stop-opacity:1;"
+ offset="0"
+ id="stop1326" /><stop
+ style="stop-color:#422e11;stop-opacity:1;"
+ offset="1"
+ id="stop1328" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1463"
+ id="linearGradient1465"
+ x1="755"
+ y1="27"
+ x2="755"
+ y2="22"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1463"><stop
+ style="stop-color:#45220e;stop-opacity:1;"
+ offset="0"
+ id="stop1459" /><stop
+ style="stop-color:#552910;stop-opacity:1;"
+ offset="1"
+ id="stop1461" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1503"
+ id="linearGradient1505"
+ x1="748"
+ y1="20"
+ x2="748"
+ y2="17"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1503"><stop
+ style="stop-color:#5c3874;stop-opacity:1;"
+ offset="0"
+ id="stop1499" /><stop
+ style="stop-color:#3c3874;stop-opacity:1;"
+ offset="1"
+ id="stop1501" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1308"
+ id="linearGradient1310"
+ x1="16"
+ y1="27"
+ x2="16"
+ y2="5"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1308"><stop
+ style="stop-color:#f3db6c;stop-opacity:1;"
+ offset="0"
+ id="stop1304" /><stop
+ style="stop-color:#ffeea9;stop-opacity:1;"
+ offset="1"
+ id="stop1306" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7052-4-6"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect7054-2-2"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1440"
+ id="linearGradient1442"
+ x1="7"
+ y1="24"
+ x2="11"
+ y2="14"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1440"><stop
+ style="stop-color:#2c251f;stop-opacity:1;"
+ offset="0"
+ id="stop1436" /><stop
+ style="stop-color:#4d3f33;stop-opacity:1;"
+ offset="1"
+ id="stop1438" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1460"
+ id="linearGradient1462"
+ x1="10"
+ y1="18"
+ x2="12"
+ y2="14"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient1460"><stop
+ style="stop-color:#4c7aba;stop-opacity:1;"
+ offset="0"
+ id="stop1456" /><stop
+ style="stop-color:#86c3cf;stop-opacity:1;"
+ offset="1"
+ id="stop1458" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath87687"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect87685"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath87707"><rect
+ style="fill:#ff0000;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect87705"
+ width="6"
+ height="10"
+ x="6"
+ y="14"
+ ry="1" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient292700"
+ id="linearGradient292686"
+ x1="86.052681"
+ y1="26.999552"
+ x2="86"
+ y2="5"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient292700"><stop
+ style="stop-color:#d0d0d0;stop-opacity:1;"
+ offset="0.23078403"
+ id="stop292702" /><stop
+ style="stop-color:#eeeeee;stop-opacity:1;"
+ offset="0.83153141"
+ id="stop292698" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient293074"
+ id="linearGradient293076"
+ x1="80"
+ y1="31"
+ x2="80"
+ y2="21"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient293074"><stop
+ style="stop-color:#a63649;stop-opacity:1;"
+ offset="0"
+ id="stop293070" /><stop
+ style="stop-color:#df6277;stop-opacity:1;"
+ offset="0.52521378"
+ id="stop293078" /><stop
+ style="stop-color:#a63649;stop-opacity:1;"
+ offset="1"
+ id="stop293072" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2085"
+ id="linearGradient42830"
+ x1="77"
+ y1="17"
+ x2="77"
+ y2="14"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient292039"
+ id="linearGradient292041"
+ x1="89"
+ y1="25"
+ x2="89"
+ y2="18"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient292039"><stop
+ style="stop-color:#fb9168;stop-opacity:1;"
+ offset="0"
+ id="stop292035" /><stop
+ style="stop-color:#f3db6c;stop-opacity:1;"
+ offset="1"
+ id="stop292037" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient288023"
+ id="linearGradient288033"
+ x1="183"
+ y1="11"
+ x2="183"
+ y2="7"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient288023"
+ id="linearGradient288025"
+ x1="171"
+ y1="11"
+ x2="171"
+ y2="7"
+ gradientUnits="userSpaceOnUse" /><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51555-6-8-0-1-3-1-4"><rect
+ style="fill:#fb9168;fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51557-5-1-8-7-7-0-9"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999976"
+ ry="3" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient287141"
+ id="linearGradient287143"
+ x1="181.38519"
+ y1="21.999998"
+ x2="181.38519"
+ y2="5.9999976"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient287141"><stop
+ style="stop-color:#fb6a32;stop-opacity:1;"
+ offset="0"
+ id="stop287137" /><stop
+ style="stop-color:#fb9168;stop-opacity:1;"
+ offset="1"
+ id="stop287139" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient287169"
+ id="linearGradient287171"
+ x1="178.38519"
+ y1="21.999998"
+ x2="198.38519"
+ y2="21.999998"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient287169"><stop
+ style="stop-color:#d6d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop287165" /><stop
+ style="stop-color:#aca7a7;stop-opacity:1;"
+ offset="0.49945405"
+ id="stop287173" /><stop
+ style="stop-color:#d6d2d2;stop-opacity:1;"
+ offset="0.9989081"
+ id="stop287167" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath51465-6-2-8-5-5-4-9"><rect
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51467-3-9-5-9-9-2-3"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998"
+ ry="0.99999958" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient287187"
+ id="linearGradient287189"
+ x1="192.38519"
+ y1="22.999998"
+ x2="192.38519"
+ y2="17.999998"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ id="linearGradient287187"><stop
+ style="stop-color:#dfdfdf;stop-opacity:1;"
+ offset="0"
+ id="stop287183" /><stop
+ style="stop-color:#f3f3f3;stop-opacity:1;"
+ offset="1"
+ id="stop287185" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath52515-9-3-0-6-2-2-6"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52517-4-9-9-2-2-2-0"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath87819"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect87817"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath87823"><rect
+ style="fill:#d6d2d2;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect87821"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998"
+ ry="0.99999958" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3108"
+ id="linearGradient94737"
+ gradientUnits="userSpaceOnUse"
+ x1="70.852509"
+ y1="141.75883"
+ x2="70.852509"
+ y2="0.053809531" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3108"
+ id="linearGradient94739"
+ gradientUnits="userSpaceOnUse"
+ x1="70.852509"
+ y1="141.75883"
+ x2="70.852509"
+ y2="0.053809531" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2085"
+ id="linearGradient94741"
+ gradientUnits="userSpaceOnUse"
+ x1="504"
+ y1="15"
+ x2="504"
+ y2="5" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1503"
+ id="linearGradient94747"
+ gradientUnits="userSpaceOnUse"
+ x1="748"
+ y1="20"
+ x2="748"
+ y2="17" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1503"
+ id="linearGradient94749"
+ gradientUnits="userSpaceOnUse"
+ x1="748"
+ y1="20"
+ x2="748"
+ y2="17" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2085"
+ id="linearGradient94751"
+ gradientUnits="userSpaceOnUse"
+ x1="77"
+ y1="17"
+ x2="77"
+ y2="14" /></defs><sodipodi:namedview
+ id="namedview170"
+ pagecolor="#ffffff"
+ bordercolor="#000000"
+ borderopacity="0.25"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ showgrid="true"
+ inkscape:zoom="16"
+ inkscape:cx="13.3125"
+ inkscape:cy="42.25"
+ inkscape:window-width="1366"
+ inkscape:window-height="699"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="i_steve"
+ showguides="true"><inkscape:grid
+ empspacing="32"
+ type="xygrid"
+ id="grid451"
+ originx="0"
+ originy="0" /><sodipodi:guide
+ position="48,1008"
+ orientation="0,-1"
+ id="guide80876"
+ inkscape:locked="false" /><sodipodi:guide
+ position="688,996"
+ orientation="1,0"
+ id="guide87005"
+ inkscape:locked="false" /></sodipodi:namedview><title
+ id="title132">Prism Launcher Logo</title><metadata
+ id="metadata166"><rdf:RDF><cc:Work
+ rdf:about=""><dc:title>Prism Launcher Logo</dc:title><dc:date>19/10/2022</dc:date><dc:creator><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:creator><dc:contributor><cc:Agent><dc:title>AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke</dc:title></cc:Agent></dc:contributor><dc:source>https://github.com/PrismLauncher/PrismLauncher</dc:source><dc:rights><cc:Agent><dc:title>CC BY-SA 4.0</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>Prism Launcher</dc:title></cc:Agent></dc:publisher></cc:Work></rdf:RDF></metadata><g
+ id="g23616"
+ transform="matrix(1,0,0,0.6,0,6.2)" /><g
+ id="i_diamond"><rect
+ style="fill:#1bc3d7;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-8-0"
+ width="20"
+ height="20"
+ x="134"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-88"
+ width="32"
+ height="32"
+ x="128"
+ y="0" /><rect
+ style="fill:url(#linearGradient2973);fill-opacity:1;stroke:none;stroke-width:1;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect40970-3-3"
+ width="18"
+ height="18"
+ x="135"
+ y="7"
+ ry="2" /></g><g
+ id="i_brick"
+ style="opacity:0"
+ transform="translate(32)"><rect
+ style="fill:#df6277;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect13011"
+ width="22"
+ height="22"
+ x="37"
+ y="5"
+ ry="3" /><path
+ id="rect13933"
+ style="fill:#dfdfdf;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 47,5 v 5 H 37 v 2 h 4 v 8 h -4 v 2 h 10 v 5 h 2 v -5 h 10 v -2 h -4 v -8 h 4 V 10 H 49 V 5 Z m -4,7 h 10 v 8 H 43 Z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7"
+ width="32"
+ height="32"
+ x="32"
+ y="0" /></g><g
+ id="i_enderpearl-7"
+ transform="translate(-192)"><circle
+ style="fill:url(#radialGradient3002-5);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path78788-8"
+ cx="272"
+ cy="16"
+ r="12" /><path
+ id="circle80343-2-6"
+ style="fill:#62b397;fill-opacity:1;stroke-width:0.220486;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 272,7 c -4.97057,0 -9,4.029438 -9,9 0,4.970562 4.02943,9 9,9 4.97056,0 9,-4.029438 9,-9 0,-4.970562 -4.02944,-9 -9,-9 z"
+ sodipodi:nodetypes="sssss" /><circle
+ style="fill:url(#radialGradient3407-4);fill-opacity:1;stroke-width:0.187412;paint-order:stroke markers fill;stop-color:#000000"
+ id="circle81814-8"
+ cx="272"
+ cy="16"
+ r="6" /><path
+ id="circle80343-8"
+ style="fill:url(#radialGradient3855-4);fill-opacity:1;stroke-width:0.220486;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 272,6 c -5.52284,0 -10,4.477158 -10,10 h 3 c 0,-3.865989 3.13401,-7 7,-7 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-4-4"
+ width="32"
+ height="32"
+ x="256"
+ y="0" /></g><g
+ id="i_modrinth"
+ transform="translate(-480,32)"><g
+ id="g83832"
+ transform="matrix(0.16936591,0,0,0.16936591,580,3.9908865)"
+ style="fill:url(#linearGradient3110);fill-opacity:1"><path
+ d="M 159.07,89.29 A 70.94,70.94 0 1 0 20,63.52 H 32 A 58.78,58.78 0 0 1 145.23,49.93 l -11.66,3.12 a 46.54,46.54 0 0 0 -29,-26.52 l -2.15,12.13 a 34.31,34.31 0 0 1 2.77,63.26 l 3.19,11.9 a 46.52,46.52 0 0 0 28.33,-49 l 11.62,-3.1 A 57.94,57.94 0 0 1 147.27,85 Z"
+ transform="translate(-19.79)"
+ fill="var(--color-brand)"
+ fill-rule="evenodd"
+ id="path83828"
+ style="fill:url(#linearGradient94737);fill-opacity:1" /><path
+ d="M 108.92,139.3 A 70.93,70.93 0 0 1 19.79,76 h 12 a 59.48,59.48 0 0 0 1.78,9.91 58.73,58.73 0 0 0 3.63,9.91 l 10.68,-6.41 a 46.58,46.58 0 0 1 44.72,-65 L 90.43,36.54 A 34.38,34.38 0 0 0 57.36,79.75 C 57.67,80.88 58,82 58.43,83 L 72.09,74.81 68,63.93 80.9,50.68 97.21,47.17 101.9,53 l -7.52,7.61 -6.55,2.06 -4.69,4.82 2.3,6.38 c 0,0 4.64,4.94 4.65,4.94 l 6.57,-1.74 4.67,-5.13 10.2,-3.24 3,6.84 L 104.05,88.43 86.41,94 78.49,85.19 64.7,93.48 a 34.44,34.44 0 0 0 28.72,11.59 L 96.61,117 A 46.6,46.6 0 0 1 54.13,99.83 l -10.64,6.38 a 58.81,58.81 0 0 0 99.6,-9.77 l 11.8,4.29 a 70.77,70.77 0 0 1 -45.97,38.57 z"
+ fill="var(--color-brand)"
+ id="path83830"
+ style="fill:url(#linearGradient94739);fill-opacity:1"
+ transform="translate(-19.79)" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-5"
+ width="32"
+ height="32"
+ x="576"
+ y="0" /></g><g
+ id="i_flame"
+ transform="translate(-192,64)"><path
+ id="path5010"
+ style="fill:url(#linearGradient1470);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 299,10 a 2,2 0 0 0 -2,2 h -3 -5 c 0,2.761421 2.23858,5 5,5 h 5 v 1 c 0,1.656852 1.34315,3 3,3 v 1 c -1.10457,0 -2,0.895438 -2,2 v 2 h 11 v -2 c 0,-1.104562 -0.89543,-2 -2,-2 v -1 c 1.10457,0 2,-0.895432 2,-2 0,-3.865965 3.13401,-7 7,-7 v -2 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-9"
+ width="32"
+ height="32"
+ x="288"
+ y="0" /><path
+ id="path225757"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 306.94922,12 C 305.86851,12.02738 305,12.912691 305,14 v 1 a 1,1 0 0 1 -1,-1 v 2 c 0,0.552284 0.44772,1 1,1 0,0.552284 -0.44772,1 -1,1 -0.55228,0 -1,-0.447716 -1,-1 -0.55228,0 -1,0.447716 -1,1 0,1.104568 0.89543,2 2,2 0.55228,0 1,0.447716 1,1 0,-0.552284 0.44772,-1 1,-1 h 1 c 0.55228,0 1,-0.447716 1,-1 v -1 c 0,0.552284 -0.44772,1 -1,1 -0.55228,0 -1,-0.447716 -1,-1 0.55228,0 1,-0.447716 1,-1 v -1 c 0,-0.552284 -0.44772,-1 -1,-1 v -1 c 0,-1.087309 0.86851,-1.97262 1.94922,-2 H 307 c -0.0173,0 -0.0336,-4.35e-4 -0.0508,0 z" /></g><g
+ id="i_skeleton"
+ transform="translate(-608)"><rect
+ style="fill:url(#linearGradient6070);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0"
+ width="22"
+ height="22"
+ x="645"
+ y="5"
+ ry="3" /><rect
+ style="fill:url(#linearGradient7626);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect61092"
+ width="6"
+ height="3"
+ x="653"
+ y="20"
+ ry="1" /><rect
+ style="fill:url(#linearGradient7165);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect60969"
+ width="16"
+ height="3"
+ x="648"
+ y="22"
+ ry="1" /><rect
+ style="fill:url(#radialGradient6080);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182"
+ width="6"
+ height="4"
+ x="659"
+ y="16"
+ ry="1" /><rect
+ style="fill:url(#linearGradient7157);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184"
+ width="6"
+ height="4"
+ x="647"
+ y="16"
+ ry="1" /><rect
+ style="fill:#00ffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63186"
+ width="2"
+ height="2"
+ x="661"
+ y="17" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-88-4"
+ width="32"
+ height="32"
+ x="640"
+ y="0" /></g><g
+ id="i_squarecreeper"
+ transform="translate(-672,64)"><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-3-0"
+ width="32"
+ height="32"
+ x="704"
+ y="0" /><rect
+ style="fill:url(#linearGradient11859-1);fill-opacity:1;stroke-width:0.226785;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0-2-3-9"
+ width="18"
+ height="18"
+ x="711"
+ y="7"
+ ry="2.4545455" /><path
+ id="rect29291-0"
+ style="fill:url(#radialGradient10457-1);fill-opacity:1;stroke-width:0.529166;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 714,12 v 4 h 4 v -4 z m 4,4 v 2 h -2 v 6 h 2 v -2 h 4 v 2 h 2 v -6 h -2 v -2 z m 4,0 h 4 v -4 h -4 z" /><rect
+ style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37478"
+ width="2"
+ height="2"
+ x="722"
+ y="14" /><rect
+ style="fill:#ff0000;fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37478-7"
+ width="2"
+ height="2"
+ x="716"
+ y="14" /></g><g
+ id="i_creeper"
+ transform="translate(-64,32)"><rect
+ style="fill:url(#linearGradient11859);fill-opacity:1;stroke-width:0.226785;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0-2-3"
+ width="18"
+ height="18"
+ x="103"
+ y="7"
+ ry="2.4545455" /><path
+ id="rect29291"
+ style="fill:url(#radialGradient10457);fill-opacity:1;stroke-width:0.529166;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 106,12 v 4 h 4 v -4 z m 4,4 v 2 h -2 v 6 h 2 v -2 h 4 v 2 h 2 v -6 h -2 v -2 z m 4,0 h 4 v -4 h -4 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6"
+ width="32"
+ height="32"
+ x="96"
+ y="0" /></g><g
+ id="i_enderman"
+ transform="translate(-192,96)"><rect
+ style="fill:url(#linearGradient5297);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543-0-2"
+ width="22"
+ height="22"
+ x="229"
+ y="5"
+ ry="3" /><rect
+ style="fill:url(#linearGradient5316);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182-8"
+ width="7"
+ height="3"
+ x="242"
+ y="17"
+ ry="1" /><rect
+ style="fill:url(#linearGradient5305);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184-7"
+ width="7"
+ height="3"
+ x="231"
+ y="17"
+ ry="1" /><rect
+ style="fill:#792aac;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect75119"
+ width="2"
+ height="2"
+ x="234"
+ y="18" /><rect
+ style="fill:#792aac;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect75474"
+ width="2"
+ height="2"
+ x="244"
+ y="18" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-1"
+ width="32"
+ height="32"
+ x="224"
+ y="0" /></g><g
+ id="i_stone"
+ transform="translate(-576,64)"><rect
+ style="fill:url(#linearGradient25805);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-9"
+ width="20"
+ height="20"
+ x="774"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-4-1"
+ width="32"
+ height="32"
+ x="768"
+ y="0" /><path
+ id="path47261"
+ style="opacity:0.5;fill:#bfbfbb;fill-opacity:1;stroke-width:0.999997;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 777,11 v 1 h 12 v -1 z m 14,2 v 1 h 2 v -1 z m -17,2 v 1 h 8 v -1 z m 16,4 v 1 h 4 v -1 z m -8,2 v 1 h 2 v -1 z m 2,3 v 1 h 5 v -1 z" /><path
+ id="path47259"
+ style="opacity:0.5;fill:#7e7e77;fill-opacity:1;stroke-width:0.999997;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 774,8 v 1 h 7 V 8 Z m 15,0 v 1 h 5 V 8 Z m -4,8 v 1 h 5 v -1 z m -11,4 v 1 h 6 v -1 z m 3,3 v 1 h 2 v -1 z m 14,0 v 1 h 3 v -1 z" /></g><g
+ id="i_iron"
+ transform="translate(-352,64)"><rect
+ style="fill:url(#linearGradient17901);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088"
+ width="20"
+ height="20"
+ x="486"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-1-2"
+ width="32"
+ height="32"
+ x="480"
+ y="0" /><path
+ id="rect17965"
+ style="fill:#efefef;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 487,23 c 0,1.107999 0.892,2 2,2 h 14 c 1.108,0 2,-0.892001 2,-2 z" /><rect
+ style="fill:url(#linearGradient18032);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8"
+ width="18"
+ height="2"
+ x="487"
+ y="19" /><rect
+ style="fill:url(#linearGradient18124);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4"
+ width="18"
+ height="2"
+ x="487"
+ y="15" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18530);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7"
+ width="18"
+ height="2"
+ x="487"
+ y="17" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18590);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7-5"
+ width="18"
+ height="2"
+ x="487"
+ y="13" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18615);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7-6"
+ width="18"
+ height="2"
+ x="487"
+ y="9" /><rect
+ style="opacity:0.1;fill:url(#linearGradient18640);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-7-56"
+ width="18"
+ height="2"
+ x="487"
+ y="21" /><rect
+ style="fill:url(#linearGradient18124-2);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15357-7-8-4-1"
+ width="18"
+ height="2"
+ x="487"
+ y="11" /><path
+ id="rect15357-7-8-4-5"
+ style="fill:url(#linearGradient18124-0);fill-opacity:1;stroke-width:0.999996;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 489,7 c -1.108,0 -2,0.8920011 -2,2 h 18 c 0,-1.1079989 -0.892,-2 -2,-2 z" /></g><g
+ id="i_gold"
+ transform="translate(-256,32)"><rect
+ style="fill:#d7bc21;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-8"
+ width="20"
+ height="20"
+ x="390"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-88-6"
+ width="32"
+ height="32"
+ x="384"
+ y="0" /><rect
+ style="fill:url(#linearGradient48512);fill-opacity:1;stroke:none;stroke-width:1;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect40970-3"
+ width="18"
+ height="18"
+ x="391"
+ y="7"
+ ry="2" /></g><g
+ id="i_tnt"
+ transform="translate(-640,64)"><rect
+ style="fill:#a02722;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect13011-7"
+ width="20"
+ height="20"
+ x="806"
+ y="6"
+ ry="3" /><g
+ id="g19020"><path
+ id="rect18703"
+ style="opacity:1;fill:url(#linearGradient18901);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 809,6 c -1.662,0 -3,1.3380017 -3,3 v 14 c 0,1.661998 1.338,3 3,3 h 3 V 6 Z"
+ sodipodi:nodetypes="ssssccs" /><rect
+ style="opacity:1;fill:url(#linearGradient19011);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect19003"
+ width="6"
+ height="20"
+ x="813"
+ y="6" /><path
+ id="path19013"
+ style="opacity:1;fill:url(#linearGradient19015);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 823,6 c 1.662,0 3,1.3380017 3,3 v 14 c 0,1.661998 -1.338,3 -3,3 h -3 V 6 Z"
+ sodipodi:nodetypes="ssssccs" /></g><rect
+ style="opacity:1;fill:url(#linearGradient22848);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect19910"
+ width="20"
+ height="20"
+ x="806"
+ y="6"
+ ry="3" /><rect
+ style="opacity:1;fill:url(#radialGradient19929);fill-opacity:1;stroke:none;stroke-width:0.295813;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect121411"
+ width="20"
+ height="10"
+ x="806"
+ y="11" /><path
+ id="rect122467"
+ style="opacity:1;fill:#4d3f33;fill-opacity:1;stroke:none;stroke-width:0.374177;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 808,13 v 2 h 1 v 4 h 2 v -4 h 1 v -2 z m 5,0 v 6 h 2 v -3.171875 l 2,2 V 19 h 2 v -6 h -2 v 2 l -2,-2 z m 7,0 v 2 h 1 v 4 h 2 v -4 h 1 v -2 z"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccc" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-9-7"
+ width="32"
+ height="32"
+ x="800"
+ y="0" /></g><g
+ id="i_stone-2"
+ transform="translate(-576,32)"><rect
+ style="fill:url(#linearGradient39079);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15088-9-1"
+ width="20"
+ height="20"
+ x="774"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-4-1-0"
+ width="32"
+ height="32"
+ x="768"
+ y="0" /><path
+ id="rect48773"
+ style="opacity:0.268946;fill:#a88356;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 776.13672,8 C 776.05936,8.00781 776,8.07286 776,8.15234 V 9.84766 C 776,9.93244 776.06756,10 776.15234,10 h 1.69532 C 777.93244,10 778,9.93244 778,9.84766 V 8.15234 C 778,8.06756 777.93244,8 777.84766,8 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 10,2 C 786.05936,10.00781 786,10.07286 786,10.15234 v 1.69532 C 786,11.93244 786.06756,12 786.15234,12 h 1.69532 C 787.93244,12 788,11.93244 788,11.84766 V 10.15234 C 788,10.06756 787.93244,10 787.84766,10 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -8,4 C 778.05936,14.00781 778,14.07286 778,14.15234 v 1.69532 C 778,15.93244 778.06756,16 778.15234,16 h 1.69532 C 779.93244,16 780,15.93244 780,15.84766 V 14.15234 C 780,14.06756 779.93244,14 779.84766,14 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 13,2 C 791.05936,16.00781 791,16.07286 791,16.15234 v 1.69532 C 791,17.93244 791.06756,18 791.15234,18 h 1.69532 C 792.93244,18 793,17.93244 793,17.84766 V 16.15234 C 793,16.06756 792.93244,16 792.84766,16 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -7,2 C 784.05936,18.00781 784,18.07286 784,18.15234 v 1.69532 C 784,19.93244 784.06756,20 784.15234,20 h 1.69532 C 785.93244,20 786,19.93244 786,19.84766 V 18.15234 C 786,18.06756 785.93244,18 785.84766,18 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 775.05936,20.00781 775,20.07286 775,20.15234 v 1.69532 C 775,21.93244 775.06756,22 775.15234,22 h 1.69532 C 776.93244,22 777,21.93244 777,21.84766 V 20.15234 C 777,20.06756 776.93244,20 776.84766,20 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 15,2 C 790.05936,22.00781 790,22.07286 790,22.15234 v 1.69532 C 790,23.93244 790.06756,24 790.15234,24 h 1.69532 C 791.93244,24 792,23.93244 792,23.84766 V 22.15234 C 792,22.06756 791.93244,22 791.84766,22 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 781.05936,24.00781 781,24.07286 781,24.15234 v 1.69532 C 781,25.93244 781.06756,26 781.15234,26 h 1.69532 C 782.93244,26 783,25.93244 783,25.84766 V 24.15234 C 783,24.06756 782.93244,24 782.84766,24 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z" /></g><g
+ id="i_planks"
+ transform="translate(-512)"><rect
+ style="fill:#a88a4a;fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56542-7-5-0"
+ width="20"
+ height="20"
+ x="678"
+ y="6"
+ ry="3" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-4-9"
+ width="32"
+ height="32"
+ x="672"
+ y="0" /><path
+ id="rect15086"
+ style="fill:url(#linearGradient19373);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 678,21 v 2 c 0,0.771066 0.2909,1.469665 0.76562,2 h 18.46876 C 697.7091,24.469665 698,23.771066 698,23 v -2 z" /><rect
+ style="fill:url(#linearGradient19435);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15086-4"
+ width="20"
+ height="4"
+ x="678"
+ y="16"
+ ry="0" /><rect
+ style="fill:url(#linearGradient19458);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect15086-2"
+ width="20"
+ height="4"
+ x="678"
+ y="11"
+ ry="0" /><path
+ id="rect15086-9"
+ style="fill:url(#linearGradient19481);fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 681,6 c -1.662,0 -3,1.3380017 -3,3 v 1 h 20 V 9 c 0,-1.6619983 -1.338,-3 -3,-3 z" /></g><g
+ id="i_grass"
+ transform="translate(-224)"><path
+ id="rect15088-9-1-7"
+ style="fill:url(#linearGradient56913);stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 425,8 h 14 l 3,1 v 14 c 0,1.662 -1.338,3 -3,3 h -14 c -1.662,0 -3,-1.338 -3,-3 V 9 Z"
+ sodipodi:nodetypes="cccsssscc" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-4-8"
+ width="32"
+ height="32"
+ x="416"
+ y="0" /><path
+ id="rect48773-2"
+ style="opacity:0.268946;fill:#a88356;fill-opacity:1;stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 424.13672,8 C 424.05936,8.00781 424,8.07286 424,8.15234 V 9.84766 C 424,9.93244 424.06756,10 424.15234,10 h 1.69532 C 425.93244,10 426,9.93244 426,9.84766 V 8.15234 C 426,8.06756 425.93244,8 425.84766,8 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 10,2 C 434.05936,10.00781 434,10.07286 434,10.15234 v 1.69532 C 434,11.93244 434.06756,12 434.15234,12 h 1.69532 C 435.93244,12 436,11.93244 436,11.84766 V 10.15234 C 436,10.06756 435.93244,10 435.84766,10 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -8,4 C 426.05936,14.00781 426,14.07286 426,14.15234 v 1.69532 C 426,15.93244 426.06756,16 426.15234,16 h 1.69532 C 427.93244,16 428,15.93244 428,15.84766 V 14.15234 C 428,14.06756 427.93244,14 427.84766,14 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 13,2 C 439.05936,16.00781 439,16.07286 439,16.15234 v 1.69532 C 439,17.93244 439.06756,18 439.15234,18 h 1.69532 C 440.93244,18 441,17.93244 441,17.84766 V 16.15234 C 441,16.06756 440.93244,16 440.84766,16 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -7,2 C 432.05936,18.00781 432,18.07286 432,18.15234 v 1.69532 C 432,19.93244 432.06756,20 432.15234,20 h 1.69532 C 433.93244,20 434,19.93244 434,19.84766 V 18.15234 C 434,18.06756 433.93244,18 433.84766,18 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 423.05936,20.00781 423,20.07286 423,20.15234 v 1.69532 C 423,21.93244 423.06756,22 423.15234,22 h 1.69532 C 424.93244,22 425,21.93244 425,21.84766 V 20.15234 C 425,20.06756 424.93244,20 424.84766,20 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m 15,2 C 438.05936,22.00781 438,22.07286 438,22.15234 v 1.69532 C 438,23.93244 438.06756,24 438.15234,24 h 1.69532 C 439.93244,24 440,23.93244 440,23.84766 V 22.15234 C 440,22.06756 439.93244,22 439.84766,22 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z m -9,2 C 429.05936,24.00781 429,24.07286 429,24.15234 v 1.69532 C 429,25.93244 429.06756,26 429.15234,26 h 1.69532 C 430.93244,26 431,25.93244 431,25.84766 V 24.15234 C 431,24.06756 430.93244,24 430.84766,24 h -1.69532 c -0.005,0 -0.0105,-5.2e-4 -0.0156,0 z" /><path
+ id="rect56976"
+ style="fill:url(#linearGradient56984);stroke-linecap:square;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 425,8 h 7 7 l 3,1 v 14 l -3,3 h -14 l -3,-3 V 9 Z"
+ sodipodi:nodetypes="cccccccccc" /><path
+ id="rect24023"
+ style="fill:url(#linearGradient29507);fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 425,6 c -1.662,0 -3,1.3380037 -3,3 v 3 2 h 2 v -2 h 2 v 2 h 4 v 2 h 2 v -2 -2 -2 h 2 v 2 2 h 2 v -2 h 2 v 2 2 h 2 v -2 h 2 V 9 c 0,-1.6619983 -1.338,-3 -3,-3 h -7 z" /></g><g
+ id="i_meat"
+ transform="translate(-480,32)"><path
+ id="rect80640"
+ style="opacity:1;fill:url(#linearGradient39389);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 568.48528,21.449747 a 1.5,1.5 0 0 0 -1.70424,-0.290027 l -2.18485,-2.184846 c -0.39173,-0.391738 -1.02247,-0.391737 -1.41421,0 l -0.70711,0.707106 c -0.39173,0.391737 -0.39173,1.022477 0,1.414214 l 2.18485,2.184847 a 1.5,1.5 0 0 0 0.29003,1.70424 1.5,1.5 0 0 0 2.12132,0 1.5,1.5 0 0 0 0.4378,-0.979175 1.5,1.5 0 0 0 0.97641,-0.435038 1.5,1.5 0 0 0 0,-2.121321 z" /><rect
+ style="opacity:1;fill:url(#linearGradient38102);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect74200"
+ width="16"
+ height="11"
+ x="397.64703"
+ y="-389.8125"
+ ry="4"
+ rx="0"
+ transform="rotate(45)" /><rect
+ style="opacity:1;fill:url(#linearGradient39377);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect74196"
+ width="8"
+ height="11"
+ x="396.64703"
+ y="-389.8125"
+ ry="4"
+ rx="3"
+ transform="rotate(45)" /><rect
+ style="opacity:1;fill:#dfdfdf;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect79410"
+ width="2"
+ height="3"
+ x="399.64703"
+ y="-385.8125"
+ ry="1"
+ transform="rotate(45)" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-61"
+ width="32"
+ height="32"
+ x="544"
+ y="0" /></g><g
+ id="i_netherstar"
+ transform="translate(-544,64)"><path
+ id="path87169-8-4"
+ style="fill:url(#radialGradient62776);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 624,4 c -1,1.999998 -2,3.000001 -3,4 -1,0.999999 0,3.000001 -1,4 -1,0.999999 -3,10e-7 -4,1 -1,0.999999 -2,2.000001 -4,3 2,0.999999 3,2.000001 4,3 1,0.999999 3,1e-6 4,1 1,0.999999 0,3.000001 1,4 1,0.999999 2,2.000002 3,4 1,-1.999998 2,-3.000001 3,-4 1,-0.999999 0,-3.000001 1,-4 1,-0.999999 3,-1e-6 4,-1 1,-0.999999 2,-2.000001 4,-3 -2,-0.999999 -3,-2.000001 -4,-3 -1,-0.999999 -3,-10e-7 -4,-1 -1,-0.999999 0,-3.000001 -1,-4 -1,-0.999999 -2,-2.000002 -3,-4 z" /><path
+ style="fill:url(#radialGradient62768);fill-opacity:1;stroke:none;stroke-width:0.132291;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 624,22 c 1,-3 3,-5 6,-6 -3,-1 -5,-3 -6,-6 -1,3 -3,5 -6,6 3,1 5,3 6,6 z"
+ id="path88076"
+ sodipodi:nodetypes="ccccc" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-9"
+ width="32"
+ height="32"
+ x="608"
+ y="0" /></g><g
+ id="i_ftb_logo"
+ transform="translate(-224)"><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-2"
+ width="32"
+ height="32"
+ x="320"
+ y="0" /><path
+ id="path15348-5"
+ style="fill:url(#linearGradient12455);fill-opacity:1;stroke:none;stroke-width:0.869508;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 342,10 v 3 11 a 2,2 0 0 0 2,2 h 7 V 20 A 3,3 0 0 0 349.6543,17.49805 3,3 0 0 0 351,15 v -3 a 2,2 0 0 0 -2,-2 z m 3,3 h 3 v 3 h -3 z m 0,6 h 3 v 1 3 h -3 z" /><path
+ id="path15342-4"
+ style="fill:url(#linearGradient12301);fill-opacity:1;stroke:none;stroke-width:0.869508;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 323,10 a 2,2 0 0 0 -2,2 v 14 h 3 v -7 h 4.5 V 16 H 324 v -3 h 5 v -3 z" /><path
+ style="fill:url(#linearGradient12447);fill-opacity:1;stroke:none;stroke-width:0.869508;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 330,10 v 3 h 4 v 13 h 3 V 13 h 4 v -3 z"
+ id="rect10933-8"
+ sodipodi:nodetypes="ccccccccc" /></g><g
+ id="i_gear"
+ transform="translate(-288,96)"><path
+ id="path26489"
+ style="opacity:1;fill:url(#radialGradient21159);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 368,9 c -3.86599,0 -7,3.134007 -7,7 0,3.865993 3.13401,7 7,7 3.86599,0 7,-3.134007 7,-7 0,-3.865993 -3.13401,-7 -7,-7 z m 0,5 c 1.10456,0 2,0.89543 2,2 0,1.10457 -0.89544,2 -2,2 -1.10456,0 -2,-0.89543 -2,-2 0,-1.10457 0.89544,-2 2,-2 z"
+ sodipodi:nodetypes="ssssssssss" /><path
+ id="path23199"
+ style="fill:url(#radialGradient21309);fill-opacity:1;stroke:none;stroke-width:0.148828;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 366,5 v 2.2265625 c -1.00464,0.2280151 -1.94322,0.6232232 -2.78906,1.15625 l -1.57422,-1.5742187 -2.82813,2.828125 1.57422,1.5742192 C 359.84979,12.056778 359.45458,12.995357 359.22656,14 H 357 v 4 h 2.22656 c 0.22802,1.004643 0.62323,1.943222 1.15625,2.789062 l -1.57422,1.574219 2.82813,2.830078 1.57422,-1.576171 c 0.84584,0.533026 1.78442,0.928234 2.78906,1.15625 V 27 h 4 v -2.226562 c 1.00464,-0.228016 1.94322,-0.623224 2.78906,-1.15625 l 1.57422,1.576171 2.83008,-2.830078 -1.57617,-1.574219 C 376.15021,19.943222 376.54542,19.004643 376.77344,18 H 379 v -4 h -2.22656 c -0.22802,-1.004643 -0.62323,-1.943222 -1.15625,-2.789062 l 1.57617,-1.5742192 -2.83008,-2.828125 -1.57422,1.5742187 C 371.94322,7.8497857 371.00464,7.4545776 370,7.2265625 V 5 Z m 2,5 c 3.31371,0 6,2.686295 6,6 0,3.313705 -2.68629,6 -6,6 -3.31371,0 -6,-2.686295 -6,-6 0,-3.313705 2.68629,-6 6,-6 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-0"
+ width="32"
+ height="32"
+ x="352"
+ y="0" /></g><g
+ id="i_magitech"
+ transform="translate(-416,96)"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:url(#radialGradient16443);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="path63885"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="560"
+ sodipodi:cy="16"
+ sodipodi:r1="10.946013"
+ sodipodi:r2="12.727922"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.1780972"
+ inkscape:rounded="0.29"
+ inkscape:randomized="0.014"
+ d="m 567.75822,23.780557 c -1.02129,1.017197 -1.40469,3.26498 -2.72399,3.814557 -1.3193,0.549578 -3.76804,-0.657585 -5.20836,-0.687167 -1.44032,-0.02958 -3.32578,1.488919 -4.65697,0.936933 -1.33119,-0.551986 -2.06769,-2.91036 -3.08281,-3.927341 -1.01511,-1.016982 -3.30517,-1.550442 -3.83572,-2.877061 -0.53055,-1.326619 0.75095,-3.615262 0.76004,-5.050859 0.009,-1.435596 -1.30602,-3.611418 -0.75806,-4.936294 0.54796,-1.3248769 2.7981,-1.6627753 3.83368,-2.6540083 1.03559,-0.9912328 1.77327,-3.6016077 3.08037,-4.1709394 1.3071,-0.5693318 3.41767,0.6823629 4.85198,0.6871672 1.43432,0.0048 3.67769,-1.1020263 5.01335,-0.5805511 1.33567,0.5214752 1.68844,2.9320874 2.72643,3.9273412 1.03799,0.9952536 3.30533,1.5532379 3.83572,2.8770604 0.53039,1.323824 -0.73478,3.255376 -0.76004,4.694477 -0.0253,1.439101 1.28343,3.594239 0.75806,4.936295 -0.52537,1.342056 -2.8124,1.993192 -3.83368,3.01039 z"
+ transform="rotate(15,543.92119,-105.50919)" /><g
+ id="g68167"
+ clip-path="url(#clipPath70915-4-5-0-2-7-5-3-9-4)"
+ transform="translate(-32)"><rect
+ style="opacity:1;fill:url(#radialGradient14257);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect68163"
+ width="18"
+ height="18"
+ x="551"
+ y="7" /><path
+ id="rect67092"
+ style="opacity:1;fill:url(#linearGradient16454);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 562,11.419922 V 15 l -2,1 -2,-1 v -3.576172 c -1.82001,0.794312 -2.99746,2.590388 -3,4.576172 0,2.049737 1.2349,3.810134 3,4.582031 V 25 h 4 v -4.417969 c 1.7651,-0.771897 3,-2.532294 3,-4.582031 -9.9e-4,-1.987202 -1.1787,-3.785197 -3,-4.580078 z" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-0"
+ width="32"
+ height="32"
+ x="512"
+ y="0" /></g><g
+ id="i_herobrine"
+ transform="translate(-448)"><g
+ id="g56546"
+ clip-path="none"
+ transform="translate(-32)"><rect
+ style="fill:url(#radialGradient2757-3);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56542-7-5"
+ width="22"
+ height="22"
+ x="485"
+ y="5"
+ ry="2.999999" /><path
+ id="rect56552"
+ style="fill:url(#linearGradient94741);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 488 5 C 486.338 5 485 6.3380017 485 8 L 485 15 L 487 15 C 488.108 15 489 14.107998 489 13 L 489 12 L 503 12 L 503 13 C 503 14.107998 503.892 15 505 15 L 507 15 L 507 8 C 507 6.3380017 505.662 5 504 5 L 503 5 L 489 5 L 488 5 z " /></g><rect
+ style="opacity:1;fill:#8a5d54;fill-opacity:1;stroke:none;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect53396"
+ width="6"
+ height="3"
+ x="461"
+ y="22"
+ ry="0" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182-8-0"
+ width="7"
+ height="3"
+ x="466"
+ y="17"
+ ry="1" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184-7-9"
+ width="7"
+ height="3"
+ x="455"
+ y="17"
+ ry="1" /><rect
+ style="opacity:1;fill:#6a493c;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect50123"
+ width="4"
+ height="2"
+ x="462"
+ y="20"
+ ry="0" /><path
+ id="path195645-9"
+ style="fill:url(#linearGradient2566);fill-opacity:1;stroke:none;stroke-width:0.362295;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 461,22 a 2,2 0 0 0 -2,2 v 3 h 3 4 3 v -3 a 2,2 0 0 0 -2,-2 h -1 v 2 h -4 v -2 z" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-3-9"
+ width="32"
+ height="32"
+ x="448"
+ y="0" /></g><g
+ id="i_steve"
+ transform="translate(-736,32)"><rect
+ style="fill:url(#radialGradient2757);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect56542-7"
+ width="22"
+ height="22"
+ x="741"
+ y="5"
+ ry="3" /><path
+ id="rect56552-6"
+ style="fill:url(#linearGradient1332);fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="M 744 5 C 742.338 5 741 6.3380017 741 8 L 741 15 L 743 15 C 744.108 15 745 14.107997 745 13 L 745 12 L 759 12 L 759 13 C 759 14.107997 759.892 15 761 15 L 763 15 L 763 8 C 763 6.3380017 761.662 5 760 5 L 759 5 L 745 5 L 744 5 z " /><rect
+ style="fill:#8a4c3d;fill-opacity:1;stroke:none;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect53396-9"
+ width="6"
+ height="3"
+ x="749"
+ y="22"
+ ry="0" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63182-8-0-3"
+ width="7"
+ height="3"
+ x="754"
+ y="17"
+ ry="1" /><rect
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect63184-7-9-7"
+ width="7"
+ height="3"
+ x="743"
+ y="17"
+ ry="1" /><rect
+ style="fill:#6a4030;fill-opacity:1;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect50123-4"
+ width="4"
+ height="2"
+ x="750"
+ y="20"
+ ry="0" /><path
+ id="path195645"
+ style="fill:url(#linearGradient1465);fill-opacity:1;stroke:none;stroke-width:0.362295;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 749,22 a 2,2 0 0 0 -2,2 v 3 h 3 4 3 v -3 a 2,2 0 0 0 -2,-2 h -1 v 2 h -4 v -2 z" /><g
+ id="g1469"
+ style="fill:url(#linearGradient1505);fill-opacity:1"><rect
+ style="fill:url(#linearGradient94747);fill-opacity:1;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect75119-2"
+ width="3"
+ height="3"
+ x="746"
+ y="17" /><rect
+ style="fill:url(#linearGradient94749);fill-opacity:1;stroke-width:0.396874;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect112219"
+ width="3"
+ height="3"
+ x="755"
+ y="17" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-6-1-9"
+ width="32"
+ height="32"
+ x="736"
+ y="0" /></g><g
+ id="i_dirt"
+ transform="translate(-192,64)"><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8-3"
+ width="32"
+ height="32"
+ x="192"
+ y="0" /></g><g
+ id="i_bee"
+ transform="translate(0,64)"><rect
+ style="fill:url(#linearGradient1310);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect543"
+ width="22"
+ height="22"
+ x="5"
+ y="5"
+ ry="3" /><g
+ id="g7050"
+ clip-path="url(#clipPath7052-4-6)"><rect
+ style="fill:url(#linearGradient1442);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect3612"
+ width="6"
+ height="10"
+ x="6"
+ y="14" /><rect
+ style="fill:url(#linearGradient1462);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect4739"
+ width="3"
+ height="4"
+ x="9"
+ y="14" /></g><use
+ x="0"
+ y="0"
+ xlink:href="#g7050"
+ id="use7056"
+ transform="matrix(-1,0,0,1,32,0)" /><g
+ id="g10049"
+ transform="translate(-1)"
+ style="fill:#2c251f;fill-opacity:1"><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect9308"
+ width="3"
+ height="3"
+ x="9"
+ y="10"
+ ry="1" /><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect9310"
+ width="5"
+ height="3"
+ x="4"
+ y="7"
+ ry="1" /><path
+ id="path9312"
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 8,9 v 1 c 0.5539988,0 1,0.446001 1,1 h 1 V 10 C 9.4460006,10 9,9.5539994 9,9 Z" /></g><g
+ id="g10057"
+ transform="matrix(-1,0,0,1,33,0)"
+ style="fill:#2c251f;fill-opacity:1"><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect10051"
+ width="3"
+ height="3"
+ x="9"
+ y="10"
+ ry="1" /><rect
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect10053"
+ width="5"
+ height="3"
+ x="4"
+ y="7"
+ ry="1" /><path
+ id="path10055"
+ style="fill:#2c251f;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 8,9 v 1 c 0.5539988,0 1,0.446001 1,1 h 1 V 10 C 9.4460006,10 9,9.5539994 9,9 Z" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412"
+ width="32"
+ height="32"
+ x="0"
+ y="0" /></g><g
+ id="i_chicken"
+ transform="translate(-64,96)"><rect
+ style="fill:url(#linearGradient292686);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect18469"
+ width="18"
+ height="22"
+ x="71"
+ y="5"
+ ry="3" /><rect
+ style="fill:url(#linearGradient293076);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect22620"
+ width="8"
+ height="8"
+ x="76"
+ y="21"
+ ry="1" /><g
+ id="g23887"
+ clip-path="none"
+ style="fill:url(#linearGradient42830);fill-opacity:1"><rect
+ style="fill:url(#linearGradient94751);fill-opacity:1;stroke-width:0.170787;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect3612-5"
+ width="5"
+ height="5"
+ x="72"
+ y="12"
+ ry="1" /><path
+ id="rect42884"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 75,12 v 2 h 2 v -1 c 0,-0.553999 -0.446001,-1 -1,-1 z" /></g><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-8"
+ width="32"
+ height="32"
+ x="64"
+ y="0" /><use
+ x="0"
+ y="0"
+ xlink:href="#g23887"
+ id="use42929"
+ transform="translate(11)" /><rect
+ style="fill:url(#linearGradient292041);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect37390-3"
+ width="20"
+ height="7"
+ x="70"
+ y="16"
+ ry="1" /></g><g
+ id="i_fox"
+ transform="translate(-160,128)"><path
+ id="path51543"
+ style="fill:url(#linearGradient288033);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 180,7 v 2 1 1 c 0,1.107999 0.892,2 2,2 h 2 c 1.108,0 2,-0.892001 2,-2 V 9 c 0,-1.1079989 -0.892,-2 -2,-2 h -1 -1 z" /><path
+ id="rect51469"
+ style="fill:url(#linearGradient288025);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 172,7 v 2 1 1 c 0,1.107999 -0.892,2 -2,2 h -2 c -1.108,0 -2,-0.892001 -2,-2 V 9 c 0,-1.1079989 0.892,-2 2,-2 h 1 1 z" /><g
+ id="g51553"
+ clip-path="url(#clipPath51555-6-8-0-1-3-1-4)"
+ transform="translate(-12.385191,4.0000023)"><rect
+ style="fill:url(#linearGradient287143);fill-opacity:1;stroke-width:0.271456;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect50678"
+ width="19.999996"
+ height="16"
+ x="178.38519"
+ y="5.9999981" /><rect
+ style="fill:url(#linearGradient287171);fill-opacity:1;stroke-width:0.258767;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51545"
+ width="21.999998"
+ height="5"
+ x="177.38519"
+ y="19.999998"
+ ry="2" /></g><g
+ id="g51463"
+ clip-path="url(#clipPath51465-6-2-8-5-5-4-9)"
+ transform="translate(-12.385191,4.0000023)"><rect
+ style="fill:url(#linearGradient287189);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51033"
+ width="10.000002"
+ height="5.0000005"
+ x="183.38519"
+ y="17.999998" /><rect
+ style="fill:#4d3f33;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect51319"
+ width="6"
+ height="3"
+ x="185.38519"
+ y="16.999998"
+ ry="0.99999958" /></g><g
+ id="g52513"
+ clip-path="url(#clipPath52515-9-3-0-6-2-2-6)"
+ transform="matrix(-1,0,0,1,352.38519,4.0000023)"><rect
+ style="fill:#e9ecec;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52365"
+ width="6"
+ height="3"
+ x="179.38519"
+ y="13.999998" /><rect
+ style="fill:#141519;fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect52369"
+ width="6"
+ height="5"
+ x="176.38519"
+ y="12.999998" /></g><use
+ x="0"
+ y="0"
+ xlink:href="#g52513"
+ id="use55252"
+ transform="matrix(-1,0,0,1,352,0)" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-4"
+ width="32"
+ height="32"
+ x="160"
+ y="0" /></g><rect
+ style="fill:url(#linearGradient84368);fill-opacity:1;stroke-width:0.277182;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect13011-3"
+ width="20"
+ height="20"
+ x="166"
+ y="38"
+ ry="3" /><path
+ id="rect13933-4"
+ style="fill:url(#linearGradient85182);fill-opacity:1;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ d="m 175,38 v 5 h -9 v 2 h 4 v 6 h -4 v 2 h 9 v 5 h 2 v -5 h 9 v -2 h -4 v -6 h 4 v -2 h -9 v -5 z m -3,7 h 8 v 6 h -8 z"
+ sodipodi:nodetypes="cccccccccccccccccccccccccc" /><rect
+ style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:0.264583;paint-order:stroke markers fill;stop-color:#000000"
+ id="rect128412-7-0"
+ width="32"
+ height="32"
+ x="160"
+ y="32" /></svg>