Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / ItemScaffolding.java
package net.minecraft.server;

import javax.annotation.Nullable;

public class ItemScaffolding extends ItemBlock {

    public ItemScaffolding(Block block, Item.Info item_info) {
        super(block, item_info);
    }

    @Nullable
    @Override
    public BlockActionContext b(BlockActionContext blockactioncontext) {
        BlockPosition blockposition = blockactioncontext.getClickPosition();
        World world = blockactioncontext.getWorld();
        IBlockData iblockdata = world.getType(blockposition);
        Block block = this.getBlock();

        if (iblockdata.getBlock() != block) {
            return BlockScaffolding.a((IBlockAccess) world, blockposition) == 7 ? null : blockactioncontext;
        } else {
            EnumDirection enumdirection;

            if (blockactioncontext.isSneaking()) {
                enumdirection = blockactioncontext.k() ? blockactioncontext.getClickedFace().opposite() : blockactioncontext.getClickedFace();
            } else {
                enumdirection = blockactioncontext.getClickedFace() == EnumDirection.UP ? blockactioncontext.f() : EnumDirection.UP;
            }

            int i = 0;
            BlockPosition.MutableBlockPosition blockposition_mutableblockposition = (new BlockPosition.MutableBlockPosition(blockposition)).c(enumdirection);

            while (i < 7) {
                if (!world.isClientSide && !World.isValidLocation(blockposition_mutableblockposition)) {
                    EntityHuman entityhuman = blockactioncontext.getEntity();
                    int j = world.getBuildHeight();

                    if (entityhuman instanceof EntityPlayer && blockposition_mutableblockposition.getY() >= j) {
                        PacketPlayOutChat packetplayoutchat = new PacketPlayOutChat((new ChatMessage("build.tooHigh", new Object[]{j})).a(EnumChatFormat.RED), ChatMessageType.GAME_INFO);

                        ((EntityPlayer) entityhuman).playerConnection.sendPacket(packetplayoutchat);
                    }
                    break;
                }

                iblockdata = world.getType(blockposition_mutableblockposition);
                if (iblockdata.getBlock() != this.getBlock()) {
                    if (iblockdata.a(blockactioncontext)) {
                        return BlockActionContext.a(blockactioncontext, blockposition_mutableblockposition, enumdirection);
                    }
                    break;
                }

                blockposition_mutableblockposition.c(enumdirection);
                if (enumdirection.m().c()) {
                    ++i;
                }
            }

            return null;
        }
    }

    @Override
    protected boolean T_() {
        return false;
    }
}