Fix crash when something tries to access itemhandler of pattern storage

This commit is contained in:
DBotThePony 2021-08-17 14:54:39 +07:00
parent 8dd27d4368
commit b8bfddfe97
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -14,12 +14,10 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import ru.dbotthepony.mc.otm.capability.IMatterGridCell; import net.minecraftforge.items.IItemHandler;
import ru.dbotthepony.mc.otm.capability.*;
import ru.dbotthepony.mc.otm.matter.MatterGrid; import ru.dbotthepony.mc.otm.matter.MatterGrid;
import ru.dbotthepony.mc.otm.Registry; import ru.dbotthepony.mc.otm.Registry;
import ru.dbotthepony.mc.otm.capability.IMatterHandler;
import ru.dbotthepony.mc.otm.capability.IPatternStorage;
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
import ru.dbotthepony.mc.otm.container.MatteryContainer; import ru.dbotthepony.mc.otm.container.MatteryContainer;
import ru.dbotthepony.mc.otm.menu.PatternStorageMenu; import ru.dbotthepony.mc.otm.menu.PatternStorageMenu;
@ -41,6 +39,10 @@ public class BlockEntityPatternStorage extends BlockEntityMattery implements IMa
} }
}; };
private final LazyOptional<IItemHandler> resolver_item = LazyOptional.of(() -> patterns.handler(
((slot, stack) -> stack.getCapability(MatteryCapability.PATTERN).isPresent())
));
private void setChangedPatterns() { private void setChangedPatterns() {
setChanged(); setChanged();
@ -118,8 +120,11 @@ public class BlockEntityPatternStorage extends BlockEntityMattery implements IMa
@Override @Override
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) { public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
if (valid) { if (valid) {
if (cap == MatteryCapability.PATTERN || cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || cap == MatteryCapability.MATTER_CELL) if (cap == MatteryCapability.PATTERN || cap == MatteryCapability.MATTER_CELL)
return resolver.cast(); return resolver.cast();
if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
return resolver_item.cast();
} }
return super.getCapability(cap, side); return super.getCapability(cap, side);