* reimplement ArmorRenderingRegistry
* fix license headers
* remove todo
* move registry to static method
* minor reformat
* reduce api classes into one
* reformat
* make registry static
* reformat
* change Item in registry to ItemConvertible
* register mixin properly this time
* explain test mod
* reformat
* stricter null check
* Stop DefaultResourcePack scanning the entire classpath
* Use another approach to find the JAR
* Make it work for filesystem assets as well (tested, it works!)
* Only patch what is necessary
* Original fluid API design
* Rework the transaction system
* First javadoc pass
* Add a testmod, a base implementation for fluid storages and fix some little bugs
* Fix checkstyle
* Make Movement#move extract from the view and not the whole Storage
* Document and update FluidPreconditions
* Use for-each in CombinedStorage and document a little
* Remove useless overrides in Insertion/ExtractionOnlyStorage
* Move SnapshotParticipant#snapshots to the top of the class, and make updateSnapshots public
* Fix garbage collection of unused CauldronWrappers
* Use ArrayList directly
* Remove locking, reorganize transaction implementation, and add outer close callback
* Add more javadoc
* Rework Storage#forEach into Storage#iterator
* Add a few missing `transaction.addCloseCallback(iterator)`
* Add anyView(), exactView(), capacity() and isEmpty()
* Add Storage#iterable to make iteration friendlier to for loops
* Storages may now have multiple open iterators
Co-authored-by: Devan-Kerman <dev.sel20@gmail.com>
* Make CombinedStorage#supportsInsertion/Extraction iterate through the parts
* Block updates should be used when the supportsInsertion/Extraction status changes
* Fluid -> FluidKey
* Remove all references to ItemKey inside FluidKey, and other minor tweaks
* Cache FluidKeys with a null tag inside Fluid directly
* Fluid unit convention
* Add FluidKeyRendering and RenderHandler
* Bump version for more testing (also published to my maven)
* Add SingleViewIterator, massively reduce code duplication!
* Make API experimental, and add README
* Bump version
* Apparently Fluids.EMPTY is flowing
* Add package info
* Minor adjustements
* 1.17 port, cauldron support, add ResourceKey
* Checkstyle, gas rendering, use record for ResourceAmount
* Add a few helpers, rename some stuff
* Remove anyView, allow nullable in StorageUtil#find*, fix missing try block
* Slight findStoredResource cleanup
* Slightly improve implementation
* Bump version
* Fix wrong transaction
* I wrote in a comment that this could happen...
* Fix SingleFluidStorage bugs, add tests in the testmod, add testmod assets
* Add extract stick
* Rename a few things
* `ResourceKey<T>` -> `TransferKey<O>`
* `ResourceKey#getResource()` -> `TransferKey#getObject()` as resource is already widely used through the API for the keys themselves.
* `tag` -> `nbt`
* Add `get` prefixes to `StorageView` functions
* Bump version
* FluidKey -> FluidVariant
* Bump version
* Expand getVersion() documentation, make it thread-safe and use long.
Co-authored-by: Player <player@player.to>
* empty resource -> blank resource, and update SingleFluidStorage
Co-authored-by: Player <player@player.to>
* Make CauldronFluidContent a final class instead of a record.
Co-authored-by: Player <player@player.to>
* Get rid of CauldronFluidContent#minLevel (was always 1)
* Fix nested commits. (Thanks @warjort!)
* Separate Transaction and TransactionContext
Co-authored-by: Devan-Kerman <dev.sel20@gmail.com>
Co-authored-by: Player <player@player.to>
* Change WorldLocation into a private record
* Bump version
* Guard against exceptions thrown in close callbacks
* Make sure blank fluid variants don't have a tag
* Add documentation, make CauldronStorage clearer
Co-authored-by: frqnny <45723631+frqnny@users.noreply.github.com>
* Allow null storages in StorageUtil#move, and clarify sidedness of FluidStorage
* Add explicit hashCode and equals for transfer variants
* Remove ugly equals and hashCode overrides, and add constant time hashcode spec
Co-authored-by: Devan-Kerman <dev.sel20@gmail.com>
Co-authored-by: liach <liach@users.noreply.github.com>
Co-authored-by: Player <player@player.to>
Co-authored-by: frqnny <45723631+frqnny@users.noreply.github.com>
* Initial version of Item API API
* Use an ItemStack parameter instead of an Item parameter for API queries
* Add ItemStack modification note
* Kindly ask providers not to modify the stack
* Expose the API and context types
* Bump version to 1.2.0
* Fix structure config not applying in every case
* Make tempmap immutable
* delete unfinished sentence
oop
* Some more cleanup
This was done at the request of Technician
* Update fabric-structure-api-v1/src/main/resources/fabric.mod.json
Co-authored-by: liach <7806504+liach@users.noreply.github.com>
Co-authored-by: liach <7806504+liach@users.noreply.github.com>
* fix#1273
* Expand testmod to test multipart and weighted models with FRAPI submodels
Co-authored-by: Technici4n <13494793+Technici4n@users.noreply.github.com>
* Fixed Biome Modification API not working for json biome
* upgraded test to add to all deserts and added json biome. (note the test mod won't load the json biome tho. Make it into a datapack so it works)
* switched set of rgeistrykeys to set of biome instances
* added datapack as backup to test mod
* removed unused imports
* removed the biome json file from the test mod's data folder
* Write to the trade map directly
* Add warning when TradeOfferHelper#refreshOffers is called
* Correctly use synchronized, just in case
* Add null check - PR should be ready for merge now
* Make ctor private to hide it from javadoc
* dynamic tool attributes v2, part 1
* move duck interface to impl package
* add licenses
* fix mixin build failure on a dedicated server
* remove unused shadow of getItem()
* add a simple user-context-based attribute tool to the test item suite
* add clarifying comments in DynamicAttributeTool jdoc regarding parameter reliability + extended docs on getDynamicModifiers for attribute freshing
* player -> user because context is not always a player
* add license to TestNullableItem