Skip to content

Commit

Permalink
Fix #36
Browse files Browse the repository at this point in the history
  • Loading branch information
IThundxr committed Apr 20, 2024
1 parent 5656348 commit b2690cb
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package dev.ithundxr.createnumismatics.forge.mixin.self;

import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import dev.ithundxr.createnumismatics.content.vendor.VendorBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.WorldlyContainer;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.*;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.SidedInvWrapper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;

@Mixin(VendorBlockEntity.class)
public abstract class VendorBlockEntityCapabilities extends SmartBlockEntity implements ICapabilityProvider {
public VendorBlockEntityCapabilities(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}

// This is actually just down + all the 5 other sides
@Unique private static final Direction[] numismatics$DIRECTIONS = {Direction.DOWN, Direction.NORTH};
@Unique LazyOptional<? extends IItemHandler>[] numismatics$handlers = SidedInvWrapper.create((WorldlyContainer) this, numismatics$DIRECTIONS);

@Override
public <T> @NotNull LazyOptional<T> getCapability(@NotNull Capability<T> capability, @Nullable Direction facing) {
if (capability == ForgeCapabilities.ITEM_HANDLER && facing != null && !remove) {
// If down return the down handler otherwise return the one for all other sides
return facing == Direction.DOWN ? numismatics$handlers[0].cast() : numismatics$handlers[1].cast();
}
return super.getCapability(capability, facing);
}

@Override
public void reviveCaps() {
super.reviveCaps();
numismatics$handlers = SidedInvWrapper.create((WorldlyContainer) this, numismatics$DIRECTIONS);
}

@Override
public void invalidateCaps() {
super.invalidateCaps();

for (LazyOptional<? extends IItemHandler> createNumismatics$handler : numismatics$handlers) {
createNumismatics$handler.invalidate();
}
}
}
3 changes: 2 additions & 1 deletion forge/src/main/resources/numismatics.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"client.MixinPonderTooltipHandler"
],
"mixins": [
"ServerGamePacketListenerImplMixin"
"ServerGamePacketListenerImplMixin",
"self.VendorBlockEntityCapabilities"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit b2690cb

Please sign in to comment.