This repository was archived by the owner on Sep 21, 2026. It is now read-only.
Update .gitignore #109
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate | |
| on: | |
| push: | |
| branches: ["**"] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| validate: | |
| name: Validate mcfunction syntax | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Check fake player prefix (#) usage | |
| run: | | |
| echo "Scanning for bare scoreboard player names that should use # prefix..." | |
| ISSUES=0 | |
| # Known internal names that must use # prefix | |
| for name in mce tick queue sched batch; do | |
| MATCHES=$(grep -rn "scoreboard players [a-z]* ${name} " data/ 2>/dev/null | grep -v "^Binary" || true) | |
| if [ -n "$MATCHES" ]; then | |
| echo "ERROR: Found bare player name '${name}' (should be '#${name}'):" | |
| echo "$MATCHES" | |
| ISSUES=$((ISSUES + 1)) | |
| fi | |
| done | |
| if [ $ISSUES -gt 0 ]; then | |
| echo "::error::Found $ISSUES fake-player naming issue(s). Use # prefix for internal scoreboard names." | |
| exit 1 | |
| fi | |
| echo "OK — all internal scoreboard names use # prefix." | |
| - name: Check pack.mcmeta validity | |
| run: | | |
| echo "Validating pack.mcmeta..." | |
| python3 -c " | |
| import json, sys | |
| with open('pack.mcmeta') as f: | |
| data = json.load(f) | |
| pack = data.get('pack', {}) | |
| assert 'pack_format' in pack, 'Missing pack_format' | |
| assert 'description' in pack, 'Missing description' | |
| print(f'pack_format: {pack[\"pack_format\"]}') | |
| print(f'description: {pack[\"description\"]}') | |
| print('pack.mcmeta OK') | |
| " | |
| - name: Check function tag JSON validity | |
| run: | | |
| echo "Validating all JSON files..." | |
| ERRORS=0 | |
| while IFS= read -r -d '' file; do | |
| python3 -c " | |
| import json, sys | |
| try: | |
| with open('$file') as f: | |
| json.load(f) | |
| except Exception as e: | |
| print(f'INVALID JSON: $file — {e}') | |
| sys.exit(1) | |
| " || ERRORS=$((ERRORS + 1)) | |
| done < <(find data/ -name "*.json" -print0) | |
| if [ $ERRORS -gt 0 ]; then | |
| echo "::error::$ERRORS JSON file(s) are invalid." | |
| exit 1 | |
| fi | |
| echo "All JSON files valid." | |
| - name: Check forceload safety | |
| run: | | |
| echo "Checking forceload usage..." | |
| COUNT=$(grep -rn "forceload add" data/ | wc -l) | |
| echo "forceload add calls: $COUNT" | |
| # Warn if forceload used outside load functions | |
| BAD=$(grep -rn "forceload add" data/ | grep -v "core/load.mcfunction" || true) | |
| if [ -n "$BAD" ]; then | |
| echo "::warning::forceload used outside core/load.mcfunction — review intended:" | |
| echo "$BAD" | |
| fi | |
| echo "forceload check done." | |
| - name: Mecha lint | |
| run: | | |
| pip install mecha | |
| mecha . |