Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions .github/ISSUE_TEMPLATE/05-shields-bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: Shields bug report
description: Report a crash, broken behaviour, or compatibility problem in Shields.
title: "[Shields] "
labels:
- "project:shields"
type: Bug
body:
- type: markdown
attributes:
value: |
Report a problem with Shields. Tell us what happened and how we can reproduce it. If you are unsure about something, say so.

- type: markdown
attributes:
value: |
If you are on a game version or loader not listed here, we are unfortunately not supporting it anymore.

- type: checkboxes
id: existing-issues
attributes:
label: Existing issues
options:
- label: I have [searched the existing issues](https://github.com/IMB11-Mods/JavaEditionMods/issues?q=is%3Aissue%20label%3A%22project%3AShields%22) for this problem or suggestion.
required: true

- type: textarea
id: what-happened
attributes:
label: What happened?
description: Describe the problem and what you expected to happen instead. Include the exact error message, if there is one.
placeholder: |
What happened:
What I expected:
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: How can we reproduce it?
description: List the steps that trigger the problem. If it happens unpredictably, describe what you were doing and how often it happens.
placeholder: |
1. Start the game with...
2. Open or do...
3. The problem happens when...
validations:
required: true

- type: dropdown
id: minecraft-version
attributes:
label: Minecraft version
description: Which Minecraft version were you using when the problem happened?
options:
- "26.1.2"
- "26.3"
validations:
required: true

- type: dropdown
id: mod-loader
attributes:
label: Mod loader
description: Which mod loader are you using?
options:
- Fabric
- NeoForge
validations:
required: true

- type: input
id: mod-version
attributes:
label: Shields version
description: Copy the exact version from your launcher's mod list or the mod's filename. Please avoid "latest".
validations:
required: true

- type: dropdown
id: environment
attributes:
label: Where does it happen?
options:
- Starting the game
- Singleplayer
- Playing on a server
- Running a dedicated server
- Development/build
- Other / Not sure
validations:
required: true

- type: textarea
id: logs
attributes:
label: Logs or crash report
description: |
Open the affected game instance's folder in your launcher and find logs/latest.log. Upload it to [mclo.gs](https://mclo.gs/) and paste the link here, even if the game did not crash.
If the game crashed, include the matching report from the crash-reports folder too. For development issues, include the build output instead.
Review logs for personal information before sharing them. If logs are unavailable, explain why.
placeholder: Paste your log links or explain why logs are unavailable.
validations:
required: true

- type: textarea
id: other-mods-and-settings
attributes:
label: Other mods, packs, or changed settings
description: Include relevant mods and versions, a modpack link and version, resource packs, or settings you changed.
validations:
required: false

- type: textarea
id: troubleshooting
attributes:
label: What have you tried?
description: Mention anything you tested and whether it helped. If you tested with only this mod and its required dependencies, tell us the result. You do not need to do this before reporting.
validations:
required: false

- type: textarea
id: additional-context
attributes:
label: Screenshots, videos, or extra details
description: Attach anything that helps demonstrate the problem. For development issues, include a small code example or example project if possible.
validations:
required: false
86 changes: 86 additions & 0 deletions .github/ISSUE_TEMPLATE/05-shields-feature.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Shields feature request
description: Suggest a new feature or improvement for Shields.
title: "[Shields] "
labels:
- "project:Shields"
type: Feature
body:
- type: markdown
attributes:
value: |
Suggest an improvement for Shields. Explain what you want to achieve and how the change would help.

- type: markdown
attributes:
value: |
If you are on a game version or loader not listed here, we are unfortunately not supporting it anymore.

- type: checkboxes
id: existing-issues
attributes:
label: Existing issues
options:
- label: I have [searched the existing issues](https://github.com/IMB11-Mods/JavaEditionMods/issues?q=is%3Aissue%20label%3A%22project%3AShields%22) for this problem or suggestion.
required: true

- type: textarea
id: use-case
attributes:
label: What would this help you do?
description: Describe the problem, missing capability, or situation you want to improve. A concrete example helps.
validations:
required: true

- type: textarea
id: proposed-feature
attributes:
label: What would you like to happen?
description: Describe how you would expect the feature to work. You do not need to explain how to implement it.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives or workarounds
description: Is there another way to achieve this today? What does not work well about it?
validations:
required: false

- type: dropdown
id: minecraft-version
attributes:
label: Minecraft version
description: Select a version only if your request is specific to it.
options:
- "26.1.2"
- "26.3"
validations:
required: false

- type: dropdown
id: mod-loader
attributes:
label: Mod loader
description: Select a loader only if your request is specific to it.
options:
- Fabric
- NeoForge
validations:
required: false

- type: textarea
id: related-mods
attributes:
label: Relevant mod versions or other mods
description: Include Shields or other mod versions only if the request depends on them.
validations:
required: false

- type: textarea
id: additional-context
attributes:
label: Examples or additional context
description: Add screenshots, mockups, links, or related requests.
validations:
required: false
2 changes: 1 addition & 1 deletion .github/scripts/changelog-comment.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module.exports = async ({ github, context }) => {
const issue_number = pull.number;
const repo = { ...context.repo, issue_number };
const comments = await github.paginate(github.rest.issues.listComments, repo);
for (const project of ['sounds', 'mru']) {
for (const project of ['sounds', 'mru', 'shields']) {
if (!pull.labels.some(label => label.name === `project:${project}`)) continue;
const marker = `[release-changelog-${project}]: #`;
if (comments.some(comment => comment.user.type === 'Bot' && comment.body.split(/\r?\n/).includes(marker))) continue;
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/prepare-release.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const git = (...values) => run('git', values);
const project = option('project');
const version = option('version');
const versionPattern = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
if (!['sounds', 'mru'].includes(project) || !versionPattern.test(version ?? '')) throw new Error('Provide --project sounds|mru and --version X.Y.Z. Optional: --from REF, --write.');
if (!['sounds', 'mru', 'shields'].includes(project) || !versionPattern.test(version ?? '')) throw new Error('Provide --project sounds|mru|shields and --version X.Y.Z. Optional: --from REF, --write.');
const suffix = version.match(/^[^-+]+(?:-([^+]+))?(?:\+(.+))?$/);
if ([suffix?.[1], suffix?.[2]].filter(Boolean).some(value => value.split('.').some(part => !part)) || suffix?.[1]?.split('.').some(part => /^0\d+$/.test(part))) throw new Error('Invalid semantic version suffix');
const head = git('rev-parse', 'HEAD');
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/prepare-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
description: project
type: choice
required: true
options: [sounds, mru]
options: [sounds, mru, shields]
version:
description: version
type: string
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
tags:
- mru/v*
- sounds/v*
- shields/v*
workflow_dispatch:
inputs:
tag:
Expand All @@ -31,8 +32,8 @@ jobs:
RELEASE_TAG: ${{ inputs.tag || github.ref_name }}
run: |
case "$RELEASE_TAG" in
sounds/v*|mru/v*) ;;
*) echo 'Expected a sounds/v or mru/v release tag'; exit 1 ;;
sounds/v*|mru/v*|shields/v*) ;;
*) echo 'Expected a sounds/v, mru/v, or shields/v release tag'; exit 1 ;;
esac
test "$(git rev-parse HEAD)" = "$(git rev-parse "refs/tags/$RELEASE_TAG^{commit}")"
echo "RELEASE_MOD=${RELEASE_TAG%%/*}" >> "$GITHUB_ENV"
Expand All @@ -49,7 +50,7 @@ jobs:
GITHUB_TOKEN: ${{ github.token }}
run: |
case "$RELEASE_MOD" in
mru|sounds) task=":$RELEASE_MOD:publishMods" ;;
mru|sounds|shields) task=":$RELEASE_MOD:publishMods" ;;
*) exit 1 ;;
esac
GITHUB_REF_TYPE=tag GITHUB_REF_NAME="$RELEASE_TAG" GITHUB_SHA="$(git rev-parse HEAD)" bash ./gradlew --no-daemon --build-cache "$task"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@
*.log
.DS_Store
Thumbs.db
**/.cache
98 changes: 88 additions & 10 deletions build-logic/src/main/kotlin/imb11.mod.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -116,23 +116,101 @@ repositories {
maven("https://maven.fabricmc.net/")
maven("https://maven.neoforged.net/releases/")
maven("https://maven.shedaniel.me/")
maven("https://maven.wispforest.io/releases/")
maven {
name = "Wisp Forest Maven"
url = uri("https://maven.wispforest.io/releases/")
content {
includeGroupAndSubgroups("io.wispforest")
}
}
maven("https://api.modrinth.com/maven") {
content { includeGroup("maven.modrinth") }
}
maven("https://repo.sleeping.town/")
maven("https://maven.isxander.dev/releases")
maven("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/")
maven {
name = "Sleeping Town Maven"
url = uri("https://repo.sleeping.town/")
content {
includeGroupAndSubgroups("folk.sisby")
includeGroupAndSubgroups("dev.emi")
}
}
maven {
name = "Xander Maven"
url = uri("https://maven.isxander.dev/releases")
content {
includeGroupAndSubgroups("dev.isxander")
includeGroupAndSubgroups("org.quiltmc.parsers")
}
}
maven {
name = "Fuzs Mod Resources"
url = uri("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/")
content {
includeGroupAndSubgroups("fuzs")
}
}
maven("https://maven.ladysnake.org/releases")
maven("https://mvn.devos.one/snapshots")
maven("https://mvn.devos.one/releases")
maven {
name = "Fabricators of Create (Snapshots)"
url = uri("https://mvn.devos.one/snapshots")
content {
includeGroupAndSubgroups("net.createmod")
includeGroupAndSubgroups("dev.engine-room")
includeGroupAndSubgroups("io.github.fabricators_of_create")
includeGroupAndSubgroups("com.simibubi")
}
}
maven {
name = "Fabricators of Create (Releases)"
url = uri("https://mvn.devos.one/releases")
content {
includeGroupAndSubgroups("net.createmod")
includeGroupAndSubgroups("dev.engine-room")
includeGroupAndSubgroups("io.github.fabricators_of_create")
includeGroupAndSubgroups("com.simibubi")
}
}
maven("https://cursemaven.com") {
content { includeGroup("curse.maven") }
}
maven("https://maven.nucleoid.xyz")
maven {
name = "Nucleoid Maven"
url = uri("https://maven.nucleoid.xyz")
content {
includeGroupAndSubgroups("eu.pb4")
includeGroupAndSubgroups("xyz.nucleoid")
}
}
maven("https://maven.theillusivec4.top/")
maven("https://maven.su5ed.dev/releases")
maven {
name = "Sinytra"
url = uri("https://maven.sinytra.org")
content {
includeGroupAndSubgroups("org.sinytra")
}
}
maven("https://maven.terraformersmc.com/releases/")
maven("https://maven.cassian.cc/")
maven("https://maven.gegy.dev")
maven {
name = "Cassian's Maven"
url = uri("https://maven.cassian.cc")
content {
includeGroupAndSubgroups("cc.cassian")
includeGroupAndSubgroups("folk.sisby")
}
}
maven {
name = "Gegy"
url = uri("https://maven.gegy.dev/releases/")
content {
includeGroupAndSubgroups("dev.lambdaurora")
}
}
maven {
name = "Jared's maven"
url = uri("https://maven.blamejared.com/")
content {
includeGroup("mezz.jei")
includeGroup("net.mezzdev.config")
}
}
}
Loading
Loading