Копание 3х3

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.11.2
1,470
19
189
Как сделать что бы кирка копала 3 на 3
 
Решение
Java:
@Override
    public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving)
    {
        boolean ret = super.onBlockDestroyed(stack, worldIn, state, pos, entityLiving);

        if (!(entityLiving instanceof EntityPlayer) || worldIn.isRemote)
        {
            return ret;
        }
       
       
        if(!stack.hasTagCompound() || stack.hasTagCompound() && !stack.getTagCompound().getBoolean("drill_mode"))
            return ret;

        EntityPlayer player = (EntityPlayer) entityLiving;
        EnumFacing facing = entityLiving.getHorizontalFacing();

        if (entityLiving.rotationPitch < -45.0F)
        {
            facing = EnumFacing.UP;
        }...
1,470
19
189
7,099
324
1,509
Посмотри в ботании, таумик тинкерере или бладе(там на пкм)
 
1,470
19
189
Код:
 @Override
 public boolean onBlockDestroyed(@Nonnull ItemStack stack, @Nonnull World world, IBlockState state, @Nonnull BlockPos pos, @Nonnull EntityLivingBase entity) {
 if(state.getBlockHardness(world, pos) != 0F)
 ToolCommons.damageItem(stack, 1, entity, getManaPerDmg());

 return true;
 }

 @Nonnull
 @Override
 public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float sx, float sy, float sz) {
 for(int i = 0; i < player.inventory.getSizeInventory(); i++) {
 ItemStack stackAt = player.inventory.getStackInSlot(i);
 if(stackAt != null && TORCH_PATTERN.matcher(stackAt.getItem().getUnlocalizedName()).find()) {
 EnumActionResult did = stackAt.getItem().onItemUse(stackAt, player, world, pos, hand, side, sx, sy, sz);
 if(stackAt.stackSize == 0)
 player.inventory.setInventorySlotContents(i, null);

 ItemsRemainingRenderHandler.set(player, new ItemStack(Blocks.TORCH), TORCH_PATTERN);
 return did;
 }
 }

 return EnumActionResult.PASS;
 }

 public int getManaPerDmg() {
 return MANA_PER_DAMAGE;
 }
Нашел в ботании


Код:
 @Override
 public void breakOtherBlock(EntityPlayer player, ItemStack stack, BlockPos pos, BlockPos originPos, EnumFacing side) {
 if(!isEnabled(stack))
 return;

 World world = player.worldObj;
 Material mat = world.getBlockState(pos).getMaterial();
 if(!ToolCommons.isRightMaterial(mat, MATERIALS))
 return;

 if(world.isAirBlock(pos))
 return;

 int fortune = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, player.getHeldItemMainhand());
 boolean silk = EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, player.getHeldItemMainhand()) > 0;
 boolean thor = ItemThorRing.getThorRing(player) != null;
 boolean doX = thor || side.getFrontOffsetX() == 0;
 boolean doY = thor || side.getFrontOffsetY() == 0;
 boolean doZ = thor || side.getFrontOffsetZ() == 0;

 int origLevel = getLevel(stack);
 int level = origLevel + (thor ? 1 : 0);
 if(ItemTemperanceStone.hasTemperanceActive(player) && level > 2)
 level = 2;

 int range = level - 1;
 int rangeY = Math.max(1, range);

 if(range == 0 && level != 1)
 return;

 BlockPos beginDiff = new BlockPos(doX ? -range : 0, doY ? -1 : 0, doZ ? -range : 0);
 BlockPos endDiff = new BlockPos(doX ? range : 0, doY ? rangeY * 2 - 1 : 0, doZ ? range : 0);

 ToolCommons.removeBlocksInIteration(player, stack, world, pos, beginDiff, endDiff, null, MATERIALS, silk, fortune, isTipped(stack));
 if(origLevel == 5)
 player.addStat(ModAchievements.rankSSPick, 1);
 }
 

Icosider

Kotliner
Администратор
3,600
99
663
Код:
public boolean destroyBlock(BlockPos pos, boolean dropBlock)
    {
        IBlockState iblockstate = this.getBlockState(pos);//here
        Block block = iblockstate.getBlock();//here

        if (block.isAir(iblockstate, this, pos))
        {
            return false;
        }
        else
        {
            this.playEvent(2001, pos, Block.getStateId(iblockstate));

            if (dropBlock)
            {
                block.dropBlockAsItem(this, pos, iblockstate, 0);
            }

            return this.setBlockState(pos, Blocks.AIR.getDefaultState(), 3);
        }
    }
 
161
12
90
Я видел тред, там чел сделал такую кирку, и потом фмксил баг, с тем что кирка ломала регионы.
 
1,057
50
234
Java:
@Override
    public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving)
    {
        boolean ret = super.onBlockDestroyed(stack, worldIn, state, pos, entityLiving);

        if (!(entityLiving instanceof EntityPlayer) || worldIn.isRemote)
        {
            return ret;
        }
       
       
        if(!stack.hasTagCompound() || stack.hasTagCompound() && !stack.getTagCompound().getBoolean("drill_mode"))
            return ret;

        EntityPlayer player = (EntityPlayer) entityLiving;
        EnumFacing facing = entityLiving.getHorizontalFacing();

        if (entityLiving.rotationPitch < -45.0F)
        {
            facing = EnumFacing.UP;
        }
        else if (entityLiving.rotationPitch > 45.0F)
        {
            facing = EnumFacing.DOWN;
        }
       
        boolean yAxis = facing.getAxis() == EnumFacing.Axis.Y;
        boolean xAxis = facing.getAxis() == EnumFacing.Axis.X;
       
        for (int i = -breakRadius; i <= breakRadius; ++i)
        {
            for (int j = -breakRadius; j <= breakRadius && !stack.isEmpty(); ++j)
            {
                if (i == 0 && j == 0)
                {
                    continue;
                }

                BlockPos pos1;
                if (yAxis)
                {
                    pos1 = pos.add(i, 0, j);
                }
                else if (xAxis)
                {
                    pos1 = pos.add(0, i, j);
                }
                else
                {
                    pos1 = pos.add(i, j, 0);
                }

                //:Replicate logic of PlayerInteractionManager.tryHarvestBlock(pos1)
                IBlockState state1 = worldIn.getBlockState(pos1);
                float f = state1.getBlockHardness(worldIn, pos1);
                if (f >= 0F)
                {
                    BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(worldIn, pos1, state1, player);
                    MinecraftForge.EVENT_BUS.post(event);
                    if (!event.isCanceled())
                    {
                        Block block = state1.getBlock();
                        if ((block instanceof BlockCommandBlock || block instanceof BlockStructure) && !player.canUseCommandBlock())
                        {
                            worldIn.notifyBlockUpdate(pos1, state1, state1, 3);
                            continue;
                        }
                        TileEntity tileentity = worldIn.getTileEntity(pos1);
                        if (tileentity != null)
                        {
                            Packet<?> pkt = tileentity.getUpdatePacket();
                            if (pkt != null)
                            {
                                ((EntityPlayerMP)player).connection.sendPacket(pkt);
                            }
                        }
   
                        boolean canHarvest = block.canHarvestBlock(worldIn, pos1, player);
                        boolean destroyed = block.removedByPlayer(state1, worldIn, pos1, player, canHarvest);
                        if (destroyed)
                        {
                            block.onBlockDestroyedByPlayer(worldIn, pos1, state1);
                        }
                        if (canHarvest && destroyed)
                        {
                            block.harvestBlock(worldIn, player, pos1, state1, tileentity, stack);
                            //stack.damageItem(1, player);
                        }
                    }
                }
            }
        }
       
        return ret;
    }
 
7,099
324
1,509
Чё вы ему советуете? Он просил без модов. Разве не ясно, что вопрос про ванильку и дата-паки?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху