mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-25 06:17:59 +01:00
41 lines
1.3 KiB
Java
41 lines
1.3 KiB
Java
package com.minelittlepony.unicopia.item;
|
|
|
|
import java.util.function.Predicate;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.BlockState;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.player.PlayerEntity;
|
|
import net.minecraft.item.BlockItem;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemPlacementContext;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.world.World;
|
|
|
|
public class PredicatedBlockItem extends BlockItem {
|
|
|
|
private final Predicate<Entity> abilityTest;
|
|
|
|
public PredicatedBlockItem(Block block, Item.Settings settings, Predicate<Entity> abilityTest) {
|
|
super(block, settings);
|
|
|
|
this.abilityTest = abilityTest;
|
|
}
|
|
|
|
@Override
|
|
protected boolean canPlace(ItemPlacementContext context, BlockState state) {
|
|
if (context.getPlayer() != null && !(context.getPlayer().abilities.creativeMode || abilityTest.test(context.getPlayer()))) {
|
|
return false;
|
|
}
|
|
return super.canPlace(context, state);
|
|
}
|
|
|
|
@Override
|
|
public boolean canMine(BlockState state, World world, BlockPos pos, PlayerEntity player) {
|
|
if (!(player.abilities.creativeMode || abilityTest.test(player))) {
|
|
return false;
|
|
}
|
|
|
|
return super.canMine(state, world, pos, player);
|
|
}
|
|
}
|