Moo-Ack-Productions / MCprep

Blender python addon to increase workflow for creating minecraft renders and animations
https://theduckcow.com/MCprep
GNU General Public License v3.0
280 stars 26 forks source link

Support "Installing" and layering multiple resource packs #123

Open TheDuckCow opened 4 years ago

TheDuckCow commented 4 years ago

Current setup:

The concept of a resource pack is simply a single folder selection. It can either be a "real" resource pack, or a flattened folder of textures (not recommended though). When a user wants to swap texture pack, it assumes this whole folder is one pack and just greedy replaces textures as it finds it (with a preferences for textures in the "blocks" folder, since there are some name clashes in other folders like items).

Proposed change

Function more like Minecraft itself, by having an awareness of the "installed resource packs" and being able to select multiple (ticked as active), layering and applying textures in the order of the first resource pack found that supports a given texture. Then, when prepping materials (and option is ticked) or when pressing Swap Texture Pack, the process is adjusted to iteratively go through all the resource packs until either all selected objects' materials have been applied, or we finished going through the last resource pack.

Mechanics

This would require changing the concept of the "active resource pack", which right now is just a folder path for a specific resource pack (defaulted to the MCprep addon). We would need to change this to instead be

Considerations

Tiefseetauchner commented 1 year ago

Annoying around-looker here, I honestly think a global system would be better overall, but there could be a system for multiple resource-packs folders (like with Asset Pack folders). I think that'd work for most users. But as a "sync the projects and render on multiple machines" person, I would also advocate for an option, more or less hidden (dependent on UX), that would locally pack the resources. Maybe even do it as a default. Say, I install my 5 texture packs I often use and have a list of available packs. Normally, choosing a texture pack links to the blender addons folder/whatever folder was configured (shared folder, cloud folder, ...), but enabling The Option™ would copy the resource packs next to the blend file and set the file paths to relative

Just an idea obviously, but that's what I'd use for for example packaging up a project to render on other machines, while at the same time satisfying my, as you called it "want to be lazy"

Another note I want to add, where I'm not sure how it's being dealt with right now, is mods. I know jmc2obj deals with mods reasonably well, I'd leave that as a consideration for implementation

StandingPadAnimations commented 6 months ago

I want to add on to the install part with another thing: download from Modrinth

Modrinth is an open source platform for mods, modpacks, and resource packs, and has gotten extremely popular over the years for being creator. They have a very open API, so implementing wouldn't be too difficult, and it would enhance the user experience for resource pack installation

StandingPadAnimations commented 6 months ago

So design wise, I think we could do the following:

What do you think @TheDuckCow?