Giter Site home page Giter Site logo

voodoo's People

Contributors

alexbobp avatar nikkyai avatar realityanomaly 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

voodoo's Issues

Preferred Release Type

Is there is any way to tell Voodoo to download "Preferred Release Type" of mods? I mean if i want to have Release versions of mods, but some mods still in Beta or Alpha and Voodoo seems like throw error if it can't find specified type. For example Twitch Launcher have "Preferred Release Type" option and it will download exactly specified release type, but if mod don't have that release type, it will download Beta or Alpha. Same thing applies to mod dependencies. I mean it seems like i can actually use "curseReleaseTypes: [...]" to specify release type for every mod, but this will require to check every mod on Curse and it will be a problem if i have a modpack with a lot of mods.

curse dependency resolution should inherit traits from parent entry

example:

stellar sky requires stellar API, but when bundled normally, minecraft complains and won't launch, since the latest version of stellar API is ahead of the latest version of stellar sky

theoretically, if I were to grab the release versions of both, it would all be fine, but no matter how i do it, the dependency version of stellar API seems to overwrite the manually added version, and it still grabs the latest (alpha) version

I suppose this also brings up another issue too: that manually added mods should overwrite automatically added mods, so if stellar API is added both as an automatic dependency and manually, the manual addition should take precedent

Tome

anything that voodoo generates that is informational.. and human readable

  • credits
    • missing fields for: curse icon, license
  • changelogs
    • diff 2 fully resolved modpacks
    • use mustache templating
  • generate dependency graph

(rewrite) timeouts on curse.nikky.moe/graphql

[pea@pea stoneforge]$ voodoo build stoneforge.pack.hjson -o stoneforge.lock.hjson --updateAll
13:41:53.319 [main] INFO voodoo.util.Directories - Using XDG directories
13:41:53.361 [main] INFO voodoo.Bootstrap - Downloading the voodoo binary...
13:42:07.466 [main] INFO voodoo.Bootstrap - lastSuccessfulBuild: 127
13:42:07.466 [main] DEBUG voodoo.Bootstrap - looking for ^[Vv]oodoo(-[^-]*)?(?!-fat)\.jar$
13:42:07.467 [main] DEBUG voodoo.Bootstrap - bootstrap-hex-127.jar
13:42:07.467 [main] DEBUG voodoo.Bootstrap - bootstrap-voodoo-127.jar
13:42:07.467 [main] DEBUG voodoo.Bootstrap - voodoo-127.jar
13:42:07.467 [main] INFO voodoo.Bootstrap - Loaded /home/pea/.cache/voodoo/voodoo-bootstrap/elytra_Voodoo_rewrite/voodoo-127.jar
13:42:07.468 [main] DEBUG voodoo.Bootstrap - running "/usr/lib/java/openjdk8/jre/bin/java" "-jar" "/home/pea/.cache/voodoo/voodoo-bootstrap/elytra_Voodoo_rewrite/voodoo-127.jar" "build" "stoneforge.pack.hjson" "-o" "stoneforge.lock.hjson" "--updateAll"
13:42:07.691 [main] INFO voodoo.util.Directories - Using XDG directories
13:42:07.715 [main] INFO voodoo.util.Directories - Using XDG directories
13:42:07.717 [main] INFO voodoo.util.Directories - Using XDG directories
13:42:07.718 [main] INFO voodoo.util.Directories - Using XDG directories
13:42:07.718 [main] INFO voodoo.util.Directories - Using XDG directories
13:42:07.719 [main] INFO voodoo.util.Directories - Using XDG directories
13:42:07.743 [main] INFO voodoo.Voodoo - build, stoneforge.pack.hjson, -o, stoneforge.lock.hjson, --updateAll
13:42:07.836 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: SwingThroughGrass,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.845 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: FastWorkbench,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.846 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Sound Filters",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.846 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Charset Storage - Barrels",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.847 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Passable Leaves",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.847 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: FastFurnace,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.848 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Aquaculture,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.848 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Wearable Backpacks",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.849 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Better Foliage",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.849 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Serene Seasons",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.850 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Stellar Sky",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    RELEASE
  ]
}
13:42:07.851 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Dynamic Trees",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.851 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: VanillaFix,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.852 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: ConnectedTexturesMod,
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.852 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Dynamic Surroundings",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.852 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Better With Mods",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.856 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: JustEnoughIDs,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.856 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Familiar Fauna",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.857 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Quark,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.857 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Streams,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.858 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Bamboozled,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.858 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "FoamFix for Minecraft",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.858 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Proportional Destruction Particles",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.859 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Stellar API",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    RELEASE
  ]
}
13:42:07.859 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: BetterFps,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.860 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Traverse,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.860 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Fragile Glass and Thin Ice",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.861 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Repose,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.861 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Ore Stone Variants",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.862 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Hardcore Darkness",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.862 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Corpse Complex",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.863 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Dynamic Trees - Traverse Compat",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.864 [main] INFO voodoo.Builder - id: SwingThroughGrass entry: Entry(provider=CURSE, id=SwingThroughGrass, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: FastWorkbench entry: Entry(provider=CURSE, id=FastWorkbench, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Sound Filters entry: Entry(provider=CURSE, id=Sound Filters, name=, folder=mods, comment=, description=, feature=null, side=CLIENT, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Charset Storage - Barrels entry: Entry(provider=CURSE, id=Charset Storage - Barrels, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Passable Leaves entry: Entry(provider=CURSE, id=Passable Leaves, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: FastFurnace entry: Entry(provider=CURSE, id=FastFurnace, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Aquaculture entry: Entry(provider=CURSE, id=Aquaculture, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Wearable Backpacks entry: Entry(provider=CURSE, id=Wearable Backpacks, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Better Foliage entry: Entry(provider=CURSE, id=Better Foliage, name=, folder=mods, comment=, description=, feature=null, side=CLIENT, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Serene Seasons entry: Entry(provider=CURSE, id=Serene Seasons, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.864 [main] INFO voodoo.Builder - id: Stellar Sky entry: Entry(provider=CURSE, id=Stellar Sky, name=, folder=mods, comment=, description=, feature=null, side=CLIENT, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: Dynamic Trees entry: Entry(provider=CURSE, id=Dynamic Trees, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: VanillaFix entry: Entry(provider=CURSE, id=VanillaFix, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: ConnectedTexturesMod entry: Entry(provider=CURSE, id=ConnectedTexturesMod, name=, folder=mods, comment=, description=, feature=null, side=CLIENT, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: Dynamic Surroundings entry: Entry(provider=CURSE, id=Dynamic Surroundings, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: Better With Mods entry: Entry(provider=CURSE, id=Better With Mods, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: JustEnoughIDs entry: Entry(provider=CURSE, id=JustEnoughIDs, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: Familiar Fauna entry: Entry(provider=CURSE, id=Familiar Fauna, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: Quark entry: Entry(provider=CURSE, id=Quark, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.865 [main] INFO voodoo.Builder - id: Streams entry: Entry(provider=CURSE, id=Streams, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Bamboozled entry: Entry(provider=CURSE, id=Bamboozled, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: FoamFix for Minecraft entry: Entry(provider=CURSE, id=FoamFix for Minecraft, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Proportional Destruction Particles entry: Entry(provider=CURSE, id=Proportional Destruction Particles, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Stellar API entry: Entry(provider=CURSE, id=Stellar API, name=, folder=mods, comment=, description=, feature=null, side=CLIENT, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: BetterFps entry: Entry(provider=CURSE, id=BetterFps, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Traverse entry: Entry(provider=CURSE, id=Traverse, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Fragile Glass and Thin Ice entry: Entry(provider=CURSE, id=Fragile Glass and Thin Ice, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Repose entry: Entry(provider=CURSE, id=Repose, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.866 [main] INFO voodoo.Builder - id: Ore Stone Variants entry: Entry(provider=CURSE, id=Ore Stone Variants, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.867 [main] INFO voodoo.Builder - id: Hardcore Darkness entry: Entry(provider=CURSE, id=Hardcore Darkness, name=, folder=mods, comment=, description=, feature=null, side=CLIENT, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.867 [main] INFO voodoo.Builder - id: Corpse Complex entry: Entry(provider=CURSE, id=Corpse Complex, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.867 [main] INFO voodoo.Builder - id: Dynamic Trees - Traverse Compat entry: Entry(provider=CURSE, id=Dynamic Trees - Traverse Compat, name=, folder=mods, comment=, description=, feature=null, side=BOTH, websiteUrl=, dependencies={}, replaceDependencies={}, packageType=MOD, transient=false, version=, fileName=null, fileNameRegex=.*(?<!-sources\.jar)(?<!-api\.jar)(?<!-deobf\.jar)(?<!-lib\.jar)(?<!-slim\.jar)$, validMcVersions=[1.12, 1.12.2], curseMetaUrl=https://curse.nikky.moe/api, curseReleaseTypes=[BETA, ALPHA, RELEASE], curseOptionalDependencies=false, curseProjectID=-1, curseFileID=-1, url=, useUrlTxt=true, jenkinsUrl=, job=, buildNumber=-1, fileSrc=, updateJson=, updateChannel=RECOMMENDED, template=)
13:42:07.871 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: SwingThroughGrass,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.872 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: FastWorkbench,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.872 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Sound Filters",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.873 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Charset Storage - Barrels",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.873 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Passable Leaves",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.873 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: FastFurnace,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.874 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Aquaculture,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.874 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Wearable Backpacks",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.874 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Better Foliage",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.875 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Serene Seasons",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.875 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Stellar Sky",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    RELEASE
  ]
}
13:42:07.876 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Dynamic Trees",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.876 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: VanillaFix,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.877 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: ConnectedTexturesMod,
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.877 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Dynamic Surroundings",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.878 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Better With Mods",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.878 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: JustEnoughIDs,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.879 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Familiar Fauna",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.879 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Quark,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.879 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Streams,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.880 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Bamboozled,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.880 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "FoamFix for Minecraft",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.881 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Proportional Destruction Particles",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.881 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Stellar API",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    RELEASE
  ]
}
13:42:07.882 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: BetterFps,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.882 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Traverse,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.882 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Fragile Glass and Thin Ice",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.883 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: Repose,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.883 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Ore Stone Variants",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.884 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Hardcore Darkness",
  side: CLIENT,
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.884 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Corpse Complex",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.884 [main] INFO voodoo.data.flat.Entry - loading: {
  provider: CURSE,
  id: "Dynamic Trees - Traverse Compat",
  validMcVersions: [
    1.12,
    1.12.2
  ],
  curseReleaseTypes: [
    BETA,
    ALPHA,
    RELEASE
  ]
}
13:42:07.910 [main] INFO voodoo.builder.Resolve - unresolved: [SwingThroughGrass, FastWorkbench, Sound Filters, Charset Storage - Barrels, Passable Leaves, FastFurnace, Aquaculture, Wearable Backpacks, Better Foliage, Serene Seasons, Stellar Sky, Dynamic Trees, VanillaFix, ConnectedTexturesMod, Dynamic Surroundings, Better With Mods, JustEnoughIDs, Familiar Fauna, Quark, Streams, Bamboozled, FoamFix for Minecraft, Proportional Destruction Particles, Stellar API, BetterFps, Traverse, Fragile Glass and Thin Ice, Repose, Ore Stone Variants, Hardcore Darkness, Corpse Complex, Dynamic Trees - Traverse Compat]
13:42:07.919 [main] INFO voodoo.builder.Resolve - started job resolve SwingThroughGrass
13:42:07.923 [pool-1] INFO voodoo.builder.Resolve - resolving: SwingThroughGrass
13:42:07.997 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:08.034 [main] INFO voodoo.builder.Resolve - started job resolve FastWorkbench
13:42:08.034 [pool-2] INFO voodoo.builder.Resolve - resolving: FastWorkbench
13:42:08.136 [main] INFO voodoo.builder.Resolve - started job resolve Sound Filters
13:42:08.136 [pool-3] INFO voodoo.builder.Resolve - resolving: Sound Filters
13:42:08.239 [main] INFO voodoo.builder.Resolve - started job resolve Charset Storage - Barrels
13:42:08.239 [pool-4] INFO voodoo.builder.Resolve - resolving: Charset Storage - Barrels
13:42:08.348 [main] INFO voodoo.builder.Resolve - started job resolve Passable Leaves
13:42:08.348 [pool-5] INFO voodoo.builder.Resolve - resolving: Passable Leaves
13:42:08.449 [main] INFO voodoo.builder.Resolve - started job resolve FastFurnace
13:42:08.552 [main] INFO voodoo.builder.Resolve - started job resolve Aquaculture
13:42:08.656 [main] INFO voodoo.builder.Resolve - started job resolve Wearable Backpacks
13:42:08.759 [main] INFO voodoo.builder.Resolve - started job resolve Better Foliage
13:42:08.862 [main] INFO voodoo.builder.Resolve - started job resolve Serene Seasons
13:42:08.966 [main] INFO voodoo.builder.Resolve - started job resolve Stellar Sky
13:42:09.069 [main] INFO voodoo.builder.Resolve - started job resolve Dynamic Trees
13:42:09.172 [main] INFO voodoo.builder.Resolve - started job resolve VanillaFix
13:42:09.276 [main] INFO voodoo.builder.Resolve - started job resolve ConnectedTexturesMod
13:42:09.379 [main] INFO voodoo.builder.Resolve - started job resolve Dynamic Surroundings
13:42:09.482 [main] INFO voodoo.builder.Resolve - started job resolve Better With Mods
13:42:09.586 [main] INFO voodoo.builder.Resolve - started job resolve JustEnoughIDs
13:42:09.689 [main] INFO voodoo.builder.Resolve - started job resolve Familiar Fauna
13:42:09.793 [main] INFO voodoo.builder.Resolve - started job resolve Quark
13:42:09.896 [main] INFO voodoo.builder.Resolve - started job resolve Streams
13:42:09.999 [main] INFO voodoo.builder.Resolve - started job resolve Bamboozled
13:42:10.103 [main] INFO voodoo.builder.Resolve - started job resolve FoamFix for Minecraft
13:42:10.206 [main] INFO voodoo.builder.Resolve - started job resolve Proportional Destruction Particles
13:42:10.309 [main] INFO voodoo.builder.Resolve - started job resolve Stellar API
13:42:10.412 [main] INFO voodoo.builder.Resolve - started job resolve BetterFps
13:42:10.516 [main] INFO voodoo.builder.Resolve - started job resolve Traverse
13:42:10.619 [main] INFO voodoo.builder.Resolve - started job resolve Fragile Glass and Thin Ice
13:42:10.722 [main] INFO voodoo.builder.Resolve - started job resolve Repose
13:42:10.826 [main] INFO voodoo.builder.Resolve - started job resolve Ore Stone Variants
13:42:10.929 [main] INFO voodoo.builder.Resolve - started job resolve Hardcore Darkness
13:42:11.032 [main] INFO voodoo.builder.Resolve - started job resolve Corpse Complex
13:42:11.136 [main] INFO voodoo.builder.Resolve - started job resolve Dynamic Trees - Traverse Compat
13:42:20.804 [pool-2] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.804 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.805 [pool-3] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.807 [pool-1] INFO voodoo.builder.Resolve - resolving: FastFurnace
13:42:20.807 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.807 [pool-3] INFO voodoo.builder.Resolve - resolving: Aquaculture
13:42:20.807 [pool-3] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.808 [pool-3] INFO voodoo.builder.Resolve - resolving: Wearable Backpacks
13:42:20.808 [pool-3] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.811 [pool-4] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.812 [pool-5] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.812 [pool-1] INFO voodoo.builder.Resolve - resolving: Better Foliage
13:42:20.812 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.812 [pool-2] INFO voodoo.builder.Resolve - resolving: Serene Seasons
13:42:20.812 [pool-2] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.813 [pool-1] INFO voodoo.builder.Resolve - resolving: VanillaFix
13:42:20.813 [pool-2] INFO voodoo.builder.Resolve - resolving: Dynamic Trees
13:42:20.813 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.813 [pool-2] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.813 [pool-5] INFO voodoo.builder.Resolve - resolving: Stellar Sky
13:42:20.813 [pool-5] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.814 [pool-5] INFO voodoo.builder.Resolve - resolving: ConnectedTexturesMod
13:42:20.814 [pool-5] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.817 [pool-4] INFO voodoo.builder.Resolve - resolving: Dynamic Surroundings
13:42:20.817 [pool-3] INFO voodoo.builder.Resolve - resolving: Better With Mods
13:42:20.817 [pool-3] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.817 [pool-4] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.819 [pool-4] INFO voodoo.builder.Resolve - resolving: JustEnoughIDs
13:42:20.819 [pool-4] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.819 [pool-5] INFO voodoo.builder.Resolve - resolving: Familiar Fauna
13:42:20.819 [pool-5] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.820 [pool-2] INFO voodoo.builder.Resolve - resolving: Quark
13:42:20.820 [pool-2] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.824 [pool-5] INFO voodoo.builder.Resolve - resolving: Streams
13:42:20.824 [pool-5] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.824 [pool-4] INFO voodoo.builder.Resolve - resolving: Bamboozled
13:42:20.824 [pool-4] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.825 [pool-3] INFO voodoo.builder.Resolve - resolving: FoamFix for Minecraft
13:42:20.825 [pool-3] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.825 [pool-5] INFO voodoo.builder.Resolve - resolving: Proportional Destruction Particles
13:42:20.825 [pool-5] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.827 [pool-1] INFO voodoo.builder.Resolve - resolving: Stellar API
13:42:20.827 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.828 [pool-1] INFO voodoo.builder.Resolve - resolving: BetterFps
13:42:20.828 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.829 [pool-1] INFO voodoo.builder.Resolve - resolving: Traverse
13:42:20.829 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.830 [pool-1] INFO voodoo.builder.Resolve - resolving: Fragile Glass and Thin Ice
13:42:20.830 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.831 [pool-1] INFO voodoo.builder.Resolve - resolving: Repose
13:42:20.831 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.832 [pool-1] INFO voodoo.builder.Resolve - resolving: Ore Stone Variants
13:42:20.832 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.833 [pool-1] INFO voodoo.builder.Resolve - resolving: Hardcore Darkness
13:42:20.833 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.834 [pool-1] INFO voodoo.builder.Resolve - resolving: Corpse Complex
13:42:20.834 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:42:20.835 [pool-1] INFO voodoo.builder.Resolve - resolving: Dynamic Trees - Traverse Compat
13:42:20.835 [pool-1] DEBUG voodoo.curse.CurseClient - post https://curse.nikky.moe/graphql
13:43:04.281 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.281 [pool-2] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.282 [pool-2] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.283 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.283 [pool-1] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.284 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.285 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.284 [pool-4] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.286 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.289 [pool-2] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.289 [pool-1] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.289 [pool-3] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.290 [pool-4] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.290 [pool-3] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.290 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.291 [pool-2] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.291 [pool-1] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.293 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.293 [pool-3] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.293 [pool-4] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.294 [pool-2] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.294 [pool-4] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.294 [pool-1] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.294 [pool-5] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.294 [pool-3] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
13:43:04.294 [pool-4] ERROR voodoo.curse.CurseClient - url: https://curse.nikky.moe/graphql
io.ktor.client.engine.cio.ConnectException: Connect timed out
  at io.ktor.client.engine.cio.Endpoint.connect(Endpoint.kt:189)
  at io.ktor.client.engine.cio.Endpoint$connect$1.doResume(Endpoint.kt)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resume(CoroutineImpl.kt:42)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resumeWithException(CoroutineImpl.kt:47)
  at kotlinx.coroutines.experimental.ResumeModeKt.resumeUninterceptedWithExceptionMode(ResumeMode.kt:56)
  at kotlinx.coroutines.experimental.TimeoutCoroutine.onCompletionInternal$kotlinx_coroutines_core(Scheduled.kt:87)
  at kotlinx.coroutines.experimental.JobSupport.completeStateFinalization(JobSupport.kt:307)
  at kotlinx.coroutines.experimental.JobSupport.tryFinalizeStateActually(JobSupport.kt:265)
  at kotlinx.coroutines.experimental.JobSupport.tryFinalizeCancellingState(JobSupport.kt:189)
  at kotlinx.coroutines.experimental.JobSupport.tryFinalizeState(JobSupport.kt:158)
  at kotlinx.coroutines.experimental.JobSupport.makeCompletingInternal(JobSupport.kt:684)
  at kotlinx.coroutines.experimental.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:668)
  at kotlinx.coroutines.experimental.AbstractCoroutine.resumeWithException(AbstractCoroutine.kt:112)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resumeWithException(CoroutineImpl.kt:47)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resumeWithException(CoroutineImpl.kt:47)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resumeWithException(CoroutineImpl.kt:47)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resumeWithException(CoroutineImpl.kt:47)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resumeWithException(CoroutineImpl.kt:47)
  at kotlinx.coroutines.experimental.DispatchedTask$DefaultImpls.run(Dispatched.kt:143)
  at kotlinx.coroutines.experimental.AbstractContinuation.run(AbstractContinuation.kt:19)
  at io.ktor.network.util.IOCoroutineDispatcher$IODispatchedTask.run(IOCoroutineDispatcher.kt)
  at io.ktor.network.util.IOCoroutineDispatcher$IOThread$run$1.doResume(IOCoroutineDispatcher.kt:73)
  at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resume(CoroutineImpl.kt:42)
  at kotlinx.coroutines.experimental.DispatchedTask$DefaultImpls.run(Dispatched.kt:149)
  at kotlinx.coroutines.experimental.DispatchedContinuation.run(Dispatched.kt:13)
  at kotlinx.coroutines.experimental.EventLoopBase.processNextEvent(EventLoop.kt:140)
  at kotlinx.coroutines.experimental.BlockingCoroutine.joinBlocking(Builders.kt:70)
  at kotlinx.coroutines.experimental.BuildersKt__BuildersKt.runBlocking(Builders.kt:46)
  at kotlinx.coroutines.experimental.BuildersKt.runBlocking(Unknown Source)
  at io.ktor.network.util.IOCoroutineDispatcher$IOThread.run(IOCoroutineDispatcher.kt:68)
  Suppressed: io.ktor.client.engine.cio.ConnectException: Connect timed out
    ... 30 more
  Suppressed: io.ktor.client.engine.cio.ConnectException: Connect timed out
    ... 30 more
[pea@pea stoneforge]$

maybe should be in NikkyAI/CurseProxy, not sure, but I didn't see the graphql API documented there so i went for here instead, tell me if it needs moving

EDIT: accidentally pasted more than i meant to, cleaned up

Curse Export

create modpacks that can be uploaded to curseforge / downloaded by curse and twitch client

  • figure out how to handle optional features
  • can you upload modpacks without the curse launcher ?

"Unresolved reference: +" and "Unresolved reference: group"

I made a repo now: HardcoreBytes @ addb827

Command run:

./gradlew hardcorebytes_build

Full log: voodoo.log

e: /home/copygirl/projects/minecraft/Hardcore Bytes/packs/hardcorebytes.voodoo.kts: (75, 5): Unresolved reference: group
ScriptDiagnostic(message=Unresolved reference: +, severity=ERROR, sourcePath=/home/copygirl/projects/minecraft/Hardcore Bytes/packs/hardcorebytes.voodoo.kts, location=Location(start=Position(line=82, col=9, absolutePos=null), end=null), exception=null)
e: /home/copygirl/projects/minecraft/Hardcore Bytes/packs/hardcorebytes.voodoo.kts: (82, 9): Unresolved reference: +
ScriptDiagnostic(message=Unresolved reference: +, severity=ERROR, sourcePath=/home/copygirl/projects/minecraft/Hardcore Bytes/packs/hardcorebytes.voodoo.kts, location=Location(start=Position(line=83, col=9, absolutePos=null), end=null), exception=null)

provider: SOURCE

compile mods from source

example

provider: SOURCE
git: https://github.com/elytra/MatterLink.git
commit/branch: master # or commit hash / tag
command: gradlew setupCiWorkspace clean build
archive: 'build/libs/*.jar'

will clone the repo, run the command and then copy the result, basically like jenkins

figure out a way to make sure to only grab the mod and not the sources, api or other unwanted binaries
maybe error when there is multiple files matching the regex

requires: git library and calling gradlew

Redesign

goal is to get rid of monumental flat entry lists

keeping the nested yaml format
but the flatten step will be creating single files for each entry

the build step will then create lockfiles for each entry next to the entry definitions

version and feature cache will be dropped (most likely)

Sample Entries

mods/WearableBackpacks.hjson

{
  "provider": "CURSE",
  "name": "WearableBackpacks"
}

mods/MatterLink.hjson

{
  "provider": "CURSE",
  "name": "MatterLink",
  "side": "SERVER"
}

mods/MatterLink.hjson

{
  "provider": "CURSE",
  "name": "Unity",
  "side": "CLIENT",
  "filename": "Unity.zip"
}

Feature stuff

add config files to entries

to add them later into a feature

config/foamfix.cfg.entry.hjson

{
  "entry": "foamfix_cfg"
}

config/RPG-HUD.entry.hjson

{
  "entry": "RPG-HUD_cfg"
}

alternatively make sure to specify folders in the feature section

root:
 - side: CLIENT
   entries:
    - name: OpenEye
      feature: 
        selected: true
        recommendation: starred
        files:
         - "config/OpenEye.json"

is the nested format for creating a feature lik so

{
  "features": {
    "OpenEye": {
      "selected": false,
      "recommendation": "starred",
      "entries": ["OpenEye"],
      "files": ["config/OpenEye.json"] //can also accept folders
    }
  }
}

Serer export creates duplicate forge jars

After running the server-install jar, there is a forge.jar as well as a forge[version].jar

Instead, there should be only a single jar, with the file name reflecting the forge version, pack name and version:
[packShortName]-[packVersion]-server-forge-[forgeVersion].jar

Invalid query with 0.4.7 while running createPack

~/.../build/vp >>> ./gradlew createPack --id vtest15 --mcVersion 1.15.2 --title "Test paczki 1.15 przez Voodoo"        

> Task :createpack FAILED
GetSlugIDPairs
url: https://curse.nikky.moe/graphql
cUrl: curl -i -X POST -d "{\"query\":\"{  addons(gameID: 432, gameVersions: [\\"1.15.2\\"], section: \\"Mods\\") {    id    slug  }}\",\"operationName\":\"GetSlugIDPairs\",\"variables\":{}}" -H "User-Agent:voodoo/0.4.7 (https://github.com/DaemonicLabs/Voodoo)" -H "Content-Type:application/json" https://curse.nikky.moe/graphql
request: --> POST https://curse.nikky.moe/graphql
Body : {"query":"{  addons(gameID: 432, gameVersions: [\"1.15.2\"], section: \"Mods\") {    id    slug  }}","operationName":"GetSlugIDPairs","variables":{}}
Headers : (2)
User-Agent : voodoo/0.4.7 (https://github.com/DaemonicLabs/Voodoo)
Content-Type : application/json

response: <-- -1 http://.
Response : 
Length : 0
Body : (empty)
Headers : (0)

could not request slug-id pairs
com.github.kittinunf.fuel.core.HttpException: HTTP Exception 500 Internal Server Error
	at com.github.kittinunf.fuel.core.requests.SuspendableRequest.prepareResponse(SuspendableRequest.kt:32)
	at com.github.kittinunf.fuel.core.requests.SuspendableRequest.awaitResult(SuspendableRequest.kt:43)
	at com.github.kittinunf.fuel.core.DeserializableKt.awaitResponseResult(Deserializable.kt:250)
	at voodoo.curse.CurseClient$graphQLRequest$$inlined$awaitObjectResponseResult$1.invokeSuspend(Coroutines.kt:68)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
	at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
--> POST https://curse.nikky.moe/graphql
Body : {"query":"{  addons(gameID: 432, gameVersions: [\"1.15.2\"], section: \"Mods\") {    id    slug  }}","operationName":"GetSlugIDPairs","variables":{}}
Headers : (2)
User-Agent : voodoo/0.4.7 (https://github.com/DaemonicLabs/Voodoo)
Content-Type : application/json


FAILURE: Build failed with an exception.

cUrl has 2 issues: gameID should be gameId and gameVersions: ["..."] should be gameVersion: "..."

Looks like search api changed...

support all flavors of the update-json format

https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/#update-json-format

to install forge i already use their format

http://files.minecraftforge.net/maven/net/minecraftforge/forge/json

foamfix, charset and other update json files

https://asie.pl/files/minecraft/update/foamfix.json
https://asie.pl/files/minecraft/update/charset.json
https://github.com/williewillus/Botania/blob/master/version/update.json

foamfix and charset require a url template

forge

forge has a vastly different structure
it defines webpath for the url template +1
promos keys are standard, but they point to the "number" mapping containing
a artifact/build object with the following useful values:

  • mcversion
  • forgeversion
  • branch

a code snippets says more then a thousand words.. well not quite.. but lets try anyway

var longVersion = "${mcversion}-${forgeVersion}"
if (branch != null) {
    longVersion += "-$branch"
}
val fileName = "forge-${longVersion]-installer.jar"
val url = "${webpath}/${longVersion}/${fileName}"

foamfix, charset etc..

these do notdefine a webpath or enough information to put together a url template
worst case the only contains promos which leads to a version string eg. "0.9.1"
and user input is required

http://asie.pl/files/mods/FoamFix/foamfix-${version}-${mcversion}-anarchy.jar

todo

look at more examples
it seems like there is only 2 formats.. just forge doing their own extension / thing which could be supported by setting the url template to a magic value
but there might be more mods doing their own standards

Archiver

missing:

  • changelogs
  • sha256
  • murmur checksum validation

"lateinit property default has not been initialized"

Voodoo build: 118
Workspace setup:

java -jar bootstrap-voodoo.jar
./gradlew createPack --id hardcorebytes --mcVersion 1.12.2 --title "Hardcore Bytes"

Pack file: hardcorebytes.voodoo.jar
Command run:

java -jar bootstrap-voodoo.jar packs/hardcorebytes.voodoo.kts build - test mmc

Full output: voodoo.log

11:00:54.956 [main] .(Directories.kt:91)                INFO  - Using XDG directories
11:00:54.975 [main] .(Voodoo.kt:74)                     DEBUG - id: hardcorebytes
Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property default has not been initialized
        at voodoo.util.SharedFolders$RootDir.getDefault(SharedFolders.kt:13)
        at voodoo.util.SharedFolders$RootDir$resolver$1.invoke(SharedFolders.kt:14)
        at voodoo.util.SharedFolders$RootDir$resolver$1.invoke(SharedFolders.kt:11)
        at voodoo.util.SharedFolders$RootDir.get(SharedFolders.kt:15)
        at voodoo.Voodoo.main(Voodoo.kt:76)

TODO

  • Tome #7
  • Server Export #8
  • Curse Export #9
  • Provider: src #2
  • Archiver: #10

Server Export/Installer

export the server as a minified package that can be uploaded and installed to the server host
using

  • write server specific installer / unpacker
  • upgrade process of servers
    which files to keep / override if they changed

currently mods and config folder are wiped and replaced on install

sklauncher pack installer for MultiMC

for being able to package multimc packs with voodoo, we need to extract the pack installing logic and GUI and interaction from sklauncher into a seperate jar that can be executed as a pre-launch command

sidenote: while we are at it lets also build a pure cursepack importer that way

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.