Skip to content

Conversation

@trobugno
Copy link
Contributor

@trobugno trobugno commented Nov 4, 2025

Godot 4.5 + Pandora Extensions

Various changes have been made to PandoraSettings, PropertyBar, PropertyButton, Array, Type, Property, and Entity to implement new logic that allows you to add custom properties through the pandora/extensions folder.
This change will facilitate Pandora customization, avoiding direct changes to the addon code.

Example

You can find an example inside pandora/extensions folder named TestProperty

Motivation

While working on my RPG project Arkaruh’s Tale, I’ve been relying heavily on Pandora for data handling and serialization.
During development, I encountered several scenarios where extending Pandora’s built-in properties would have provided a cleaner and more modular solution.

This PR introduces support for custom extensions, allowing developers to define and register their own property types without modifying Pandora’s core.

Benefits:

  • Enables modular add-ons built on top of Pandora
  • Keeps the core lightweight and extensible
  • Encourages community contributions and specialized use cases (e.g., RPG systems, quest data, dialogue state, etc.)

Example use case:
I’m currently developing an external add-on — Pandora+ — which extends Pandora with a set of ready-to-use RPG-oriented properties.
These include serialized stats, inventory, and quest data, all seamlessly integrated with Pandora’s data layer.

This PR is a small but essential step to make Pandora more open, flexible, and adaptable for advanced workflows.

Thank you for your work on this amazing plugin — it’s become a foundational piece of my development toolkit.

I’d be happy to help document or showcase how to build custom extensions once this feature is merged.

Upgraded Godot version from 4.4 to 4.5
Various changes have been made to PandoraSettings, PropertyBar, PropertyButton, Array, Type, Property, and Entity to implement new logic that allows you to add custom properties through the pandora/extensions folder.
This change will facilitate Pandora customization, avoiding direct changes to the addon code.
Added an example of extensions adding test_property (String, Int)
Changed the checks of compare_with_extensions_models and get_lookup_property_name of PandoraSettings
@bitbrain
Copy link
Owner

bitbrain commented Nov 4, 2025

Thank you so much for this @trobugno. Phenomenal work, truly.

Before we can merge this, I have a few favours to ask:

  1. it seems like Godot 4.3 is failing. This is okay, because Pandora is still in Alpha state so backwards compatibility is not needed. So you can remove 4.3 from the CI but instead add 4.5.1 instead to the Github workflow please.
  2. we require some basic unit test that makes sure we can access a custom property at runtime. There are already unit tests that load a scene and access things at runtime, so feel free to add to that + add the correct unit test for it
  3. we require some docs. Can you introduce a new page under "Mastery" section called "Custom Extensions" or something like that?

@trobugno
Copy link
Contributor Author

trobugno commented Nov 4, 2025

Thank you for the detailed feedback! I've updated the CI to 4.5.1, added a test to check if the new custom property has been added through settings, and documented the feature under the Mastery section (‘Custom Extensions’). Let me know if anything else needs refinement.

- Added a new tests for Custom Extensions
- Done a fix to getter and setter of extensions_dir inside PandoraSettings and changed the check of two methods inside it.
- Added an inizialization of PandoraSettings inside api.gd::_enter_tree()
@bitbrain bitbrain merged commit 95b4145 into bitbrain:godot-4.x Nov 6, 2025
3 checks passed
@trobugno trobugno deleted the pandora-extensions branch November 6, 2025 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants