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

Item Setting API module #18

Merged
merged 29 commits into from
Feb 26, 2022
Merged

Item Setting API module #18

merged 29 commits into from
Feb 26, 2022

Conversation

OroArmor
Copy link
Member

@OroArmor OroArmor commented Jul 26, 2021

This pull request creates the Quilt Items Library.

What is done:

  • Item Settings
  • Item Tooltips Part of Tooltip API
  • Fuel Registry Moving to Item Data PR
  • Composting Registry Moving to Item Data PR
  • Tool Attributes - Delayed until later, lets get some apis in
  • Item Groups removed

What has/can be added from Fabric PRs:

  • Custom Item Setting API (HavenKing)
  • Recipe Remainer API (BoogieMonster1O1) Moving to follow up PR, slightly complex system, but not horrible
  • Item Extensions - Elytra, Bow, Crossbow (OroArmor) Separate PR

Copy link
Contributor

@LambdAurora LambdAurora left a comment

Choose a reason for hiding this comment

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

I also wonder if we should mandate the use of this when calling fields or methods as it really helps in readability and it tells directly where it comes from and what scope it affects.

OroArmor and others added 4 commits July 26, 2021 22:22
…up/impl/QuiltCreativeGuiComponents.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
…up/mixin/client/CreativePlayerInventoryGuiMixin.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
@Platymemo
Copy link
Contributor

So are the custom item settings and the added recipe remainder settings planned to be added to this PR, or PR'd after this one is merged? I'm of the mind that the priority is the base item library, and these others can be PR'd in later. The same thing with the lazy item group initialization, priority should be finishing and merging this current PR, then implementing these changes later.

@OroArmor
Copy link
Member Author

I think the importance along with pretty much an ok for those other apis in fabric (but with some bikeshed hell) means that they can be merged in. Most of the changes are pretty small or refactors to the api that need to happen anyway, so the impact is minimal on porting time

@LambdAurora LambdAurora added new: library A pull request which adds a new library. new: module A pull request which adds a new module test library: item Related to the item library. labels Aug 4, 2021
@i509VCB
Copy link
Contributor

i509VCB commented Sep 5, 2021

Hmm Oro, we may want to consider splitting this big library into multiple pull requests, I imagine that would be easier to get through and review in 1 sitting?

@OroArmor
Copy link
Member Author

OroArmor commented Sep 5, 2021

I guess, but right now there isn't too much. I'll break off the item group api into its own as there is more work for the item setting api that need to be done

@LambdAurora LambdAurora changed the base branch from 1.17.1 to 1.18 January 26, 2022 19:07
@LambdAurora LambdAurora added enhancement New feature or request and removed new: library A pull request which adds a new library. labels Jan 26, 2022
Copy link
Member

@TheGlitch76 TheGlitch76 left a comment

Choose a reason for hiding this comment

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

javadoc comments, as usual.
Only got through the API classes so far.

@OroArmor OroArmor changed the title Items API module Item Setting API module Feb 16, 2022
@LambdAurora LambdAurora added the t: new api This adds a new API. label Feb 18, 2022
Comment on lines 29 to 32
/**
* Extensions for the {@link ItemGroup} class. Currently, the only extension is setting the icon with an {@link Item} after the item has been created ({@link QuiltItemGroup#setIcon(Item)}).
*/
public class QuiltItemGroup extends ItemGroup {

Choose a reason for hiding this comment

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

Having an extended ItemGroup is good, but it would make more sense to me for it to be an interface implemented on the standard ItemGroup class so that every ItemGroup is a QuiltItemGroup since the behavior is purely additive, similar to how every BakedModel is a FabricBakedModel.

@TheGlitch76 TheGlitch76 dismissed i509VCB’s stale review February 19, 2022 04:09

no intention to re-review

@OroArmor
Copy link
Member Author

Moving this pr into FCP

Copy link
Contributor

@LambdAurora LambdAurora left a comment

Choose a reason for hiding this comment

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

The package really should be item.setting instead of itemsetting.
Sorry for pointing this out this late.

@LambdAurora LambdAurora merged commit c3f98b3 into QuiltMC:1.18 Feb 26, 2022
OroArmor added a commit to OroArmor/quilt-standard-libraries that referenced this pull request Jul 29, 2022
* PR Policy (QuiltMC#39)

* Create QSL PR Policy

* Update CONTRIBUTING.md

* Clarify, add exemption for trivial fixes

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Item Setting API module (QuiltMC#18)

* Port item api

* Fix some missed issues in item api port

* Add item group api

* Update library/items/item-group/src/main/java/org/quiltmc/qsl/itemgroup/impl/QuiltCreativeGuiComponents.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Update library/items/item-group/src/main/java/org/quiltmc/qsl/itemgroup/mixin/client/CreativePlayerInventoryGuiMixin.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Add qsl$ prefix to mixin methods, fix some naming, and change ItemGroup builder api

* Make it so that appending stacks doesnt remove items added via their settings

* Custom Item Settings and Recipe Remainder API (#1)

* Add support for custom item settings

* Add recipe remainder API

* Some renames. Thanks to @Platymemo for helping with the ports

* Make some changes to QuiltItemGroup extensions

* LambdAurora's new suggestions

* Remove Item Group API

* Clean up some of the item setting code. might be good, might be bad, especially the recipe remainder stuff, please review

* Moved to `item` from `items`

* Update library/item/item/build.gradle

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* temp commit

* nuke remainder API

* Cleanups

* Move into clearer `item_setting` module and javadoc fix

* Merge in 1.18

* @TheGlitch76's suggestions

* itemsetting -> item.setting, fix mod manifest.

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Whangd00dle <67663207+Platymemo@users.noreply.github.com>

* Update to 1.18.2-rc1.

* Update to 1.18.2.

* Port and rewrite Tag API to 22w06a. (QuiltMC#76)

* Port and rewrite Tag API to 22w06a.

* Fix mod manifest with Gradle process resources.

* Remove loom interface injection on TagKey.

* Make TagRegistry a final class.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Update library/data/tags/src/main/java/org/quiltmc/qsl/tag/api/TagType.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Apply more javadoc suggestions.

* Update to 22w07a.

* Add InjectedInterface annotation.

* Improve TagTypes documentation.

* Update library/data/tags/src/main/java/org/quiltmc/qsl/tag/api/QuiltTagBuilder.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Add TODOs.

* Update tag API to 1.18.2-rc1.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix critical issue in resource loader: bad remap property.

* Registry Module/Events (QuiltMC#38)

* Add basic registry entry add event

* Refactor tests, add registry monitor (a more advanced alternative to the registry event)

* Move packages to match the organization of other modules, add the ability to chain filters for registry monitors

* Use "this." to clarify some method calls in RegistryMonitor

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Very experimental changes in order to ideally speed up registry iteration, potentially assisting with monitoring larger registries

* Document classes

* Clean up docs, prefix accessor method in SimpleRegistryAccessor

* Follow Javadoc conventions

* Mark impl classes as ApiStatus.Internal, use inline return JD tags for getter methods

* Fix doc and update to new module naming

* Update to 1.18, add icon

* Tweak and update to 22w06a.

* Improve RegistryMonitor test.

* Update library/core/registry/src/testmod/java/org/quiltmc/qsl/registry/test/RegistryLibMonitorTest.java

Co-authored-by: Eli Orona <eliorona@live.com>

* Improve javadoc and change injection point for registry event storage.

* Update library/core/registry/src/main/java/org/quiltmc/qsl/registry/api/event/RegistryEntryContext.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Improve documentation.

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix registry module mixins.

* Migrate to quilt-gradle-licenser.

* Update mappings.

* Fix MC-197259. (QuiltMC#84)

* Update licenser plugin.

* Update Quilt Gradle Licenser plugin to ensure license checks.

* Fix QuiltMC#85.

* Fix registry monitor with registration in 1.18.2, fix Block.asItem() … (QuiltMC#89)

* Fix registry monitor with registration in 1.18.2, fix Block.asItem() with modded.

* Apparently syncing failed.

* More consistent behavior.

* Typo and anchor fixes in CONTRIBUTING.md (QuiltMC#92)

* Fix ordering issue in RegistryMonitor#forAll.

* Make RegistryMonitor#forAll implementation slightly cleaner.

* Make resource pack streaming flattened. (QuiltMC#93)

* Make resource pack streaming flattened.

* Use mapMulti instead of flatMap.

* Fix CONTRIBUTING.md formatting.

* Dimension API (QuiltMC#91)

* Worldgen dimension API

* Javadocs

* copyright header

* relocate mixin

* Port test command for players

* Make the test mod not fill up my logs

* add newline after license...

* Address comments

* Nice catch

* Make testmod depend on resource_loader

* Don't spawn end portal underneath players' feet

I forgot to port this one from fabric

* Address comments

* oops

* Command module: add server-side argument types (QuiltMC#68)

* Command module: add server-side argument types

Basically an almost-direct port of the Colonel API (https://gitlab.com/stellardrift/colonel), minus syncing stuff (which requires networking, and such depends on QuiltMC#34).

* Add Colonel licenses to all files sourced from Colonel

* Add enum argument type

This functions as a test of the ServerArgumentType API, and is also pretty convenient, IMO
The serializer leaves much to be desired, though...

* EnumArgumentType: rewrite to make less horrible

* EnumArgumentType: add translation for "unknown value" exception

* EnumArgumentType: add sanity checks

* Implement known argument type syncing

* license

also add missing ApiStatus.Internal annotations

* ID -> identifier

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* EnumArgumentType: add javadoc

add EnumArgumentType.getEnum to match other ArgumentType classes

* ServerArgumentTypeImpl: use spaces for record definition indentation

there, now it doesn't look godawful on GitHub

* Move PreLaunchHacks, add server arg testmod, fix up some issues.

* EnumArgumentType: unclunkify vanilla support notice

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* CommandManagerMixin: add details to Colonel section

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* PreLaunchInitializer: add note to remove once QLoader is targeted

* Initializers: log networking support status

* EnumArgumentType: getEnumConstant: verify enum class

enumConstant: cache returned arg types

* ServerArgumentTypes: don't resend commands unless known argument types have changed

* [NOT WORKING] Sync known argument types earlier to avoid resending command tree

...yeah I somehow broke it
I have no idea how or why, but Vanilla clients can't connect now because they end up parsing a bad identifier somewhere

KnownArgTypesSync: Vanilla clients now get empty set instead of set being null

* [IT WORKS NOW] restore FMJ changes

this indirectly caused Vanilla clients to not be able to connect...
because when Minecraft fails when serializing an argument type, *it sends an empty identifier*, which the client promptly chokes on.
(MC fails to serialize an argument type if it's not registered - and the code that registers EnumArgumentType wasn't running because
I accidentally ran over the FMJ file.)

Great job, Mojang.

* Fix getEnumConstant.

* Reformat ServerArgumentTypeImpl

Co-authored-by: William Bradford Larcombe <william@williambl.com>

* Make local capture fail hard

Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>

* Add a method for quick registration in RegistryEntryContext. (QuiltMC#90)

* Add a method for quick registration in RegistryEntryContext.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Swap out primary suggestion.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix code style issues.

* Migrate to Quilt Loader, auto-generate `quilt.mod.json` (QuiltMC#78)

* Use Quilt Loader

* use the right loader version

* qmj generation experiment

* Finish converting modules to the new system

* band-aid fix for dependencies

* Fix build on case-sensitive filesystems

* Start using release version of Loader

* Add QslModuleExtension as an API

* Some fixes

* Update build.gradle

Co-authored-by: Eli Orona <eliorona@live.com>

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Restore setupModuleDependencies method

* Prepare for merge!

* update loom

* more fixes

Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Add missing entrypoint

* Use Quilt Loader's ModContainer and compile.

* Fix build + hopefully fix access widener bug

* Fix sending garbage to the quilt maven

* Fix publishing some more

Fix publishing some more

* Fix oversights in QMJ dependency declaration

* Fix misdeclaration of entrypoints in tooltip module.

* Fix QSL in production.

* Fix icon of QSL parent mod.

* QSL Versioning, initial draft (QuiltMC#96)

* versioning draft

* Change main artifact to `org.quiltmc:qsl` to match libs...

...remove hashes, fix bad merge

* Don't worry about handling snapshot builds for now

* Fix the publish action

* Recipe API (QuiltMC#77)

* Recipe API.

* Add package-info.

* Reword last sentence in package-info.

* Update library/data/recipe/src/main/java/org/quiltmc/qsl/recipe/impl/RecipeManagerImpl.java

Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Eli Orona <eliorona@live.com>

* Split up big classes, move a bit more to implementation, fix a lot of wording.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Clarify javadocs and fix some issues.

* Update library/data/recipe/src/main/java/org/quiltmc/qsl/recipe/api/RecipeManagerHelper.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Add missing QuiltRecipeSerializer implementations and add warning in dev env.

* Port to Quilt Loader stuff.

Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix buildscript and javadoc.

* Update version.

* Fix a minor QMJ issue and fix a forgotten reference to FabricLoader.

* Fix testmods not using QMJs, and fix crash report mod list order.

* Registry Entry Attachment API (QuiltMC#29)

* Registry Item Attributes API

Half-completed code-based path, no data-based path yet

* Get data-based path working

* Make resource reloader async

Values are now deserialized during the load phase rather than the apply phase to allow for better error messages

* Implement code-based path for setting attributes

Attributes set via code are "built-in", and are always overriden by values set via data

* Added methods for common attribute types

* Add comments so the code is less... uh, dense

* Spaces and braces

* god I suck at organizing code

* Initial package-info

* Add dispatched utilities

Misc style/JD fixes

* Item -> Entry, part 1

* Item -> Entry, part 2

* Item -> Entry, part 3

* Rename QuiltRegistryInternals methods to be less confusing

* Stick combined attribute holder in RegistryMixin

* i5 review

package-info: Add example for attribute map file
BuiltinRegistryEntryAttributeHolder: Remove explicit super call

* L I C E N S E

* Update library/data/registry-entry-attributes/src/main/java/org/quiltmc/qsl/registry/attribute/api/package-info.java

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Basique review

DispatchedType: type is now an Identifier
RegistryExtensions.registerWithAttributes: returns registered entry
Removed EmptyRegistryEntryAttributeHolder, since Combined works if both are null
Replace dumb Table.rowMap().get() with Table.get()
package-info: Extended data-driven example
RegistryEntryAttributeReloader: namespace is no longer dropped from registry IDs
RegistryEntryAttributeReloader: catch exceptions from JSON parsing
Yeet BuiltinRegistryEntryAttributeHolder, instead registered attributes are stored directly in QuiltRegistryInternals/RegistryMixin

* RegistryEntryAttribute: add methods for String attributes

* CombinedRegistryEntryAttributeHolder: respect default value when both are null

* RegistryEntryAttribute.createDispatched: Use Function instead of Map

Using Map implies that it gets stored - which it doesn't (AFAIK, anyway)

* CombinedRegistryEntryAttributeHolder: Fix built-in value always being hidden by default value

* javadoc!

* forgot some C's

* remove useless null check

* package-info fixes

* RegistryEntryAttributeHolderImpl: Optimize table storage

Instead of mapping entry -> attribute -> value, it now maps attribute -> entry -> value
This makes it so that we have a lesser amount of large maps, rather than a greater amount of small maps

* I love Java generics

* Add RegistryEntryAttribute.getValue utility method

Also rename value type parameter to V because it makes sense in my ape brain

* All my homies hate RegistryKey

Attributes now store the registry they're attached to directly rather than its key
The attribute won't work if the registry isn't present, so using keys offers no advantage AFAIK

Also more of that "RegistryEntryAttribute<V>" refactor from last commit oops

* Forgot to refactor SimpleAttributeTest, oops

* Fix this embarrassing control flow error

* Add dispatched/polymorphic attribute test

* Forgot to upadte this method's JD

* fix indent

* Add command to dump builtin values

* RegistryEntryAttributeReloader: registry item -> registry entry

* license apply thing

* DispatchedType: fix JD link to createDispatched

* Apply suggestions from code review

Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Merge RegistryEntryAttribute and its implementation

* Clear up default vs no default attribute factory methods

* RegistryExtensions: Rename AttributeSetter to DefaultAttributesBuilder

* Fix null attribute holder if no attributes are registered for a registry

* Make type var javadoc a bit clearer

* SimpleAttributeTest: Fix impossible failure condition

* Fix attributes not being registered on creation

* Fix missing import here

* Forgot to update this, oops

* Improve DispatchedType JD

* Register our custom registry argument type

I have no idea if this is required or not since the game did run before I added this, but there seems to be validation for this, so...

* right, this should be a codec registry

* Add NotExtendable to AttributeHolder

* Hide RegistryEntryAttributeHolder as impl detail

* Nullable annotations

* RegistryExtensions.registerWithAttributes: fix JD

* Client-side attributes

* forgot to register attributes _again_

also removed link to impl interface

* Fix testmod package

* Fix common attribute values possibly being loaded from assets

* Fix assets attributes always being cleared

Add testmod
Yeet CombinedRegistryEntryAttributeHolder in favor of putting the behavior into RegistryEntryAttribute.getValue
Merge RegistryEntryAttributeHolder and its implementation

* Add missing javadoc

* DumpBuiltinAttributesCommand: dump to assets/data depending on side

* Update package-info.java

* Client testmod: remove dumb cast

Rename attribute

* DispatchedType: fix example snippet

* Use ResourceType instead of ambiguous boolean

* Add missing license headers

* a

* Mark impl classes as internal

* Split impl details from RegistryEntryAttribute

* Prevent attributes from being replaced

Add method to retrieve already-registered attribute

* Weaken typing here

* Convert test comments to javadoc

* Fix compilation

* Stick Internal annotation on attribute impl class

* Snakify folder name

* Snakify module name as well

(forgot it should be synced with folder name)

* Add missing value function

Remove default value getter from interface, it's an impl detail now

* Snakify this dependency

* Lock "dump builtin attributes" command behind system property

Add "-Dquilt.data.registry_entry_attributes.dumpbuiltin_command=true" to your run args to re-enable it

* Correct mixin prefix

* Don't use default value if missing value function is set

* RegistryEntryAttributeReloader: missing continue

* Use Boolean.getBoolean

* Fix up licenses

* Fix licenses AGAIN

* excuse me mr. backslash how tf did you get there

* murder spaces in licenses

* Make raw Javadoc easier on the eyes

* Add support for optional entries

* Remove Quilt Loader dependency

* Update Mixin compatability level

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* add a newline

* Prevent use of assets-based attributes on dedicated server

(technically they exist fine on it, they just never get a value since there's no assets reloader)

* Fix this check to not break everything oops

* limcensses

* Make reloader ID more descriptive

Make data and assets reloaders have different IDs

* Start working on tag support

* Pretty up AttributeMap a bit

License stuff

* Fix "dump builtin attrs" command

No longer always fails on dedicated servers if a client attribute is registered

* AttributeTarget.Tagged: abstract no more!

* checkstyle

* Add missing metadata to fabric.mod.json

* Fix up javadoc

* AttributeMap: make handleArray method less stupid

Rather than using an enhanced for loop AND keeping track of an index, just use a standard for loop you dingus

* Possibly implement tag support

This is completely untested!

* Rename to Registry Dictionaries API

* Redo "missingValueFunction"

* Propagate rename to Javadoc and logging, too

Actually rename the folder dict maps are loaded from (it was changed in the javadoc, but not in the code itself)
also rename a bunch of local vars

* Add test for tags

* Fix assets-based dicts not loading

Turns out you can't depend on tags loading for resource stuff...
New issue: can't reference data tags from assets since assets get loaded first

Fix SimpleDictTest

* FORGOT A LICENSE AAA

* Fix optional entries and tags

* Mark RegistryDict as non-extendable

* Make defaultValue and computeFunction explicitly mutually exclusive

* IDEA lied to me :(

* RegistryDict: add value class

For now, this is only used by RegistryDict.get

* if only applyLicenses wasn't broken

* fix buildscript

* DumpBuiltinDictsCommand: use Command module

remove custom RegistryArgumentType and use vanilla IdentifierArgumentType instead

* Sync v1

* limcensme

* specify config for compileOnly dep

* ComputeFunction: rename to DefaultValueProvider

use Result wrapper instead of exception for logic flow

* RegistryExtensions: rename registerWithDictValues to register

Add overloads to register to avoid clumsy builder-consumer

* Remove WrongValueClassException

* RegistryDictImpl: split

* RegistryDict: rename compute function in javadoc, too

* DispatchedDictTest: move inner classes to their own files

* Log4J -> SLF4J

* Update build.gradle

Use QSL Base's init entrypoints

* DumpBuiltinDictsCommand: Log4J -> SLF4J

* Fix tag support

DictMap: add type params
RegistryDictReloader, DictMap: Log4J -> SLF4J

* DictMap: remove resolved FIXME

* RegistryDict -> RegistryEntryAttachment

* DefaultValueProvider.Result: add explicit hasFailed flag

ComputedDefaultRegistryEntryAttachmentImpl: fix flipped if

* RegistryEntryAttachmentSync: consolidate all sync-related methods

Actually send sync packets (forgot to call an important method, oops)
Add Environment annotations to all client-only classes/methods

* Update minimum Minecraft version

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* ClientInitializer: move to client subpackage

* Convert registry entry attachments to Quilt Loader setup.

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>

* Bump versions.

* Fix a critical issue with registry entry attachments API.

* Remove cotton maven as unneeded now.

* Add missing InjectedInterface annotation on QuiltTagKey.

* Block access widening. (QuiltMC#104)

* Block access widening.

* Add block extensions README.

* Bump version.

* Fix issues with the recipe API. (QuiltMC#109)

* Fix issues with the recipe API.

* Fix some very minor issues with ShapedRecipeBuilder.

* Rename command library to management library. (QuiltMC#110)

* Bump version.

* Fix Transitive Dependencies at compile and runtime (QuiltMC#107)

* Fix transitive api dependencies not applying

* Update build-logic/src/main/java/qsl/internal/extension/QslModuleExtensionImpl.java

* missed some lines

* Documentation

* Screen API (QuiltMC#81)

* Screen Api

* Screen Api: Update fmj

* Screen API: Fixes

* Screen API: change "Screens" to an injected interface

* Screen API: Injected Interface fix and cleanup

* Update library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Screen API: Fix fully qualified name

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Screen API: Most of Glitch's Review, and Pepper's Refactor

* Screen API: Fix build and broken quilt loader

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Screen API: Fix build and make changes from glitch's review

* Screen API: Use TriState and fix javadoc

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Update Loader; bump version

* Add a way to register new resource pack providers. (QuiltMC#87)

* Add a way to register new resource pack providers.

* Update library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/api/QuiltResourcePack.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Attempt to temporarily fix loom's jankness.

* Fix testmod.

* Add InjectedInterface annotation.

* Add dummy display name implementation to avoid compilation issues.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Bump version and clean up some leftovers.

* Fix Screen API crash and testmod.

* Fix QuiltMC#111: license headers match_from does not work properly on Windows.

* Fix missing spacing in build.gradle.

* Add better handling of Minecraft versions.

* Fix some minor inconsistencies and formatting in resource loader.

* Fix missing test entrypoint in resource loader.

* Fix crash involving Resource Loader's Overwrites (QuiltMC#113)

* Bump versions.

* hotfix: Fix jank in RenderLayersMixin. causing blocks to not render properly in certain situations

* Add missing null checks as asked from @OroArmor.

* Create a fat, remapped testmod jar (QuiltMC#114)

Remapped testmod jars that you can throw into your favorite launcher are created on the module, library, and root levels.
They are not published to maven, but can be downloaded through Github Actions

* Javadoc Improvements (QuiltMC#102)

* Add Minecraft javadocs and add combined javadocs

* remove println

* Create CODEOWNERS, update PR Policy (QuiltMC#119)

* Create CODEOWNERS

* Update CODEOWNERS

* Update CONTRIBUTING.md

* Revert to class init, change to lambdas (QuiltMC#116)

* "Fix" and polish the Quilt Screen API (QuiltMC#117)

Clean up and a tiny refactor on where it made sense on the Screen API (can't have breaking changes if the last few QSL releases are broken anyway), and also finally fixes a crash involving its injected interface. Unfortunately, the "fix" was to temporarily disable the injection until the refmap issues are no more

* Bump version.

* Activate GUI team

* [REA] Fix DefaultValueProvider.Result.error() (QuiltMC#121)

gosh darn it, past me - Leo, 2022

* Add better tag support to Registry Attachment (QuiltMC#106)

* Improve tag handling around Registry Attachment API

* Fix headers and some names

* Clean ups

* Fix some issues + clarity

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Fix incorrect conditional

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Bump version

* Port Dimensions fast path + bug fix from upstream (QuiltMC#120)

* Port Dimensions fast path + bug fix from upstream

* Fix some checkstyle/license issues.

Co-authored-by: LambdAurora <email@lambdaurora.dev>

* Initial Port of Fabric Biome API (QuiltMC#94)

* Inital Commit - Testmod Acting Funky?

* Edit Test

* Remove Event Listener

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Fix build.gradle for Biome API PR

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* fix build.gradle

* fix the fix

* fix the fixed fix

* Fix BiomeTest (Wrong ModContainer Import)

* Some Code Refactors

* Update build.gradle

* Hopefully last step in making Biome API build

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Fix AccessWideners

* Fix Biome Fog

* Fix License

* Removed Wildcards

* Yeet FMJ for Biome API, fix BiomeTest wildcard

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Last Minute BiomeTest fixes, add QMJ that works

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Implement changes from Oro's Biome API Review

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Variable naming changes

* more this.

* Fix Biome API Testmod QMJ

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

Co-authored-by: zOnlyKroks <finnrades@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Fix some small mistakes.

* Cleanup Biomes Modifications API javadoc.

* Run code auto formatter on all of QSL.

* Make mixin naming more consistent.

* Fix javadoc generation.

* Fix javadoc link in build.gradle.

* Update gradle wrapper and fix some header issues.

* Quilt Biome API Mixin Fix + Minor QuiltBiomeTest tweaks (QuiltMC#123)

* Update QuiltBiomeTest with minor tweaks

* Use Complete Descriptor in QuiltBiomes Mixin

* Backport 1.19 biome testmod tags.

* Bump version.

* Fix logic error in Recipe API addition phase.

* Rename a mixin in Tags API to reflect mapping names.

* REA: fix missing profiler pop and unclosed resource.

* Fix release workflow misfiling the QSL version field.

* Override the experimental warning screen with opt-out. (QuiltMC#124)

* Fixes QuiltMC#131: a possible tooltip events class-loading race. (QuiltMC#133)

* Fix possible tooltip events class-loading race.

This addresses QuiltMC#131.

* Fix wording.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Bump version.

* Bump loader version.

* Add stuff to check whether dynamic registry entries exist. (QuiltMC#134)

* Add stuff to check whether dynamic registry entries exist.

* Replace getBiomeRegistry with getBiomeHolder.

* Port Biome API fixes from Fabric API (QuiltMC#137)

* Bump version

* Add mod resource packs caching for faster reloads. (QuiltMC#138)

* Add mod resource packs caching for faster reloads.

Also use the java.io.File API when possible instead of NIO exists.

* Use some more ternaries.

* Improve documentation after a talk with native speakers in Quilt.

* [REA] Fix reloader never running (QuiltMC#144)

* REA: Backport make dump_builtin_attachments dump tags too (QuiltMC#126)

* Bump version.

* Update checkstyle.

* Add Block Entity API module. (QuiltMC#135)

* Add Block Entity API module.

* Improve sync errors following feedback.

* Fill missing javadoc.

* Update library/block/block_entity/src/main/java/org/quiltmc/qsl/block/entity/impl/QuiltBlockEntityImpl.java

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Apply suggestions from code review.

* Fix todo wording.

* Replace the Preconditions call with a Java built-in method.

* Apply suggestions from Ennui's code review.

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Fix wording.

* Add missing icon to the Quilt Block Entity API.

* Remove interface injection of QuiltBlockEntity.

* Rename bows module to extension

* Move injected interfaces to impl and projectile modifying items now auto-register

* apply licenses

Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: FoundationGames <43485105+FoundationGames@users.noreply.github.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: Boxed <62370320+maximumpower55@users.noreply.github.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>
Co-authored-by: CheaterCodes <49926638+CheaterCodes@users.noreply.github.com>
Co-authored-by: peaceheis <69596656+peaceheis@users.noreply.github.com>
Co-authored-by: zOnlyKroks <finnrades@gmail.com>
OroArmor added a commit to OroArmor/quilt-standard-libraries that referenced this pull request Jul 31, 2022
* PR Policy (QuiltMC#39)

* Create QSL PR Policy

* Update CONTRIBUTING.md

* Clarify, add exemption for trivial fixes

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Item Setting API module (QuiltMC#18)

* Port item api

* Fix some missed issues in item api port

* Add item group api

* Update library/items/item-group/src/main/java/org/quiltmc/qsl/itemgroup/impl/QuiltCreativeGuiComponents.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Update library/items/item-group/src/main/java/org/quiltmc/qsl/itemgroup/mixin/client/CreativePlayerInventoryGuiMixin.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Add qsl$ prefix to mixin methods, fix some naming, and change ItemGroup builder api

* Make it so that appending stacks doesnt remove items added via their settings

* Custom Item Settings and Recipe Remainder API (#1)

* Add support for custom item settings

* Add recipe remainder API

* Some renames. Thanks to @Platymemo for helping with the ports

* Make some changes to QuiltItemGroup extensions

* LambdAurora's new suggestions

* Remove Item Group API

* Clean up some of the item setting code. might be good, might be bad, especially the recipe remainder stuff, please review

* Moved to `item` from `items`

* Update library/item/item/build.gradle

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* temp commit

* nuke remainder API

* Cleanups

* Move into clearer `item_setting` module and javadoc fix

* Merge in 1.18

* @TheGlitch76's suggestions

* itemsetting -> item.setting, fix mod manifest.

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Whangd00dle <67663207+Platymemo@users.noreply.github.com>

* Update to 1.18.2-rc1.

* Update to 1.18.2.

* Port and rewrite Tag API to 22w06a. (QuiltMC#76)

* Port and rewrite Tag API to 22w06a.

* Fix mod manifest with Gradle process resources.

* Remove loom interface injection on TagKey.

* Make TagRegistry a final class.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Update library/data/tags/src/main/java/org/quiltmc/qsl/tag/api/TagType.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Apply more javadoc suggestions.

* Update to 22w07a.

* Add InjectedInterface annotation.

* Improve TagTypes documentation.

* Update library/data/tags/src/main/java/org/quiltmc/qsl/tag/api/QuiltTagBuilder.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Add TODOs.

* Update tag API to 1.18.2-rc1.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix critical issue in resource loader: bad remap property.

* Registry Module/Events (QuiltMC#38)

* Add basic registry entry add event

* Refactor tests, add registry monitor (a more advanced alternative to the registry event)

* Move packages to match the organization of other modules, add the ability to chain filters for registry monitors

* Use "this." to clarify some method calls in RegistryMonitor

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Very experimental changes in order to ideally speed up registry iteration, potentially assisting with monitoring larger registries

* Document classes

* Clean up docs, prefix accessor method in SimpleRegistryAccessor

* Follow Javadoc conventions

* Mark impl classes as ApiStatus.Internal, use inline return JD tags for getter methods

* Fix doc and update to new module naming

* Update to 1.18, add icon

* Tweak and update to 22w06a.

* Improve RegistryMonitor test.

* Update library/core/registry/src/testmod/java/org/quiltmc/qsl/registry/test/RegistryLibMonitorTest.java

Co-authored-by: Eli Orona <eliorona@live.com>

* Improve javadoc and change injection point for registry event storage.

* Update library/core/registry/src/main/java/org/quiltmc/qsl/registry/api/event/RegistryEntryContext.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Improve documentation.

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix registry module mixins.

* Migrate to quilt-gradle-licenser.

* Update mappings.

* Fix MC-197259. (QuiltMC#84)

* Update licenser plugin.

* Update Quilt Gradle Licenser plugin to ensure license checks.

* Fix QuiltMC#85.

* Fix registry monitor with registration in 1.18.2, fix Block.asItem() … (QuiltMC#89)

* Fix registry monitor with registration in 1.18.2, fix Block.asItem() with modded.

* Apparently syncing failed.

* More consistent behavior.

* Typo and anchor fixes in CONTRIBUTING.md (QuiltMC#92)

* Fix ordering issue in RegistryMonitor#forAll.

* Make RegistryMonitor#forAll implementation slightly cleaner.

* Make resource pack streaming flattened. (QuiltMC#93)

* Make resource pack streaming flattened.

* Use mapMulti instead of flatMap.

* Fix CONTRIBUTING.md formatting.

* Dimension API (QuiltMC#91)

* Worldgen dimension API

* Javadocs

* copyright header

* relocate mixin

* Port test command for players

* Make the test mod not fill up my logs

* add newline after license...

* Address comments

* Nice catch

* Make testmod depend on resource_loader

* Don't spawn end portal underneath players' feet

I forgot to port this one from fabric

* Address comments

* oops

* Command module: add server-side argument types (QuiltMC#68)

* Command module: add server-side argument types

Basically an almost-direct port of the Colonel API (https://gitlab.com/stellardrift/colonel), minus syncing stuff (which requires networking, and such depends on QuiltMC#34).

* Add Colonel licenses to all files sourced from Colonel

* Add enum argument type

This functions as a test of the ServerArgumentType API, and is also pretty convenient, IMO
The serializer leaves much to be desired, though...

* EnumArgumentType: rewrite to make less horrible

* EnumArgumentType: add translation for "unknown value" exception

* EnumArgumentType: add sanity checks

* Implement known argument type syncing

* license

also add missing ApiStatus.Internal annotations

* ID -> identifier

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* EnumArgumentType: add javadoc

add EnumArgumentType.getEnum to match other ArgumentType classes

* ServerArgumentTypeImpl: use spaces for record definition indentation

there, now it doesn't look godawful on GitHub

* Move PreLaunchHacks, add server arg testmod, fix up some issues.

* EnumArgumentType: unclunkify vanilla support notice

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* CommandManagerMixin: add details to Colonel section

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* PreLaunchInitializer: add note to remove once QLoader is targeted

* Initializers: log networking support status

* EnumArgumentType: getEnumConstant: verify enum class

enumConstant: cache returned arg types

* ServerArgumentTypes: don't resend commands unless known argument types have changed

* [NOT WORKING] Sync known argument types earlier to avoid resending command tree

...yeah I somehow broke it
I have no idea how or why, but Vanilla clients can't connect now because they end up parsing a bad identifier somewhere

KnownArgTypesSync: Vanilla clients now get empty set instead of set being null

* [IT WORKS NOW] restore FMJ changes

this indirectly caused Vanilla clients to not be able to connect...
because when Minecraft fails when serializing an argument type, *it sends an empty identifier*, which the client promptly chokes on.
(MC fails to serialize an argument type if it's not registered - and the code that registers EnumArgumentType wasn't running because
I accidentally ran over the FMJ file.)

Great job, Mojang.

* Fix getEnumConstant.

* Reformat ServerArgumentTypeImpl

Co-authored-by: William Bradford Larcombe <william@williambl.com>

* Make local capture fail hard

Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>

* Add a method for quick registration in RegistryEntryContext. (QuiltMC#90)

* Add a method for quick registration in RegistryEntryContext.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Swap out primary suggestion.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix code style issues.

* Migrate to Quilt Loader, auto-generate `quilt.mod.json` (QuiltMC#78)

* Use Quilt Loader

* use the right loader version

* qmj generation experiment

* Finish converting modules to the new system

* band-aid fix for dependencies

* Fix build on case-sensitive filesystems

* Start using release version of Loader

* Add QslModuleExtension as an API

* Some fixes

* Update build.gradle

Co-authored-by: Eli Orona <eliorona@live.com>

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Restore setupModuleDependencies method

* Prepare for merge!

* update loom

* more fixes

Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Add missing entrypoint

* Use Quilt Loader's ModContainer and compile.

* Fix build + hopefully fix access widener bug

* Fix sending garbage to the quilt maven

* Fix publishing some more

Fix publishing some more

* Fix oversights in QMJ dependency declaration

* Fix misdeclaration of entrypoints in tooltip module.

* Fix QSL in production.

* Fix icon of QSL parent mod.

* QSL Versioning, initial draft (QuiltMC#96)

* versioning draft

* Change main artifact to `org.quiltmc:qsl` to match libs...

...remove hashes, fix bad merge

* Don't worry about handling snapshot builds for now

* Fix the publish action

* Recipe API (QuiltMC#77)

* Recipe API.

* Add package-info.

* Reword last sentence in package-info.

* Update library/data/recipe/src/main/java/org/quiltmc/qsl/recipe/impl/RecipeManagerImpl.java

Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Eli Orona <eliorona@live.com>

* Split up big classes, move a bit more to implementation, fix a lot of wording.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Clarify javadocs and fix some issues.

* Update library/data/recipe/src/main/java/org/quiltmc/qsl/recipe/api/RecipeManagerHelper.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Add missing QuiltRecipeSerializer implementations and add warning in dev env.

* Port to Quilt Loader stuff.

Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix buildscript and javadoc.

* Update version.

* Fix a minor QMJ issue and fix a forgotten reference to FabricLoader.

* Fix testmods not using QMJs, and fix crash report mod list order.

* Registry Entry Attachment API (QuiltMC#29)

* Registry Item Attributes API

Half-completed code-based path, no data-based path yet

* Get data-based path working

* Make resource reloader async

Values are now deserialized during the load phase rather than the apply phase to allow for better error messages

* Implement code-based path for setting attributes

Attributes set via code are "built-in", and are always overriden by values set via data

* Added methods for common attribute types

* Add comments so the code is less... uh, dense

* Spaces and braces

* god I suck at organizing code

* Initial package-info

* Add dispatched utilities

Misc style/JD fixes

* Item -> Entry, part 1

* Item -> Entry, part 2

* Item -> Entry, part 3

* Rename QuiltRegistryInternals methods to be less confusing

* Stick combined attribute holder in RegistryMixin

* i5 review

package-info: Add example for attribute map file
BuiltinRegistryEntryAttributeHolder: Remove explicit super call

* L I C E N S E

* Update library/data/registry-entry-attributes/src/main/java/org/quiltmc/qsl/registry/attribute/api/package-info.java

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Basique review

DispatchedType: type is now an Identifier
RegistryExtensions.registerWithAttributes: returns registered entry
Removed EmptyRegistryEntryAttributeHolder, since Combined works if both are null
Replace dumb Table.rowMap().get() with Table.get()
package-info: Extended data-driven example
RegistryEntryAttributeReloader: namespace is no longer dropped from registry IDs
RegistryEntryAttributeReloader: catch exceptions from JSON parsing
Yeet BuiltinRegistryEntryAttributeHolder, instead registered attributes are stored directly in QuiltRegistryInternals/RegistryMixin

* RegistryEntryAttribute: add methods for String attributes

* CombinedRegistryEntryAttributeHolder: respect default value when both are null

* RegistryEntryAttribute.createDispatched: Use Function instead of Map

Using Map implies that it gets stored - which it doesn't (AFAIK, anyway)

* CombinedRegistryEntryAttributeHolder: Fix built-in value always being hidden by default value

* javadoc!

* forgot some C's

* remove useless null check

* package-info fixes

* RegistryEntryAttributeHolderImpl: Optimize table storage

Instead of mapping entry -> attribute -> value, it now maps attribute -> entry -> value
This makes it so that we have a lesser amount of large maps, rather than a greater amount of small maps

* I love Java generics

* Add RegistryEntryAttribute.getValue utility method

Also rename value type parameter to V because it makes sense in my ape brain

* All my homies hate RegistryKey

Attributes now store the registry they're attached to directly rather than its key
The attribute won't work if the registry isn't present, so using keys offers no advantage AFAIK

Also more of that "RegistryEntryAttribute<V>" refactor from last commit oops

* Forgot to refactor SimpleAttributeTest, oops

* Fix this embarrassing control flow error

* Add dispatched/polymorphic attribute test

* Forgot to upadte this method's JD

* fix indent

* Add command to dump builtin values

* RegistryEntryAttributeReloader: registry item -> registry entry

* license apply thing

* DispatchedType: fix JD link to createDispatched

* Apply suggestions from code review

Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Merge RegistryEntryAttribute and its implementation

* Clear up default vs no default attribute factory methods

* RegistryExtensions: Rename AttributeSetter to DefaultAttributesBuilder

* Fix null attribute holder if no attributes are registered for a registry

* Make type var javadoc a bit clearer

* SimpleAttributeTest: Fix impossible failure condition

* Fix attributes not being registered on creation

* Fix missing import here

* Forgot to update this, oops

* Improve DispatchedType JD

* Register our custom registry argument type

I have no idea if this is required or not since the game did run before I added this, but there seems to be validation for this, so...

* right, this should be a codec registry

* Add NotExtendable to AttributeHolder

* Hide RegistryEntryAttributeHolder as impl detail

* Nullable annotations

* RegistryExtensions.registerWithAttributes: fix JD

* Client-side attributes

* forgot to register attributes _again_

also removed link to impl interface

* Fix testmod package

* Fix common attribute values possibly being loaded from assets

* Fix assets attributes always being cleared

Add testmod
Yeet CombinedRegistryEntryAttributeHolder in favor of putting the behavior into RegistryEntryAttribute.getValue
Merge RegistryEntryAttributeHolder and its implementation

* Add missing javadoc

* DumpBuiltinAttributesCommand: dump to assets/data depending on side

* Update package-info.java

* Client testmod: remove dumb cast

Rename attribute

* DispatchedType: fix example snippet

* Use ResourceType instead of ambiguous boolean

* Add missing license headers

* a

* Mark impl classes as internal

* Split impl details from RegistryEntryAttribute

* Prevent attributes from being replaced

Add method to retrieve already-registered attribute

* Weaken typing here

* Convert test comments to javadoc

* Fix compilation

* Stick Internal annotation on attribute impl class

* Snakify folder name

* Snakify module name as well

(forgot it should be synced with folder name)

* Add missing value function

Remove default value getter from interface, it's an impl detail now

* Snakify this dependency

* Lock "dump builtin attributes" command behind system property

Add "-Dquilt.data.registry_entry_attributes.dumpbuiltin_command=true" to your run args to re-enable it

* Correct mixin prefix

* Don't use default value if missing value function is set

* RegistryEntryAttributeReloader: missing continue

* Use Boolean.getBoolean

* Fix up licenses

* Fix licenses AGAIN

* excuse me mr. backslash how tf did you get there

* murder spaces in licenses

* Make raw Javadoc easier on the eyes

* Add support for optional entries

* Remove Quilt Loader dependency

* Update Mixin compatability level

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* add a newline

* Prevent use of assets-based attributes on dedicated server

(technically they exist fine on it, they just never get a value since there's no assets reloader)

* Fix this check to not break everything oops

* limcensses

* Make reloader ID more descriptive

Make data and assets reloaders have different IDs

* Start working on tag support

* Pretty up AttributeMap a bit

License stuff

* Fix "dump builtin attrs" command

No longer always fails on dedicated servers if a client attribute is registered

* AttributeTarget.Tagged: abstract no more!

* checkstyle

* Add missing metadata to fabric.mod.json

* Fix up javadoc

* AttributeMap: make handleArray method less stupid

Rather than using an enhanced for loop AND keeping track of an index, just use a standard for loop you dingus

* Possibly implement tag support

This is completely untested!

* Rename to Registry Dictionaries API

* Redo "missingValueFunction"

* Propagate rename to Javadoc and logging, too

Actually rename the folder dict maps are loaded from (it was changed in the javadoc, but not in the code itself)
also rename a bunch of local vars

* Add test for tags

* Fix assets-based dicts not loading

Turns out you can't depend on tags loading for resource stuff...
New issue: can't reference data tags from assets since assets get loaded first

Fix SimpleDictTest

* FORGOT A LICENSE AAA

* Fix optional entries and tags

* Mark RegistryDict as non-extendable

* Make defaultValue and computeFunction explicitly mutually exclusive

* IDEA lied to me :(

* RegistryDict: add value class

For now, this is only used by RegistryDict.get

* if only applyLicenses wasn't broken

* fix buildscript

* DumpBuiltinDictsCommand: use Command module

remove custom RegistryArgumentType and use vanilla IdentifierArgumentType instead

* Sync v1

* limcensme

* specify config for compileOnly dep

* ComputeFunction: rename to DefaultValueProvider

use Result wrapper instead of exception for logic flow

* RegistryExtensions: rename registerWithDictValues to register

Add overloads to register to avoid clumsy builder-consumer

* Remove WrongValueClassException

* RegistryDictImpl: split

* RegistryDict: rename compute function in javadoc, too

* DispatchedDictTest: move inner classes to their own files

* Log4J -> SLF4J

* Update build.gradle

Use QSL Base's init entrypoints

* DumpBuiltinDictsCommand: Log4J -> SLF4J

* Fix tag support

DictMap: add type params
RegistryDictReloader, DictMap: Log4J -> SLF4J

* DictMap: remove resolved FIXME

* RegistryDict -> RegistryEntryAttachment

* DefaultValueProvider.Result: add explicit hasFailed flag

ComputedDefaultRegistryEntryAttachmentImpl: fix flipped if

* RegistryEntryAttachmentSync: consolidate all sync-related methods

Actually send sync packets (forgot to call an important method, oops)
Add Environment annotations to all client-only classes/methods

* Update minimum Minecraft version

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* ClientInitializer: move to client subpackage

* Convert registry entry attachments to Quilt Loader setup.

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>

* Bump versions.

* Fix a critical issue with registry entry attachments API.

* Remove cotton maven as unneeded now.

* Add missing InjectedInterface annotation on QuiltTagKey.

* Block access widening. (QuiltMC#104)

* Block access widening.

* Add block extensions README.

* Bump version.

* Fix issues with the recipe API. (QuiltMC#109)

* Fix issues with the recipe API.

* Fix some very minor issues with ShapedRecipeBuilder.

* Rename command library to management library. (QuiltMC#110)

* Bump version.

* Fix Transitive Dependencies at compile and runtime (QuiltMC#107)

* Fix transitive api dependencies not applying

* Update build-logic/src/main/java/qsl/internal/extension/QslModuleExtensionImpl.java

* missed some lines

* Documentation

* Screen API (QuiltMC#81)

* Screen Api

* Screen Api: Update fmj

* Screen API: Fixes

* Screen API: change "Screens" to an injected interface

* Screen API: Injected Interface fix and cleanup

* Update library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Screen API: Fix fully qualified name

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Screen API: Most of Glitch's Review, and Pepper's Refactor

* Screen API: Fix build and broken quilt loader

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Screen API: Fix build and make changes from glitch's review

* Screen API: Use TriState and fix javadoc

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Update Loader; bump version

* Add a way to register new resource pack providers. (QuiltMC#87)

* Add a way to register new resource pack providers.

* Update library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/api/QuiltResourcePack.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Attempt to temporarily fix loom's jankness.

* Fix testmod.

* Add InjectedInterface annotation.

* Add dummy display name implementation to avoid compilation issues.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Bump version and clean up some leftovers.

* Fix Screen API crash and testmod.

* Fix QuiltMC#111: license headers match_from does not work properly on Windows.

* Fix missing spacing in build.gradle.

* Add better handling of Minecraft versions.

* Fix some minor inconsistencies and formatting in resource loader.

* Fix missing test entrypoint in resource loader.

* Fix crash involving Resource Loader's Overwrites (QuiltMC#113)

* Bump versions.

* hotfix: Fix jank in RenderLayersMixin. causing blocks to not render properly in certain situations

* Add missing null checks as asked from @OroArmor.

* Create a fat, remapped testmod jar (QuiltMC#114)

Remapped testmod jars that you can throw into your favorite launcher are created on the module, library, and root levels.
They are not published to maven, but can be downloaded through Github Actions

* Javadoc Improvements (QuiltMC#102)

* Add Minecraft javadocs and add combined javadocs

* remove println

* Create CODEOWNERS, update PR Policy (QuiltMC#119)

* Create CODEOWNERS

* Update CODEOWNERS

* Update CONTRIBUTING.md

* Revert to class init, change to lambdas (QuiltMC#116)

* "Fix" and polish the Quilt Screen API (QuiltMC#117)

Clean up and a tiny refactor on where it made sense on the Screen API (can't have breaking changes if the last few QSL releases are broken anyway), and also finally fixes a crash involving its injected interface. Unfortunately, the "fix" was to temporarily disable the injection until the refmap issues are no more

* Bump version.

* Activate GUI team

* [REA] Fix DefaultValueProvider.Result.error() (QuiltMC#121)

gosh darn it, past me - Leo, 2022

* Add better tag support to Registry Attachment (QuiltMC#106)

* Improve tag handling around Registry Attachment API

* Fix headers and some names

* Clean ups

* Fix some issues + clarity

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Fix incorrect conditional

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Bump version

* Port Dimensions fast path + bug fix from upstream (QuiltMC#120)

* Port Dimensions fast path + bug fix from upstream

* Fix some checkstyle/license issues.

Co-authored-by: LambdAurora <email@lambdaurora.dev>

* Initial Port of Fabric Biome API (QuiltMC#94)

* Inital Commit - Testmod Acting Funky?

* Edit Test

* Remove Event Listener

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Fix build.gradle for Biome API PR

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* fix build.gradle

* fix the fix

* fix the fixed fix

* Fix BiomeTest (Wrong ModContainer Import)

* Some Code Refactors

* Update build.gradle

* Hopefully last step in making Biome API build

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Fix AccessWideners

* Fix Biome Fog

* Fix License

* Removed Wildcards

* Yeet FMJ for Biome API, fix BiomeTest wildcard

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Last Minute BiomeTest fixes, add QMJ that works

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Implement changes from Oro's Biome API Review

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Variable naming changes

* more this.

* Fix Biome API Testmod QMJ

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

Co-authored-by: zOnlyKroks <finnrades@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Fix some small mistakes.

* Cleanup Biomes Modifications API javadoc.

* Run code auto formatter on all of QSL.

* Make mixin naming more consistent.

* Fix javadoc generation.

* Fix javadoc link in build.gradle.

* Update gradle wrapper and fix some header issues.

* Quilt Biome API Mixin Fix + Minor QuiltBiomeTest tweaks (QuiltMC#123)

* Update QuiltBiomeTest with minor tweaks

* Use Complete Descriptor in QuiltBiomes Mixin

* Backport 1.19 biome testmod tags.

* Bump version.

* Fix logic error in Recipe API addition phase.

* Rename a mixin in Tags API to reflect mapping names.

* REA: fix missing profiler pop and unclosed resource.

* Fix release workflow misfiling the QSL version field.

* Override the experimental warning screen with opt-out. (QuiltMC#124)

* Fixes QuiltMC#131: a possible tooltip events class-loading race. (QuiltMC#133)

* Fix possible tooltip events class-loading race.

This addresses QuiltMC#131.

* Fix wording.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Bump version.

* Bump loader version.

* Add stuff to check whether dynamic registry entries exist. (QuiltMC#134)

* Add stuff to check whether dynamic registry entries exist.

* Replace getBiomeRegistry with getBiomeHolder.

* Port Biome API fixes from Fabric API (QuiltMC#137)

* Bump version

* Add mod resource packs caching for faster reloads. (QuiltMC#138)

* Add mod resource packs caching for faster reloads.

Also use the java.io.File API when possible instead of NIO exists.

* Use some more ternaries.

* Improve documentation after a talk with native speakers in Quilt.

* [REA] Fix reloader never running (QuiltMC#144)

* REA: Backport make dump_builtin_attachments dump tags too (QuiltMC#126)

* Bump version.

* Update checkstyle.

* Add Block Entity API module. (QuiltMC#135)

* Add Block Entity API module.

* Improve sync errors following feedback.

* Fill missing javadoc.

* Update library/block/block_entity/src/main/java/org/quiltmc/qsl/block/entity/impl/QuiltBlockEntityImpl.java

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Apply suggestions from code review.

* Fix todo wording.

* Replace the Preconditions call with a Java built-in method.

* Apply suggestions from Ennui's code review.

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Fix wording.

* Add missing icon to the Quilt Block Entity API.

* Remove interface injection of QuiltBlockEntity.

* Rename bows module to extension

* Move injected interfaces to impl and projectile modifying items now auto-register

* apply licenses

Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: FoundationGames <43485105+FoundationGames@users.noreply.github.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: Boxed <62370320+maximumpower55@users.noreply.github.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>
Co-authored-by: CheaterCodes <49926638+CheaterCodes@users.noreply.github.com>
Co-authored-by: peaceheis <69596656+peaceheis@users.noreply.github.com>
Co-authored-by: zOnlyKroks <finnrades@gmail.com>
LambdAurora added a commit that referenced this pull request Aug 30, 2022
* Bow and Crossbow API

* Merge in 1.18

* Apply suggestions from code review

Co-authored-by: Southpaw <44805409+Southpaw1496@users.noreply.github.com>

* Interface injection + package move + requested changes + bug fixes

* some more cleanups, also interface injection seems to be failing

* Move bow module to extension module

* PR Policy (#39)

* Create QSL PR Policy

* Update CONTRIBUTING.md

* Clarify, add exemption for trivial fixes

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Item Setting API module (#18)

* Port item api

* Fix some missed issues in item api port

* Add item group api

* Update library/items/item-group/src/main/java/org/quiltmc/qsl/itemgroup/impl/QuiltCreativeGuiComponents.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Update library/items/item-group/src/main/java/org/quiltmc/qsl/itemgroup/mixin/client/CreativePlayerInventoryGuiMixin.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Add qsl$ prefix to mixin methods, fix some naming, and change ItemGroup builder api

* Make it so that appending stacks doesnt remove items added via their settings

* Custom Item Settings and Recipe Remainder API (#1)

* Add support for custom item settings

* Add recipe remainder API

* Some renames. Thanks to @Platymemo for helping with the ports

* Make some changes to QuiltItemGroup extensions

* LambdAurora's new suggestions

* Remove Item Group API

* Clean up some of the item setting code. might be good, might be bad, especially the recipe remainder stuff, please review

* Moved to `item` from `items`

* Update library/item/item/build.gradle

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* temp commit

* nuke remainder API

* Cleanups

* Move into clearer `item_setting` module and javadoc fix

* Merge in 1.18

* @TheGlitch76's suggestions

* itemsetting -> item.setting, fix mod manifest.

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Whangd00dle <67663207+Platymemo@users.noreply.github.com>

* Update to 1.18.2-rc1.

* Update to 1.18.2.

* Port and rewrite Tag API to 22w06a. (#76)

* Port and rewrite Tag API to 22w06a.

* Fix mod manifest with Gradle process resources.

* Remove loom interface injection on TagKey.

* Make TagRegistry a final class.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Update library/data/tags/src/main/java/org/quiltmc/qsl/tag/api/TagType.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Apply more javadoc suggestions.

* Update to 22w07a.

* Add InjectedInterface annotation.

* Improve TagTypes documentation.

* Update library/data/tags/src/main/java/org/quiltmc/qsl/tag/api/QuiltTagBuilder.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Add TODOs.

* Update tag API to 1.18.2-rc1.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix critical issue in resource loader: bad remap property.

* Registry Module/Events (#38)

* Add basic registry entry add event

* Refactor tests, add registry monitor (a more advanced alternative to the registry event)

* Move packages to match the organization of other modules, add the ability to chain filters for registry monitors

* Use "this." to clarify some method calls in RegistryMonitor

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Very experimental changes in order to ideally speed up registry iteration, potentially assisting with monitoring larger registries

* Document classes

* Clean up docs, prefix accessor method in SimpleRegistryAccessor

* Follow Javadoc conventions

* Mark impl classes as ApiStatus.Internal, use inline return JD tags for getter methods

* Fix doc and update to new module naming

* Update to 1.18, add icon

* Tweak and update to 22w06a.

* Improve RegistryMonitor test.

* Update library/core/registry/src/testmod/java/org/quiltmc/qsl/registry/test/RegistryLibMonitorTest.java

Co-authored-by: Eli Orona <eliorona@live.com>

* Improve javadoc and change injection point for registry event storage.

* Update library/core/registry/src/main/java/org/quiltmc/qsl/registry/api/event/RegistryEntryContext.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Improve documentation.

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix registry module mixins.

* Migrate to quilt-gradle-licenser.

* Update mappings.

* Fix MC-197259. (#84)

* Update licenser plugin.

* Update Quilt Gradle Licenser plugin to ensure license checks.

* Fix #85.

* Fix registry monitor with registration in 1.18.2, fix Block.asItem() … (#89)

* Fix registry monitor with registration in 1.18.2, fix Block.asItem() with modded.

* Apparently syncing failed.

* More consistent behavior.

* Typo and anchor fixes in CONTRIBUTING.md (#92)

* Fix ordering issue in RegistryMonitor#forAll.

* Make RegistryMonitor#forAll implementation slightly cleaner.

* Make resource pack streaming flattened. (#93)

* Make resource pack streaming flattened.

* Use mapMulti instead of flatMap.

* Fix CONTRIBUTING.md formatting.

* Dimension API (#91)

* Worldgen dimension API

* Javadocs

* copyright header

* relocate mixin

* Port test command for players

* Make the test mod not fill up my logs

* add newline after license...

* Address comments

* Nice catch

* Make testmod depend on resource_loader

* Don't spawn end portal underneath players' feet

I forgot to port this one from fabric

* Address comments

* oops

* Command module: add server-side argument types (#68)

* Command module: add server-side argument types

Basically an almost-direct port of the Colonel API (https://gitlab.com/stellardrift/colonel), minus syncing stuff (which requires networking, and such depends on #34).

* Add Colonel licenses to all files sourced from Colonel

* Add enum argument type

This functions as a test of the ServerArgumentType API, and is also pretty convenient, IMO
The serializer leaves much to be desired, though...

* EnumArgumentType: rewrite to make less horrible

* EnumArgumentType: add translation for "unknown value" exception

* EnumArgumentType: add sanity checks

* Implement known argument type syncing

* license

also add missing ApiStatus.Internal annotations

* ID -> identifier

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* EnumArgumentType: add javadoc

add EnumArgumentType.getEnum to match other ArgumentType classes

* ServerArgumentTypeImpl: use spaces for record definition indentation

there, now it doesn't look godawful on GitHub

* Move PreLaunchHacks, add server arg testmod, fix up some issues.

* EnumArgumentType: unclunkify vanilla support notice

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* CommandManagerMixin: add details to Colonel section

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* PreLaunchInitializer: add note to remove once QLoader is targeted

* Initializers: log networking support status

* EnumArgumentType: getEnumConstant: verify enum class

enumConstant: cache returned arg types

* ServerArgumentTypes: don't resend commands unless known argument types have changed

* [NOT WORKING] Sync known argument types earlier to avoid resending command tree

...yeah I somehow broke it
I have no idea how or why, but Vanilla clients can't connect now because they end up parsing a bad identifier somewhere

KnownArgTypesSync: Vanilla clients now get empty set instead of set being null

* [IT WORKS NOW] restore FMJ changes

this indirectly caused Vanilla clients to not be able to connect...
because when Minecraft fails when serializing an argument type, *it sends an empty identifier*, which the client promptly chokes on.
(MC fails to serialize an argument type if it's not registered - and the code that registers EnumArgumentType wasn't running because
I accidentally ran over the FMJ file.)

Great job, Mojang.

* Fix getEnumConstant.

* Reformat ServerArgumentTypeImpl

Co-authored-by: William Bradford Larcombe <william@williambl.com>

* Make local capture fail hard

Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>

* Add a method for quick registration in RegistryEntryContext. (#90)

* Add a method for quick registration in RegistryEntryContext.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Swap out primary suggestion.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix code style issues.

* Migrate to Quilt Loader, auto-generate `quilt.mod.json` (#78)

* Use Quilt Loader

* use the right loader version

* qmj generation experiment

* Finish converting modules to the new system

* band-aid fix for dependencies

* Fix build on case-sensitive filesystems

* Start using release version of Loader

* Add QslModuleExtension as an API

* Some fixes

* Update build.gradle

Co-authored-by: Eli Orona <eliorona@live.com>

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Restore setupModuleDependencies method

* Prepare for merge!

* update loom

* more fixes

Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Add missing entrypoint

* Use Quilt Loader's ModContainer and compile.

* Fix build + hopefully fix access widener bug

* Fix sending garbage to the quilt maven

* Fix publishing some more

Fix publishing some more

* Fix oversights in QMJ dependency declaration

* Fix misdeclaration of entrypoints in tooltip module.

* Fix QSL in production.

* Fix icon of QSL parent mod.

* QSL Versioning, initial draft (#96)

* versioning draft

* Change main artifact to `org.quiltmc:qsl` to match libs...

...remove hashes, fix bad merge

* Don't worry about handling snapshot builds for now

* Fix the publish action

* Recipe API (#77)

* Recipe API.

* Add package-info.

* Reword last sentence in package-info.

* Update library/data/recipe/src/main/java/org/quiltmc/qsl/recipe/impl/RecipeManagerImpl.java

Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Eli Orona <eliorona@live.com>

* Split up big classes, move a bit more to implementation, fix a lot of wording.

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Clarify javadocs and fix some issues.

* Update library/data/recipe/src/main/java/org/quiltmc/qsl/recipe/api/RecipeManagerHelper.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Add missing QuiltRecipeSerializer implementations and add warning in dev env.

* Port to Quilt Loader stuff.

Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Fix buildscript and javadoc.

* Update version.

* Fix a minor QMJ issue and fix a forgotten reference to FabricLoader.

* Fix testmods not using QMJs, and fix crash report mod list order.

* Registry Entry Attachment API (#29)

* Registry Item Attributes API

Half-completed code-based path, no data-based path yet

* Get data-based path working

* Make resource reloader async

Values are now deserialized during the load phase rather than the apply phase to allow for better error messages

* Implement code-based path for setting attributes

Attributes set via code are "built-in", and are always overriden by values set via data

* Added methods for common attribute types

* Add comments so the code is less... uh, dense

* Spaces and braces

* god I suck at organizing code

* Initial package-info

* Add dispatched utilities

Misc style/JD fixes

* Item -> Entry, part 1

* Item -> Entry, part 2

* Item -> Entry, part 3

* Rename QuiltRegistryInternals methods to be less confusing

* Stick combined attribute holder in RegistryMixin

* i5 review

package-info: Add example for attribute map file
BuiltinRegistryEntryAttributeHolder: Remove explicit super call

* L I C E N S E

* Update library/data/registry-entry-attributes/src/main/java/org/quiltmc/qsl/registry/attribute/api/package-info.java

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Basique review

DispatchedType: type is now an Identifier
RegistryExtensions.registerWithAttributes: returns registered entry
Removed EmptyRegistryEntryAttributeHolder, since Combined works if both are null
Replace dumb Table.rowMap().get() with Table.get()
package-info: Extended data-driven example
RegistryEntryAttributeReloader: namespace is no longer dropped from registry IDs
RegistryEntryAttributeReloader: catch exceptions from JSON parsing
Yeet BuiltinRegistryEntryAttributeHolder, instead registered attributes are stored directly in QuiltRegistryInternals/RegistryMixin

* RegistryEntryAttribute: add methods for String attributes

* CombinedRegistryEntryAttributeHolder: respect default value when both are null

* RegistryEntryAttribute.createDispatched: Use Function instead of Map

Using Map implies that it gets stored - which it doesn't (AFAIK, anyway)

* CombinedRegistryEntryAttributeHolder: Fix built-in value always being hidden by default value

* javadoc!

* forgot some C's

* remove useless null check

* package-info fixes

* RegistryEntryAttributeHolderImpl: Optimize table storage

Instead of mapping entry -> attribute -> value, it now maps attribute -> entry -> value
This makes it so that we have a lesser amount of large maps, rather than a greater amount of small maps

* I love Java generics

* Add RegistryEntryAttribute.getValue utility method

Also rename value type parameter to V because it makes sense in my ape brain

* All my homies hate RegistryKey

Attributes now store the registry they're attached to directly rather than its key
The attribute won't work if the registry isn't present, so using keys offers no advantage AFAIK

Also more of that "RegistryEntryAttribute<V>" refactor from last commit oops

* Forgot to refactor SimpleAttributeTest, oops

* Fix this embarrassing control flow error

* Add dispatched/polymorphic attribute test

* Forgot to upadte this method's JD

* fix indent

* Add command to dump builtin values

* RegistryEntryAttributeReloader: registry item -> registry entry

* license apply thing

* DispatchedType: fix JD link to createDispatched

* Apply suggestions from code review

Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Merge RegistryEntryAttribute and its implementation

* Clear up default vs no default attribute factory methods

* RegistryExtensions: Rename AttributeSetter to DefaultAttributesBuilder

* Fix null attribute holder if no attributes are registered for a registry

* Make type var javadoc a bit clearer

* SimpleAttributeTest: Fix impossible failure condition

* Fix attributes not being registered on creation

* Fix missing import here

* Forgot to update this, oops

* Improve DispatchedType JD

* Register our custom registry argument type

I have no idea if this is required or not since the game did run before I added this, but there seems to be validation for this, so...

* right, this should be a codec registry

* Add NotExtendable to AttributeHolder

* Hide RegistryEntryAttributeHolder as impl detail

* Nullable annotations

* RegistryExtensions.registerWithAttributes: fix JD

* Client-side attributes

* forgot to register attributes _again_

also removed link to impl interface

* Fix testmod package

* Fix common attribute values possibly being loaded from assets

* Fix assets attributes always being cleared

Add testmod
Yeet CombinedRegistryEntryAttributeHolder in favor of putting the behavior into RegistryEntryAttribute.getValue
Merge RegistryEntryAttributeHolder and its implementation

* Add missing javadoc

* DumpBuiltinAttributesCommand: dump to assets/data depending on side

* Update package-info.java

* Client testmod: remove dumb cast

Rename attribute

* DispatchedType: fix example snippet

* Use ResourceType instead of ambiguous boolean

* Add missing license headers

* a

* Mark impl classes as internal

* Split impl details from RegistryEntryAttribute

* Prevent attributes from being replaced

Add method to retrieve already-registered attribute

* Weaken typing here

* Convert test comments to javadoc

* Fix compilation

* Stick Internal annotation on attribute impl class

* Snakify folder name

* Snakify module name as well

(forgot it should be synced with folder name)

* Add missing value function

Remove default value getter from interface, it's an impl detail now

* Snakify this dependency

* Lock "dump builtin attributes" command behind system property

Add "-Dquilt.data.registry_entry_attributes.dumpbuiltin_command=true" to your run args to re-enable it

* Correct mixin prefix

* Don't use default value if missing value function is set

* RegistryEntryAttributeReloader: missing continue

* Use Boolean.getBoolean

* Fix up licenses

* Fix licenses AGAIN

* excuse me mr. backslash how tf did you get there

* murder spaces in licenses

* Make raw Javadoc easier on the eyes

* Add support for optional entries

* Remove Quilt Loader dependency

* Update Mixin compatability level

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* add a newline

* Prevent use of assets-based attributes on dedicated server

(technically they exist fine on it, they just never get a value since there's no assets reloader)

* Fix this check to not break everything oops

* limcensses

* Make reloader ID more descriptive

Make data and assets reloaders have different IDs

* Start working on tag support

* Pretty up AttributeMap a bit

License stuff

* Fix "dump builtin attrs" command

No longer always fails on dedicated servers if a client attribute is registered

* AttributeTarget.Tagged: abstract no more!

* checkstyle

* Add missing metadata to fabric.mod.json

* Fix up javadoc

* AttributeMap: make handleArray method less stupid

Rather than using an enhanced for loop AND keeping track of an index, just use a standard for loop you dingus

* Possibly implement tag support

This is completely untested!

* Rename to Registry Dictionaries API

* Redo "missingValueFunction"

* Propagate rename to Javadoc and logging, too

Actually rename the folder dict maps are loaded from (it was changed in the javadoc, but not in the code itself)
also rename a bunch of local vars

* Add test for tags

* Fix assets-based dicts not loading

Turns out you can't depend on tags loading for resource stuff...
New issue: can't reference data tags from assets since assets get loaded first

Fix SimpleDictTest

* FORGOT A LICENSE AAA

* Fix optional entries and tags

* Mark RegistryDict as non-extendable

* Make defaultValue and computeFunction explicitly mutually exclusive

* IDEA lied to me :(

* RegistryDict: add value class

For now, this is only used by RegistryDict.get

* if only applyLicenses wasn't broken

* fix buildscript

* DumpBuiltinDictsCommand: use Command module

remove custom RegistryArgumentType and use vanilla IdentifierArgumentType instead

* Sync v1

* limcensme

* specify config for compileOnly dep

* ComputeFunction: rename to DefaultValueProvider

use Result wrapper instead of exception for logic flow

* RegistryExtensions: rename registerWithDictValues to register

Add overloads to register to avoid clumsy builder-consumer

* Remove WrongValueClassException

* RegistryDictImpl: split

* RegistryDict: rename compute function in javadoc, too

* DispatchedDictTest: move inner classes to their own files

* Log4J -> SLF4J

* Update build.gradle

Use QSL Base's init entrypoints

* DumpBuiltinDictsCommand: Log4J -> SLF4J

* Fix tag support

DictMap: add type params
RegistryDictReloader, DictMap: Log4J -> SLF4J

* DictMap: remove resolved FIXME

* RegistryDict -> RegistryEntryAttachment

* DefaultValueProvider.Result: add explicit hasFailed flag

ComputedDefaultRegistryEntryAttachmentImpl: fix flipped if

* RegistryEntryAttachmentSync: consolidate all sync-related methods

Actually send sync packets (forgot to call an important method, oops)
Add Environment annotations to all client-only classes/methods

* Update minimum Minecraft version

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* ClientInitializer: move to client subpackage

* Convert registry entry attachments to Quilt Loader setup.

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>

* Bump versions.

* Fix a critical issue with registry entry attachments API.

* Remove cotton maven as unneeded now.

* Add missing InjectedInterface annotation on QuiltTagKey.

* Block access widening. (#104)

* Block access widening.

* Add block extensions README.

* Bump version.

* Fix issues with the recipe API. (#109)

* Fix issues with the recipe API.

* Fix some very minor issues with ShapedRecipeBuilder.

* Rename command library to management library. (#110)

* Bump version.

* Fix Transitive Dependencies at compile and runtime (#107)

* Fix transitive api dependencies not applying

* Update build-logic/src/main/java/qsl/internal/extension/QslModuleExtensionImpl.java

* missed some lines

* Documentation

* Screen API (#81)

* Screen Api

* Screen Api: Update fmj

* Screen API: Fixes

* Screen API: change "Screens" to an injected interface

* Screen API: Injected Interface fix and cleanup

* Update library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Screen API: Fix fully qualified name

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Screen API: Most of Glitch's Review, and Pepper's Refactor

* Screen API: Fix build and broken quilt loader

* Apply suggestions from code review

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Screen API: Fix build and make changes from glitch's review

* Screen API: Use TriState and fix javadoc

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Update Loader; bump version

* Add a way to register new resource pack providers. (#87)

* Add a way to register new resource pack providers.

* Update library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/api/QuiltResourcePack.java

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Attempt to temporarily fix loom's jankness.

* Fix testmod.

* Add InjectedInterface annotation.

* Add dummy display name implementation to avoid compilation issues.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Bump version and clean up some leftovers.

* Fix Screen API crash and testmod.

* Fix #111: license headers match_from does not work properly on Windows.

* Fix missing spacing in build.gradle.

* Add better handling of Minecraft versions.

* Fix some minor inconsistencies and formatting in resource loader.

* Fix missing test entrypoint in resource loader.

* Fix crash involving Resource Loader's Overwrites (#113)

* Bump versions.

* hotfix: Fix jank in RenderLayersMixin. causing blocks to not render properly in certain situations

* Add missing null checks as asked from @OroArmor.

* Create a fat, remapped testmod jar (#114)

Remapped testmod jars that you can throw into your favorite launcher are created on the module, library, and root levels.
They are not published to maven, but can be downloaded through Github Actions

* Javadoc Improvements (#102)

* Add Minecraft javadocs and add combined javadocs

* remove println

* Create CODEOWNERS, update PR Policy (#119)

* Create CODEOWNERS

* Update CODEOWNERS

* Update CONTRIBUTING.md

* Revert to class init, change to lambdas (#116)

* "Fix" and polish the Quilt Screen API (#117)

Clean up and a tiny refactor on where it made sense on the Screen API (can't have breaking changes if the last few QSL releases are broken anyway), and also finally fixes a crash involving its injected interface. Unfortunately, the "fix" was to temporarily disable the injection until the refmap issues are no more

* Bump version.

* Activate GUI team

* [REA] Fix DefaultValueProvider.Result.error() (#121)

gosh darn it, past me - Leo, 2022

* Add better tag support to Registry Attachment (#106)

* Improve tag handling around Registry Attachment API

* Fix headers and some names

* Clean ups

* Fix some issues + clarity

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Fix incorrect conditional

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Bump version

* Port Dimensions fast path + bug fix from upstream (#120)

* Port Dimensions fast path + bug fix from upstream

* Fix some checkstyle/license issues.

Co-authored-by: LambdAurora <email@lambdaurora.dev>

* Initial Port of Fabric Biome API (#94)

* Inital Commit - Testmod Acting Funky?

* Edit Test

* Remove Event Listener

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Fix build.gradle for Biome API PR

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* fix build.gradle

* fix the fix

* fix the fixed fix

* Fix BiomeTest (Wrong ModContainer Import)

* Some Code Refactors

* Update build.gradle

* Hopefully last step in making Biome API build

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Fix AccessWideners

* Fix Biome Fog

* Fix License

* Removed Wildcards

* Yeet FMJ for Biome API, fix BiomeTest wildcard

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Last Minute BiomeTest fixes, add QMJ that works

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Implement changes from Oro's Biome API Review

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

* Variable naming changes

* more this.

* Fix Biome API Testmod QMJ

Signed-off-by: peaceheis <69596656+peaceheis@users.noreply.github.com>

Co-authored-by: zOnlyKroks <finnrades@gmail.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Fix some small mistakes.

* Cleanup Biomes Modifications API javadoc.

* Run code auto formatter on all of QSL.

* Make mixin naming more consistent.

* Fix javadoc generation.

* Fix javadoc link in build.gradle.

* Update gradle wrapper and fix some header issues.

* Quilt Biome API Mixin Fix + Minor QuiltBiomeTest tweaks (#123)

* Update QuiltBiomeTest with minor tweaks

* Use Complete Descriptor in QuiltBiomes Mixin

* Backport 1.19 biome testmod tags.

* Bump version.

* Fix logic error in Recipe API addition phase.

* Rename a mixin in Tags API to reflect mapping names.

* REA: fix missing profiler pop and unclosed resource.

* Fix release workflow misfiling the QSL version field.

* Override the experimental warning screen with opt-out. (#124)

* Fixes #131: a possible tooltip events class-loading race. (#133)

* Fix possible tooltip events class-loading race.

This addresses #131.

* Fix wording.

Co-authored-by: Glitch <glitch.g3431@gmail.com>

Co-authored-by: Glitch <glitch.g3431@gmail.com>

* Bump version.

* Bump loader version.

* Add stuff to check whether dynamic registry entries exist. (#134)

* Add stuff to check whether dynamic registry entries exist.

* Replace getBiomeRegistry with getBiomeHolder.

* Port Biome API fixes from Fabric API (#137)

* Bump version

* Add mod resource packs caching for faster reloads. (#138)

* Add mod resource packs caching for faster reloads.

Also use the java.io.File API when possible instead of NIO exists.

* Use some more ternaries.

* Improve documentation after a talk with native speakers in Quilt.

* [REA] Fix reloader never running (#144)

* REA: Backport make dump_builtin_attachments dump tags too (#126)

* Bump version.

* Update checkstyle.

* Add Block Entity API module. (#135)

* Add Block Entity API module.

* Improve sync errors following feedback.

* Fill missing javadoc.

* Update library/block/block_entity/src/main/java/org/quiltmc/qsl/block/entity/impl/QuiltBlockEntityImpl.java

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Apply suggestions from code review.

* Fix todo wording.

* Replace the Preconditions call with a Java built-in method.

* Apply suggestions from Ennui's code review.

Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>

* Fix wording.

* Add missing icon to the Quilt Block Entity API.

* Remove interface injection of QuiltBlockEntity.

* Rename bows module to extension

* Move injected interfaces to impl and projectile modifying items now auto-register

* apply licenses

Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: Eli Orona <eliorona@live.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: FoundationGames <43485105+FoundationGames@users.noreply.github.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: Boxed <62370320+maximumpower55@users.noreply.github.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>
Co-authored-by: CheaterCodes <49926638+CheaterCodes@users.noreply.github.com>
Co-authored-by: peaceheis <69596656+peaceheis@users.noreply.github.com>
Co-authored-by: zOnlyKroks <finnrades@gmail.com>

* Update pr to 1.19.1 and fix build errors

* Move around classes to better packages

* Fix testmod

* Fix module path

* Cleanups

* Apply suggestions from code review

Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>

* Update library/item/item_extension/src/main/java/org/quiltmc/qsl/item/extension/api/crossbow/ProjectileModifyingCrossbowItem.java

* Apply suggestions from code review

Co-authored-by: LambdAurora <aurora42lambda@gmail.com>

* Use this in more places and reorganize imports

* Fix stuff intellij messed up

Co-authored-by: Southpaw <44805409+Southpaw1496@users.noreply.github.com>
Co-authored-by: Whangd00dle <67663207+Platymemo@users.noreply.github.com>
Co-authored-by: Glitch <glitch.g3431@gmail.com>
Co-authored-by: LambdAurora <aurora42lambda@gmail.com>
Co-authored-by: LambdAurora <email@lambdaurora.dev>
Co-authored-by: FoundationGames <43485105+FoundationGames@users.noreply.github.com>
Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
Co-authored-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
Co-authored-by: William Bradford Larcombe <william@williambl.com>
Co-authored-by: BasiqueEvangelist <basiqueevangelist@yandex.ru>
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: Boxed <62370320+maximumpower55@users.noreply.github.com>
Co-authored-by: Ennui Langeweile <85590273+EnnuiL@users.noreply.github.com>
Co-authored-by: CheaterCodes <49926638+CheaterCodes@users.noreply.github.com>
Co-authored-by: peaceheis <69596656+peaceheis@users.noreply.github.com>
Co-authored-by: zOnlyKroks <finnrades@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request final-comment-period library: item Related to the item library. new: module A pull request which adds a new module t: new api This adds a new API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet