Skip to content

Commit

Permalink
Merge branch 'refs/heads/1.20' into 1.19
Browse files Browse the repository at this point in the history
  • Loading branch information
62832 committed Jun 11, 2024
2 parents 1ee7f9b + a2d2f61 commit a31914a
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -1,51 +1,51 @@
package gripe._90.aecapfix.mixin.ae2;

import appeng.api.inventories.InternalInventory;
import appeng.blockentity.AEBaseBlockEntity;
import appeng.blockentity.AEBaseInvBlockEntity;
import java.util.HashSet;
import java.util.Set;
import gripe._90.aecapfix.misc.DirectionalCapabilityCache;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.IItemHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Slice;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(value = AEBaseInvBlockEntity.class, remap = false)
public abstract class AEBaseInvBlockEntityMixin extends BlockEntity {
public abstract class AEBaseInvBlockEntityMixin extends AEBaseBlockEntity {
@Shadow
public abstract InternalInventory getInternalInventory();

@Shadow
protected abstract InternalInventory getExposedInventoryForSide(Direction side);

@Unique
private final Set<LazyOptional<IItemHandler>> aecapfix$itemHandlers = new HashSet<>();
private final DirectionalCapabilityCache<IItemHandler> aecapfix$itemHandlers = new DirectionalCapabilityCache<>();

public AEBaseInvBlockEntityMixin(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}

@Inject(
method = "getCapability",
at = @At("RETURN"),
slice =
@Slice(
to =
@At(
value = "INVOKE",
target =
"Lappeng/blockentity/AEBaseBlockEntity;getCapability(Lnet/minecraftforge/common/capabilities/Capability;Lnet/minecraft/core/Direction;)Lnet/minecraftforge/common/util/LazyOptional;")))
private <T> void storeCapability(
Capability<T> capability, Direction facing, CallbackInfoReturnable<LazyOptional<T>> cir) {
aecapfix$itemHandlers.add(cir.getReturnValue().cast());
@NotNull
@Override
public <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side) {
var itemHandler = LazyOptional.of(
side == null
? getInternalInventory()::toItemHandler
: () -> getExposedInventoryForSide(side).toItemHandler());
return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, aecapfix$itemHandlers.getOrCache(side, itemHandler));
}

@Override
public void invalidateCaps() {
super.invalidateCaps();
aecapfix$itemHandlers.forEach(LazyOptional::invalidate);
aecapfix$itemHandlers.clear();
aecapfix$itemHandlers.invalidate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,15 @@ private void updateCapability(CallbackInfo ci) {
}
}

// spotless:off
@Inject(
method = "getCapability",
at =
@At(
value = "INVOKE",
target = "Lappeng/blockentity/storage/ChestBlockEntity;updateHandler()V",
shift = At.Shift.AFTER),
at = @At(
value = "INVOKE",
target = "Lappeng/blockentity/storage/ChestBlockEntity;updateHandler()V",
shift = At.Shift.AFTER),
cancellable = true)
// spotless:on
private <T> void setCapability(Capability<T> cap, Direction side, CallbackInfoReturnable<LazyOptional<T>> cir) {
if (cap == ForgeCapabilities.FLUID_HANDLER && fluidHandler != null && side != getForward()) {
cir.setReturnValue(aecapfix$fluidHandlerHolder.cast());
Expand Down

0 comments on commit a31914a

Please sign in to comment.