Beispiel #1
0
        public void HighlightIncompleteParts(IWorldAccessor world, IPlayer player, BlockPos centerPos)
        {
            List <BlockPos> blocks = new List <BlockPos>();
            List <int>      colors = new List <int>();

            for (int i = 0; i < TransformedOffsets.Count; i++)
            {
                Vec4i offset = TransformedOffsets[i];

                Block         block          = world.BlockAccessor.GetBlock(centerPos.X + offset.X, centerPos.Y + offset.Y, centerPos.Z + offset.Z);
                AssetLocation desireBlockLoc = BlockCodes[offset.W];

                if (!WildcardUtil.Match(BlockCodes[offset.W], block.Code))
                {
                    blocks.Add(new BlockPos(offset.X, offset.Y, offset.Z).Add(centerPos));

                    if (block.Id != 0)
                    {
                        colors.Add(ColorUtil.ColorFromRgba(215, 94, 94, 64));
                    }
                    else
                    {
                        int col = world.SearchBlocks(desireBlockLoc)[0].GetColor(world.Api as ICoreClientAPI, centerPos);

                        col &= ~(255 << 24);
                        col |= 96 << 24;

                        colors.Add(col);
                    }
                }
            }

            world.HighlightBlocks(player, HighlightSlotId, blocks, colors);
        }