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.
This snapshot is possibly one of the most impactful for API we have ever had. This PR is an inital port to support 22w06a, stuff will be missing and broken.
# Removed modules:
- fabric-mining-levels-v0 - Previously deprecated
- fabric-object-builders-v0 - Previously deprecated
- fabric-tag-extensions-v0
- fabric-tool-attribute-api-v1
# Modules with API breaking changes:
- fabric-biome-api-v1
- fabric-content-registries-v0
- fabric-data-generation-api-v1
- fabric-mining-level-api-v1
- fabric-object-builder-api-v1
- fabric-resource-conditions-api-v1
- fabric-structure-api-v1
# Impactful API changes:
### fabric-object-builder-api-v1
- Removed - FabricBlockSettings.breakByHand
- Removed - FabricBlockSettings.breakByTool - Previously deprecated
# Notable changes
- fabric-registry-sync-v0 moves vanilla's new registry freezing to a later point in time, allowing mods to add to the registry during init.
# Known issues:
- ServerBugfixMixin used to fix https://bugs.mojang.com/browse/MC-195468 has not yet been ported.
* Move biome modification into the MinecraftServer constructor to have access to the actual level generation settings for the level.
* Move biome modification into the MinecraftServer constructor to have access to the actual level generation settings for the level.
* Move biome modification into the MinecraftServer constructor to have access to the actual level generation settings for the level.
* Ensure the feature ordering in BiomeSource is updated after modifying biomes.
* Don't use var
* Use the opportunity to check the real chunk generators for
the specified structure.
* Restore Biome API as far as possible. Removed Overworld Biome additions for now until a new API can be worked out while the Vanilla changes stabilize.
* Now with more checkstyle.
* Fix running game tests.
* Fix dimension api bugfix mixin. Of note: The Vanilla bug is still present, and the bugfix still needed.
* Fix references to unmatched RegistryOps method.
* 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
* Add custom value denoting module lifecycles.
* Make the module validation work.
My hand has been forced - we must use buildSrc since JsonSlurper is not available in main buildscript.
* Apply task to each project and dont cross projects
* A horrible hack
* Wait what
* It works now.
* Not needed
* Drop unneeded maven repo, cache map lookup
(cherry picked from commit daa38b3d82)
* Create EndBiomes.java
* Revert "Create EndBiomes.java"
This reverts commit 4d1736fad9.
* Revert "Revert "Create EndBiomes.java""
This reverts commit 673c508d82.
* Rename ContinentalBiomeEntry to WeightedBiomeEntry
* Complete API for adding biomes to the end
* Mixin to end biome source
* Revert "Rename ContinentalBiomeEntry to WeightedBiomeEntry"
This reverts commit 849197e15d18c26af2a6f2aa1766b7d73d9a7144.
* Revert "Revert "Rename ContinentalBiomeEntry to WeightedBiomeEntry""
This reverts commit c2aa4ab097eb3daed71e82d4e77142671ed04316.
* Create SimpleLayerRandomnessSource for use with end biome source mixin
* Renamed MAIN region to MAIN_ISLANDS
* Create test mod
* Added pickFromNoise method to WeightedBiomePicker
* Javadoc and licensing info
* Comply with checkstyle
* Internalize EndRegion
* Added stretching when getting the biome for the end
* Rename EndBiomes to TheEndBiomes to be consistent with yarn mappings
* Fix typo
Courtesy of i509VBC
Co-authored-by: i509VCB <i509vcb@gmail.com>
* Add @Unique to private fields in MixinTheEndBiomeSource
* Made end test biome consistent in style with previous test
Courtesy of i509VBC
Co-authored-by: i509VCB <i509vcb@gmail.com>
* Fix imports
* Didn't know test mods needed to follow the checkstyle
* SimpleLayerRandomnessSource's random is now use to instantiate its noise sampler
* A very important note
* Update javadoc for adding biomes to the Main Island region
* Remove method that is leftover from when EndRegion was part of the API
* Ported 1.16.1 biomes-api-v1 to 1.16.2.
Public API changes:
- Removed flagging biomes as suitable for player spawns since that is now handled in the Biome Builder.
- Changed API over to RegistryKey's, not because it's necessary, but because it is more ergonomic since Vanilla Biomes in BuiltInBiomes are now all exposed as keys, rather than instances.
* Increase memory size to fix build failures.
* Add the ability to add modded dimensions to the regions of the end.
* Hopefully fixed everything that went wrong during the rebase
* Update fabric-biome-api-v1.mixins.json
* Finally got custom end biomes to generate
* Thanks for nothing, GitHub Desktop
* Bad GitHub Desktop
* Bad newline no cookie
* Got everything to follow the checkstyle
* Bring branch up-to-date with main repo (#11)
* Revert "Bring branch up-to-date with main repo (#11)"
This reverts commit dc47106241.
* Remove some stuff that's not supposed to be there
* Fix git silliness
* Update FabricBiomeTest.java
* TheEndBiomes is now Deprecated to match OverworldBiomes and NetherBiomes
* Update some checkNotNull messages
* Change the noise scale when replacing end biomes
* Bad space no cookie
* Remove unnecessary code
* Remove unused imports
* Set up InternalBiomeData to treat End Midlands and End Barrens as border biomes
* Changed the API to reflect midlands and barrens biomes being considered border biomes
* Start work on getting the new system fully working
* Finally got everything working and cleaned up the Javadoc
* Fixed checkstyle violations
* Fix checkstyle violations again
* Drop fabric_ prefix
* Calling SimpleLayerRandomnessSource#nextInt() now throws an exception
* If the midlands or barrens biome picker is null, the replacement key defaults to the vanilla one
* Fix usage of vanilla identifier
* Update MixinTheEndBiomeSource.java
* Fix checkstyle violations
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: Sebastian Hartte <sebastian@hartte.de>
* Create EndBiomes.java
* Revert "Create EndBiomes.java"
This reverts commit 4d1736fad9.
* Revert "Revert "Create EndBiomes.java""
This reverts commit 673c508d82.
* Rename ContinentalBiomeEntry to WeightedBiomeEntry
* Complete API for adding biomes to the end
* Mixin to end biome source
* Revert "Rename ContinentalBiomeEntry to WeightedBiomeEntry"
This reverts commit 849197e15d18c26af2a6f2aa1766b7d73d9a7144.
* Revert "Revert "Rename ContinentalBiomeEntry to WeightedBiomeEntry""
This reverts commit c2aa4ab097eb3daed71e82d4e77142671ed04316.
* Create SimpleLayerRandomnessSource for use with end biome source mixin
* Renamed MAIN region to MAIN_ISLANDS
* Create test mod
* Added pickFromNoise method to WeightedBiomePicker
* Javadoc and licensing info
* Comply with checkstyle
* Internalize EndRegion
* Added stretching when getting the biome for the end
* Rename EndBiomes to TheEndBiomes to be consistent with yarn mappings
* Fix typo
Courtesy of i509VBC
Co-authored-by: i509VCB <i509vcb@gmail.com>
* Add @Unique to private fields in MixinTheEndBiomeSource
* Made end test biome consistent in style with previous test
Courtesy of i509VBC
Co-authored-by: i509VCB <i509vcb@gmail.com>
* Fix imports
* Didn't know test mods needed to follow the checkstyle
* SimpleLayerRandomnessSource's random is now use to instantiate its noise sampler
* A very important note
* Update javadoc for adding biomes to the Main Island region
* Remove method that is leftover from when EndRegion was part of the API
* Ported 1.16.1 biomes-api-v1 to 1.16.2.
Public API changes:
- Removed flagging biomes as suitable for player spawns since that is now handled in the Biome Builder.
- Changed API over to RegistryKey's, not because it's necessary, but because it is more ergonomic since Vanilla Biomes in BuiltInBiomes are now all exposed as keys, rather than instances.
* Increase memory size to fix build failures.
* Add the ability to add modded dimensions to the regions of the end.
* Hopefully fixed everything that went wrong during the rebase
* Update fabric-biome-api-v1.mixins.json
* Finally got custom end biomes to generate
* Thanks for nothing, GitHub Desktop
* Bad GitHub Desktop
* Bad newline no cookie
* Got everything to follow the checkstyle
* Bring branch up-to-date with main repo (#11)
* Revert "Bring branch up-to-date with main repo (#11)"
This reverts commit dc47106241.
* Remove some stuff that's not supposed to be there
* Fix git silliness
* Update FabricBiomeTest.java
* TheEndBiomes is now Deprecated to match OverworldBiomes and NetherBiomes
* Update some checkNotNull messages
* Change the noise scale when replacing end biomes
* Bad space no cookie
* Remove unnecessary code
* Remove unused imports
* Set up InternalBiomeData to treat End Midlands and End Barrens as border biomes
* Changed the API to reflect midlands and barrens biomes being considered border biomes
* Start work on getting the new system fully working
* Finally got everything working and cleaned up the Javadoc
* Fixed checkstyle violations
* Fix checkstyle violations again
* Drop fabric_ prefix
* Calling SimpleLayerRandomnessSource#nextInt() now throws an exception
Co-authored-by: i509VCB <i509vcb@gmail.com>
Co-authored-by: Sebastian Hartte <sebastian@hartte.de>
* Biome Modification API
* Improved docs on Mixins.
* Added convenience methods to select biomes by mob-spawns, and added a top-level convenience method to add new spawns.
* Checkstyle fixes.
* Replace a reference to DRM with DynamicRegistryManager
* Replaced integer order with phase-based ordering.
* Changed to @Deprecated
* Checkstyle fix
* Added category selector.
* Ported 1.16.1 biomes-api-v1 to 1.16.2.
Public API changes:
- Removed flagging biomes as suitable for player spawns since that is now handled in the Biome Builder.
- Changed API over to RegistryKey's, not because it's necessary, but because it is more ergonomic since Vanilla Biomes in BuiltInBiomes are now all exposed as keys, rather than instances.
* Changed to CheaterCode's mixin for modifying the nether biomes, saving us one accessor.
* Move Bonanza
* Finished moving and updating of the module, added experimental markers.
* Adjusted experimental notes.
* Finished rename from biomes-v1 to biome-api-v1
* Reverted memory settings in preparation for loom-0.5