* Replace FabricEntityTypeBuilder with EntityTypeBuilder + iface injection
* Finish and test entity type builder
* Deprecate FabricBlockEntityTypeBuilder
* Review fix
* Fixes based on review
* Some fixes
* Checkstyle
Fixes FabricBlockSettings' copyOf method missing several new settings introduced as a result of the removal of Materials.
Specifically, burnable, liquid, forceNotSolid, forceSolid, pistonBehavior, instrument, and replaceable. These are all copied by the vanilla `BlockSettings.copy` as well.
The emissiveLightingPredicate is also now copied in vanilla, so I moved the copy of that to reflect that change.
(cherry picked from commit 2ff98d3bac)
* Fix testmod calling Text#translatable with non-primitive arg
* Fix javadoc in BlockPickInteractionAware
There is no immediate need to change the param type, as the
world can be obtained from `player.getWorld()`.
* Fix unload events not running during reconfiguration
* Handle null being passed as the datafix type to PersistentState.Type
Closes#3327
* Checkstyle ;-)
* Update fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/PersistentStateManagerMixin.java
Co-authored-by: Juuz <6596629+Juuxel@users.noreply.github.com>
---------
Co-authored-by: Juuz <6596629+Juuxel@users.noreply.github.com>
* Update to loom 1.3
* Fix more 1.3 deprecations
* Opps
* Move to mod publish plugin
* Revert some changes
* Fix some more Gradle deprecations
* Fix names
* Remove extra stuff
* Cleanup
* Add builders for BlockSetType and WoodType to replace registries
Adds `BlockSetTypeBuilder` and `WoodTypeBuilder` to replace `BlockSetTypeRegistry` and `WoodTypeRegistry` respectively.
* whoops
* double whoops
* Register and Build now separate methods
Separated the register and build methods, with the former calling the latter. Their relationship is explained in the javadoc.
* Update BlockSetTypeBuilder.java
# Breaking changes
- `VillagerPlantableRegistry` replaced with `ItemTags.VILLAGER_PLANTABLE_SEEDS`
- `FabricItemGroup.builder()` no longer takes an `Identifier`
- `FabricItemGroup.build()` no longer registers the ItemGroup, this now needs to go in the vanilla registry.
- `ItemGroupEvents.modifyEntriesEvent` now takes a `RegistryKey<ItemGroup>` in place of an `Identifier`
- `FabricLanguageProvider` now takes a `RegistryKey<ItemGroup>` in place of an `ItemGroup`
- `IdentifiableItemGroup` removed, replaced with vanilla registries.
- `FabricMaterialBuilder` removed, no replacement.
- `HudRenderCallback.onHudRender` now passed a `DrawableHelper` in place of `MatrixStack`
- `ScreenEvents.beforeRender` now passed a `DrawableHelper` in place of `MatrixStack`
- `ScreenEvents.afterRender` now passed a `DrawableHelper` in place of `MatrixStack`
- `Screens.getItemRenderer()` removed. Replace with `MinecraftClient.getItemRenderer()`
`DrawableHelper` is likely to be renamed soon, see: https://github.com/FabricMC/yarn/pull/3548/
* BlockSetTypeRegistry and WoodTypeRegistry
Adds `BlockSetTypeRegistry` for creating `BlockSetType`s using Identifiers.
Also adds `WoodTypeRegistry` to replace `SignTypeRegistry`, matching the new more accurate Yarn name. The old `SignTypeRegistry` remains as deprecated for compatibility.
Also updates Yarn build.
* Delete SignTypeRegistry.java
Broke in the update anyway, no use keeping it
* Suggestions
* Whoops
* Suggestions
* Replace useless nullability comments with jetbrains annotation
* These were old comments
* Revert "These were old comments"
This reverts commit 4e9555ad51.
* checkstyle + nullability in mixin
- `DamageSource` constructor and methods made accessible - supersedes #1085
- `SpawnRestriction` method `register` made accessible - allows `SpawnRestrictionAccessor` mixin to be removed
- `TradeOffers` trade factory inner classes made accessible
- `Material$Builder` methods made accessible (except `lightPassesThrough` method as that would break binary compat in `FabricMaterialBuilder`
- Fixed `generateAccessWideners` task for TAWs module so it can now find the jar
- `AxeItem`, `MusicDiscItem`, and `PickaxeItem` constructors made accessible
- `ItemUsageContext` and `ItemPlacementContext` alternate constructors made accessible - allows passing a `null` PlayerEntity
- `Factory` inner classes of both `CookingRecipeSerializer` and `CuttingRecipeSerializer` made accessible
- `BrewingRecipeRegistry` methods `registerItemRecipe`, `registerPotionType`, and `registerPotionRecipe` made accessible
- `ScoreboardCriterion` `create` methods made accessible
- `ModelPart` inner classes `Vertex` and `Quad` made accessible
- `RenderLayer` `of` method made accessible
- `SensorType` and `Activity` constructors made accessible
- `LivingEntity` methods `damageArmor`, `damageHelmet`, and `damageShield` made accessible
- `ProjectileEntity` constructor made accessible
- `FishingBobberEntity` alternate constructor made accessible - allows passing luck of the sea or lure levels for custom fishing bobbers
- `ServerWorld` method `sendToPlayerIfNearby` made accessible
- `TextColor` method `getHexCode` made accessible
- `TranslatableTextContent` method `getArg` made accessible
The following classes have been made final and unconstructible:
- All convention tags classes
- `FluidVariantAttributes`
- `FluidVariantRendering`
The following classes have been made unconstructible:
- `BiomeModifications`
- `ClientEntityEvents`
- `ClientTickEvents`
- `LootTableEvents`
- `FabricDefaultAttributeRegistry`
- `MinecartComparatorLogicRegistry`
- `StorageUtil`
The following classes have been explicitly marked as final. Note that actually extending such class has always been impossible due to missing public constructor:
- `VillagerInteractionRegistries`
- `VillagerPlantableRegistry`
- `ModelHelper`
- `StoragePreconditions`
While the first two are technically breaking changes, there is no actual or observed usage for any of those.
A common source of crashes on modded Minecraft servers comes from modders accidently calling client only code from the client, this PR is another large step towards elimitating that.
This PR has been months in the making and years in the planning, requiring major changes to Loom & Loader. In recent Minecraft versions Mojang has made it easier than ever to cleanly split the jar, going against the status-quo of merging the client and server into one jar.
From the start we have designed Fabric to have a very clear split between client and common (client & server) code. Fabric has always encoraged keeping client only code seprate from the server, this can be seen at a fundamental level with the entrypoints in Loader. Fabric API's have all been designed with this mind.
This PR provides a compile safety net around Fabric API using client only code on the server. Even though there are almost 400 changed files, minimal changes beyond moving the files were required to achieve this in Fabric API, thanks to the effort of all contributors in the past.
These changes should not affect modders or players in anyway, a single "universal" jar is still produced. Im happy to awnswer any questions.
* Update command registration API to reflect vanilla changes
* Allow module versions in impl+mixin packages
* Use v2 module, keeping v1 for server commands at least
* update, address review
Co-authored-by: modmuss50 <modmuss50@gmail.com>