Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: FabricMC/fabric
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.96.4+1.20.5
Choose a base ref
...
head repository: FabricMC/fabric
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.96.11+1.20.5
Choose a head ref
  • 20 commits
  • 119 files changed
  • 3 contributors

Commits on Feb 29, 2024

  1. 24w09a (#3623)

    * In game
    
    * More fixes
    
    * Small fixes + changes
    
    * Rename
    
    * Fix test
    modmuss50 authored Feb 29, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    1172e89 View commit details
  2. Bump version

    modmuss50 committed Feb 29, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    2f977a4 View commit details

Commits on Mar 1, 2024

  1. 24w09a - Transfer API (#3626)

    * First pass on transfer API
    
    * More fixes
    
    * Another fix
    
    * Small fixes
    
    * Move transfer API tests to junit
    
    * Fix client run
    
    * Small fixes
    
    * Copy stack when component changes
    
    * Small improvement
    
    * More tests and docs fixes
    
    * Mutate existing stack
    modmuss50 authored Mar 1, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    9d6d003 View commit details
  2. Bump version

    modmuss50 committed Mar 1, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    d20e1f0 View commit details

Commits on Mar 4, 2024

  1. Fix loot table provider not working after 24w09a port (#3630)

    maityyy authored Mar 4, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    fc9addb View commit details
  2. Dont serialise empty transfer variant components (#3628)

    modmuss50 authored Mar 4, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    a93ecda View commit details
  3. Bump version

    modmuss50 committed Mar 4, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    29bc5c1 View commit details

Commits on Mar 6, 2024

  1. Sync data component types registry (#3631)

    modmuss50 authored Mar 6, 2024
    Copy the full SHA
    403ef19 View commit details
  2. 24w10a

    modmuss50 committed Mar 6, 2024
    Copy the full SHA
    031f0cf View commit details

Commits on Mar 12, 2024

  1. 24w10a porting fixes (#3638)

    * Rename mixin using unmapped name
    
    * Fix potential crash in item API testmod
    
    * Improve custom ingredient javadoc
    
    * More javadoc improvements
    
    * Add more tests
    
    * whoops
    
    * Fix typos
    
    * Remove test for strict NBT matching
    
    * another whoopsie
    
    * Finish NBT -> components changes
    
    Breaking change: `FabricItem#allowNbtUpdateAnimation` was renamed to
    `allowComponentsUpdateAnimation`.
    
    * Fix broken javadoc links
    
    * Fix broken screen handler testmod
    apple502j authored Mar 12, 2024
    Copy the full SHA
    42c290b View commit details
  2. No longer specify gradle threads in github actions. (#3643)

    modmuss50 authored Mar 12, 2024
    Copy the full SHA
    0e8f45b View commit details
  3. Rename TransferVariant.componentsMatches -> componentsMatch (#3645)

    modmuss50 authored Mar 12, 2024
    Copy the full SHA
    168bf74 View commit details
  4. [1.20.5] Add back custom data ingredient (#3642)

    * [1.20.5] Add back custom data ingredient
    
    ---------
    
    Co-authored-by: modmuss50 <modmuss50@gmail.com>
    apple502j and modmuss50 authored Mar 12, 2024
    Copy the full SHA
    f628d01 View commit details
  5. Bump version

    modmuss50 committed Mar 12, 2024
    Copy the full SHA
    1592291 View commit details

Commits on Mar 14, 2024

  1. 24w11a

    modmuss50 committed Mar 14, 2024
    1
    Copy the full SHA
    9bd9228 View commit details
  2. Fix server play networking (#3648)

    modmuss50 authored Mar 14, 2024
    Copy the full SHA
    9342ba6 View commit details
  3. Bump version

    modmuss50 committed Mar 14, 2024
    Copy the full SHA
    dac6c6d View commit details

Commits on Mar 18, 2024

  1. Fix bugs in resource loader (#3654)

    * Fix builtin resource pack having wrong ID
    
    * Turn off experiments warning
    apple502j authored Mar 18, 2024
    Copy the full SHA
    4bc6fa7 View commit details
  2. Fix HopperBlockEntityMixin not applying. (#3653)

    * Fix HopperBlockEntityMixin not applying.
    
    * Fix direction
    modmuss50 authored Mar 18, 2024
    Copy the full SHA
    dca7430 View commit details
  3. Bump version

    modmuss50 committed Mar 18, 2024
    Copy the full SHA
    3a09d40 View commit details
Showing with 1,692 additions and 1,252 deletions.
  1. +1 −1 .github/workflows/build.yml
  2. +1 −1 .github/workflows/release.yml
  3. +10 −3 build.gradle
  4. +1 −1 ...c-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/WrappedInventory.java
  5. +2 −1 ...-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/item/FabricItemApiLookupTest.java
  6. +0 −12 ...egistries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/LandPathNodeMakerMixin.java
  7. +53 −0 ...tent-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PathContextMixin.java
  8. +1 −0 fabric-content-registries-v0/src/main/resources/fabric-content-registries-v0.mixins.json
  9. +1 −1 ...-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/api/attachment/v1/AttachmentTarget.java
  10. +2 −2 ...ttachment-api-v1/src/main/java/net/fabricmc/fabric/impl/attachment/AttachmentSerializingImpl.java
  11. +1 −1 ...ta-attachment-api-v1/src/test/java/net/fabricmc/fabric/test/attachment/CommonAttachmentTests.java
  12. +6 −6 ...n-api-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricAdvancementProvider.java
  13. +1 −1 ...pi-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricBlockLootTableProvider.java
  14. +1 −1 ...ion-api-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricCodecDataProvider.java
  15. +1 −1 ...i-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricDynamicRegistryProvider.java
  16. +25 −20 ...tion-api-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricLanguageProvider.java
  17. +1 −1 ...ration-api-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricRecipeProvider.java
  18. +1 −1 ...eneration-api-v1/src/main/java/net/fabricmc/fabric/api/datagen/v1/provider/FabricTagProvider.java
  19. +9 −9 ...ation-api-v1/src/main/java/net/fabricmc/fabric/impl/datagen/loot/FabricLootTableProviderImpl.java
  20. +4 −2 fabric-data-generation-api-v1/src/main/resources/fabric-data-generation-api-v1.accesswidener
  21. +20 −24 ...eration-api-v1/src/testmod/java/net/fabricmc/fabric/test/datagen/DataGeneratorTestEntrypoint.java
  22. +1 −1 fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/api/entity/event/v1/FabricElytraItem.java
  23. +2 −1 fabric-entity-events-v1/src/testmod/java/net/fabricmc/fabric/test/entity/event/EntityEventTests.java
  24. +3 −2 fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/TestFunctionsMixin.java
  25. +2 −2 ...v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ClientPlayerInteractionManagerMixin.java
  26. +3 −3 fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/HeldItemRendererMixin.java
  27. +5 −5 fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java
  28. +0 −107 fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItemSettings.java
  29. +0 −60 ...em-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/ModifyItemAttributeModifiersCallback.java
  30. +0 −21 fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java
  31. +8 −5 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/CustomDamageTest.java
  32. +0 −65 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/FabricItemSettingsTests.java
  33. +6 −0 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/ItemUpdateAnimationTest.java
  34. +0 −38 ...i-v1/src/testmod/java/net/fabricmc/fabric/test/item/ModifyItemAttributeModifiersCallbackTest.java
  35. +4 −6 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java
  36. +29 −21 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/BrewingStandGameTest.java
  37. +3 −2 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/FoodGameTest.java
  38. +2 −4 fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/RecipeGameTest.java
  39. +1 −1 fabric-item-api-v1/src/testmod/resources/data/fabric-item-api-v1-testmod/recipes/weird_pickaxe.json
  40. +0 −2 fabric-item-api-v1/src/testmod/resources/fabric.mod.json
  41. +4 −4 ...-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java
  42. +2 −2 ...client/java/net/fabricmc/fabric/api/client/networking/v1/ClientConfigurationConnectionEvents.java
  43. +2 −2 ...i-v1/src/client/java/net/fabricmc/fabric/api/client/networking/v1/ClientPlayConnectionEvents.java
  44. +2 −2 ...orking-api-v1/src/main/java/net/fabricmc/fabric/api/networking/v1/ServerPlayConnectionEvents.java
  45. +2 −4 ...ng-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerCommonNetworkHandlerMixin.java
  46. +8 −0 ...king-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerPlayNetworkHandlerMixin.java
  47. +103 −0 ...king-api-v1/src/testmod/java/net/fabricmc/fabric/test/networking/common/NetworkingCommonTest.java
  48. +2 −2 ...ng-api-v1/src/testmod/java/net/fabricmc/fabric/test/networking/play/NetworkingPlayPacketTest.java
  49. +2 −0 fabric-networking-api-v1/src/testmod/resources/fabric.mod.json
  50. +1 −1 .../src/testmodClient/java/net/fabricmc/fabric/test/networking/client/channeltest/ChannelScreen.java
  51. +37 −0 ...tmodClient/java/net/fabricmc/fabric/test/networking/client/common/NetworkingCommonClientTest.java
  52. +5 −6 ...va/net/fabricmc/fabric/mixin/object/builder/TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin.java
  53. +15 −12 ...ct-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest1.java
  54. +7 −6 ...ct-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest2.java
  55. +68 −20 ...e-api-v1/src/main/java/net/fabricmc/fabric/api/recipe/v1/ingredient/DefaultCustomIngredients.java
  56. +4 −2 ...-recipe-api-v1/src/main/java/net/fabricmc/fabric/impl/recipe/ingredient/CustomIngredientInit.java
  57. +151 −0 ...api-v1/src/main/java/net/fabricmc/fabric/impl/recipe/ingredient/builtin/ComponentsIngredient.java
  58. +24 −67 ...t/fabricmc/fabric/impl/recipe/ingredient/builtin/{NbtIngredient.java → CustomDataIngredient.java}
  59. +103 −43 ...cipe-api-v1/src/testmod/java/net/fabricmc/fabric/test/recipe/ingredient/IngredientMatchTests.java
  60. +5 −3 ...-api-v1/src/testmod/resources/data/fabric-recipe-api-v1-testmod/recipes/test_shapeless_match.json
  61. +4 −0 fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/FabricRegistryInit.java
  62. +2 −1 ...derer-api-v1/src/testmodClient/java/net/fabricmc/fabric/test/renderer/client/FrameBakedModel.java
  63. +1 −1 ...-rendering-v1/src/client/java/net/fabricmc/fabric/api/client/rendering/v1/WorldRenderContext.java
  64. +3 −2 ...c-rendering-v1/src/client/java/net/fabricmc/fabric/api/client/rendering/v1/WorldRenderEvents.java
  65. +1 −1 ...rc/testmod/resources/data/fabric-resource-conditions-api-v1-testmod/recipes/features_enabled.json
  66. +1 −1 ...testmod/resources/data/fabric-resource-conditions-api-v1-testmod/recipes/item_tags_populated.json
  67. +1 −1 ...s-api-v1/src/testmod/resources/data/fabric-resource-conditions-api-v1-testmod/recipes/loaded.json
  68. +1 −1 .../src/testmod/resources/data/fabric-resource-conditions-api-v1-testmod/recipes/tags_populated.json
  69. +1 −1 ...tmod/resources/data/fabric-resource-conditions-api-v1-testmod/recipes/tags_populated_default.json
  70. +1 −1 ...resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModNioResourcePack.java
  71. +51 −0 ...source-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/RegistryLoaderMixin.java
  72. +1 −0 fabric-resource-loader-v0/src/main/resources/fabric-resource-loader-v0.mixins.json
  73. +7 −0 ...es/resourcepacks/test2/data/fabric-resource-loader-v0-testmod/damage_type/porting_fabric_api.json
  74. +1 −1 fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/Networking.java
  75. +5 −8 ...een-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/item/BagInventory.java
  76. +3 −3 fabric-transfer-api-v1/README.md
  77. +1 −1 ...transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/fluid/CauldronFluidContent.java
  78. +4 −3 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/fluid/FluidStorage.java
  79. +18 −24 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/fluid/FluidVariant.java
  80. +6 −6 ...er-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/fluid/base/EmptyItemFluidStorage.java
  81. +4 −4 ...fer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/fluid/base/FullItemFluidStorage.java
  82. +10 −3 ...nsfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/fluid/base/SingleFluidStorage.java
  83. +22 −29 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/item/ItemVariant.java
  84. +10 −3 ...ransfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/item/base/SingleItemStorage.java
  85. +3 −3 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/package-info.java
  86. +10 −49 ...ic-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/storage/TransferVariant.java
  87. +11 −10 ...i-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/storage/base/SingleVariantItemStorage.java
  88. +53 −9 ...r-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/storage/base/SingleVariantStorage.java
  89. +57 −0 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/VariantCodecs.java
  90. +1 −1 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/EmptyBucketStorage.java
  91. +17 −60 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/FluidVariantImpl.java
  92. +11 −5 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/WaterPotionStorage.java
  93. +14 −2 ...ic-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/InventorySlotWrapper.java
  94. +17 −62 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/ItemVariantImpl.java
  95. +1 −1 ...sfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java
  96. +2 −1 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/FluidMixin.java
  97. +12 −12 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/HopperBlockEntityMixin.java
  98. +2 −1 fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/ItemMixin.java
  99. +9 −8 .../mixin/transfer/{LootableContainerBlockEntityMixin.java → LockableContainerBlockEntityMixin.java}
  100. +5 −2 fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json
  101. +11 −17 ...alizer.java → test/java/net/fabricmc/fabric/test/transfer/unittests/AbstractTransferApiTest.java}
  102. +12 −7 ...-api-v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/AttributeTests.java
  103. +12 −7 ...pi-v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/BaseStorageTests.java
  104. +37 −16 ...-api-v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/FluidItemTests.java
  105. +42 −14 ...sfer-api-v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/FluidTests.java
  106. +10 −5 ...i-v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/FluidVariantTests.java
  107. +52 −19 ...nsfer-api-v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/ItemTests.java
  108. +19 −6 ...testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/PlayerInventoryStorageTests.java
  109. +293 −0 ...i-v1/src/test/java/net/fabricmc/fabric/test/transfer/unittests/SingleVariantItemStorageTests.java
  110. +14 −8 .../src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/TransactionStateTests.java
  111. +9 −4 ...v1/src/{testmod → test}/java/net/fabricmc/fabric/test/transfer/unittests/UnderlyingViewTests.java
  112. +1 −1 ...c-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/{unittests → }/TestUtil.java
  113. +5 −1 ...sfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/gametests/VanillaStorageTests.java
  114. +1 −1 ...v1/src/testmod/java/net/fabricmc/fabric/test/transfer/gametests/WorldDependentAttributesTest.java
  115. +2 −2 ...nsfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/ingame/FluidChuteBlockEntity.java
  116. +0 −178 ...1/src/testmod/java/net/fabricmc/fabric/test/transfer/unittests/SingleVariantItemStorageTests.java
  117. +1 −2 fabric-transfer-api-v1/src/testmod/resources/fabric.mod.json
  118. +1 −4 ...ansitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener
  119. +28 −28 gradle.properties
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ jobs:
with:
fetch-depth: 0
- uses: gradle/wrapper-validation-action@v1
- run: ./gradlew check build publishToMavenLocal --stacktrace --warning-mode=fail -Porg.gradle.parallel.threads=4
- run: ./gradlew check build publishToMavenLocal --stacktrace --warning-mode=fail
- uses: Juuxel/publish-checkstyle-report@v1
if: ${{ failure() }}
with:
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ jobs:
context: changelog
workflow_id: release.yml
- uses: gradle/wrapper-validation-action@v1
- run: ./gradlew checkVersion build publish publishMods --stacktrace -Porg.gradle.parallel.threads=4
- run: ./gradlew checkVersion build publish publishMods --stacktrace
env:
MAVEN_URL: ${{ secrets.MAVEN_URL }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
13 changes: 10 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -22,6 +22,13 @@ def metaProjects = [
'fabric-api-catalog'
]

def debugArgs = [
"-enableassertions",
"-Dmixin.debug.verify=true",
//"-Dmixin.debug.strict=true",
"-Dmixin.debug.countInjections=true",
]

import net.fabricmc.loom.util.gradle.SourceSetHelper
import groovy.json.JsonSlurper
import org.apache.commons.codec.digest.DigestUtils
@@ -204,7 +211,7 @@ allprojects {
}

loom.runs.configureEach {
vmArg("-enableassertions")
vmArgs(debugArgs)
}

allprojects.each { p ->
@@ -518,8 +525,8 @@ tasks.register('runProductionAutoTestClient', JavaExec) {
jvmArgs(
"-Dfabric.addMods=${remapJar.archiveFile.get().asFile.absolutePath}${File.pathSeparator}${remapTestmodJar.archiveFile.get().asFile.absolutePath}",
"-Dfabric.autoTest",
"-enableassertions"
)
jvmArgs(debugArgs)
}
}

@@ -550,8 +557,8 @@ tasks.register('runProductionAutoTestServer', JavaExec) {
jvmArgs(
"-Dfabric.addMods=${remapJar.archiveFile.get().asFile.absolutePath}${File.pathSeparator}${remapTestmodJar.archiveFile.get().asFile.absolutePath}",
"-Dfabric.autoTest",
"-enableassertions"
)
jvmArgs(debugArgs)

args("nogui")
}
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ public ItemStack tryInsert(ItemStack input, boolean simulate) {
if (inv.isValid(i, input)) {
ItemStack stack = inv.getStack(i);

if (stack.isEmpty() || ItemStack.areItemsAndNbtEqual(stack, input)) {
if (stack.isEmpty() || ItemStack.areItemsAndComponentsEqual(stack, input)) {
int remainingSpace = Math.min(inv.getMaxCountPerStack(), stack.getItem().getMaxCount()) - stack.getCount();
int inserted = Math.min(remainingSpace, input.getCount());

Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@

import static net.fabricmc.fabric.test.lookup.FabricApiLookupTest.ensureException;

import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.item.ToolItem;
@@ -41,7 +42,7 @@ public static void onInitialize() {

// Diamonds and diamond blocks can be inspected and will also print their name.
INSPECTABLE.registerForItems((stack, ignored) -> () -> {
if (stack.hasCustomName()) {
if (stack.contains(DataComponentTypes.CUSTOM_NAME)) {
return stack.getName();
} else {
return Text.literal("Unnamed gem.");
Original file line number Diff line number Diff line change
@@ -44,16 +44,4 @@ private static void getCommonNodeType(BlockView world, BlockPos pos, CallbackInf
cir.setReturnValue(nodeType);
}
}

/**
* Overrides the node type for the specified position, if the position is found as neighbor block in a path.
*/
@Inject(method = "getNodeTypeFromNeighbors", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/entity/ai/pathing/LandPathNodeMaker;getCommonNodeType(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/entity/ai/pathing/PathNodeType;"), cancellable = true)
private static void getNodeTypeFromNeighbors(BlockView world, BlockPos.Mutable pos, PathNodeType nodeType, CallbackInfoReturnable<PathNodeType> cir) {
PathNodeType neighborNodeType = LandPathNodeTypesRegistry.getPathNodeType(world.getBlockState(pos), world, pos, true);

if (neighborNodeType != null) {
cir.setReturnValue(neighborNodeType);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.fabricmc.fabric.mixin.content.registry;

import com.llamalad7.mixinextras.sugar.Local;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import net.minecraft.block.BlockState;
import net.minecraft.entity.ai.pathing.PathContext;
import net.minecraft.entity.ai.pathing.PathNodeType;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.CollisionView;

import net.fabricmc.fabric.api.registry.LandPathNodeTypesRegistry;

@Mixin(PathContext.class)
public abstract class PathContextMixin {
@Shadow
public abstract BlockState getBlockState(BlockPos blockPos);

@Shadow
public abstract CollisionView getWorld();

/**
* Overrides the node type for the specified position, if the position is found as neighbor block in a path.
*/
@Inject(method = "getNodeType", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/util/math/BlockPos$Mutable;set(III)Lnet/minecraft/util/math/BlockPos$Mutable;"), cancellable = true)
private void onGetNodeType(int x, int y, int z, CallbackInfoReturnable<PathNodeType> cir, @Local BlockPos pos) {
final PathNodeType neighborNodeType = LandPathNodeTypesRegistry.getPathNodeType(getBlockState(pos), getWorld(), pos, true);

if (neighborNodeType != null) {
cir.setReturnValue(neighborNodeType);
}
}
}
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
"compatibilityLevel": "JAVA_17",
"mixins": [
"AxeItemAccessor",
"PathContextMixin",
"FarmerWorkTaskAccessor",
"GiveGiftsToHeroTaskAccessor",
"HoeItemAccessor",
Original file line number Diff line number Diff line change
@@ -51,7 +51,7 @@
* <p>
* Note about {@link BlockEntity} targets: by default, many block entities use their NBT to synchronize with the client.
* That would mean persistent attachments are automatically synced with the client for those block entities. As this is
* undesirable behavior, the API completely removes attachments from the result of {@link BlockEntity#toInitialChunkDataNbt()},
* undesirable behavior, the API completely removes attachments from the result of {@link BlockEntity#toInitialChunkDataNbt},
* which takes care of all vanilla types. However, modded block entities may be coded differently, so be wary of this
* when attaching data to modded block entities.
* </p>
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@ public static void serializeAttachmentData(NbtCompound nbt, RegistryWrapper.Wrap
Codec<Object> codec = (Codec<Object>) type.persistenceCodec();

if (codec != null) {
RegistryOps<NbtElement> registryOps = wrapperLookup.method_57093(NbtOps.INSTANCE);
RegistryOps<NbtElement> registryOps = wrapperLookup.getOps(NbtOps.INSTANCE);
codec.encodeStart(registryOps, entry.getValue())
.get()
.ifRight(partial -> {
@@ -81,7 +81,7 @@ public static IdentityHashMap<AttachmentType<?>, Object> deserializeAttachmentDa
Codec<?> codec = type.persistenceCodec();

if (codec != null) {
RegistryOps<NbtElement> registryOps = wrapperLookup.method_57093(NbtOps.INSTANCE);
RegistryOps<NbtElement> registryOps = wrapperLookup.getOps(NbtOps.INSTANCE);
codec.parse(registryOps, compound.get(key))
.get()
.ifRight(partial -> {
Original file line number Diff line number Diff line change
@@ -253,7 +253,7 @@ void testWorldPersistentState() {

private static DynamicRegistryManager mockDRM() {
DynamicRegistryManager drm = mock(DynamicRegistryManager.class);
when(drm.method_57093(any())).thenReturn((RegistryOps<Object>) (Object) RegistryOps.of(NbtOps.INSTANCE, drm));
when(drm.getOps(any())).thenReturn((RegistryOps<Object>) (Object) RegistryOps.of(NbtOps.INSTANCE, drm));
return drm;
}
}
Original file line number Diff line number Diff line change
@@ -65,7 +65,7 @@ protected FabricAdvancementProvider(FabricDataOutput output, CompletableFuture<R
*
* <p>Use {@link Advancement.Builder#build(Consumer, String)} to help build advancements.
*/
public abstract void generateAdvancement(Consumer<AdvancementEntry> consumer);
public abstract void generateAdvancement(RegistryWrapper.WrapperLookup registryLookup, Consumer<AdvancementEntry> consumer);

/**
* Return a new exporter that applies the specified conditions to any advancement it receives.
@@ -80,13 +80,13 @@ protected Consumer<AdvancementEntry> withConditions(Consumer<AdvancementEntry> e

@Override
public CompletableFuture<?> run(DataWriter writer) {
final Set<Identifier> identifiers = Sets.newHashSet();
final Set<AdvancementEntry> advancements = Sets.newHashSet();
return this.registryLookup.thenCompose(lookup -> {
final Set<Identifier> identifiers = Sets.newHashSet();
final Set<AdvancementEntry> advancements = Sets.newHashSet();

generateAdvancement(advancements::add);
generateAdvancement(lookup, advancements::add);

return this.registryLookup.thenCompose(lookup -> {
RegistryOps<JsonElement> ops = lookup.method_57093(JsonOps.INSTANCE);
RegistryOps<JsonElement> ops = lookup.getOps(JsonOps.INSTANCE);
final List<CompletableFuture<?>> futures = new ArrayList<>();

for (AdvancementEntry advancement : advancements) {
Original file line number Diff line number Diff line change
@@ -72,7 +72,7 @@ public void excludeFromStrictValidation(Block block) {
}

@Override
public void accept(BiConsumer<Identifier, LootTable.Builder> biConsumer) {
public void accept(RegistryWrapper.WrapperLookup registryLookup, BiConsumer<Identifier, LootTable.Builder> biConsumer) {
generate();

for (Map.Entry<Identifier, LootTable.Builder> entry : lootTables.entrySet()) {
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ protected FabricCodecDataProvider(FabricDataOutput dataOutput, CompletableFuture
public CompletableFuture<?> run(DataWriter writer) {
return this.registriesFuture.thenCompose(lookup -> {
Map<Identifier, JsonElement> entries = new HashMap<>();
RegistryOps<JsonElement> ops = lookup.method_57093(JsonOps.INSTANCE);
RegistryOps<JsonElement> ops = lookup.getOps(JsonOps.INSTANCE);

BiConsumer<Identifier, T> provider = (id, value) -> {
JsonElement json = this.convert(id, value, ops);
Original file line number Diff line number Diff line change
@@ -208,7 +208,7 @@ public CompletableFuture<?> run(DataWriter writer) {
return entries;
})
.thenCompose(entries -> {
final RegistryOps<JsonElement> dynamicOps = registries.method_57093(JsonOps.INSTANCE);
final RegistryOps<JsonElement> dynamicOps = registries.getOps(JsonOps.INSTANCE);
ArrayList<CompletableFuture<?>> futures = new ArrayList<>();

for (RegistryEntries<?> registryEntries : entries.queuedEntries.values()) {
Original file line number Diff line number Diff line change
@@ -41,6 +41,7 @@
import net.minecraft.item.ItemGroup;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.stat.StatType;
import net.minecraft.text.TextContent;
@@ -51,53 +52,57 @@
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;

/**
* Extend this class and implement {@link FabricLanguageProvider#generateTranslations(TranslationBuilder)}.
* Make sure to use {@link FabricLanguageProvider#FabricLanguageProvider(FabricDataOutput, String)} FabricLanguageProvider} to declare what language code is being generated if it isn't {@code en_us}.
* Extend this class and implement {@link FabricLanguageProvider#generateTranslations}.
* Make sure to use {@link FabricLanguageProvider#FabricLanguageProvider(FabricDataOutput, String, CompletableFuture) FabricLanguageProvider} to declare what language code is being generated if it isn't {@code en_us}.
*
* <p>Register an instance of the class with {@link FabricDataGenerator.Pack#addProvider} in a {@link net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint}.
*/
public abstract class FabricLanguageProvider implements DataProvider {
protected final FabricDataOutput dataOutput;
private final String languageCode;
private final CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup;

protected FabricLanguageProvider(FabricDataOutput dataOutput) {
this(dataOutput, "en_us");
protected FabricLanguageProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
this(dataOutput, "en_us", registryLookup);
}

protected FabricLanguageProvider(FabricDataOutput dataOutput, String languageCode) {
protected FabricLanguageProvider(FabricDataOutput dataOutput, String languageCode, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
this.dataOutput = dataOutput;
this.languageCode = languageCode;
this.registryLookup = registryLookup;
}

/**
* Implement this method to register languages.
*
* <p>Call {@link TranslationBuilder#add(String, String)} to add a translation.
*/
public abstract void generateTranslations(TranslationBuilder translationBuilder);
public abstract void generateTranslations(RegistryWrapper.WrapperLookup registryLookup, TranslationBuilder translationBuilder);

@Override
public CompletableFuture<?> run(DataWriter writer) {
TreeMap<String, String> translationEntries = new TreeMap<>();

generateTranslations((String key, String value) -> {
Objects.requireNonNull(key);
Objects.requireNonNull(value);
return this.registryLookup.thenCompose(lookup -> {
generateTranslations(lookup, (String key, String value) -> {
Objects.requireNonNull(key);
Objects.requireNonNull(value);

if (translationEntries.containsKey(key)) {
throw new RuntimeException("Existing translation key found - " + key + " - Duplicate will be ignored.");
}
if (translationEntries.containsKey(key)) {
throw new RuntimeException("Existing translation key found - " + key + " - Duplicate will be ignored.");
}

translationEntries.put(key, value);
});
translationEntries.put(key, value);
});

JsonObject langEntryJson = new JsonObject();
JsonObject langEntryJson = new JsonObject();

for (Map.Entry<String, String> entry : translationEntries.entrySet()) {
langEntryJson.addProperty(entry.getKey(), entry.getValue());
}
for (Map.Entry<String, String> entry : translationEntries.entrySet()) {
langEntryJson.addProperty(entry.getKey(), entry.getValue());
}

return DataProvider.writeToPath(writer, langEntryJson, getLangFilePath(this.languageCode));
return DataProvider.writeToPath(writer, langEntryJson, getLangFilePath(this.languageCode));
});
}

private Path getLangFilePath(String code) {
@@ -112,7 +117,7 @@ public String getName() {
}

/**
* A consumer used by {@link FabricLanguageProvider#generateTranslations(TranslationBuilder)}.
* A consumer used by {@link FabricLanguageProvider#generateTranslations}.
*/
@ApiStatus.NonExtendable
@FunctionalInterface
Original file line number Diff line number Diff line change
@@ -99,7 +99,7 @@ public void accept(Identifier recipeId, Recipe<?> recipe, @Nullable AdvancementE
throw new IllegalStateException("Duplicate recipe " + identifier);
}

RegistryOps<JsonElement> registryOps = wrapperLookup.method_57093(JsonOps.INSTANCE);
RegistryOps<JsonElement> registryOps = wrapperLookup.getOps(JsonOps.INSTANCE);
JsonObject recipeJson = Util.getResult(Recipe.CODEC.encodeStart(registryOps, recipe), IllegalStateException::new).getAsJsonObject();
ConditionJsonProvider[] conditions = FabricDataGenHelper.consumeConditions(recipe);
ConditionJsonProvider.write(recipeJson, conditions);
Original file line number Diff line number Diff line change
@@ -84,7 +84,7 @@ public FabricTagProvider(FabricDataOutput output, RegistryKey<? extends Registry
/**
* Implement this method and then use {@link FabricTagProvider#getOrCreateTagBuilder} to get and register new tag builders.
*/
protected abstract void configure(RegistryWrapper.WrapperLookup arg);
protected abstract void configure(RegistryWrapper.WrapperLookup wrapperLookup);

/**
* Override to enable adding objects to the tag builder directly.
Original file line number Diff line number Diff line change
@@ -58,17 +58,17 @@ public static CompletableFuture<?> run(
HashMap<Identifier, LootTable> builders = Maps.newHashMap();
HashMap<Identifier, ConditionJsonProvider[]> conditionMap = new HashMap<>();

provider.accept((identifier, builder) -> {
ConditionJsonProvider[] conditions = FabricDataGenHelper.consumeConditions(builder);
conditionMap.put(identifier, conditions);
return registryLookup.thenCompose(lookup -> {
provider.accept(lookup, (identifier, builder) -> {
ConditionJsonProvider[] conditions = FabricDataGenHelper.consumeConditions(builder);
conditionMap.put(identifier, conditions);

if (builders.put(identifier, builder.type(lootContextType).build()) != null) {
throw new IllegalStateException("Duplicate loot table " + identifier);
}
});
if (builders.put(identifier, builder.type(lootContextType).build()) != null) {
throw new IllegalStateException("Duplicate loot table " + identifier);
}
});

return registryLookup.thenCompose(lookup -> {
RegistryOps<JsonElement> ops = lookup.method_57093(JsonOps.INSTANCE);
RegistryOps<JsonElement> ops = lookup.getOps(JsonOps.INSTANCE);
final List<CompletableFuture<?>> futures = new ArrayList<>();

for (Map.Entry<Identifier, LootTable> entry : builders.entrySet()) {
Loading