Skip to content

Commit 32f1ea2

Browse files
committed
Finalize v1.10.1
- Fixed CI/CD pipeline oversights - Added `is_riding` and `has_passengers` exclusion checks to the loop, fixing zombies not being excluded when riding zombie horses from the Zombie Horse Spawn mod by Serilum in 1.20.1 - Added `#minecraft:inside_step_sound_blocks` (leaf litter and other similar blocks) to the nonsolid tag - Fixed version checker messages not being displayed - Annotated required java version for mod versions
1 parent e98d4b7 commit 32f1ea2

File tree

16 files changed

+121
-57
lines changed

16 files changed

+121
-57
lines changed

.github/workflows/cd.yml

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -59,28 +59,33 @@ jobs:
5959
LOWER_DP=$(jq -r '.pack.supported_formats[0]' pack.mcmeta)
6060
UPPER_DP=$(jq -r '.pack.supported_formats[1]' pack.mcmeta)
6161
else
62-
echo "::error:: pack.mcmeta not found!"
62+
echo "::error:: pack.mcmeta file not found!"
6363
exit 1
6464
fi
6565
echo "Lower data pack format: $LOWER_DP, Upper: $UPPER_DP"
6666
6767
echo "Fetching versions from Spyglass API..."
6868
API_JSON=$(curl -s https://api.spyglassmc.com/mcje/versions || true)
69-
if [ -z "$API_JSON" ]; then
69+
if [ -z "$API_JSON" ] || ! echo "$API_JSON" | jq empty > /dev/null 2>&1; then
7070
echo "::error:: Spyglass API unreachable!"
71+
echo " Response: $API_JSON"
7172
exit 1
7273
fi
7374
7475
# Determine MC_LOWER: oldest version matching LOWER_DP
7576
# LIMITATION: Mod loaders don't accept snapshot versions, so we assume lower pack format is a release (and not a snapshot)
7677
MC_LOWER=$(echo "$API_JSON" | jq -r --argjson lower_dp "$LOWER_DP" '[.[] | select(.data_pack_version == $lower_dp and .type == "release")] | sort_by(.release_time | sub("\\+00:00$"; "Z") | fromdateiso8601) | .[0].id')
77-
if [ "$MC_LOWER" = "null" ]; then
78+
if [ -z "$MC_LOWER" ] || [ "$MC_LOWER" = "null" ]; then
7879
echo "::error:: Expected a release version for pack format ($LOWER_DP), but none was found!"
7980
exit 1
8081
fi
8182
8283
# Determine MC_UPPER: newest version matching UPPER_DP
8384
CHOSEN_UPPER_OBJ=$(echo "$API_JSON" | jq -c --argjson upper_dp "$UPPER_DP" '[.[] | select(.data_pack_version == $upper_dp)] | sort_by(.release_time | sub("\\+00:00$"; "Z") | fromdateiso8601) | reverse | .[0]')
85+
if [ -z "$CHOSEN_UPPER_OBJ" ] || [ "$CHOSEN_UPPER_OBJ" = "null" ]; then
86+
echo "::error:: Expected a version for pack format ($UPPER_DP), but none was found!"
87+
exit 1
88+
fi
8489
MC_UPPER=$(echo "$CHOSEN_UPPER_OBJ" | jq -r '.id')
8590
8691
echo "Found MC_LOWER=$MC_LOWER, MC_UPPER=$MC_UPPER"
@@ -217,19 +222,19 @@ jobs:
217222
- name: Upload artifacts
218223
id: upload
219224
uses: actions/upload-artifact@v4
220-
if: github.event.inputs.dry_run == true
225+
if: github.event.inputs.dry_run == 'true'
221226
with:
222-
name: "${{ github.event.repository.name }} v${{ env.TAG }} Test Builds (Unzip Me)"
227+
name: "${{ github.event.repository.name }} v${{ github.event.inputs.tag }} Test Builds (Unzip Me)"
223228
path: |
224-
./${{ github.event.repository.name }}-v${{ env.TAG }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-datapack.zip
225-
./${{ github.event.repository.name }}-v${{ env.TAG }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-mod.jar
226-
./${{ github.event.repository.name }}-v${{ env.TAG }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-resourcepack.zip
229+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-datapack.zip
230+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-mod.jar
231+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-resourcepack.zip
227232
228233
# Upload
229234
- name: Upload data pack version to Modrinth
230235
id: upload_modrinth_dp
231236
uses: Kir-Antipov/mc-publish@v3.3
232-
if: steps.check_datapack_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == false
237+
if: steps.check_datapack_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == 'false'
233238
with:
234239
modrinth-id: zrzYrlm0
235240
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
@@ -244,12 +249,12 @@ jobs:
244249
loaders: |
245250
datapack
246251
files: |
247-
./${{ github.event.repository.name }}-*.zip
252+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-datapack.zip
248253
249254
- name: Upload mod version to Modrinth
250255
id: upload_modrinth_mod
251256
uses: Kir-Antipov/mc-publish@v3.3
252-
if: steps.check_mod_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == false
257+
if: steps.check_mod_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == 'false'
253258
with:
254259
modrinth-id: zrzYrlm0
255260
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
@@ -269,16 +274,16 @@ jobs:
269274
midnightlib(optional){modrinth:codAaoxh}
270275
loaders: |
271276
fabric
272-
forge
273277
quilt
278+
forge
274279
neoforge
275280
files: |
276-
./${{ github.event.repository.name }}-*-mod.jar
281+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-mod.jar
277282
278283
- name: Upload data pack version to CurseForge
279284
id: upload_curseforge_dp
280285
uses: Kir-Antipov/mc-publish@v3.3
281-
if: steps.check_datapack_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == false
286+
if: steps.check_datapack_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == 'false'
282287
with:
283288
curseforge-id: 811803
284289
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
@@ -293,12 +298,12 @@ jobs:
293298
loaders: |
294299
datapack
295300
files: |
296-
./${{ github.event.repository.name }}-*.zip
301+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-datapack.zip
297302
298303
- name: Upload mod version to CurseForge
299304
id: upload_curseforge_mod
300305
uses: Kir-Antipov/mc-publish@v3.3
301-
if: steps.check_mod_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == false
306+
if: steps.check_mod_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == 'false'
302307
with:
303308
curseforge-id: 1223719
304309
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
@@ -322,15 +327,15 @@ jobs:
322327
forge
323328
neoforge
324329
files: |
325-
./${{ github.event.repository.name }}-*-mod.jar
330+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}-mod.jar
326331
327332
- name: Add changelog header for GitHub release
328-
if: github.event.inputs.dry_run == false
333+
if: github.event.inputs.dry_run == 'false'
329334
run: sed -i '1i_Changelog:_' CHANGES.md
330335
- name: Upload outputs to GitHub releases
331336
id: upload_github
332337
uses: Kir-Antipov/mc-publish@v3.3
333-
if: github.event.inputs.dry_run == false
338+
if: github.event.inputs.dry_run == 'false'
334339
with:
335340
github-token: ${{ secrets.GITHUB_TOKEN }}
336341
github-tag: v${{ github.event.inputs.tag }}
@@ -341,7 +346,7 @@ jobs:
341346
changelog-file: CHANGES.md
342347

343348
files: |
344-
./${{ github.event.repository.name }}-*.@(zip|jar)
349+
./${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ env.MC_HUMAN_VERSION_RANGE }}*.@(zip|jar)
345350
346351
# Build summary
347352
- name: Set job summary
@@ -355,7 +360,7 @@ jobs:
355360
<img alt=\"✅ Success\" src=\"https://raw.githubusercontent.com/Mqxx/GitHub-Markdown/main/blockquotes/badge/dark-theme/success.svg\">
356361
</picture><br>
357362
358-
**${{ github.event.repository.name }} v${{ github.event.inputs.tag }}** for **mc${{ env.MC_HUMAN_VERSION_RANGE }}** published successfully!
363+
**${{ github.event.repository.name }} v${{ github.event.inputs.tag }}** for **Minecraft ${{ env.MC_HUMAN_VERSION_RANGE }}** published successfully!
359364
360365
[View Changelog](https://github.com/${{ github.repository }}/blob/v${{ github.event.inputs.tag }}/CHANGES.md)
361366

.github/workflows/ci.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,16 @@ jobs:
7979
LOWER_DP=$(jq -r '.pack.supported_formats[0]' pack.mcmeta)
8080
UPPER_DP=$(jq -r '.pack.supported_formats[1]' pack.mcmeta)
8181
else
82-
echo "::error:: pack.mcmeta not found!"
82+
echo "::error:: pack.mcmeta file not found!"
8383
exit 1
8484
fi
8585
echo "Lower data pack format: $LOWER_DP, Upper: $UPPER_DP"
8686
8787
echo "Fetching versions from Spyglass API..."
8888
API_JSON=$(curl -s https://api.spyglassmc.com/mcje/versions || true)
89-
if [ -z "$API_JSON" ]; then
89+
if [ -z "$API_JSON" ] || ! echo "$API_JSON" | jq empty > /dev/null 2>&1; then
9090
echo "::warning:: Spyglass API unreachable, using fallback values. The annotated Minecraft versions may not be accurate."
91+
echo " Response: $API_JSON"
9192
ENDPOINT_DOWN=true
9293
else
9394
ENDPOINT_DOWN=false
@@ -110,13 +111,17 @@ jobs:
110111
# Determine MC_LOWER: oldest version matching LOWER_DP
111112
# LIMITATION: Mod loaders don't accept snapshot versions, so we assume lower pack format is a release (and not a snapshot)
112113
MC_LOWER=$(echo "$API_JSON" | jq -r --argjson lower_dp "$LOWER_DP" '[.[] | select(.data_pack_version == $lower_dp and .type == "release")] | sort_by(.release_time | sub("\\+00:00$"; "Z") | fromdateiso8601) | .[0].id')
113-
if [ "$MC_LOWER" = "null" ]; then
114+
if [ -z "$MC_LOWER" ] || [ "$MC_LOWER" = "null" ]; then
114115
echo "::error:: Expected a release version for pack format ($LOWER_DP), but none was found!"
115116
exit 1
116117
fi
117118
118119
# Determine MC_UPPER: newest version matching UPPER_DP
119120
CHOSEN_UPPER_OBJ=$(echo "$API_JSON" | jq -c --argjson upper_dp "$UPPER_DP" '[.[] | select(.data_pack_version == $upper_dp)] | sort_by(.release_time | sub("\\+00:00$"; "Z") | fromdateiso8601) | reverse | .[0]')
121+
if [ -z "$CHOSEN_UPPER_OBJ" ] || [ "$CHOSEN_UPPER_OBJ" = "null" ]; then
122+
# If no version is found, use the latest version from the API
123+
CHOSEN_UPPER_OBJ=$(echo "$API_JSON" | jq -c 'sort_by(.release_time | sub("\\+00:00$"; "Z") | fromdateiso8601) | reverse | .[0]')
124+
fi
120125
MC_UPPER=$(echo "$CHOSEN_UPPER_OBJ" | jq -r '.id')
121126
122127
echo "Found MC_LOWER=$MC_LOWER, MC_UPPER=$MC_UPPER"
@@ -291,7 +296,7 @@ jobs:
291296
<img alt="✅ Success" src="https://raw.githubusercontent.com/Mqxx/GitHub-Markdown/main/blockquotes/badge/dark-theme/success.svg">
292297
</picture><br>
293298
294-
${{ github.event.repository.name }} v${{ env.TAG }} for mc${{ env.MC_HUMAN_VERSION_RANGE }} built successfully! [See changelog](https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/CHANGES.md)
299+
**${{ github.event.repository.name }} v${{ env.TAG }}** for **Minecraft ${{ env.MC_HUMAN_VERSION_RANGE }}** built successfully! [See changes since last release](https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/CHANGES.md).
295300
296301
[Download via nightly.link](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }})
297302

CHANGES.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
- **Added support for Minecraft 1.21.5** 📔
2-
- Updated to work with the new equipment NBT format, new text component format, FallDistance NBT rename, and potion entity ID renames
3-
- Hide worn armor and tools now uses the unified armor.body slot instead of armor.feet for 1.21.5 and above to allow better late loot recovery
1+
- **Added support for Minecraft 1.21.5** 🌸
2+
- Updated to work with new equipment NBT format, new text component format, FallDistance NBT renaming, and potion entity ID renaming
3+
- Hide worn armor and tools now uses the unified `armor.body` slot instead of `armor.feet` in 1.21.5 and above to allow better late loot recovery
4+
- **Added native NeoForge support** (closes [#32](https://github.com/Tschipcraft/spawnanimations/issues/32), [#18](https://github.com/Tschipcraft/spawnanimations/issues/18))
45
- Hardened the Play animation on unsupported blocks option
5-
- Fixed incompatibility with PandaAntiPermanentBlockBreak mod (closes [#38](https://github.com/Tschipcraft/spawnanimations/issues/38))
6+
- Fixed incompatibility with [PandaAntiPermanentBlockBreak](https://modrinth.com/mod/Tb16z0yT) mod (closes [#38](https://github.com/Tschipcraft/spawnanimations/issues/38))
7+
- Added `is_riding` and `has_passengers` exclusion checks to the loop, fixing zombies not being excluded when riding zombie horses from the [Zombie Horse Spawn](https://modrinth.com/mod/owDBGfRd) mod in 1.20.1
68
- Fixed mobs not adjusting their animation speed during their animation
9+
- Fixed version checker messages not being displayed
10+
- Annotated required java version for mod versions

META-INF/mods.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ displayURL="https://modrinth.com/mod/zrzYrlm0"
2222
issueTrackerURL="https://github.com/Tschipcraft/spawnanimations/issues"
2323
updateJSONURL="https://api.modrinth.com/updates/zrzYrlm0/forge_updates.json?forge=only"
2424
displayTest="IGNORE_SERVER_VERSION"
25+
features={ java_version = "[17,)" }
2526

2627
[[dependencies.spawnanimations]]
2728
modId="minecraft"
@@ -36,6 +37,7 @@ displayTest="IGNORE_SERVER_VERSION"
3637
versionRange="[1.0.0,)"
3738
ordering="NONE"
3839
side="BOTH"
40+
referralUrl="https://modrinth.com/mod/codAaoxh/versions?l=forge"
3941

4042
[modproperties.spawnanimations]
4143
catalogueItemIcon="minecraft:zombie_spawn_egg"

META-INF/neoforge.mods.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ displayURL="https://modrinth.com/mod/zrzYrlm0"
2222
issueTrackerURL="https://github.com/Tschipcraft/spawnanimations/issues"
2323
updateJSONURL="https://api.modrinth.com/updates/zrzYrlm0/forge_updates.json?neoforge=only"
2424
displayTest="IGNORE_SERVER_VERSION"
25+
features={ java_version = "[21,)" }
2526

2627
[[dependencies.spawnanimations]]
2728
modId="minecraft"
@@ -37,7 +38,7 @@ displayTest="IGNORE_SERVER_VERSION"
3738
ordering="NONE"
3839
side="BOTH"
3940
referralUrl="https://modrinth.com/mod/codAaoxh/versions?l=neoforge"
40-
reason="For global settings across all worlds."
41+
reason="Global settings across all worlds"
4142

4243
[modproperties.spawnanimations]
4344
catalogueItemIcon="minecraft:zombie_spawn_egg"
Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
## by Tschipcraft
22

3+
## Initalise scoreboards
34
scoreboard objectives add ts.sa.timer dummy
45
scoreboard objectives add ts.sa.count dummy
5-
scoreboard objectives add tschipcraft.menu trigger
66
scoreboard objectives add ts.sa.welcome trigger
77

88
scoreboard objectives add ts.sa.x dummy
99
scoreboard objectives add ts.sa.y dummy
1010
scoreboard objectives add ts.sa.z dummy
1111

12-
scoreboard objectives add ts.sa.settings dummy
13-
scoreboard objectives add ts.sa.distance dummy
14-
15-
# Default settings
16-
function spawnanimations:settings/defaults
17-
1812
# Entity properties
1913
scoreboard objectives add ts.sa.e.y dummy
2014
scoreboard objectives add ts.sa.e.speed dummy
@@ -24,12 +18,26 @@ scoreboard objectives add ts.sa.e.nbt.Inv dummy
2418
scoreboard objectives add ts.sa.e.nbt.Sil dummy
2519
scoreboard objectives add ts.sa.e.nbt.CrCh dummy
2620

27-
# Initalise storage
21+
# Settings
22+
scoreboard objectives add ts.sa.settings dummy
23+
scoreboard objectives add ts.sa.distance dummy
24+
25+
function spawnanimations:settings/defaults
26+
27+
# Menu/Other
28+
scoreboard objectives add tschipcraft.menu trigger
29+
scoreboard players enable @a tschipcraft.menu
30+
31+
scoreboard objectives add tvc_ignore dummy
32+
33+
## Initalise storage
2834
data merge storage spawnanimations:temp {ArmorItems:[{},{},{},{}],HandItems:[{},{}]}
2935

30-
# Schedule loop
36+
## Reset advancements
37+
advancement revoke @a only tschipcraft:menu
38+
39+
## Schedule loop and execute version checker
3140
schedule clear spawnanimations:loop
3241
schedule function spawnanimations:loop 1s
3342

34-
# Initalise mc version checker
3543
function spawnanimations:internal/version_checker/start

data/spawnanimations/function/reset.mcfunction

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@ execute as @e[tag=ts.sa.verify] at @s run function spawnanimations:internal/anim
1111
# Reset checked items
1212
tag @e[type=minecraft:item,tag=ts.sa.i.checked] remove ts.sa.i.checked
1313

14+
# Reset advancements
15+
scoreboard players reset @a tschipcraft.menu
16+
scoreboard players enable @a tschipcraft.menu
17+
advancement revoke @a only tschipcraft:menu
18+
1419
# Reschedule loop
1520
schedule clear spawnanimations:loop
1621
schedule function spawnanimations:loop 2s
1722

18-
saySuccessfully resetted Spawn Animations!
23+
say ⏏ Spawn Animations successfully reset!

data/spawnanimations/function/uninstall.mcfunction

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ scoreboard objectives remove ts.sa.settings
2222
scoreboard objectives remove ts.sa.distance
2323

2424
scoreboard objectives remove tschipcraft.menu
25+
execute unless score $global tvc_ignore matches 1 run scoreboard objectives remove tvc_ignore
2526

2627
scoreboard objectives remove ts.sa.e.y
2728
scoreboard objectives remove ts.sa.e.speed
Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
## by Tschipcraft
22

3+
## Initalise scoreboards
34
scoreboard objectives add ts.sa.timer dummy
45
scoreboard objectives add ts.sa.count dummy
5-
scoreboard objectives add tschipcraft.menu trigger
66
scoreboard objectives add ts.sa.welcome trigger
77

88
scoreboard objectives add ts.sa.x dummy
99
scoreboard objectives add ts.sa.y dummy
1010
scoreboard objectives add ts.sa.z dummy
1111

12-
scoreboard objectives add ts.sa.settings dummy
13-
scoreboard objectives add ts.sa.distance dummy
14-
15-
# Default settings
16-
function spawnanimations:settings/defaults
17-
1812
# Entity properties
1913
scoreboard objectives add ts.sa.e.y dummy
2014
scoreboard objectives add ts.sa.e.speed dummy
@@ -24,12 +18,23 @@ scoreboard objectives add ts.sa.e.nbt.Inv dummy
2418
scoreboard objectives add ts.sa.e.nbt.Sil dummy
2519
scoreboard objectives add ts.sa.e.nbt.CrCh dummy
2620

27-
# Initalise storage
21+
# Settings
22+
scoreboard objectives add ts.sa.settings dummy
23+
scoreboard objectives add ts.sa.distance dummy
24+
25+
function spawnanimations:settings/defaults
26+
27+
# Menu/Other
28+
scoreboard objectives add tschipcraft.menu trigger
29+
scoreboard players enable @a tschipcraft.menu
30+
31+
scoreboard objectives add tvc_ignore dummy
32+
33+
## Initalise storage
2834
data merge storage spawnanimations:temp {ArmorItems:[{},{},{},{}],HandItems:[{},{}]}
2935

30-
# Schedule loop
36+
## Schedule loop and execute version checker
3137
schedule clear spawnanimations:loop
3238
schedule function spawnanimations:loop 1s
3339

34-
# Initalise mc version checker
3540
function spawnanimations:internal/version_checker/start

data/spawnanimations/functions/reset.mcfunction

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ tag @e[type=minecraft:item,tag=ts.sa.i.checked] remove ts.sa.i.checked
1515
schedule clear spawnanimations:loop
1616
schedule function spawnanimations:loop 2s
1717

18-
saySuccessfully resetted Spawn Animations!
18+
say ⏏ Spawn Animations successfully reset!

0 commit comments

Comments
 (0)