Skip to content
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

Feature/registry classes #6695

Merged

Conversation

ShaneBeee
Copy link
Contributor

@ShaneBeee ShaneBeee commented May 14, 2024

Description

This PR aims to create a new set of classes based around the Bukkit Registry class.
The registry classes are based around EnumUtils, EnumClassInfo and EnumSerializer

Bukkit plans on using more registry things in the future.
As of right now the biome registry doesn't support custom biomes, but I believe the plan is to make that happen with 1.21
This allows Skript to get on board with registries and support stuff before we're forced to.

I believe Bukkit is also planning to drop enums for registry based classes, ie: Biomes, and switching to actual classes with static fields.
Another reason to prepare for the future.

Building off the same base of my Enchantments PR, a few things to note:

  • As with an enum, this registers names/patterns using lang file nodes
  • If a lang file entry is missing (either wasn't added yet, or custom) the follow will be added:
    • if a minecraft value = the key of the object without underscores (ex: windswept hills) will be used as name
    • if a custom value = the full namespaced key will be used (ex: my_thing:hot_spicy_biome) will be used as name
  • A full namespaced key for Minecraft/Custom objects will be added as a pattern
  • Minecraft objects will have their key without spaces added as a pattern

I put this as a draft as I'm looking for feedback.
A lot was taken from the Enum classes for inspiration, but open to improvement.

I included registrant the Biome class info using this new method, to test/showcase how it works.


Target Minecraft Versions: any
Requirements: none
Related Issues: none

@APickledWalrus APickledWalrus added the feature Pull request adding a new feature. label May 15, 2024
Copy link
Member

@APickledWalrus APickledWalrus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very nice, just a few thoughts

@ShaneBeee ShaneBeee marked this pull request as ready for review May 20, 2024 20:34
Copy link
Member

@APickledWalrus APickledWalrus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking really good. almost there 😎

Copy link
Member

@APickledWalrus APickledWalrus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have just one concern

Copy link
Member

@APickledWalrus APickledWalrus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome work. do you plan to rework your enchantments pr to use this?

@ShaneBeee
Copy link
Contributor Author

awesome work. do you plan to rework your enchantments pr to use this?

yes, so for the time being please ignore my enchant PR.
I will most likely close it and just do a GIANT PR which will add EVERYTHING that has a registry.

@APickledWalrus APickledWalrus merged commit 34b303b into SkriptLang:dev/feature Jun 21, 2024
5 checks passed
@ShaneBeee ShaneBeee deleted the feature/registry-classes branch July 1, 2024 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Pull request adding a new feature.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants