Skip to content

Commit

Permalink
MCprep 3.6 RC-1 (#566)
Browse files Browse the repository at this point in the history
* Update Asset-Submission.yaml to add asset-submission (#449)

Moving forward, using this label to apply to asset submissions to make it easier to identify, and to potentially identify community members to review.

* Change bpy build yaml config

* Migrating more critical tests ahead of release.

This includes QA checking scripts, which have already uncovered one
issue with one of the updated rigs.

* Migrated tests deleted from prior commit.

* Removed last bv28 calls and no longer necessary qa test limit

* Fixed geo node effect spawning for blender 4.0+ and migrated tests.

* Resolved most lint errors in the mcmodel file.

* Removed already irrelevant old unit tests.

* Updated mapping data

* Enable unittest -t flag to match entire test classes or files.

* Fix running util_test class on its own.

* Fix bug where the "discover" unittest function would delete data json.

This was a weird one. Essentially, running the unittests would always
result in the `mcprep_data_update.json` file being renamed to
`mcprep_data.json` (and since that file isn't tracked in git, would look
like the file was deleted wrt to local changes). This was happening, out
of all things, due to this line in the unittest runner:

unittest.TestLoader().discover(MODULE_DIR, "*_test.py")

This is because the discover command clearly has to attempt loading of
the modules it's scanning over, and at some point we import the env
module and thus the __init__ code on module load would trigger,
resulting in the file rename. By moving the rename into the register
function, we ensure it only happens in the context of an addon, which
is all we really need for it.

* Migrated all remaining tests, with all tests passing.

Unfortunately, we do still have the issue that the test runner renames
the mcprep_data_update.json file, and modifies checked-in mtl files,
but we can address this in the future.

* Removed the old test script and shell files.

The new test runner in python is straight forward enough to use that I
feel there is no longer a need for any system-specific shell files.

* Upversion MCprep to v3.5

* Ensure exit code of test runner is non-zero if any failure

* Create the initial release-drafting shell script

* Incrementing version for dev branch

* Added disclaimer in README

* Adopting py 3.7+ syntax and removing most lint warnings and errors

Some can't be avoided, such as those around bpy property definitions.

* Proactively identify bad analytics ID and replace with new one

Addresses an issue introduced in MCprep v3.5.0

* Raise more specific error with runtime error wrapper in background.

* Establish baseline tracker.py unittest

* Ensure bad parent id is overwritten by good local id + exhaustive tests

* Renaming SKIP_IDS to be INVALID_IDS.

* Updated BlenderChanges.md for Blender 4.0

* fix overlay geometry

* Updated for safer and more common bash script styling

* Add comment, slight face offset for overlay geometry

* Offset the overlay texture only

* Update load material function to support principled BSDF v2 in blender 4.0

* Add bpy-build to gitignore

* Revert "Add bpy-build to gitignore"

This reverts commit 03ac1d2.

* Revert "Change bpy build yaml config"

This reverts commit 8f2f793.

* Reducing overlay offset and merge by distance margin

* Upversion for next release

* Improved releaser script

Ran into a couple issues during the last release

* Upversion post 3.5.1 release

* Ensure tracker files never remain after tests or during prod builds (#506)

Two levels of trying to make sure we never ship with tracker code again.
Also removed now-redundant test for checking if tracker id present in git dir

* Marked optimizer as deprecated

* Added note on deprecation in optimize_scene.py

* Remove deprecated conf.py references

This commit removes the deprecated conf.py references that were meant to
be removed in MCprep 3.5.1, but weren't due to Blender 4.0's release

* Removed make_annotations and renamed compat funcs

* Fixed "Find Missing" due to animated image location and added test. (#520)

This operator was already high in terms of test coverage, but the one
branch not covered (and, the todo listed) was for animated textures. of
course, that was what went wrong. Now it tests this branch too.

* Fix direct socket name reference error in optimizer. (#519)

* Prevent collection-effect obj particle src from being cleaned up. (#518)

Before this change, if a collection effect included a particle system
where the source of the particles was an object (as opposed to an entire
collection), then on save and reload of that file, the particle object
would have been cleaned up, as it was not linked to the scene and for
some reason, since forever, blender does not count usage of an object
as a particle emitter as an object use reference when it comes to its
own internal cleanup.

Works now, tested by saving and reloading a file after spawning in a
version of the firework tutorial where I didn't use a collection as the
firework source.

* Made notice regarding owning a legal copy of Minecraft more visible (#522)

More explicit notice about having valid MC license

---------

Co-authored-by: TheDuckCow & StandingPad Animations

* Change Skin Swap's behavior for more nuanced swapping (#498)

* Changed behavior of skin swap to be more nuanced

Skin swap originally would change all image textures on all materials of
the selected object, regardless of whether the user wanted to or not.
This is not ideal for rigs that need multiple seperate textures.

To expand the use case of skin swap, skin swap will now use a more
nuanced method of swapping skins based on node name, which is an already
established precedent from the MCprep Cycles Optimizer

* Fixed detection of node name in set_cycles_texture

* Fixed error with node name checks

* Changed name check to ignore duplicates

* Rename and set swap_all_imgs default for texture changing function

Adding positional args to fix ordered references and set, while making
custom nuanced swapping still possible.

---------

Co-authored-by: Patrick W. Crawford <theduckcow@live.com>

* Upversion for MCprep v3.5.2

* Update Bug-Report.yml (#525)

* Updated mcprep_data json mapping for latest MC 1.20.4

* Readme updates for new settings and deprecation note

* Updating grass canonical mapping and improved desaturation debug prints

With this, we now have correct prep material saturation again for this
grass object, and all tests passing again.

* Added clarification to README

* Fixed incorrect keyword argument

* Added swap texture pack test

* Upversion and disable porcelain check

* Updated test run script and refreshed data file for MC 1.20.5

* chore: Merging Milestone 3.6.0 to Dev

* Upgrade to BpyBuild 0.3.0

* Updated reference command in CONTRIBUTING.md

* Added action-scripts folder with BpyBuild actions

This is so we can better organize our scripts

* Added Ignore Filters action as default

This was something that would have been useful in #505, and now we have
it :D

* Updated ignore_filters.py to print deleted files

This is a small change that'll make it easier to understand what's going
on at runtime with regards to the ignore filter

* Updated build command in run_tests.py

* Added print statement to dev.py

* Updated bpy-build.yaml

* Added .blend filter for dev builds

* Switched to BpyBuild ignore filters

* Revert "Switched to BpyBuild ignore filters"

This reverts commit 7469142.

* Updated config option in BpyBuild

* Added warning to ignore_filters.py

* Added error object for better user experience

* Switched to BaseException for MCprepError

* Removed redundant variable

* Refactored colorspace setup to be more flexible

In the past, we'd set this to a hard coded value. However, that proved
to be annoying to users using non-standard OCIO configs like ACES or
early versions of AgX. MCprep already fixes MTL files for ACES
compatibility, so we're expanding this to prep materials.

In `mcprep_data.json`, there will now be a section called
"non_color_options", which is a list of different options for Non-Color
Data/Generic Data. If a user is using a non-standard setup, they can
simply add the correct option in the JSON file and prep materials will
function properly.

The matching goes in order from first to last, and MCprep will use the
first value matched at runtime.

* First commit for i18n

* Added .venv to gitignore

* Fixed missing ) and added additional string

* Moved import statement for inspect

* Reduced nesting in function

* refactor(comment): Refactored comment in util.py

* Added some metadata to English PO file

* build(config): Removed ignore filter

* Update .gitignore

Co-authored-by: Patrick W. Crawford <theduckcow@live.com>

* chore: removed MCprep_resources from gitignore

* feat: Added zn_CN to Languages

* refactor(language): moved en to en_US

* feat: make MCprep follow the user's Blender locale

* refactor(languages): moved to zn_HANS

* fix: made translations change on the fly

* fix: Added fallback for non-existent translations

* fix: Fixed fallback

* Added some details to MCprep POT

* docs: Added documentation on translating MCprep

* docs(i18n): Removed redundant line

* Updated POT file

* chore(i18n): Added new strings to zn_HANS

* Recompiled zh_HANS

* fix(annotations): Added missing annotation to _

* docs(i18n): Added developer documentation

* Added polib to dependencies

* build: Added dictionary generator for i18n

This allows us to use bpy.app.translations without requiring translators
to have Python experience. While Blender allegedly has this ability, I
haven't been able to find it, so as far as I'm aware, it doesn't exist.

* Added use of bpy.app.translations

* fix(i18n): Fixed detection of translations.py

* Added autobuilding of MO files to default action

* docs(i18n): Updated i18n docs for maintainers

* build(i18n): Added comments to mo compile script

* docs(i18n): Added BpyBuild to i18n docs

* chore(git): Added MO files to .gitignore

* refactor(removal): Remove MCprep optimizer

The MCprep optimizer was deprecated in the MCprep 3.5 series, and slated
for removal in MCprep 3.6. This is due to the following reasons:
- Outdated design (made prior to Blender 3.0 when Cycles X was still in
  development, and has yet to adapt to modern Cycles)
- Extreme bugs that are hard to fix, such as 80+ light bounces
- Unnecessary as there's no special optimizations for Minecraft scenes,
  and on the contrary may actually be a bad thing as it uses settings
  like clamping indirect with horrible options

* Added polib directly in the source tree

* build: Added separate translate action

* build: added if-name-main to all actions

* docs(i18n): Updated developer docs

* Readded flake8 to requirements.txt

* docs(i18n): Removed negative tone from docs

* Revert "Added polib directly in the source tree"

This reverts commit 8288d5d.

* Updated POT file

* Updated contributing guide readme

* docs: Updated BlenderChanges.md

* build: Add script to generate POT file + Migration to BpyBuild 0.4 (#548)

* build: Add script to generate POT file

* build: Moved build_pot to a separate action

* Fixed metadata and line reference generation

* Updated POT file

* build: Future proofed script for BpyBuild actions

* Revert "build: Future proofed script for BpyBuild actions"

This reverts commit 2d1533a.

* deps: Updated BpyBuild to 0.4

* build: Updated build_pot to use pre_build

* i18n: Updated POT file

* build: Moved build-pot to translate action

* build: Fixed error causing wrong POT comments

* Added translate to release script

* Further update the release script to track changes and safer ver check

* build: Add metadata to POT file, added 4.1 and 4.2

---------

Co-authored-by: Patrick W. Crawford <theduckcow@live.com>

---------

Co-authored-by: Patrick W. Crawford <theduckcow@live.com>

---------

Co-authored-by: Patrick W. Crawford <theduckcow@live.com>
Co-authored-by: Cathal Feeney <c.feeney333@gmail.com>
Co-authored-by: 0znightlord0@gmail.com <0znightlord0@gmail.com>
Co-authored-by: Trung Phạm <61040487+zNightlord@users.noreply.github.com>
Co-authored-by: Patrick W. Crawford <moo-ack@theduckcow.com>
  • Loading branch information
6 people committed Apr 28, 2024
1 parent a2a9d1d commit 1f22236
Show file tree
Hide file tree
Showing 51 changed files with 5,317 additions and 3,261 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/Bug-Report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report for MCprep! We just need some info. Check here for more info: https://github.com/TheDuckCow/MCprep/issues/322. Please note that if you are looking for general help with Blender itself or a related problem like Mineways, you are better off joining the official [MCprep discord](https://discord.gg/mb8hBUC).
Thanks for taking the time to fill out this bug report for MCprep! We just need some info. Check here for more info: https://github.com/TheDuckCow/MCprep/issues/322. Please note that if you are looking for general help with Blender itself or a related problem like Mineways, you are better off joining the official [MCprep discord](https://discord.gg/mb8hBUC). **Note that support will not be provided if you're found to have an illegal copy of Minecraft!**
- type: checkboxes
id: after-restart
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
.DS_Store
*.blend
*.mo
__pycache__
.mypy_cache
MCprep_addon/mcprep_addon_tracker.json
MCprep_addon/mcprep_addon_updater/MCprep_addon_updater_status.json
blender_execs.txt
Expand All @@ -13,7 +15,7 @@ mcprep_venv_*
.cache
.python-version
venv/
MCprep_addon/MCprep_resources/
.venv/
*.sublime-*
MCprep_addon/import_bridge/conf
MCprep_addon/import_bridge/nbt
34 changes: 29 additions & 5 deletions BlenderChanges.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
This list contains all deprecations and removals in every Blender version starting with Blender 3.0. Since Blender 4.0's breaking changes invoked the want for a list of all deprecations and changes, this list is public for addon developers to use.

Note that not all deprecations are listed, just the ones that may affect MCprep or changes that developers should be aware of in general, so please refer to the wiki entries for each version for more information.
Note that not all deprecations are listed, just the ones that may affect MCprep or changes that developers should be aware of in general, so please refer to the wiki entries for each version for more information. In addition, for simplicity, this page will only document changes in stable releases of Blender, unless a change has been found in a development version of Blender that needs to be addressed.

_For Developers_: The use of any deprecated feature is an automatic bug. Such features should be wrapped around if statements for backwards compatibility if absolutely necesary in older versions.

_For MCprep maintainers_: Any use of a deprecated feature in a pull request should be questioned. If the feature is needed in older versions, then remind developers to use `min_bv`, `bv28` ([Deprecated in MCprep 3.5](https://github.com/TheDuckCow/MCprep/pull/401)), or `bv30`, whichever is more appropriate.

In ascending order:

# [Blender 3.0](https://wiki.blender.org/wiki/Reference/Release_Notes/3.0/Python_API)
## Deprecations
None that concern MCprep.
Expand Down Expand Up @@ -92,15 +94,37 @@ None that concern MCprep.
- `MeshUVLoop` is deprecated. **Removed in Blender 4.0**
- `data` remains emulated, but with a performance penalty

# [Blender 3.6 (IN DEVELOPMENT)](https://wiki.blender.org/wiki/Reference/Release_Notes/3.6/Python_API)
Nothing that concerns MCprep for now.
# [Blender 3.6](https://wiki.blender.org/wiki/Reference/Release_Notes/3.6/Python_API)
None that concern MCprep.

# [Blender 4.0 (IN DEVELOPMENT)](https://wiki.blender.org/wiki/Reference/Release_Notes/4.0/Python_API)
# [Blender 4.0](https://wiki.blender.org/wiki/Reference/Release_Notes/4.0/Python_API)
## Deprecated
Nothing that concerned MCprep for now.
None that concern MCprep.

## Breaking Changes
- Glossy BSDF and Anisotrophic BSDF nodes have been merged.
- The node's Python name is `ShaderNodeBsdfAnisotropic`
- `MeshUVLoop` removed
- Passing context into operators removed
- Principled BSDF has been completely rewritten, including sockets
- Subsurface -> Subsurface Weight
- Subsurface Color removed, use Base Color instead
- Specular -> Specular IOR Level
- Specular Tint changed from float to color
- Transmission -> Transmission Weight
- Coat -> Coat Weight
- Sheen -> Sheen Weight
- Emission -> Emission Color
- Possible breakage of rig backwards compatibility (unconfirmed)

# [Blender 4.1](https://wiki.blender.org/wiki/Reference/Release_Notes/4.1/Python_API)
## Deprecated
None that concern MCprep.

## Breaking Changes/Additions
- Python has been upgraded to Python 3.11
- VFX Reference Platform 2024 support has been added
- Layout panels to reduce boilerplate for submenus
- `displacement_method` is under `bpy.types.Material` now
- Possible breakage of rig backwards compatibility (unconfirmed)

8 changes: 6 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,20 +54,24 @@ As a quick start:
# Highly recommended, create a local virtual environment (could also define globally)
python3 -m pip install --user virtualenv

python3 -m pip install --upgrade pip # Install/upgrade pip
python3 -m venv ./venv # Add a local virtual env called `venv`
python3 -m pip install --upgrade pip # Install/upgrade pip

# Activate that environment
## On windows:
.\venv\Scripts\activate
## On Mac/linux:
source venv/bin/activate

pip install -r requirements.txt

# Now with the env active, do the pip install (or upgrade)
pip install --upgrade bpy-addon-build

# Finally, you can compile MCprep using:
bpy-addon-build --during-build dev # Use dev to use non-prod related resources and tracking.
bab -b dev # Use dev to use non-prod related resources and tracking.
bab -b dev translate # Dev, with translations
bab -b translate # For production
```

Moving forward, you can now build the addon for all intended supported versions using: `bpy-addon-build -b dev`
Expand Down
Loading

0 comments on commit 1f22236

Please sign in to comment.