Skip to content

Loading a zip resource pack inside a resource pack fails with "ERROR: Condition "!zfile" is true. Returned: false" after v3.6.beta4 #103054

Closed
@Kersoph

Description

@Kersoph

Tested versions

4.x

  • Does not work in 4.5 dev 4 (bug squad edit)

3.x

  • Works in v3.5.3.stable.official.6c814135b
  • Works in v3.6.beta1.official.632a544c6
  • Works in v3.6.beta2.official.68c507f59
  • Works in v3.6.beta3.official.21ab700f2
  • Works in v3.6.beta4.official.93ac21cf8
  • Does not work in v3.6.beta5.official.2a347ab86
  • Does not work in v3.6.stable.official.de2f0f147

System information

Windows 10

Issue description

In Godot 3.6 Beta 4 and earlier, it was possible to load a resource pack (e.g. with ProjectSettings.load_resource_pack("...")) that can contain additional resource packs to load. This is used for modding or project organisation (where one resource pack is a complete mod/dlc that can contain additional resources to load at a specific location or with a specific priority / order / logic).

While it is certainly possible to develop a modding / organisation strategy without packs in packs, it breaks all mods and projects that use such a system.

Steps to reproduce

  1. Open the MRP.
  2. Run the main scene.
  3. The window shows an OK image if everything could be loaded. Nothing if there was a problem (and error messages in the console)

Image

Create your own:
A. zip a resource/folder (e.g. a .png)
B. zip the created zip (with other files you need)
C. Load the resources with ProjectSettings.load_resource_pack(). This loads all resources from step B into the project.
D. Try load the content of the internal zip from step A with ProjectSettings.load_resource_pack(). This fails in newer versions.
E. (The .png can not be loaded if step D failed)

Error message at step D:

Godot Engine v3.6.stable.official.de2f0f147 - https://godotengine.org
OpenGL ES 3.0 Renderer: NVIDIA GeForce
Async. shader compilation: OFF

ERROR: Condition "!zfile" is true. Returned: false
  at: try_open_pack (core/io/file_access_zip.cpp:171) - Condition "!zfile" is true. Returned: false

Minimal reproduction project (MRP)

LoadRegression.zip

I've added variables for almost each step so you can set breakpoints and directly inspect step by step what happens.
The last line shows that the .zip from step A can be loaded directly without problems.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions