38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.inventory;
 | |
| 
 | |
| import java.util.Optional;
 | |
| import java.util.function.BiConsumer;
 | |
| import java.util.function.BiFunction;
 | |
| import net.minecraft.core.BlockPos;
 | |
| import net.minecraft.world.level.Level;
 | |
| 
 | |
| public interface ContainerLevelAccess {
 | |
| 	ContainerLevelAccess NULL = new ContainerLevelAccess() {
 | |
| 		@Override
 | |
| 		public <T> Optional<T> evaluate(BiFunction<Level, BlockPos, T> levelPosConsumer) {
 | |
| 			return Optional.empty();
 | |
| 		}
 | |
| 	};
 | |
| 
 | |
| 	static ContainerLevelAccess create(Level level, BlockPos pos) {
 | |
| 		return new ContainerLevelAccess() {
 | |
| 			@Override
 | |
| 			public <T> Optional<T> evaluate(BiFunction<Level, BlockPos, T> levelPosConsumer) {
 | |
| 				return Optional.of(levelPosConsumer.apply(level, pos));
 | |
| 			}
 | |
| 		};
 | |
| 	}
 | |
| 
 | |
| 	<T> Optional<T> evaluate(BiFunction<Level, BlockPos, T> levelPosConsumer);
 | |
| 
 | |
| 	default <T> T evaluate(BiFunction<Level, BlockPos, T> levelPosConsumer, T defaultValue) {
 | |
| 		return (T)this.evaluate(levelPosConsumer).orElse(defaultValue);
 | |
| 	}
 | |
| 
 | |
| 	default void execute(BiConsumer<Level, BlockPos> levelPosConsumer) {
 | |
| 		this.evaluate((level, blockPos) -> {
 | |
| 			levelPosConsumer.accept(level, blockPos);
 | |
| 			return Optional.empty();
 | |
| 		});
 | |
| 	}
 | |
| }
 |