From 1d6553b57aabaa365cb0c18d8b759bb83e205998 Mon Sep 17 00:00:00 2001 From: Irvin Choi Date: Tue, 4 Feb 2025 12:58:22 -0700 Subject: [PATCH] Revert "Dont provide ITEM_HANDLER for Inventory instances (#88)" This reverts commit b00938ec12cc6caa62752e29748f6ce0163a996f. --- .../api/transfer/v1/item/ItemStorage.java | 13 +---- .../compat/TransferApiForgeCompat.java | 48 +++++++------------ gradle.properties | 2 +- 3 files changed, 18 insertions(+), 45 deletions(-) diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/item/ItemStorage.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/item/ItemStorage.java index dc6c326f3..2f80ef77e 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/item/ItemStorage.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/item/ItemStorage.java @@ -96,13 +96,7 @@ private ItemStorage() { static { // Composter support. - ItemStorage.SIDED.registerForBlocks((world, pos, state, blockEntity, direction) -> { - // FFAPI: do not provide composter compat if queried from our capability provider - if (TransferApiForgeCompat.COMPUTING_CAPABILITY_LOCK.get()) { - return null; - } - return ComposterWrapper.get(world, pos, direction); - }, Blocks.COMPOSTER); + ItemStorage.SIDED.registerForBlocks((world, pos, state, blockEntity, direction) -> ComposterWrapper.get(world, pos, direction), Blocks.COMPOSTER); // Support for SidedStorageBlockEntity. ItemStorage.SIDED.registerFallback((world, pos, state, blockEntity, direction) -> { @@ -115,11 +109,6 @@ private ItemStorage() { // Register Inventory fallback. ItemStorage.SIDED.registerFallback((world, pos, state, blockEntity, direction) -> { - // FFAPI: do not provide Inventory instace compat if queried from our capability provider - if (TransferApiForgeCompat.COMPUTING_CAPABILITY_LOCK.get()) { - return null; - } - Inventory inventoryToWrap = null; if (state.getBlock() instanceof InventoryProvider provider) { diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/compat/TransferApiForgeCompat.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/compat/TransferApiForgeCompat.java index f84a5fb16..602ceb542 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/compat/TransferApiForgeCompat.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/compat/TransferApiForgeCompat.java @@ -16,21 +16,9 @@ package net.fabricmc.fabric.impl.transfer.compat; -import net.fabricmc.fabric.api.lookup.v1.block.BlockApiLookup; -import net.fabricmc.fabric.api.transfer.v1.fluid.FluidStorage; -import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; -import net.fabricmc.fabric.api.transfer.v1.item.ItemStorage; -import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; -import net.fabricmc.fabric.api.transfer.v1.storage.SlottedStorage; -import net.fabricmc.fabric.api.transfer.v1.storage.Storage; -import net.fabricmc.fabric.impl.transfer.TransferApiImpl; -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.World; +import java.util.HashMap; +import java.util.Map; + import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; @@ -40,8 +28,19 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.HashMap; -import java.util.Map; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Direction; + +import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidStorage; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; +import net.fabricmc.fabric.api.transfer.v1.item.ItemStorage; +import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; +import net.fabricmc.fabric.api.transfer.v1.storage.SlottedStorage; +import net.fabricmc.fabric.api.transfer.v1.storage.Storage; +import net.fabricmc.fabric.impl.transfer.TransferApiImpl; public class TransferApiForgeCompat { public static void init() { @@ -50,21 +49,6 @@ public static void init() { } private static final Map, LazyOptional> CAPS = new HashMap<>(); - - /** - * This lock has two purposes: avoiding recursive calls between {@link ICapabilityProvider#getCapability(Capability) getCapability} - * and {@link BlockApiLookup#find(World, BlockPos, BlockState, BlockEntity, Object) find} as well as influencing the - * behavior of {@code find} if it was called from {@code getCapability}. - *

- * The recursive calls occur because our capabilities providers need to access the block lookup API to check if they - * should provide a capability (for Fabric from Forge compat), but the block lookup API needs to query the - * capabilities (for Forge from Fabric compat). This lock is set immediately before one API calls the other, which - * then disables the call from the other API to the first, breaking the recursion. - *

- * Additionally, this lock is used to conditionally disable some of the block lookup API's fallback providers, if - * they got invoked by a capability provider. This is needed because Fabric has fallback providers for many Vanilla - * things, but Forge already implements their own compat for those. - */ public static final ThreadLocal COMPUTING_CAPABILITY_LOCK = ThreadLocal.withInitial(() -> false); private static void onAttachBlockEntityCapabilities(AttachCapabilitiesEvent event) { diff --git a/gradle.properties b/gradle.properties index 9645597fc..24d75ff8f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx3500M org.gradle.parallel=true fabric.loom.multiProjectOptimisation=true -version=0.92.2 +version=0.92.3 minecraft_version=1.20.1 yarn_version=+build.1 loader_version=0.14.21