Code Monkey home page Code Monkey logo

pacmc's People

Contributors

btwonion avatar f0xde avatar jakobkmar avatar mooziii avatar nik875 avatar r0yzer avatar rvveber 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  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  avatar

pacmc's Issues

Crash when installing Charmonium in 1.18.2 (https://modrinth.com/mod/charmonium)

Stacktrace :

                    Failed to deserialize the response to the following request: https://api.modrinth.com/api/v1/mod/charmonium/version
                    Error message: Unexpected JSON token at offset 839: Unexpected 'null' value instead of string literal
JSON input: .....endencies":[{"version_id":null,"project_id":"pOQTcQmj","depe.....
                    Please open an issue with the above error message at https://github.com/jakobkmar/pacmc/issues/new
                    
                    
                    Failed to deserialize the response to the following request: https://api.modrinth.com/api/v1/mod/bpii4Xsa/version
                    Error message: Unexpected JSON token at offset 839: Unexpected 'null' value instead of string literal
JSON input: .....endencies":[{"version_id":null,"project_id":"pOQTcQmj","depe.....
                    Please open an issue with the above error message at https://github.com/jakobkmar/pacmc/issues/new

pacmc crashes when trying to install the Charmonium mod in 1.18.2.

Build: Unable to delete directory 'packages'

I am trying to build this project on IntelliJ IDEA 2021.1.3 on Windows 11.

Unable to delete directory 'D:\files\src\pacmc\packages'
  Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory.
  - D:\files\src\pacmc\packages\aur\pacmc\.SRCINFO
  - D:\files\src\pacmc\packages\aur\pacmc
  - D:\files\src\pacmc\packages\aur

Error code 504 when updating mods in repository

"Please open an issue with the above error message" :

The mod curseforge/WorldEdit is up to date
The mod curseforge/Deepslate Instamine - Fabric/Forge is up to date
The mod curseforge/Fabric Language Kotlin is up to date
The mod curseforge/spark is outdated
The mod curseforge/Cloth API (Fabric) is up to date
The mod curseforge/Carpet is up to date
The mod curseforge/Simple Voice Chat is up to date
The mod curseforge/Carpet Extra is up to date
Got a Gateway Time-out answer (code 504) for the following request: https://addons-ecs.forgesvc.net/api/v2/addon/306612/files

[Feature Request] Allow multiple install arguments

image

As shown in the image, attempting to install multiple mods at once will throw an 'Extra Argument' error.

Currently, as somebody who does a lot of bulk installation as I migrate my server around different versions, I think this feature would be very handy as a time saver.

Sort of like how you can do this with pacman:

pacman -S base base-devel linux-zen vim vi xorg 

It doesn't seem like there's anything stopping this from being a feature, as extra forms of the install command are achieved using flags, instead of multiple arguments.

Update command doesn't update to newest version

It seems "update" command can't always find the newest version of the mod (at least for curseforge mods), for example:

I have version 3.4.1 of curseforge/357540 installed (1.18.1).
But the latest version is 3.4.2:
image

I suspect it might be because this version is marked as "beta". Unfortunately there is no way to select which release type should be installed.

False positive in dependency removal.

If a mod depending on FabricAPI is outdated, it gets removed before a new version will be downloaded.
That's ok but this causes pacmc to flag Fabric API as unneeded.
Removing the dependency Fabric API because it is no longer needed

Suggestion: move the dependency check to appear after Updating mods one and eventually run Deleting old files again to flush actually unneeded dependencies.

Curseforge: downloadUrl is null in file response

When i performed pacmc install entityculling a exception was thrown:
kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 406: Expected string literal but 'null' literal was found. Use 'coerceInputValues = true' in 'Json {} builder to coerce nulls to default values. JSON input: .....ownloadCount":0,"downloadUrl":null,"gameVersions":["1.16.3",..... at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24) at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:32) at kotlinx.serialization.json.internal.AbstractJsonLexer.fail(AbstractJsonLexer.kt:524) at kotlinx.serialization.json.internal.AbstractJsonLexer.unexpectedToken(AbstractJsonLexer.kt:202) at kotlinx.serialization.json.internal.StringJsonLexer.consumeNextToken(StringJsonLexer.kt:74) at kotlinx.serialization.json.internal.StringJsonLexer.consumeKeyString(StringJsonLexer.kt:85) at kotlinx.serialization.json.internal.AbstractJsonLexer.consumeString(AbstractJsonLexer.kt:310) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeString(StreamingJsonDecoder.kt:256) at kotlinx.serialization.encoding.AbstractDecoder.decodeStringElement(AbstractDecoder.kt:58) at net.axay.pacmc.repoapi.curseforge.model.File$$serializer.deserialize(File.kt:6) at net.axay.pacmc.repoapi.curseforge.model.File$$serializer.deserialize(File.kt:6) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:59) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:36) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70) at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535) at kotlinx.serialization.internal.ListLikeSerializer.readElement(CollectionSerializers.kt:80) at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51) at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36) at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:59) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:36) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70) at net.axay.pacmc.repoapi.curseforge.model.CurseforgeDataWrapper$$serializer.deserialize(CurseforgeDataWrapper.kt:5) at net.axay.pacmc.repoapi.curseforge.model.CurseforgeDataWrapper$$serializer.deserialize(CurseforgeDataWrapper.kt:5) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:59) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:36) at kotlinx.serialization.internal.NullableSerializer.deserialize(NullableSerializer.kt:30) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:59) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:36) at kotlinx.serialization.json.Json.decodeFromString(Json.kt:100) at net.axay.pacmc.repoapi.curseforge.CurseforgeApi$getProjectVersions$2$1$1.invokeSuspend(CurseforgeApi.kt:116) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

ConcurrentModificationException when changing version of archive

I ran pacmc archive version 1.18.2 fabric118 (fabric118 being the name of my archive) and got

Trying to change the version of the archive 'fabric118' to '1.18.2'

Changed the version in the database
Redownloading all mods in the archive for the new version...

Retrieving updated file data...
java.util.ConcurrentModificationException
        at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
        at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
        at net.axay.pacmc.commands.Refresh$refreshArchive$2$1$1.invokeSuspend(Refresh.kt:117)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:43)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:106)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
An error occured, Please open an issue with the above stack trace at https://github.com/jakobkmar/pacmc/issues/new

OS: Windows 11 Build 21H2

mod name in file name

Hi, I think it would be nice, if the filename of the .jar would contain the actual mod's name instead of a string of characters (for example pacmc_modrinth_indium.jar instead of pacmc_modrinth_Orvt0mRa_1ApUEVoW_0.jar.

Incompatible with Java 16 due to xodus-dnq

Hi, im getting this error when running pacmc list or pacmc install <mod>
Im on manjaro linux with java 16

Exception in thread "main" java.lang.ExceptionInInitializerError
	at javassist.util.proxy.DefineClassHelper.<clinit>(DefineClassHelper.java:216)
	at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:128)
	at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:552)
	at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:475)
	at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:444)
	at javassist.util.proxy.ProxyFactory.create(ProxyFactory.java:721)
	at kotlinx.dnq.util.XdHierarchyNode$naturalPersistentClassInstance$2.invoke(XdHierarchyNode.kt:96)
	at kotlinx.dnq.util.XdHierarchyNode$naturalPersistentClassInstance$2.invoke(XdHierarchyNode.kt:33)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at kotlinx.dnq.util.XdHierarchyNode.getNaturalPersistentClassInstance(XdHierarchyNode.kt)
	at kotlinx.dnq.util.DNQMetaDataUtilKt.initMetaData(DNQMetaDataUtil.kt:46)
	at net.axay.pacmc.storage.Xodus.<clinit>(Xodus.kt:28)
	at net.axay.pacmc.commands.Archive$List.run(Archive.kt:54)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:204)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:213)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:213)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:17)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:396)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:393)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:411)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:436)
	at net.axay.pacmc.ManagerKt.main(Manager.kt:10)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @5fb2de77
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at javassist.util.proxy.SecurityActions$3.run(SecurityActions.java:94)
	at javassist.util.proxy.SecurityActions$3.run(SecurityActions.java:90)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
	at javassist.util.proxy.SecurityActions.getMethodHandle(SecurityActions.java:89)
	at javassist.util.proxy.DefineClassHelper$SecuredPrivileged$2.getDefineClassMethodHandle(DefineClassHelper.java:143)
	at javassist.util.proxy.DefineClassHelper$SecuredPrivileged$2.<init>(DefineClassHelper.java:136)
	at javassist.util.proxy.DefineClassHelper$SecuredPrivileged.<clinit>(DefineClassHelper.java:134)
	... 22 more````

Platform independent PowerShell: unable to resolve the correct dataLocalDir

$ pacmc init
Exception in thread "main" java.lang.ExceptionInInitializerError
        at net.axay.pacmc.commands.Init$run$1.invokeSuspend(Init.kt:25)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: org.kodein.db.leveldb.LevelDBException: NotFound: D:\files\app\games\Minecraft\.minecraft\null\axay\pacmc\data\db1/LOCK: ?????????
        at org.kodein.db.leveldb.jni.Native.dbOpen(Native Method)
        at org.kodein.db.leveldb.jni.LevelDBJNI$Factory.open(LevelDBJNI.kt:29)
        at org.kodein.db.leveldb.jvm.LevelDBJvm.open(LevelDBJvm.kt)
        at org.kodein.db.impl.kv.AbstractKeyValueDBFactory.open(AbstractKeyValueDBFactory.kt:20)
        at org.kodein.db.impl.kv.AbstractKeyValueDBFactory.open(AbstractKeyValueDBFactory.kt:12)
        at org.kodein.db.impl.data.AbstractDataDBFactory.open(AbstractDataDBFactory.kt:20)
        at org.kodein.db.impl.data.AbstractDataDBFactory.open(AbstractDataDBFactory.kt:12)
        at org.kodein.db.impl.model.AbstractModelDBFactory.open(AbstractModelDBFactory.kt:29)
        at org.kodein.db.impl.model.AbstractModelDBFactory.open(AbstractModelDBFactory.kt:9)
        at org.kodein.db.impl.AbstractDBFactory.open(AbstractDBFactory.kt:25)
        at org.kodein.db.impl.AbstractDBFactory.open(AbstractDBFactory.kt:10)
        at org.kodein.db.impl.DefaultKt.open(default.kt:7)
        at net.axay.pacmc.storage.DatabaseKt.<clinit>(Database.kt:14)
        ... 7 more

Pacmc version:

$ scoop update pacmc
pacmc: 0.2.1 (latest version)

JDK version:

$ java --version
openjdk 16.0.1 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)

[Feature Request] Move archive location

It would be really nice to be able to move the location of an archive, including all the mods currently installed. For instance, you get a new hard drive and want to move it there, currently you have to delete and recreate the archive.

Show mod version

Would it be possible to see what version of the mod is available in the "repos" before installing it?
Ideally it would show with the search command when listing packages.
It would be also nice when listing already downloaded mods with list.

Additionally when using search. an indication if the mod is already installed would be realy nice too.

I'm gonna attach a screenshot as an example of how does it work with pacman.
Screenshot from 2021-12-12 15-57-52

Can't use Project ID to install mods

It seems the new version of pacmc doesn't support installing by Project ID:

$ pacmc install 394468
Resolving versions and dependencies...
[✓] resolved slugs
The project 394468 could not be found

Adding curseforge/ doesn't help. (394468 is a valid ID)
This worked previously.

If this feature is being dropped in new pacmc, README should be updated as it still mentions this method in the "Install a mod" section.

It would be nice if this was possible though. Example use case is migration from the old pacmc to the new one: I saved list of IDs from old mods directory and now would like to just pass those IDs to new pacmc.

Add --force flag to install command

Hello, first off I want to say I am impressed and extremely happy with this project.
I am setting up a new fabric server for my friends and I, and am planning to use pacmc to automate the mod-updating process at every morning restart. One small issue, is that for mods I know work for 1.18.1, but just haven't updated on curseforge or modrinth to say that they do, there is no way for me to install them with pacmc. My suggestion is adding a --force or similar flag to the install command, and possibly issuing a warning to the user about reliability when using it.

Another small request while I'm here is to add support for mods from github repos, like carpetmod for example.

Other than that, keep up the amazing work, and have a wonderful holiday!

Allow user to change default archive

I'd like to set my default archive to $HOME/.local/share/multimc/instances/1.18.2/.minecraft, so that when I run pacmc install sodium the jar will automatically be placed in $HOME/.local/share/multimc/instances/1.18.2/.minecraft/mods. I am unsure how to do this in pacmc's current state.

I believe this would require some kind of change to line 59 in pacmc/pacmc-cli/src/main/kotlin/net/axay/pacmc/commands/Install.kt:

private val archiveName by option("-a", "--archive", help = "The archive where the mod should be installed").default(".minecraft")

Modrinth support

  • maybe make it an optional repository (just for the search command, not for the direct installation, in that case it should be enabled by default)
  • always use it as a fallback if curseforge can't be reached

This requires an intermediate representation of file and project responses - because the two APIs are different.

Dependencies installed twice if modrinth/curseforge mods are mixed together

The troublesome mod from #41 is now available from Modrinth. Installing it gives:

+ add modrinth/entityculling (1.5.1-fabric-1.18)
+ add modrinth/fabric-api (0.53.4+1.18.2) (dependency)

Which is kinda correct but not really, because I already have fabric-api installed from curseforge as a dependency of other mods from there. I think it might not even be possible to accurately say if two mods from different sources are in fact the same mod. (Well, mod name will be most likely the same, but you never know)

Moreover, pacmc doesn't allow to uninstall this additional mod afterwards, as it's a required dependency.

This is somewhat related to #20.
Pacmc now asks if the list of the mods to be installed is correct. If it asked after resolving dependencies it would be possible to select which mods from the list should actually be installed. (That would of course require additional feature to select mods, now you can only answer y/n)

Unexpected JSON token at offset 867: Unexpected 'null' value instead of string literal

When installing a mod from modrinth, i get this error

Failed to deserialize the response to the following request: https://api.modrinth.com/api/v1/mod/aXf2OSFU/version

Unexpected JSON token at offset 867: Unexpected 'null' value instead of string literalJSON input: .....endencies":[{"version_id":null,"project_id":"mOgUt4GM","depe.....

(in this case i used pacmc install "ok zoomer")

Typo in README for paru install instructions.

The instructions in the README to install pacmc using paru are incorrect and will not work. paru install pacmc will search the Arch and AUR repositories for a package with the keywords "install" and "pacmc", of which there are none. The correct command would be either paru pacmc, which would interactively search and install pacmc with similar behavior to pacmc itself, or paru -S pacmc which would install pacmc directly similar to how pacmc will install mods using a mod ID.

Add custom error message for timeouts

Got a timeout installing Presence Footsteps 1.4.0

❯ pacmc install Presence
Searching for installable mods matching 'Presence'

1) modrinth/Presence Footsteps [rcTfTZr3] by Sollace
  ..An Overly complicated Sound Mod...
2) modrinth/Fabripresence [vIWqtF8n] by arencos not available for 1.18.1
  Configurable Discord Rich Presence for Fabric
3) modrinth/MoreCommands [duhqx1QT] by planetteamspeakk not available for 1.18.1
  Adds 79 commands, many tweaks, Discord Rich Presence support, the ability to sit on stairs, really cool RAINBOWS and more!
4) curseforge/Rich Presence Mod [509434] by hotlava02 not available for 1.18.1
  Highly customizable fabric mod to show rich presence in Discord with Minecraft info.
5) curseforge/Presence Footsteps [334259] by S0llace
  An overly complicated sound mod

Which mod do you want to install? (1, 2, 3, 4, 5) 1

Installing the mod at /home/cameron/.minecraft/mods

Downloading modrinth/Presence Footsteps 1.4.0
kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 15000 ms
	at kotlinx.coroutines.TimeoutKt.TimeoutCancellationException(Timeout.kt:191)
	at kotlinx.coroutines.TimeoutCoroutine.run(Timeout.kt:161)
	at kotlinx.coroutines.EventLoopImplBase$DelayedRunnableTask.run(EventLoop.common.kt:507)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
	at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:69)
	at java.base/java.lang.Thread.run(Thread.java:833)
An error occured, Please open an issue with the above stack trace at https://github.com/jakobkmar/pacmc/issues/new
❯ pacmc debug
pacmc version 0.4.2

dataLocalDir: /home/cameron/.local/share/pacmc
databaseDir: /home/cameron/.local/share/pacmc/db1
databaseDir (canonical): /home/cameron/.local/share/pacmc/db1

Your OS: LINUX
Java version: 17.0.1+12
❯ pacmc list
The archive '.minecraft' at /home/cameron/.minecraft/mods contains the following mods:

 → Illuminations 🔥 [curseforge/292908]
    A client mod that adds fireflies and various glow-in-the-dark ambient particles to your world.
 → Physics Mod [curseforge/442735]
    Adds physics to Mobs and Blocks!
 → Farsight[Forge/Fabric] [curseforge/495693]
    See far chunks on clientside, even if the server has low view distance
 → Effective 💦 [curseforge/556381]
    A client-side mod adding ambient and environmental interaction effects to enhance immersion.
 → Sodium [modrinth/AANobbMI]
    Modern rendering engine and client-side optimization mod for Minecraft
 → Iris Shaders [modrinth/YL57xq9U]
    A modern shaders mod for Minecraft intended to be compatible with existing OptiFine shader packs
 → Presence Footsteps [modrinth/rcTfTZr3]
    ..An Overly complicated Sound Mod...
 → LambDynamicLights [modrinth/yBW8D80W]
    A dynamic lights mod for Fabric.

 → Fabric API [curseforge/306612] (dependency)
    Core API library for the Fabric toolchain

[Feature Request] Add option to disable dependency management

Sometimes the dependencies of mods are just wrong. For example the mod Syncmatica has Malilib and Litematica as dependencies, but both of those are not required on a server just like the setup instructions say. I'm sure there are many more cases of mods dependencies being wrong with mods that are for both the client and the server.

The optimal solution for this would be adding an option to disable dependency management per mod. Just having an option to disable dependency management completely would be a really good solution as well. I think that managing mods' dependencies manually is really easy, because most mods have 0-2 dependencies.

Edit: Removed paragraph about my dumb old way to manage server and client mods.

Support Linux ARM64

Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/elvispereira/.cache/Kodein-DB/0.9.0-beta/libkodein-leveldb-jni.so: /home/elvispereira/.cache/Kodein-DB/0.9.0-beta/libkodein-leveldb-jni.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64 .so on a AARCH64 platform)
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:384)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:228)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:170)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
        at java.base/java.lang.Runtime.load0(Runtime.java:755)
        at java.base/java.lang.System.load(System.java:1953)
        at org.kodein.db.leveldb.jvm.AbstractLevelDBJvmLoader.load(AbstractLevelDBJvmLoader.kt:78)
        at org.kodein.db.leveldb.jvm.LevelDBJvm.<clinit>(LevelDBJvm.kt:29)
        at org.kodein.db.impl.kv.KeyValueDBJvm.getLdbFactory(KeyValueDBJvm.kt:11)
        at org.kodein.db.impl.kv.AbstractKeyValueDBFactory.open(AbstractKeyValueDBFactory.kt:20)
        at org.kodein.db.impl.kv.AbstractKeyValueDBFactory.open(AbstractKeyValueDBFactory.kt:12)
        at org.kodein.db.impl.data.AbstractDataDBFactory.open(AbstractDataDBFactory.kt:20)
        at org.kodein.db.impl.data.AbstractDataDBFactory.open(AbstractDataDBFactory.kt:12)
        at org.kodein.db.impl.model.AbstractModelDBFactory.open(AbstractModelDBFactory.kt:29)
        at org.kodein.db.impl.model.AbstractModelDBFactory.open(AbstractModelDBFactory.kt:9)
        at org.kodein.db.impl.AbstractDBFactory.open(AbstractDBFactory.kt:26)
        at org.kodein.db.impl.AbstractDBFactory.open(AbstractDBFactory.kt:10)
        at org.kodein.db.impl.DefaultKt.open(default.kt:7)
        at net.axay.pacmc.storage.DatabaseKt.<clinit>(Database.kt:14)
        at net.axay.pacmc.commands.Init$run$1.invokeSuspend(Init.kt:25)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

That's the result of using pacmc init version 0.4.2 on Ubuntu 20.04.3 (aarch64)

JDK

java -version
openjdk version "17" 2021-09-14 LTS
OpenJDK Runtime Environment Zulu17.28+13-CA (build 17+35-LTS)
OpenJDK 64-Bit Server VM Zulu17.28+13-CA (build 17+35-LTS, mixed mode)

pacmc list command not working as expected when not using default archive

My archive name: "client"
Subcommand in question: "list"
Expectation:

Upon specifying archive to list the contents of, receive a list of contents of archive. basic. simple. intuitive.

What happens instead:

> pacmc list client
Usage: pacmc list [OPTIONS]

Error: Got unexpected extra argument (client)
> pacmc list
The archive '.minecraft' contains the following content:
The given archive '.minecraft' does not exist
Try running pacmc archive init to automatically detect the '.minecraft' folder.

Allow installation of mods in a yay-style interface

In yay, all the user has to do to install a package is type yay [package], then select one of the packages listed by typing its respective number.

For example:

yay minecraft

yields:

image

Notice: the first search result is displayed last, at the bottom.

In the current version of pacmc, users must first find the mod ID of the mod they are looking for with pacmc search [mod-name], then actually install it by running pacmc install [mod-id].

If users could simply install a mod in one step with something like pacmc get [mod-name], it would make pacmc much easier to use.

Is this already planned? I noticed the markup for the output of pacmc search does look very similar to yay's output.

icons

original icon options (rough):
pacman color mc v1 1
pacman frosty
pacman minecraft
pacman lighten mc
pacman hue mc

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.