* use knownPack to avoid syncing mod data packs.
* remove empty class
* checkstyle and licenses
* move debug logging from testmod into main module
* fix knownPackInfo not working for build-in data packs.
* make bundled data packs not required for client, and don't auto enable
* improve testmod with added builtin data pack + better error message
* Increase max known packs in C2S packet
* validate size before sending
* changeable with system property
* change mixin from ModifyConstant to ModifyArg to be more clear.
* Apply suggestions from code review
Co-authored-by: modmuss <modmuss50@gmail.com>
* store list of knownPacks as server start
avoids desync on pack change (since registries aren't reloaded)
* be extra safe: only request knownPacks that were enabled at server start and still are.
Doesn't rely on the fact that registries aren't synced anymore.
---------
Co-authored-by: modmuss <modmuss50@gmail.com>
(cherry picked from commit c0e5481f61)
* First step toward fixing resource pack grouping
* Placeholder pack and pack dependency
* Various fixes
* Fix wrong variable in serialization code
* Hide packs in PackScreen and DatapackCommand
* Apparently Japanese people aren't alone in having their currency signs used as special chars...
* Inject directly to Pack
* Add temporary logging, fix bug
* Add proper sorting
* Improve logging
* Fix duplicate name registration
* Fix client pack handling
* Fix FMJ
* Stop using interface injection for internal interface
* Delete unused GroupResourcePack
* Move refreshAutoEnabledPacks to util
* Improve logging
* Make a few things private
* Use vanilla metadata serialization logic
* Improve javadoc
* Add junit test
* Some final refactors
* Update ja_jp.json
---------
Co-authored-by: modmuss <modmuss50@gmail.com>
(cherry picked from commit 707e4d1bfd)
Breaking changes:
- `FabricBrewingRecipeRegistry.registerPotionRecipe` takes `RegistryEntry<Potion>` instead of `Potion`
- `SculkSensorFrequencyRegistry.regster` takes `RegistryKey<GameEvent>` instead of `GameEvent`
- `FabricLanguageProvider.add` takes `RegistryEntry<EntityAttribute>` instead of `EntityAttribute`
- `FabricTagProvider.GameEventTagProvider` was removed replace with `FabricTagProvider<GameEvent>`
- `FabricItem.getAttributeModifiers` returns a Multimap with a key of `RegistryEntry<EntityAttribute>` instead of `EntityAttribute`
- `ModifyItemAttributeModifiersCallback.modifyAttributeModifiers` takes Multimap with a key of `RegistryEntry<EntityAttribute>` instead of `EntityAttribute`
* Fix injected resources not overriding certain vanilla resources
* Adjust comment
* Add test blocks for High Contrast pack, too
* Fix `GroupResourcePack`
* Deduplicate logic between `GroupResourcePack` and `FabricWrappedVanillaResourcePack`
* Fix checkstyle
* Delete gravel texture override, change dirt to diamond block
* Fix CLIENT_RESOURCE_PACK_PROVIDER registration
* Mark FabricModResourcePack as always stable
* Fix warnings
* Fix use of deprecated loader API
* Fix yet another ResourcePack closing issue
* Make ResourceManagerHelper NonExtendable
* fix checkstyle
* Load mod-provided data packs and DRM entries in CreateWorldScreen
Fixes#2225
* Fix ModifyArg target
* Fix injection failure
* Fix again
* checkstyle
* Fix it once again
* Add data pack load test to biome api testmod
* Also fix this for the dedicated server
* Fix TestServer not loading data packs
* Load dynamic registry in TestServer
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.