Skip to content

v6.0.0 #266

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 114 commits into from
Jun 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
83b1838
inheritance checks for script extensions
GDami Feb 23, 2023
3b5d46d
log after installing all script extensions
GDami Feb 23, 2023
f92b68d
Merge pull request #124 from GDami/script-extensions-with-inheritance
KANAjetzt Feb 24, 2023
64c1081
add ScriptExtensionData in the setup
GDami Feb 24, 2023
8b2ed7b
refactor: :recycle: Added is_silent parameter to validation functions
KANAjetzt Feb 25, 2023
12f7bdc
Merge pull request #130 from KANAjetzt/silent_is_name_or_namespace_valid
KANAjetzt Feb 25, 2023
6682efb
Merge pull request #127 from GDami/add-ScriptExtensionData-in-the-setup
KANAjetzt Feb 25, 2023
3c19fdd
validation: Don't allow mods to include themselves as dependencies or…
ithinkandicode Feb 26, 2023
6d5ade4
Cleanup: Remove todo comments
ithinkandicode Feb 26, 2023
1ccb05f
Cleanup: Remove trailing whitespace
ithinkandicode Feb 26, 2023
4399abf
Config JSON: Swap status codes 1 and 2 (closes #131)
ithinkandicode Feb 26, 2023
03cdf98
Merge pull request #136 from ithinkandicode/cleanup-whitespace
ithinkandicode Feb 26, 2023
dcbc0e3
Merge pull request #135 from ithinkandicode/cleanup-todos
ithinkandicode Feb 26, 2023
5c2b66f
Merge pull request #134 from ithinkandicode/self-dependency-fix
ithinkandicode Feb 26, 2023
97de3ff
Merge pull request #137 from ithinkandicode/config-json-swap-status-1-2
ithinkandicode Feb 26, 2023
0c30407
Misc: Add `code_note` func, and use it to show a helpful message in `…
ithinkandicode Feb 26, 2023
00529d0
Config JSON: Add API methods for saving data
ithinkandicode Feb 26, 2023
0a56d51
Utility: Add 2 funcs for saving data to files
ithinkandicode Feb 27, 2023
3ff057b
Misc: Expand `code_note` for `fatal-error` log
ithinkandicode Feb 27, 2023
031738c
Config JSON: Fix typo in comment
ithinkandicode Feb 27, 2023
583e886
Config JSON: Fix missing type safety
ithinkandicode Feb 27, 2023
f1637d9
Merge pull request #139 from ithinkandicode/fatal-log-code-note
ithinkandicode Feb 27, 2023
25bdd59
Merge pull request #142 from ithinkandicode/config-json-saving-api
ithinkandicode Feb 27, 2023
09d926e
Utility: Rename JSON saving func
ithinkandicode Feb 27, 2023
bd54571
Merge branch 'development' into utility-file-saving
ithinkandicode Feb 27, 2023
3f35b8c
Misc: Uncomment `code_note` code in file saving API methods
ithinkandicode Feb 27, 2023
68fe89d
Merge pull request #143 from ithinkandicode/utility-file-saving
ithinkandicode Feb 27, 2023
f1962bc
Merge pull request #149 from ithinkandicode/code-note-uncomment
ithinkandicode Feb 27, 2023
7399142
Move classes to their own directory
ithinkandicode Feb 27, 2023
64371e5
Merge pull request #150 from ithinkandicode/directory-for-classes
ithinkandicode Feb 28, 2023
e01a5d5
ML Options: Add the groundwork for loading custom options (#145)
ithinkandicode Feb 28, 2023
01983b7
Config JSON: Only log notice for no custom JSON once (#138)
ithinkandicode Feb 28, 2023
b4d31bc
Workshop Support (#148)
ithinkandicode Mar 1, 2023
08270f1
Refactor: Move `class_name` to be before `extends` (#155)
ithinkandicode Mar 2, 2023
90bd4c6
feat: :sparkles: Added `get_as_dict()` function to ModManifest Class …
KANAjetzt Mar 2, 2023
61132dd
API: Add methods for deprecation + API Folder (#156)
ithinkandicode Mar 2, 2023
046f434
API: Move Steam to dedicated dir (#158)
ithinkandicode Mar 2, 2023
03ddc46
Refactor: Move options classes + Rename options_current (#159)
ithinkandicode Mar 2, 2023
dd92e42
API: Move Config to a dedicated class (#157)
ithinkandicode Mar 2, 2023
eaf52c2
Options: Add option to skip mods by mod ID (#160)
ithinkandicode Mar 2, 2023
02d128b
refactor: :recycle: ModManifest added type checks (#163)
KANAjetzt Mar 2, 2023
e402018
refactor: ♻️ Added compatible_mod_loader_version to manifest data (#164)
KANAjetzt Mar 3, 2023
6f9068b
fix: :pencil2: fix typo hypen -> hyphen (#168)
KANAjetzt Mar 4, 2023
547c437
refactor: :recycle: split off dep and inc validation function (#170)
KANAjetzt Mar 5, 2023
dcdbbef
refactor: :recycle: Added `is_semver_version_array_valid()` (#171)
KANAjetzt Mar 5, 2023
09cf37e
feat: :sparkles: Added `to_json()` function (#175)
KANAjetzt Mar 8, 2023
4f2ea00
feat: ✨ ModLoaderStore: New singleton to store data (#172)
ithinkandicode Mar 9, 2023
8f669f0
fix: ✏️ Fix typo: `improt` -> `import` (#176)
ithinkandicode Mar 9, 2023
5f92643
style: :art: Add `\t` indent to `JSON.print()` (#177)
KANAjetzt Mar 11, 2023
2776655
refactor: :recycle: Move utility funcs out of *mod_manifest.gd* (#182)
KANAjetzt Mar 24, 2023
40ae4f1
fix: :bug: circular dependency check (#183)
KANAjetzt Mar 24, 2023
93e6cab
fix: :bug: continue check if circular dep is detected (#184)
KANAjetzt Mar 24, 2023
7649406
feat: :sparkles: added load_before (#185)
KANAjetzt Mar 25, 2023
ea7e538
feat: :sparkles: Added optional dependencies (#188)
KANAjetzt Mar 26, 2023
bf5f705
fix: ♻️ ModID in `dependencies` and `incompatibilities` (#174)
Blade67 Mar 28, 2023
4cbdbca
refactor: :recycle: split validation functions (#191)
KANAjetzt Mar 28, 2023
7f9afed
refactor: :recycle: `validate_distinct_mod_ids_in_arrays()` (#193)
KANAjetzt Mar 29, 2023
28ce51b
feat: :sparkles: Added validation for `load_before` (#194)
KANAjetzt Mar 29, 2023
b4cf01c
refactor: :recycle: Check for valid mod_ids in `load_before` (#196)
KANAjetzt Mar 30, 2023
0bbf74b
refactor: :recycle: add mod_id in all validation error messages (#197)
KANAjetzt Mar 30, 2023
429f8c5
refactor: :recycle: changed mod config dir path to `user://configs` (…
KANAjetzt Mar 30, 2023
c0a5624
feat: added _reset_extension (#195)
otDan Mar 30, 2023
f11fb71
feat: added _remove_extension (#198)
otDan Mar 30, 2023
41b1801
fix: :bug: self setup chicken and egg problem (#201)
KANAjetzt Mar 30, 2023
80fea72
fix: check for min length 3 in namespace and name (#202)
Qubus0 Mar 30, 2023
f8185e0
feat: Option to skip deprecated fatal error (#207)
ithinkandicode Apr 4, 2023
d3c35cf
feat: mod reloading (#203)
otDan Apr 4, 2023
187e5f5
refactor: Move main mod API funcs to `ModLoaderMod`, from `ModLoader`…
ithinkandicode Apr 9, 2023
15bc5bc
ci: add PR dependency check GitHub action (#213)
KANAjetzt Apr 11, 2023
34bcb83
fix: :bug: check if a mod `is_loadable` (#215)
KANAjetzt Apr 16, 2023
a14a632
refactor: :recycle: Logging (#205)
KANAjetzt Apr 17, 2023
f64d8df
feat: ✨ Added `only_once` parameter to all log funcs (#210)
KANAjetzt Apr 17, 2023
5cff450
refactor: :recycle: created *setup_log.gd* and setup_utils.gd* (#211)
KANAjetzt Apr 17, 2023
839d6a0
test: :white_check_mark: tests for manifest validation (#216)
KANAjetzt Apr 17, 2023
37f9010
chore: Add `.gitattributes` to allow AssetLib downloads (#217)
KANAjetzt Apr 18, 2023
47d31c1
chore: :truck: Copied LICENSE into *addons\mod_loader* (#223)
KANAjetzt Apr 19, 2023
bec0f52
refactor: :recycle: Move `mod_data` `ModLoader` -> `ModLoaderStore` (…
KANAjetzt Apr 21, 2023
1d5588b
refactor: :recycle: Move `mod_load_order` to `ModLoaderStore` (#220)
KANAjetzt Apr 21, 2023
13672ae
refactor: ♻️ move remaining vars to `ModLoaderStore` (#224)
KANAjetzt Apr 21, 2023
9f4b902
refactor: ♻️ Split up `ModLoaderUtils` (#226)
KANAjetzt Apr 21, 2023
36472bb
refactor: ♻️ added `ModLoaderDependency` Class (#222)
KANAjetzt Apr 21, 2023
4576b8b
refactor: ♻️ added `ModLoaderScriptExtension` Class (#225)
KANAjetzt Apr 21, 2023
e88ec1e
chore: :memo: init `CONTRIBUTING.md` (#229)
KANAjetzt Apr 21, 2023
b9ad9a5
feat: ✨ Add user profiles (#214)
KANAjetzt Apr 22, 2023
33f85b7
style: ✏️ rename funcs to match naming convention (#232)
KANAjetzt Apr 22, 2023
5fc7268
refactor: 🚚 Moved and renamed `ModLoaderSteam` (#230)
KANAjetzt Apr 23, 2023
60d4f3a
refactor: ♻️ move consts from `ModLoader` to `ModLoaderStore` (#233)
KANAjetzt Apr 23, 2023
a8b2239
fix: 🐛 wrong `UNPACKED_DIR` reference (#234)
KANAjetzt Apr 24, 2023
97eda11
fix: :bug: fix wrong function call (#235)
KANAjetzt Apr 24, 2023
3358adc
fix: Missed ModLoaderUtils to _ModLoaderFile change (#240)
otDan May 9, 2023
ca40996
feat: Added mod disabling (#241)
otDan May 9, 2023
49464db
feat: :sparkles: added `is_mod_loaded()` (#251)
KANAjetzt May 26, 2023
a147471
feat: ✨ Advanced Mod Configs (#237)
KANAjetzt Jun 3, 2023
a0008bf
refactor: 🚚 move funcs out of ModLoader (#255)
KANAjetzt Jun 4, 2023
284c058
refactor: ♻️ Ignore hidden directories (#252)
Ategon Jun 9, 2023
b46fd7f
refactor: :recycle: remove `incompatibilities` from required keys (#261)
KANAjetzt Jun 10, 2023
119dfe9
fix: :pencil2: removed reference to manifest in error message (#259)
KANAjetzt Jun 10, 2023
9aee1eb
fix: 🐛 added deprecation for `mod_data` (#258)
KANAjetzt Jun 10, 2023
3151185
feat: ✨ option to allow autoload placement anywhere (#264)
KANAjetzt Jun 10, 2023
5c50fda
refactor: :recycle: store Profile object instead of profile name (#260)
KANAjetzt Jun 10, 2023
afed11f
chore: :pencil2: renamed `classes` dir to `resources` (#265)
KANAjetzt Jun 11, 2023
5c26dc6
Merge branch 'main' into development
KANAjetzt Jun 11, 2023
cd5685f
fix: :bug: removed `dir_exists()` check (#269)
KANAjetzt Jun 11, 2023
e59c92e
fix: :bug: added a check if `current_user_profile` is `null` (#270)
KANAjetzt Jun 11, 2023
46ecf90
style: :pencil2: `add_translation_from_resource` to `add_translation`…
KANAjetzt Jun 11, 2023
3da42cb
chore: :arrow_up: update version const for v6 (#272)
KANAjetzt Jun 11, 2023
84a374d
fix: :bug: added `get_mod_data_all()` (#274)
KANAjetzt Jun 12, 2023
8651ef9
fix: :bug: resize the `path_array` by `- 3` (#275)
KANAjetzt Jun 12, 2023
142664b
build: :fire: removed git modules (#273)
KANAjetzt Jun 13, 2023
8f030b2
fix: always use warnings for deprecations in standalone builds (#276)
Qubus0 Jun 13, 2023
90334fc
fix: :bug: log stack only saved for `logged_messages.all` (#278)
KANAjetzt Jun 17, 2023
a01a703
docs: 📝 Rewrote API class comments (#279)
KANAjetzt Jun 17, 2023
286f296
fix: Transitive Comparator for script sorting (#277)
boardengineer Jun 17, 2023
f5eb5a5
refactor: :truck: Moved methods handling mod state (#283)
KANAjetzt Jun 19, 2023
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
15 changes: 15 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Git stuff
/.gitattributes export-ignore
/.gitignore export-ignore
/.gitmodules export-ignore
.github/ export-ignore
/README.md export-ignore
/CONTRIBUTING.md export-ignore
/LICENSE export-ignore

# Tests
test/ export-ignore

# Files not required by AssetLib downloads (provided via download for manual installers)
addons/mod_loader/vendor/ export-ignore
addons/mod_loader/mod_loader_setup.gd export-ignore
6 changes: 4 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
on: [pull_request]

on:
pull_request:
branches-ignore:
- 'main'
jobs:
check_dependencies:
runs-on: ubuntu-latest
Expand Down
64 changes: 64 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Contributing Guidelines

Thank you for considering contributing to our project! We welcome contributions from everyone. Before getting started, please take a moment to read our guidelines.

## How to contribute

1. Fork the repository.
2. Create a new branch for your contribution.
3. Make your changes and commit them.
4. Push your changes to your fork.
5. Submit a pull request.

## Reporting bugs

If you find a bug, please let us know by opening an issue. Be as detailed as possible when describing the issue, including any steps to reproduce the bug. If applicable, please provide your `modloader.log` file from the `user://` (Godot app_userdata) folder. This file contains valuable information that can help us identify the cause of the issue.

## Suggesting features

If you have an idea for a new feature or improvement, please open an issue to discuss it. We welcome all suggestions and will consider them carefully.

## Coding style

Please follow the [Godot 3.5 coding conventions for GDScript](https://docs.godotengine.org/en/3.5/tutorials/scripting/gdscript/gdscript_styleguide.html)

In addition, please follow these guidelines:

### Naming Convention
- Prefix local (private) to file vars / functions with `_`
- Prefix classes that should only be used by the ModLoader with `_`
- If a method is in a non-prefixed class and ModLoader Internal, but used outside of the private scope, prefix with `_`, use it outside the scope, but add a comment why it was used there

Reasoning:
1. Underscore methods/vars should only be used within the same file
2. Most classes should not be used by mods, only by the ModLoader. if they are prefixed with an underscore, no mod should access them and we are free to change the internal structure without breaking mods and needing deprecations
3. In some cases we need to use private methods outside of their file (`_rotate_log_file` for example) and the class is a public one (`ModLoaderLog` here). Since the method should not be accessible to mods, we are using a "private" method outside of its scope here - and that needs an explanation

### String Standards
- Double quotes over single quotes: `"string"`, not `'string'`
- Quote escaping over single quotes : `"\"hello\" world"`, not `'"hello" world'`
- Format strings over string concatenation and `str()`: `"hello %s!" % place`, not `"hello " + place + "!"`, not `str("hello", place)`. Except for very simple cases/single concatenation: `"hello " + place`, not `"hello %s" % place`
- split long strings into shorter ones with string concatenation `"" + "" + ...`, not `str("", "", ...)`
```gdscript
ModLoaderLog.info(
"pretend that this" +
"is a really long" +
"message"
)
```

## Documentation

The documentation for this project is located in the repository's wiki. Please make sure to update the relevant documentation pages when making changes to the code. If you're not sure what needs to be updated, please ask in your pull request or issue.
*Note that you will mostly edit the [Upcoming Features](https://github.com/GodotModding/godot-mod-loader/wiki/Upcoming-Features) page, where all changes to the dev branch are documented until they become part of the next major update.*

## Communicating over Discord
We use Discord for communication and collaboration. You can join our Discord server at [discord.godotmodding.com](https://discord.godotmodding.com). Please use appropriate channels for your discussions and keep conversations respectful and on-topic.

## Licensing

All contributions must be licensed under the same license as the project. By contributing, you agree to license your contributions under the same terms.

## Thank you!

We appreciate your contributions and look forward to working with you.
21 changes: 21 additions & 0 deletions addons/JSON_Schema_Validator/JSON_Schema_validator_LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2020 Sahedo

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading