├── .github ├── ISSUE_TEMPLATE │ ├── bug_reports.yml │ ├── config.yml │ └── suggestion.yml ├── crash_reports.yml ├── meta │ └── assets │ │ └── logo.svg └── workflows │ ├── stale-mod-label.yml │ ├── stale.yml │ └── update-issues.yml ├── .gitignore ├── README.md ├── package.json └── scripts └── template-updater ├── package-lock.json ├── package.json └── src └── app.js /.github/ISSUE_TEMPLATE/bug_reports.yml: -------------------------------------------------------------------------------- 1 | name: 'Bug Report' 2 | description: 'Report an issue with the a modpack. ONE ISSUE PER REPORT' 3 | labels: 4 | - 'Bug' 5 | type: 'Bug' 6 | body: 7 | - type: 'markdown' 8 | attributes: 9 | value: '### Before filling out this report, please read the following 10 | 11 | - Only 1 issue per bug report, if you need to report multiple 12 | issues, open multiple bug reports 13 | 14 | - Checked if the issue still exists on the latest version of the 15 | modpack 16 | 17 | - If you have modified the pack, check if the issue exists on a 18 | clean/fresh install of the modpack' 19 | - type: 'dropdown' 20 | id: 'ftb-modpack-dropdown' 21 | attributes: 22 | label: 'Modpack' 23 | description: 'What modpack are you having an issue with?' 24 | options: 25 | - 'FTB OceanBlock 2' 26 | - 'FTB Presents Direwolf20 1.21' 27 | - 'FTB Evolution' 28 | - 'FTB Unstable 1.21' 29 | - 'FTB NeoTech' 30 | - 'FTB Builders Paradise 2' 31 | - 'FTB Presents F.A.M' 32 | - 'FTB Genesis' 33 | - 'FTB Presents Direwolf20 1.20' 34 | - 'FTB Skies Expert' 35 | - 'FTB Arcanum Institute' 36 | - 'FTB Presents AbePack' 37 | - 'FTB Interactions Remastered' 38 | - 'FTB Unstable 1.20: Forge' 39 | - 'FTB Unstable 1.20: Fabric' 40 | - 'FTB University 1.19' 41 | - 'FTB Presents Integration by Parts DX' 42 | - 'FTB Skies' 43 | - 'FTB Legend of the Eyes' 44 | - 'FTB Presents Direwolf20 1.19' 45 | - 'FTB StoneBlock 3' 46 | - 'FTB Inferno' 47 | - 'FTB One' 48 | - 'FTB Plexiglass Mountain' 49 | - 'FTB Presents Direwolf20 1.18' 50 | - 'FTB Chocolate' 51 | - 'FTB Ultimate: Anniversary Edition' 52 | - 'FTB OceanBlock' 53 | - 'FTB University 1.16' 54 | - 'FTB Academy 1.16' 55 | - 'FTB Cotton' 56 | - 'FTB Endeavour' 57 | - 'FTB Presents Direwolf20 1.16' 58 | - 'FTB Mage Quest' 59 | - 'YogCraft Modpack' 60 | - 'FTB Ultimate' 61 | - 'FTB Tech World' 62 | - 'MindCrack Pack' 63 | - 'Magic World' 64 | - 'FTB Lite 2' 65 | - 'Direwolf20 1.4.7' 66 | - 'FTB Monster' 67 | - 'FTB Horizons' 68 | - 'FTB Presents Direwolf20 - 1.6.4' 69 | - 'FTB Magic World 2' 70 | - 'FTB Tech World 2' 71 | - 'Slow''s Stream Pack' 72 | - 'Pax East 2014 Map' 73 | - 'FTB Lite' 74 | - 'FTB Pax Challenge Pack 2013' 75 | - 'FTB University 1.12' 76 | - 'FTB Unstable 1.16' 77 | - 'FTB Builders Paradise' 78 | - 'FTB Ultimate Reloaded' 79 | - 'FTB Revelation' 80 | - 'FTB Continuum' 81 | - 'FTB Sky Adventures' 82 | - 'FTB Pyramid Reborn 3.0' 83 | - 'FTB Presents Direwolf20 1.12' 84 | - 'FTB Unstable 1.12' 85 | - 'FTB Horizons III' 86 | - 'FTB Beyond' 87 | - 'FTB Egg Hunt' 88 | - 'FTB SkyFactory Challenges' 89 | - 'FTB Presents Skyfactory 3' 90 | - 'FTB Presents Direwolf20 1.10' 91 | - 'FTB Infinity Evolved 1.7' 92 | - 'FTB Presents Crackpack' 93 | - 'FTB Inventions' 94 | - 'FTB Infinity Evolved Skyblock' 95 | - 'FTB Presents Skyfactory 2.5' 96 | - 'FTB Vanilla+' 97 | - 'FTB Horizons: Daybreaker' 98 | - 'FTB Departed' 99 | - 'FTB Presents Cloud 9' 100 | - 'FTB Presents Direwolf20' 101 | - 'FTB Trident' 102 | - 'FTB Resurrection' 103 | - 'FTB Lite 3' 104 | - 'Pax Prime 2015 Map' 105 | - 'FTB Presents HermitPack' 106 | - 'FTB Sky Odyssey' 107 | - 'FTB Unstable 1.14' 108 | - 'FTB Omnia' 109 | - 'FTB Interactions' 110 | - 'FTB Presents Stoneblock 2' 111 | - 'FTB Academy 1.12' 112 | - 'Other...' 113 | validations: 114 | required: true 115 | - type: 'input' 116 | id: 'version' 117 | attributes: 118 | label: 'Modpack version' 119 | placeholder: 'ex. 1.1.0' 120 | validations: 121 | required: true 122 | - type: 'dropdown' 123 | id: 'launcher' 124 | attributes: 125 | label: 'Launcher' 126 | description: 'Which launcher are you using to start the modpack?' 127 | options: 128 | - null 129 | - 'FTB App' 130 | - 'CurseForge' 131 | - 'Prism' 132 | - 'ATLauncher' 133 | - 'Server' 134 | - 'Other...' 135 | validations: 136 | required: true 137 | - type: 'dropdown' 138 | id: 'modded-dropdown' 139 | attributes: 140 | label: 'Has the pack been modified' 141 | description: 'Have you modified the modpack in any way? This includes changing 142 | configs, adding mods and/or updating any mods' 143 | options: 144 | - null 145 | - 'Yes' 146 | - 'No' 147 | validations: 148 | required: true 149 | - type: 'textarea' 150 | id: 'logs' 151 | attributes: 152 | label: 'Log Files' 153 | description: 'Link(s) to any log files that may help debug your issue' 154 | placeholder: 'https://pste.ch/dotedubine' 155 | - type: 'textarea' 156 | id: 'bugdesc' 157 | attributes: 158 | label: 'Describe the bug' 159 | description: 'A clear and concise description of what the bug is 160 | 161 | ' 162 | validations: 163 | required: true 164 | - type: 'textarea' 165 | id: 'reproduce' 166 | attributes: 167 | label: 'Steps to reproduce' 168 | description: 'Tell us how we can reproduce the issue' 169 | placeholder: '1. Go to ... 170 | 171 | 2. Click on ... 172 | 173 | 3. Scroll down to ... 174 | 175 | 4. See error 176 | 177 | ' 178 | validations: 179 | required: true 180 | - type: 'input' 181 | id: 'expectedBehaviour' 182 | attributes: 183 | label: 'Expected behaviour' 184 | description: 'A clear and concise description of what you expected to happen. 185 | 186 | ' 187 | validations: 188 | required: true 189 | - type: 'textarea' 190 | id: 'screenshots' 191 | attributes: 192 | label: 'Screenshots' 193 | description: 'If applicable, add screenshots to help explain your problem.' 194 | - type: 'textarea' 195 | id: 'additional' 196 | attributes: 197 | label: 'Additional information' 198 | description: 'Add any other context about the problem here' 199 | placeholder: 'Any other information that may help debug the issue. If you have 200 | modified the modpack please let us know what was changed here' 201 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: FTB Discord 4 | url: https://ftb.team/discord 5 | about: "Please ask and answer questions here. Github issues aren't for questions" 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/suggestion.yml: -------------------------------------------------------------------------------- 1 | name: 'Suggestion' 2 | description: 'Suggestion' 3 | labels: 4 | - 'Enhancement' 5 | type: 'Feature' 6 | body: 7 | - type: 'dropdown' 8 | id: 'ftb-modpack-dropdown' 9 | attributes: 10 | label: 'Modpack' 11 | description: 'What modpack is your suggestion for?' 12 | multiple: false 13 | options: 14 | - 'FTB OceanBlock 2' 15 | - 'FTB Presents Direwolf20 1.21' 16 | - 'FTB Evolution' 17 | - 'FTB Unstable 1.21' 18 | - 'FTB NeoTech' 19 | - 'FTB Builders Paradise 2' 20 | - 'FTB Presents F.A.M' 21 | - 'FTB Genesis' 22 | - 'FTB Presents Direwolf20 1.20' 23 | - 'FTB Skies Expert' 24 | - 'FTB Arcanum Institute' 25 | - 'FTB Presents AbePack' 26 | - 'FTB Interactions Remastered' 27 | - 'FTB Unstable 1.20: Forge' 28 | - 'FTB Unstable 1.20: Fabric' 29 | - 'FTB University 1.19' 30 | - 'FTB Presents Integration by Parts DX' 31 | - 'FTB Skies' 32 | - 'FTB Legend of the Eyes' 33 | - 'FTB Presents Direwolf20 1.19' 34 | - 'FTB StoneBlock 3' 35 | - 'FTB Inferno' 36 | - 'FTB One' 37 | - 'FTB Plexiglass Mountain' 38 | - 'FTB Presents Direwolf20 1.18' 39 | - 'FTB Chocolate' 40 | - 'FTB Ultimate: Anniversary Edition' 41 | - 'FTB OceanBlock' 42 | - 'FTB University 1.16' 43 | - 'FTB Academy 1.16' 44 | - 'FTB Cotton' 45 | - 'FTB Endeavour' 46 | - 'FTB Presents Direwolf20 1.16' 47 | - 'FTB Mage Quest' 48 | - 'YogCraft Modpack' 49 | - 'FTB Ultimate' 50 | - 'FTB Tech World' 51 | - 'MindCrack Pack' 52 | - 'Magic World' 53 | - 'FTB Lite 2' 54 | - 'Direwolf20 1.4.7' 55 | - 'FTB Monster' 56 | - 'FTB Horizons' 57 | - 'FTB Presents Direwolf20 - 1.6.4' 58 | - 'FTB Magic World 2' 59 | - 'FTB Tech World 2' 60 | - 'Slow''s Stream Pack' 61 | - 'Pax East 2014 Map' 62 | - 'FTB Lite' 63 | - 'FTB Pax Challenge Pack 2013' 64 | - 'FTB University 1.12' 65 | - 'FTB Unstable 1.16' 66 | - 'FTB Builders Paradise' 67 | - 'FTB Ultimate Reloaded' 68 | - 'FTB Revelation' 69 | - 'FTB Continuum' 70 | - 'FTB Sky Adventures' 71 | - 'FTB Pyramid Reborn 3.0' 72 | - 'FTB Presents Direwolf20 1.12' 73 | - 'FTB Unstable 1.12' 74 | - 'FTB Horizons III' 75 | - 'FTB Beyond' 76 | - 'FTB Egg Hunt' 77 | - 'FTB SkyFactory Challenges' 78 | - 'FTB Presents Skyfactory 3' 79 | - 'FTB Presents Direwolf20 1.10' 80 | - 'FTB Infinity Evolved 1.7' 81 | - 'FTB Presents Crackpack' 82 | - 'FTB Inventions' 83 | - 'FTB Infinity Evolved Skyblock' 84 | - 'FTB Presents Skyfactory 2.5' 85 | - 'FTB Vanilla+' 86 | - 'FTB Horizons: Daybreaker' 87 | - 'FTB Departed' 88 | - 'FTB Presents Cloud 9' 89 | - 'FTB Presents Direwolf20' 90 | - 'FTB Trident' 91 | - 'FTB Resurrection' 92 | - 'FTB Lite 3' 93 | - 'Pax Prime 2015 Map' 94 | - 'FTB Presents HermitPack' 95 | - 'FTB Sky Odyssey' 96 | - 'FTB Unstable 1.14' 97 | - 'FTB Omnia' 98 | - 'FTB Interactions' 99 | - 'FTB Presents Stoneblock 2' 100 | - 'FTB Academy 1.12' 101 | - 'Other...' 102 | validations: 103 | required: true 104 | - type: 'textarea' 105 | id: 'problem' 106 | attributes: 107 | label: 'Is your suggestion related to a problem? Please describe.' 108 | description: 'A clear and concise description of what the problem is.' 109 | placeholder: 'Ex. I''m always frustrated when [...]' 110 | - type: 'textarea' 111 | id: 'mod' 112 | attributes: 113 | label: 'Mod suggestion' 114 | description: 'Link to mod and describe why you would like to see the mod in the pack?' 115 | placeholder: 'Link to mod: 116 | 117 | A clear and concise description of what the mod what add and why 118 | you would like it in the pack. 119 | 120 | ' 121 | -------------------------------------------------------------------------------- /.github/crash_reports.yml: -------------------------------------------------------------------------------- 1 | name: 'Crash Report' 2 | description: 'Report a crash' 3 | title: '[Crash]: ' 4 | body: 5 | - type: 'markdown' 6 | attributes: 7 | value: 'Before reporting this crash, have you tried the following? 8 | 9 | - Updating to the latest version of the modpack 10 | 11 | - Removed any additional mods you may have installed 12 | 13 | ' 14 | - type: 'dropdown' 15 | id: 'triedFixes' 16 | attributes: 17 | label: 'Suggested fixes' 18 | description: 'Have you tried the suggested fixes above?' 19 | options: 20 | - null 21 | - 'Yes' 22 | validations: 23 | required: true 24 | - type: 'dropdown' 25 | id: 'ftb-modpack-dropdown' 26 | attributes: 27 | label: 'Modpack' 28 | description: 'Which modpack are you having the crash on?' 29 | options: 30 | - 'FTB Presents Direwolf20 1.21' 31 | - 'FTB Evolution' 32 | - 'FTB Unstable 1.21' 33 | - 'FTB NeoTech' 34 | - 'FTB Builders Paradise 2' 35 | - 'FTB Presents F.A.M' 36 | - 'FTB Genesis' 37 | - 'FTB Presents Direwolf20 1.20' 38 | - 'FTB Skies Expert' 39 | - 'FTB Arcanum Institute' 40 | - 'FTB Presents AbePack' 41 | - 'FTB Interactions Remastered' 42 | - 'FTB Unstable 1.20: Forge' 43 | - 'FTB Unstable 1.20: Fabric' 44 | - 'FTB University 1.19' 45 | - 'FTB Presents Integration by Parts DX' 46 | - 'FTB Skies' 47 | - 'FTB Legend of the Eyes' 48 | - 'FTB Presents Direwolf20 1.19' 49 | - 'FTB StoneBlock 3' 50 | - 'FTB Inferno' 51 | - 'FTB One' 52 | - 'FTB Plexiglass Mountain' 53 | - 'FTB Presents Direwolf20 1.18' 54 | - 'FTB Chocolate' 55 | - 'FTB Ultimate: Anniversary Edition' 56 | - 'FTB OceanBlock' 57 | - 'FTB University 1.16' 58 | - 'FTB Academy 1.16' 59 | - 'FTB Cotton' 60 | - 'FTB Endeavour' 61 | - 'FTB Presents Direwolf20 1.16' 62 | - 'FTB Mage Quest' 63 | - 'YogCraft Modpack' 64 | - 'FTB Ultimate' 65 | - 'FTB Tech World' 66 | - 'MindCrack Pack' 67 | - 'Magic World' 68 | - 'FTB Lite 2' 69 | - 'Direwolf20 1.4.7' 70 | - 'FTB Monster' 71 | - 'FTB Horizons' 72 | - 'FTB Presents Direwolf20 - 1.6.4' 73 | - 'FTB Magic World 2' 74 | - 'FTB Tech World 2' 75 | - 'Slow''s Stream Pack' 76 | - 'Pax East 2014 Map' 77 | - 'FTB Lite' 78 | - 'FTB Pax Challenge Pack 2013' 79 | - 'FTB University 1.12' 80 | - 'FTB Unstable 1.16' 81 | - 'FTB Builders Paradise' 82 | - 'FTB Ultimate Reloaded' 83 | - 'FTB Revelation' 84 | - 'FTB Continuum' 85 | - 'FTB Sky Adventures' 86 | - 'FTB Pyramid Reborn 3.0' 87 | - 'FTB Presents Direwolf20 1.12' 88 | - 'FTB Unstable 1.12' 89 | - 'FTB Horizons III' 90 | - 'FTB Beyond' 91 | - 'FTB Egg Hunt' 92 | - 'FTB SkyFactory Challenges' 93 | - 'FTB Presents Skyfactory 3' 94 | - 'FTB Presents Direwolf20 1.10' 95 | - 'FTB Infinity Evolved 1.7' 96 | - 'FTB Presents Crackpack' 97 | - 'FTB Inventions' 98 | - 'FTB Infinity Evolved Skyblock' 99 | - 'FTB Presents Skyfactory 2.5' 100 | - 'FTB Vanilla+' 101 | - 'FTB Horizons: Daybreaker' 102 | - 'FTB Departed' 103 | - 'FTB Presents Cloud 9' 104 | - 'FTB Presents Direwolf20' 105 | - 'FTB Trident' 106 | - 'FTB Resurrection' 107 | - 'FTB Lite 3' 108 | - 'Pax Prime 2015 Map' 109 | - 'FTB Presents HermitPack' 110 | - 'FTB Sky Odyssey' 111 | - 'FTB Unstable 1.14' 112 | - 'FTB Omnia' 113 | - 'FTB Interactions' 114 | - 'FTB Presents Stoneblock 2' 115 | - 'FTB Academy 1.12' 116 | - 'Other...' 117 | validations: 118 | required: true 119 | - type: 'input' 120 | id: 'modpackVersion' 121 | attributes: 122 | label: 'Modpack Version' 123 | description: 'Which modpack version are you having the issue on?' 124 | placeholder: 'ex. 1.7.0' 125 | validations: 126 | required: true 127 | - type: 'textarea' 128 | id: 'description' 129 | attributes: 130 | label: 'Describe what happened' 131 | description: 'Describe what you were doing in the moments leading up to the 132 | crash, be as detailed as possible and include steps on how to reproduce 133 | the crash.' 134 | validations: 135 | required: true 136 | - type: 'input' 137 | id: 'crashreport' 138 | attributes: 139 | label: 'Crash Report' 140 | description: 'Upload your crash report to https://gist.github.com/ and put the 141 | link in here, [Finding the crash 142 | report](https://docs.feed-the-beast.com/docs/app/Instances/instance-logs#locating-crashlogs)' 143 | placeholder: 'https://gist.github.com/' 144 | validations: 145 | required: true 146 | - type: 'input' 147 | id: 'debuglog' 148 | attributes: 149 | label: 'Debug Log' 150 | description: 'Upload your debug.log to https://gist.github.com/ and put the link 151 | in here, [Finding the crash 152 | report](https://docs.feed-the-beast.com/docs/app/Instances/instance-logs)' 153 | placeholder: 'https://gist.github.com/' 154 | - type: 'markdown' 155 | attributes: 156 | value: 'This template was generated with [Issue Forms 157 | Creator](https://issue-forms-creator.netlify.app)' 158 | -------------------------------------------------------------------------------- /.github/meta/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.github/workflows/stale-mod-label.yml: -------------------------------------------------------------------------------- 1 | name: 'Close idle mod related issues' 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: "0 0 * * *" 6 | 7 | permissions: 8 | issues: write 9 | pull-requests: write 10 | 11 | jobs: 12 | stale: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/stale@v9 16 | with: 17 | stale-issue-message: '@Gaz492 @Saereth Please check if the mod has recieved an update, if there has been no mod updates this issue will close in 24 hours' 18 | close-issue-message: 'Closing issue as there has been no activity' 19 | days-before-stale: 59 20 | days-before-close: 1 21 | days-before-pr-close: -1 22 | stale-issue-label: 'state: Stale' 23 | any-of-issue-labels: 'state: Reported to Mod Dev, state: Awaiting Mod Update' 24 | exempt-issue-labels: 'state: Mod Update Available,In Progress' 25 | operations-per-run: 200 26 | ignore-issue-updates: false 27 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: 'Close stale issues and PRs' 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: "0 */12 * * *" 6 | 7 | permissions: 8 | issues: write 9 | pull-requests: write 10 | 11 | jobs: 12 | stale: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/stale@v9 16 | with: 17 | stale-issue-message: 'This issue has been marked as stale. Please reply to the issue or the issue will be automatically closed in 3 days.' 18 | close-issue-message: 'This issue has been closed as there has been no recent activity after being marked as stale.' 19 | days-before-stale: 7 20 | days-before-close: 3 21 | days-before-pr-close: -1 22 | stale-issue-label: 'state: Stale' 23 | only-issue-labels: 'state: Awaiting Reply' 24 | operations-per-run: 100 25 | -------------------------------------------------------------------------------- /.github/workflows/update-issues.yml: -------------------------------------------------------------------------------- 1 | name: update-issue-templates 2 | on: [workflow_dispatch] 3 | 4 | jobs: 5 | update: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v3 9 | - uses: actions/setup-node@v3 10 | with: 11 | node-version: '16' 12 | - run: npm run setup:scripts 13 | - run: node ${GITHUB_WORKSPACE}/scripts/template-updater/src/app.js --github ${GITHUB_WORKSPACE}/.github/ISSUE_TEMPLATE/ 14 | - name: Commit files 15 | run: | 16 | git config --local user.email "mikey@feed-the-beast.com" 17 | git config --local user.name "Michael" 18 | git commit -a -m "Updated issue templates" 19 | - name: Push updates 20 | uses: ad-m/github-push-action@master 21 | with: 22 | branch: ${{ github.ref }} 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

FTB Modpack Issues

4 | 5 |

The best place to see and report any issues with our modpacks!

6 | 7 |
8 | Discord 9 |
10 | 11 |

12 | 13 | Wanna just have a chat about our modpacks? Jump on our [Discord](https://ftb.team/discord). 14 | 15 | ## Looking for a Modded Minecraft Server? `Ad` 16 | 17 | [![Promotion](https://cdn.feed-the-beast.com/assets/promo/ftb-bh-promo-large.png)](https://bisecthosting.com/ftb) 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ftb-modpack-issues", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "setup:scripts": "cd scripts/template-updater/ && npm install" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/MichaelHillcox/FTB-Modpack-Issues.git" 12 | }, 13 | "author": "", 14 | "license": "UNLICENCED", 15 | "bugs": { 16 | "url": "https://github.com/MichaelHillcox/FTB-Modpack-Issues/issues" 17 | }, 18 | "homepage": "https://github.com/MichaelHillcox/FTB-Modpack-Issues#readme" 19 | } 20 | -------------------------------------------------------------------------------- /scripts/template-updater/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "template-updater", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "template-updater", 9 | "version": "1.0.0", 10 | "license": "UNLICENSED", 11 | "dependencies": { 12 | "node-fetch": "^3.3.0", 13 | "yaml": "^2.2.2" 14 | } 15 | }, 16 | "node_modules/data-uri-to-buffer": { 17 | "version": "4.0.0", 18 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", 19 | "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", 20 | "engines": { 21 | "node": ">= 12" 22 | } 23 | }, 24 | "node_modules/fetch-blob": { 25 | "version": "3.2.0", 26 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", 27 | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 28 | "funding": [ 29 | { 30 | "type": "github", 31 | "url": "https://github.com/sponsors/jimmywarting" 32 | }, 33 | { 34 | "type": "paypal", 35 | "url": "https://paypal.me/jimmywarting" 36 | } 37 | ], 38 | "dependencies": { 39 | "node-domexception": "^1.0.0", 40 | "web-streams-polyfill": "^3.0.3" 41 | }, 42 | "engines": { 43 | "node": "^12.20 || >= 14.13" 44 | } 45 | }, 46 | "node_modules/formdata-polyfill": { 47 | "version": "4.0.10", 48 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 49 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 50 | "dependencies": { 51 | "fetch-blob": "^3.1.2" 52 | }, 53 | "engines": { 54 | "node": ">=12.20.0" 55 | } 56 | }, 57 | "node_modules/node-domexception": { 58 | "version": "1.0.0", 59 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 60 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 61 | "funding": [ 62 | { 63 | "type": "github", 64 | "url": "https://github.com/sponsors/jimmywarting" 65 | }, 66 | { 67 | "type": "github", 68 | "url": "https://paypal.me/jimmywarting" 69 | } 70 | ], 71 | "engines": { 72 | "node": ">=10.5.0" 73 | } 74 | }, 75 | "node_modules/node-fetch": { 76 | "version": "3.3.0", 77 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", 78 | "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", 79 | "dependencies": { 80 | "data-uri-to-buffer": "^4.0.0", 81 | "fetch-blob": "^3.1.4", 82 | "formdata-polyfill": "^4.0.10" 83 | }, 84 | "engines": { 85 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 86 | }, 87 | "funding": { 88 | "type": "opencollective", 89 | "url": "https://opencollective.com/node-fetch" 90 | } 91 | }, 92 | "node_modules/web-streams-polyfill": { 93 | "version": "3.2.1", 94 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", 95 | "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", 96 | "engines": { 97 | "node": ">= 8" 98 | } 99 | }, 100 | "node_modules/yaml": { 101 | "version": "2.2.2", 102 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", 103 | "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", 104 | "engines": { 105 | "node": ">= 14" 106 | } 107 | } 108 | }, 109 | "dependencies": { 110 | "data-uri-to-buffer": { 111 | "version": "4.0.0", 112 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", 113 | "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" 114 | }, 115 | "fetch-blob": { 116 | "version": "3.2.0", 117 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", 118 | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 119 | "requires": { 120 | "node-domexception": "^1.0.0", 121 | "web-streams-polyfill": "^3.0.3" 122 | } 123 | }, 124 | "formdata-polyfill": { 125 | "version": "4.0.10", 126 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 127 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 128 | "requires": { 129 | "fetch-blob": "^3.1.2" 130 | } 131 | }, 132 | "node-domexception": { 133 | "version": "1.0.0", 134 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 135 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" 136 | }, 137 | "node-fetch": { 138 | "version": "3.3.0", 139 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", 140 | "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", 141 | "requires": { 142 | "data-uri-to-buffer": "^4.0.0", 143 | "fetch-blob": "^3.1.4", 144 | "formdata-polyfill": "^4.0.10" 145 | } 146 | }, 147 | "web-streams-polyfill": { 148 | "version": "3.2.1", 149 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", 150 | "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" 151 | }, 152 | "yaml": { 153 | "version": "2.2.2", 154 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", 155 | "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==" 156 | } 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /scripts/template-updater/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "template-updater", 3 | "version": "1.0.0", 4 | "description": "Simple tool used to maintain the modpacks list on the issue templates", 5 | "main": "src/app.js", 6 | "type": "module", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "FTB Team", 11 | "license": "UNLICENSED", 12 | "dependencies": { 13 | "node-fetch": "^3.3.0", 14 | "yaml": "^2.2.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /scripts/template-updater/src/app.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path from 'path' 3 | import fetch from 'node-fetch' 4 | import YAML from 'yaml' 5 | 6 | const args = process.argv; 7 | const fileLocation = args[args.findIndex(e => e.startsWith("--github")) + 1] ?? null; 8 | 9 | if (!fileLocation || !fileLocation.includes("ISSUE_TEMPLATE")) { 10 | console.error("No file location specified or file is not a yml file") 11 | process.exit(); 12 | } 13 | 14 | const runScript = async () => { 15 | const githubPath = path.resolve(fileLocation); 16 | if (!fs.existsSync(githubPath)) { 17 | console.error(`${githubPath} does not exist`) 18 | return; 19 | } 20 | 21 | const targetFiles = fs.readdirSync(githubPath) 22 | .filter(e => e.endsWith(".yml") && e !== "config.yml") 23 | .map(e => path.join(githubPath, e)); 24 | 25 | // Test files 26 | for (let targetFile of targetFiles) { 27 | // Ensure we can read and write to the file 28 | try { 29 | fs.accessSync(targetFile, fs.constants.R_OK | fs.constants.W_OK) 30 | } catch (error) { 31 | console.error(`${targetFile} is not readable or writeable`, error); 32 | return; 33 | } 34 | } 35 | 36 | // Load all the api data 37 | const data = await fetch("https://api.feed-the-beast.com/v1/modpacks/public/modpack/popular/installs/FTB/all"); 38 | const packData = await data.json(); 39 | 40 | const apiModpacks = await Promise.all( 41 | packData.packs.map(async (packId) => { 42 | try { 43 | console.log(`Fetching modpack with the id of ${packId}`) 44 | const modpackReq = await fetch(`https://api.feed-the-beast.com/v1/modpacks/public/modpack/${packId}`); 45 | const data = await modpackReq.json(); 46 | console.log(`Successfully fetched modpack with the id of ${packId}`) 47 | if (data.status === "success") { 48 | return data; 49 | } 50 | } catch (error) { 51 | console.error(`Unable to fetch modpack ${packId} due to ${error.message}`, error); 52 | } 53 | 54 | return null; 55 | }) 56 | ); 57 | 58 | // Ignore null packs, 59 | const modpacks = apiModpacks 60 | .filter(e => e !== null && e.private !== true) // technically this can't be true but just to be sure :D 61 | .sort((a, b) => b.id - a.id); 62 | 63 | // Create the input to push into the yml file. 64 | const ymlOptions = modpacks.map(e => e.name) 65 | ymlOptions.push("Other...") 66 | 67 | console.log(`Getting ready to insert the following yaml data`) 68 | console.log(ymlOptions) 69 | 70 | for (let targetFile of targetFiles) { 71 | const ymlFileData = fs.readFileSync(targetFile, "utf-8"); 72 | const ymlData = YAML.parse(ymlFileData); 73 | 74 | const packSection = ymlData.body.find(e => e.id === "ftb-modpack-dropdown"); 75 | if (packSection) { 76 | packSection.attributes.options = ymlOptions; 77 | } 78 | 79 | // fs.writeFileSync(targetFile, YAML.stringify(ymlData)); 80 | fs.writeFileSync(targetFile, YAML.stringify(ymlData, {defaultKeyType: 'PLAIN', defaultStringType: 'QUOTE_SINGLE'})); 81 | } 82 | 83 | console.log("Updated file successfully") 84 | } 85 | 86 | // Run the script 🔥 🎉 87 | runScript() 88 | .catch(console.error) 89 | --------------------------------------------------------------------------------