72 lines
3.6 KiB
Java
72 lines
3.6 KiB
Java
package net.minecraft.world.item;
|
|
|
|
import net.minecraft.world.level.block.state.AbstractStateHolder;
|
|
import com.google.common.collect.Maps;
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.google.common.collect.Sets;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraft.world.entity.player.Player;
|
|
import net.minecraft.world.level.block.state.properties.Property;
|
|
import net.minecraft.world.level.block.CampfireBlock;
|
|
import net.minecraft.sounds.SoundSource;
|
|
import net.minecraft.sounds.SoundEvents;
|
|
import net.minecraft.core.Direction;
|
|
import net.minecraft.world.InteractionResult;
|
|
import net.minecraft.world.level.block.Blocks;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import java.util.Map;
|
|
import net.minecraft.world.level.block.Block;
|
|
import java.util.Set;
|
|
|
|
public class ShovelItem extends DiggerItem {
|
|
private static final Set<Block> DIGGABLES;
|
|
protected static final Map<Block, BlockState> FLATTENABLES;
|
|
|
|
public ShovelItem(final Tier bfp, final float float2, final float float3, final Properties a) {
|
|
super(float2, float3, bfp, ShovelItem.DIGGABLES, a);
|
|
}
|
|
|
|
@Override
|
|
public boolean canDestroySpecial(final BlockState byg) {
|
|
final Block bpe3 = byg.getBlock();
|
|
return bpe3 == Blocks.SNOW || bpe3 == Blocks.SNOW_BLOCK;
|
|
}
|
|
|
|
@Override
|
|
public InteractionResult useOn(final UseOnContext bfw) {
|
|
final Level bjt3 = bfw.getLevel();
|
|
final BlockPos fk4 = bfw.getClickedPos();
|
|
final BlockState byg5 = bjt3.getBlockState(fk4);
|
|
if (bfw.getClickedFace() == Direction.DOWN) {
|
|
return InteractionResult.PASS;
|
|
}
|
|
final Player ayg2 = bfw.getPlayer();
|
|
final BlockState byg6 = ShovelItem.FLATTENABLES.get(byg5.getBlock());
|
|
BlockState byg7 = null;
|
|
if (byg6 != null && bjt3.getBlockState(fk4.above()).isAir()) {
|
|
bjt3.playSound(ayg2, fk4, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0f, 1.0f);
|
|
byg7 = byg6;
|
|
}
|
|
else if (byg5.getBlock() instanceof CampfireBlock && byg5.<Boolean>getValue((Property<Boolean>)CampfireBlock.LIT)) {
|
|
bjt3.levelEvent(null, 1009, fk4, 0);
|
|
byg7 = ((AbstractStateHolder<O, BlockState>)byg5).<Comparable, Boolean>setValue((Property<Comparable>)CampfireBlock.LIT, false);
|
|
}
|
|
if (byg7 != null) {
|
|
if (!bjt3.isClientSide) {
|
|
bjt3.setBlock(fk4, byg7, 11);
|
|
if (ayg2 != null) {
|
|
bfw.getItemInHand().<Player>hurtAndBreak(1, ayg2, ayg -> ayg.broadcastBreakEvent(bfw.getHand()));
|
|
}
|
|
}
|
|
return InteractionResult.SUCCESS;
|
|
}
|
|
return InteractionResult.PASS;
|
|
}
|
|
|
|
static {
|
|
DIGGABLES = Sets.<Block>newHashSet(Blocks.CLAY, Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL, Blocks.FARMLAND, Blocks.GRASS_BLOCK, Blocks.GRAVEL, Blocks.MYCELIUM, Blocks.SAND, Blocks.RED_SAND, Blocks.SNOW_BLOCK, Blocks.SNOW, Blocks.SOUL_SAND, Blocks.GRASS_PATH, Blocks.WHITE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE_POWDER, Blocks.MAGENTA_CONCRETE_POWDER, Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE_POWDER, Blocks.LIME_CONCRETE_POWDER, Blocks.PINK_CONCRETE_POWDER, Blocks.GRAY_CONCRETE_POWDER, Blocks.LIGHT_GRAY_CONCRETE_POWDER, Blocks.CYAN_CONCRETE_POWDER, Blocks.PURPLE_CONCRETE_POWDER, Blocks.BLUE_CONCRETE_POWDER, Blocks.BROWN_CONCRETE_POWDER, Blocks.GREEN_CONCRETE_POWDER, Blocks.RED_CONCRETE_POWDER, Blocks.BLACK_CONCRETE_POWDER);
|
|
FLATTENABLES = Maps.newHashMap(ImmutableMap.<Block, BlockState>of(Blocks.GRASS_BLOCK, Blocks.GRASS_PATH.defaultBlockState()));
|
|
}
|
|
}
|