Giter VIP home page Giter VIP logo

picomc's Introduction

picomc

picomc is a cross-platform command-line Minecraft launcher. It supports all(?) officialy available Minecraft versions, account switching and multiple separate instances of the game. The on-disk launcher file structure mimics the vanilla launcher and as such most mod installers (such as forge, fabric or optifine) should work with picomc just fine, though you will have to change the installation path. Don't hesitate to report any problems you run into.

Installation

The easiest and most portable way to install picomc is using pip, from the Python Package Index (PyPI):

pip install picomc

Depending on your configuration, you may either have to run this command with elevated privileges (using e.g. sudo) or add the --user flag like this:

pip install --user picomc

Usage

The quickest way to get started is to run

picomc play

which, on the first launch, will ask you for your account details, create an instance named default using the latest version of Minecraft and launch it.

Of course, more advanced features are available. Try running

picomc --help

and you should be able to figure it out. More detailed documentation may appear someday in the future.

Development

For project management and dependency tracking picomc uses Rye.

picomc's People

Contributors

nightmaregodss avatar sammko avatar zajozor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

picomc's Issues

picomc can't parse java version

I'm trying to launch latest release of minecraft which is 1.18

so I need java 17 installed, here is packages I installed on my ubuntu machine:

openjdk-17-jdk/focal-updates,now 17+35-1~20.04 amd64 [installed]
openjdk-17-jre-headless/focal-updates,now 17+35-1~20.04 amd64 [installed,automatic]
openjdk-17-jre/focal-updates,now 17+35-1~20.04 amd64 [installed] 

and this is what I get from java --version:

openjdk version "17" 2021-09-14
OpenJDK Runtime Environment (build 17+35-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17+35-Ubuntu-120.04, mixed mode, sharing)

This is kinda strange, because before java 17 the version was like openjdk version "1.16.0".

now when I try to lanch minecraft, it fails to parse java version.
this the error:

File "/home/hello/.local/lib/python3.8/site-packages/picomc/java/javainfo.py", line 53, in check_version_against
    major, minor, *_ = version.split(".")
ValueError: not enough values to unpack (expected at least 2, got 1)

I also tried to print the value of version in javainfo.py and it was 17.

Installing modpack from FTB fails on `KeyError: 'url'`

Trying to install https://feed-the-beast.com/modpacks/96-ftb-plexiglass-mountain

(base) zajo@zor-awakened ~ % picomc mod pack ftb install 96
/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
INFO Installing FTB Plexiglass Mountain 1.2.2 as FTB_Plexiglass_Mountain-1.2.2
INFO Fetching Forge metadata
INFO Resolving version
INFO Installing Forge 1.18.2-40.1.84 as 1.18.2-forge-40.1.84
WARNING As the Forge project is kept alive mostly thanks to ads on their downloads
WARNING site, please consider supporting them at https://www.patreon.com/LexManos/
WARNING or by visiting their website and looking at some ads.
INFO Downloading installer
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00,  1.78s/it]
INFO Installing with PicoForgeWrapper
INFO Done installing Forge
WARNING Skipping unsupported target java
Traceback (most recent call last):
  File "/opt/homebrew/Caskroom/miniconda/base/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/picomc/__init__.py", line 18, in main
    picomc_cli()
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  [Previous line repeated 1 more time]
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/picomc/mod/ftb.py", line 155, in install_cli
    install(pack_id, version, launcher, im, name, use_beta=beta)
  File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.8/site-packages/picomc/mod/ftb.py", line 122, in install
    dq.add(f["url"], filepath, f["size"])
KeyError: 'url'

MacOS, M1

click                   8.1.3
picomc                  0.4.5

I suppose the urllib warning at the top isn't critical but also a bit annoying as it's present with every picomc command.
Let me know what else I can provide :) !

xml.etree.ElementTree.ParseError: no element found: line 1, column 0

PICOMC PLAY does not work.

Java --version output:

java 17.0.1 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

logs:

Traceback (most recent call last):
File "c:\users\__\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main
  return _run_code(code, main_globals, None,
File "c:\users\__\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code
  exec(code, run_globals)
File "C:\Users\__\AppData\Local\Programs\Python\Python38\Scripts\picomc.exe\__main__.py", line 7, in <module>
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\__init__.py", line 18, in main
  picomc_cli()
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 829, in __call__
  return self.main(*args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 782, in main
  rv = self.invoke(ctx)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 1259, in invoke
  return _process_result(sub_ctx.command.invoke(sub_ctx))
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 1066, in invoke
  return ctx.invoke(self.callback, **ctx.params)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 610, in invoke
  return callback(*args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\decorators.py", line 73, in new_func
  return ctx.invoke(f, obj, *args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 610, in invoke
  return callback(*args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\cli\utils.py", line 16, in wrapper
  fn(x, *a, **kwa)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\decorators.py", line 73, in new_func
  return ctx.invoke(f, obj, *args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 610, in invoke
  return callback(*args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\cli\utils.py", line 16, in wrapper
  fn(x, *a, **kwa)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\decorators.py", line 73, in new_func
  return ctx.invoke(f, obj, *args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\click\core.py", line 610, in invoke
  return callback(*args, **kwargs)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\cli\play.py", line 40, in play
  inst.launch(account, version, verify_hashes=verify)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\instance.py", line 127, in launch
  java_info = assert_java(java, vobj.java_version)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\java\javainfo.py", line 84, in assert_java
  jinfo = get_java_info(java)
File "c:\users\__\appdata\local\programs\python\python38\lib\site-packages\picomc\java\javainfo.py", line 40, in get_java_info
  props = ElementTree.fromstring(xmlstr)
File "c:\users\__\appdata\local\programs\python\python38\lib\xml\etree\ElementTree.py", line 1321, in XML
  return parser.close()

xml.etree.ElementTree.ParseError: no element found: line 1, column 0

Can't authentificate mojang account

When i execute
picomc account authenticate [email protected]
it returns
AttributeError: 'OfflineAccount' object has no attribute 'authenticate'
after i input a password.
That's not a big issue but still needs a fix.

picomc, version 0.4.2
Python 3.8.6

Picomc not working on artix aur

System: artix with s6-rc

Coreutils: busybox. it has worked fine before with busybox.

Shell: user: bash, system: busybox ash (again, has worked before)

Terminal: st

Minecraft information: 1.17.1 with offline account

INFO Launching instance: default
INFO Using version: latest -> 1.17.1
INFO Using account: pheonix9001
INFO Using java version: 17 (OpenJDK 64-Bit Server VM)
Traceback (most recent call last):
  File "/bin/picomc", line 33, in <module>
    sys.exit(load_entry_point('picomc==0.4.3', 'console_scripts', 'picomc')())
  File "/usr/lib/python3.9/site-packages/picomc/__init__.py", line 18, in main
    picomc_cli()
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/picomc/cli/play.py", line 39, in play
    inst.launch(account, version, verify_hashes=verify)
  File "/usr/lib/python3.9/site-packages/picomc/instance.py", line 126, in launch
    java_info = assert_java(java, vobj.java_version)
  File "/usr/lib/python3.9/site-packages/picomc/java/javainfo.py", line 86, in assert_java
    if not check_version_against(jinfo["java.version"], wanted):
  File "/usr/lib/python3.9/site-packages/picomc/java/javainfo.py", line 53, in check_version_against
    major, minor, *_ = version.split(".")
ValueError: not enough values to unpack (expected at least 2, got 1)

I've attempted reinstalling as well as removing ~/.local/share/picomc

Downloading assets fails

picomc installed using pip.

logs

$ picomc --debug version prepare 1.19.3
DEBUG picomc, version 0.4.5
DEBUG Python 3.11.1
DEBUG Resolving default application root
DEBUG Using application directory: /home/xdream8/.local/share/picomc
DEBUG Using cached vspec files, hash matches manifest (1.19.3)
DEBUG Using cached asset index, hash matches vspec
DEBUG Loading Config from /home/xdream8/.local/share/picomc/config.json
INFO Checking libraries.
DEBUG Attempting to use jarfile: /home/xdream8/.local/share/picomc/versions/1.19.3/1.19.3.jar
DEBUG Checking jarfile.
INFO Checking 3381 assets.
INFO Downloading 3381 assets.
DEBUG Downloading 3381 files.
DEBUG Downloading [1/3381]: http://resources.download.minecraft.net/bd/bdf48ef6b5d0d23bbb02e17d04865216179f510a
DEBUG Downloading [2/3381]: http://resources.download.minecraft.net/92/92750c5f93c312ba9ab413d546f32190c56d6f1f
...
ERROR Failed to download (400) [3363/3381]: http://resources.download.minecraft.net/95/9519c93477a4394b4ceaaa0f856c7fdd7babd834
ERROR Failed to download (400) [3362/3381]: http://resources.download.minecraft.net/70/70ae9c314c2c280af94a08c2403801e120ee4b3c
ERROR Failed to download (400) [3364/3381]: http://resources.download.minecraft.net/9a/9a5729d795b1edfeffaa99506983c8b279880fa9
ERROR Failed to download (400) [3365/3381]: http://resources.download.minecraft.net/9d/9dd32387135eefa7ab95996d52a5ca4cec8a3b30
ERROR Failed to download (400) [3366/3381]: http://resources.download.minecraft.net/eb/ebdae54b8c4cbe1aa5ae2807dbeeb6511e2add3b
ERROR Failed to download (400) [3368/3381]: http://resources.download.minecraft.net/fd/fdf18a3512fd1d2ce62b19865d4312fcc343cd36
ERROR Failed to download (400) [3367/3381]: http://resources.download.minecraft.net/45/4574e4b3a592117b019e05088947ee26bc55e697
ERROR Failed to download (400) [3369/3381]: http://resources.download.minecraft.net/1d/1d8eb3f824e8e17c0834a17cf39b9e55b8479c2e
ERROR Failed to download (400) [3370/3381]: http://resources.download.minecraft.net/2d/2d888ac14e51d7cab64b5e735456d25bf000720e
ERROR Failed to download (400) [3371/3381]: http://resources.download.minecraft.net/de/deba0627f49ca561aaec8b61057dac00deb83fe2
ERROR Failed to download (400) [3374/3381]: http://resources.download.minecraft.net/15/15c8e87c9ace8c279dffaf86d05dda43dd51d933
ERROR Failed to download (400) [3373/3381]: http://resources.download.minecraft.net/52/529e4602466f3752d66bf34eb8e5b92f7d602ccc
ERROR Failed to download (400) [3375/3381]: http://resources.download.minecraft.net/01/01564e4a93458fdc78544743528f31bd0ee1335e
ERROR Failed to download (400) [3378/3381]: http://resources.download.minecraft.net/c0/c05cbd8c88b5878703898150e157af88a29d8091
ERROR Failed to download (400) [3376/3381]: http://resources.download.minecraft.net/55/55e05b92ff63a3a762599a3c5d8911ef73632eed
ERROR Failed to download (400) [3372/3381]: http://resources.download.minecraft.net/4a/4a101c336082c530e93945b0e31ac818cfbf78a0
ERROR Failed to download (400) [3380/3381]: http://resources.download.minecraft.net/a4/a449a2395b194c67b17ce2cba15b1e2958130f11
ERROR Failed to download (400) [3379/3381]: http://resources.download.minecraft.net/09/09fc4bb8b59416d1bd941aa1f3cda0e58d8b1e38
ERROR Failed to download (400) [3377/3381]: http://resources.download.minecraft.net/ee/eed3b961158ebeae781e6c737ee55a1f5e8f6c9d
ERROR Failed to download (400) [3381/3381]: http://resources.download.minecraft.net/c1/c106e5ef000809049ce7d56e858898255cff9223
WARNING Some assets failed to download.
DEBUG Commiting all dirty configs

Configurable command line arguments for game

In some launchers in cli, on startup of minecraft, join automatically on a server specificated,
usually the flag is:

--server <ip>

and i searching this on the picomc but i dont find it :(

if dont exist this feature this is a feature issue

but if no this is a question directly :p

image

How to get forge working?

I got forge 1.12.2 from correct windows installer and when i replace both 1.12.2.jar and 1.12.2.json it doesnt work. The 1.12.2.json is being replaced. Is there a way to modify json or something to get it to work? On other note i got 1.18 development preview working by replacing 1.17 files with 1.18.

Add support for FTB modpacks

Currently you can successfully install modpacks from curseforge.
Some modpacks however are dropping support for curse and moving to the ftb launcher only instead.
(likely cause curse is not very nice to the devs)
Eg. see the note at the top of https://www.curseforge.com/minecraft/modpacks/ftb-interactions

Moved to FTB https://www.feed-the-beast.com/modpack/ftb_interactions
This site has also some nice stats https://ftb.neptunepowered.org/pack/ftb-interactions/

I did not really do the research whether some secret url can be mined out from the ftb site, which would have the same format as curse (or whether they require authentication).

If it is a pain to do, could you please leave at least some leads for me? I might consider opening a PR for it in the future..

Forge promotions_slim.json changed format and broke version selector

Traceback (most recent call last):
  File "/home/sammko/.local/bin/picomc", line 33, in <module>
    sys.exit(load_entry_point('picomc', 'console_scripts', 'picomc')())
  File "/home/sammko/src/picomc/picomc/__init__.py", line 18, in main
    picomc_cli()
  File "/usr/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  [Previous line repeated 1 more time]
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/sammko/src/picomc/picomc/mod/forge.py", line 333, in install_cli
    install(
  File "/home/sammko/src/picomc/picomc/mod/forge.py", line 231, in install
    game_version, forge_version, version = resolve_version(
  File "/home/sammko/src/picomc/picomc/mod/forge.py", line 115, in resolve_version
    game_version, forge_version = best_version_from_promos(promos, game_version)
  File "/home/sammko/src/picomc/picomc/mod/forge.py", line 81, in best_version_from_promos
    bestmcobj = max(promos, key=lambda obj: _version_as_tuple(obj["mcversion"]))
  File "/home/sammko/src/picomc/picomc/mod/forge.py", line 81, in <lambda>
    bestmcobj = max(promos, key=lambda obj: _version_as_tuple(obj["mcversion"]))
TypeError: string indices must be integers

modrinth support?

modrinth support would be nice, it has a well documented api and it would be cool to have the possibility to install texturepacks, modpacks, mods, shaders, etc all from the picomc cli

Error when installing forge

trying to install any version of forge with picomc returns a java error

INFO Launching instance: default
INFO Using version: 1.19.4-forge-45.2.0
INFO Using account: Nixietab
INFO Using java version: 21.0.2 (OpenJDK 64-Bit Server VM)
WARNING The version of Minecraft you are launching uses java 17 by default.
WARNING You may experience issues, especially with older versions of Minecraft.
INFO Checking libraries.
INFO Checking 3545 assets.
INFO Launching the game
PicoForgeWrapper: Missing artifact: client-1.19.4-20230314.122934-srg.jar
PicoForgeWrapper: Missing artifact: client-1.19.4-20230314.122934-slim.jar
PicoForgeWrapper: Missing artifact: client-1.19.4-20230314.122934-extra.jar
PicoForgeWrapper: Some artifacts were missing, running Forge installer
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at net.cavoj.picoforgewrapper.Main.main(Main.java:33)
Caused by: java.lang.NoSuchMethodError: 'boolean net.minecraftforge.installer.actions.PostProcessors.process(java.io.File, java.io.File, java.io.File, java.io.File)'
        at net.cavoj.picoforgewrapper.PicoClientInstall.runPico(PicoClientInstall.java:15)
        at net.cavoj.picoforgewrapper.Installer.ensure(Installer.java:49)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        ... 2 more

Picomc error during launch - missing positional arguments

Platform: MacOS

(base) ➜  ~ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
(base) ➜  ~ python -V
Python 3.7.2

The python is from anaconda.

Installed using pip install picomc

(base) ➜  ~ which pip
/usr/local/anaconda3/bin/pip
(base) ➜  ~ which picomc
/usr/local/anaconda3/bin/picomc
(base) ➜  ~ picomc config show
[default] java.path: java
[default] java.memory.min: 512M
[default] java.memory.max: 2G
[default] java.jvmargs: -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M

Trying to launch anything results in various errors:

(base) ➜  ~ picomc --debug play
DEBUG picomc, version 0.4.0
DEBUG Python 3.7.2
DEBUG Resolving default application root
DEBUG Using application directory: /Users/zajozor/Library/Application Support/picomc
DEBUG Loading Config from /Users/zajozor/Library/Application Support/picomc/accounts.json
DEBUG Commiting all dirty configs
Traceback (most recent call last):
  File "/usr/local/anaconda3/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/main.py", line 8, in main
    picomc_cli(obj=es)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
TypeError: play() missing 2 required positional arguments: 'am' and 'im'

and

(base) ➜  ~ picomc instance list
t
(base) ➜  ~ picomc --debug instance launch t
DEBUG picomc, version 0.4.0
DEBUG Python 3.7.2
DEBUG Resolving default application root
DEBUG Using application directory: /Users/zajozor/Library/Application Support/picomc
DEBUG Loading Config from /Users/zajozor/Library/Application Support/picomc/accounts.json
DEBUG Commiting all dirty configs
Traceback (most recent call last):
  File "/usr/local/anaconda3/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/main.py", line 8, in main
    picomc_cli(obj=es)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/instance.py", line 15, in inner
    return fn(*args, instance_name=sanitize_name(instance_name), **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
TypeError: launch() missing 1 required positional argument: 'im'

Let me know what am I doing wrong or what else can I provide!

Custom Arguments on launch?

OS: Arch Linux

is there any way to provide custom launch arguments, I'm on linux so I have a problem where when you press 2 keyboard keys together then the input is delayed, e.g: if I press W and D at the same time, my character moves like 2 seconds later. This was a problem I had already encountered before and have a fix for it but that would require specifying a custom lwjgl library path in the java arguments. Is there a way to do this is picomc? Also is there a formal list of configuration options or KEYS of instances that I could use?

Problems importing

I cant find a way to import or "build into" a python project when converted to EXE.
the files seem to be there but not usable for a script

Multiple java versions

Im using OpenJDK 16.0.1 and Minecraft version 1.12.2 doesn't work with it. I know i should switch to Java 1.8 for linux, but I need OpenJDK for other things. Is there a way to choose Java version to execute? If no, it would be great to add. Either from path env. variable or from direct path.

How to switch game directory?

I have an existing Minecraft directory. The default of picomc seems to be ~/.local/share/picomc/instances/default/minecraft. I could symlink that, but that's not a very user-friendly method and it's not instance-dependent. I've tried inserting a "dir" config into the instance, that did nothing. Is this not implemented?

Adding premium account via `picomc play` does not work

  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/cli/play.py", line 22, in play
    account = am.get_default()
  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/account.py", line 143, in get_default
    raise AccountError("Default account not configured.")
picomc.account.AccountError: Default account not configured.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sammko/.local/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/__init__.py", line 18, in main
    picomc_cli()
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/cli/play.py", line 32, in play
    account.authenticate(password)
  File "/home/sammko/.local/lib/python3.9/site-packages/picomc/account.py", line 99, in authenticate
    self.access_token, self.uuid, self.gname = self._am.yggdrasil.authenticate(
AttributeError: 'OnlineAccount' object has no attribute '_am'

Unhelpful error message when java is not installed on macos

macOS has a default java even when java is not installed. The javainfo process tries to get information out of it and naturally fails parsing the expected XML output.

INFO Using version: latest -> 1.19.3
INFO Using account: sammko
Traceback (most recent call last):
  File "/Users/sammko/.local/bin/picomc", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/__init__.py", line 18, in main
    picomc_cli()
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/cli/play.py", line 40, in play
    inst.launch(account, version, verify_hashes=verify)
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/instance.py", line 127, in launch
    java_info = assert_java(java, vobj.java_version)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/java/javainfo.py", line 84, in assert_java
    jinfo = get_java_info(java)
            ^^^^^^^^^^^^^^^^^^^
  File "/Users/sammko/.local/pipx/venvs/picomc/lib/python3.11/site-packages/picomc/java/javainfo.py", line 40, in get_java_info
    props = ElementTree.fromstring(xmlstr)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/[email protected]/3.11.0/Frameworks/Python.framework/Versions/3.11/lib/python3.11/xml/etree/ElementTree.py", line 1339, in XML
    return parser.close()
           ^^^^^^^^^^^^^^
xml.etree.ElementTree.ParseError: no element found: line 1, column 0

Curse modpack from a local file seems to be broken

disclaimer: Not urgent/important, i managed to get what i wanted to work eventually.

I believe that using picomc mod pack curse install with a path to a local file (instead of a url) might be broken.
(inserting a curse url works fine).

Link to the zip: https://github.com/thecodingchicken/Jimmys-Jams-omni-releases/raw/main/Omnifactory-dev-e3e6711-snapshot.zip

MultiMC can import the zip without a problem and I checked the contents so I believe the zip is fine.

Output:

➜  ~ picomc mod pack curse install Omnifactory-dev-e3e6711-snapshot.zip
Traceback (most recent call last):
  File "/usr/local/anaconda3/bin/picomc", line 8, in <module>
    sys.exit(main())
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/main.py", line 8, in main
    picomc_cli(obj=es)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  [Previous line repeated 1 more time]
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/cli/utils.py", line 16, in wrapper
    fn(x, *a, **kwa)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/mod/curse.py", line 239, in install_cli
    install_from_path(path, launcher, im, name)
  File "/usr/local/anaconda3/lib/python3.7/site-packages/picomc/mod/curse.py", line 205, in install_from_path
    with open(zipfile, "rb") as fd:
TypeError: expected str, bytes or os.PathLike object, not ZipFile

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.